if (FALSE) {
## create synthetic DEM
dem <- terra::rast(nrows = 20, ncols = 20,
xmin = 0, xmax = 10000,
ymin= 0, ymax = 10000,
vals = rep(0, 400))
## define station coordinates
sta <- data.frame(x = c(1000, 9000, 5000),
y = c(1000, 1000, 9000),
ID = c("A", "B", "C"))
## create synthetic signal (source in the center of the DEM)
s <- rbind(dnorm(x = 1:1000, mean = 500, sd = 50),
dnorm(x = 1:1000, mean = 500, sd = 50),
dnorm(x = 1:1000, mean = 500, sd = 50))
## plot DEM and stations
terra::plot(dem)
text(x = sta$x,
y = sta$y,
labels = sta$ID)
## calculate spatial distance maps and inter-station distances
D <- spatial_distance(stations = sta[,1:2],
dem = dem)
## restore SpatRaster object for plotting purpose
D_map_1 <- terra:rast(crs = D$maps[[1]]$crs,
ext = D$maps[[1]]$ext,
res = D$maps[[1]]$res,
val = D$maps[[1]]$values)
## plot distance map
terra::plot(D_map_1)
## locate signal
e <- spatial_migrate(data = s,
d_stations = D$matrix,
d_map = D$maps,
v = 1000,
dt = 1/100)
## get most likely location coordinates
e_max <- spatial_pmax(data = e)
## plot location estimate, most likely location estimate and stations
terra::plot(e)
points(e_max[1],
e_max[2],
pch = 20)
points(sta[,1:2])
}
Run the code above in your browser using DataLab