【发布时间】:2015-04-20 03:36:59
【问题描述】:
我正在尝试计算海洋中的位置与陆地上的点之间的最近距离,但不经过海岸线。最终,我想创建一个到陆地特征的距离图。
此地图是使用 rdist.earth 创建的,是直线距离。因此它并不总是正确的,因为它没有考虑海岸线的曲率。
c<-matrix(coast_lonlat[,1], 332, 316, byrow=T)
image(1:316, 1:332, t(c))
min_dist2_feature<-NULL
for(q in 1:nrow(coast_lonlat)){
diff_lonlat <- rdist.earth(matrix(coast_lonlat[q,2:3],1,2),as.matrix(feature[,1:2]), miles = F)
min_dist2_feature<-c(min_dist2_feature, min(diff_lonlat,na.rm=T))
}
distmat <- matrix( min_dist2_feature, 316, 332)
image(1:316, 1:332, distmat)
地物数据是xy坐标的两列矩阵,例如:
ant_x <- c(85, 90, 95, 100)
ant_y <- c(-68, -68, -68, -68)
feature <- cbind(ant_x, ant_y)
有人有什么建议吗?谢谢
【问题讨论】:
-
我相信你想计算一个简单多边形内的最短路径?您的数据似乎是一堆坐标,其中一些是海岸线,而另一些则不是。您如何定义多边形,以及如何定义您想要距离的点对?
-
@J.Won。我想计算网格上所有点到要素之间的多边形外最短距离[到要素的最短距离是多少]。不是海岸线的点都是岛屿。
-
我想我还没有理解这个问题。当您说“不经过海岸线”时,是指路径必须完全在水中(多边形外)还是完全在陆地上(多边形内)?另外,这是矢量还是网格数据?如果您可以发布用于制作该图像的代码,那将很有帮助。
-
@J.Won。是的,完全在水中(在多边形之外)。
标签: r geometry distance raster geography