Learn R Programming

eseis (version 0.8.0)

spatial_distance: Calculate topography-corrected distances for seismic waves.

Description

The function calculates topography-corrected distances either between seismic stations or from seismic stations to pixels of an input raster.

Usage

spatial_distance(
  stations,
  dem,
  topography = TRUE,
  maps = TRUE,
  matrix = TRUE,
  aoi,
  verbose = FALSE
)

Value

List object with distance maps (list of SpatRaster objects from terra package) and station distance matrix (data.frame).

Arguments

stations

Numeric matrix of length two, x- and y-coordinates of the seismic stations to be processed (column-wise orgnaised).The coordinates must be in metric units, such as the UTM system and match with the reference system of the dem.

dem

SpatRaster object, the digital elevation model (DEM) to be processed. The DEM must be in metric units, such as the UTM system and match with the reference system of the coordinates of stations. See terra for supported types and how to read these to R.

topography

Logical scalar, option to enable topography correction, default is TRUE.

maps

Logical scalar, option to enable/disable calculation of distance maps. Default is TRUE.

matrix

Logical scalar, option to enable/disable calculation of interstation distances. Default is TRUE.

aoi

Numeric vector of length four, bounding coordinates of the area of interest to process, in the form c(x0, x1, y0, y1).

verbose

Logical value, option to show extended function information as the function is running. Default is FALSE.

Author

Michael Dietze

Details

Topography correction is necessary because seismic waves can only travel on the direct path as long as they are within solid matter. When the direct path is through air, the wave can only travel along the surface of the landscape. The function accounts for this effect and returns the corrected travel distance data set.

Examples

Run this code

if (FALSE) {

data("volcano")
dem <- terra::rast(volcano)
dem <- dem * 10
terra::ext(dem) <- terra::ext(dem) * 10
terra::ext(dem) <-terra::ext(dem) + c(510, 510, 510, 510)

## define example stations
stations <- cbind(c(200, 700), c(220, 700))

## plot example data
terra::plot(dem)
points(stations[,1], stations[,2])

## calculate distance matrices and stations distances
D <- spatial_distance(stations = stations, 
                      dem = dem)

D_map_1 <- terra::rast(crs = D$maps[[1]]$crs,
                       ext = D$maps[[1]]$ext,
                       res = D$maps[[1]]$res,
                       val = D$maps[[1]]$val)

## plot distance map
terra::plot(D_map_1) 

## show station distance matrix
print(D$matrix)

## calculate with AOI and in verbose mode
D <- spatial_distance(stations = stations, 
                      dem = dem, 
                      verbose = TRUE,
                      aoi = c(0, 200, 0, 200))

## plot distance map for station 2
terra::plot(D$maps[[1]])

} 
                                          

Run the code above in your browser using DataLab