【发布时间】:2011-12-20 18:07:10
【问题描述】:
我有一个 shapefile,其中包含 50 多个不同的多边形形状(代表 50 多个不同的区域)和 10,000 多个应该存在于其中一个区域中的数据点。问题是,这 10,000 多个点已经用它们应该在的区域进行编码,我想弄清楚它们在地理空间距离上与这个编码区域的距离。
我当前的方法(下面的代码),包括将 shapefile 转换为 sp 库中的 owin 对象,并使用 distfun 让我在 lat、long 欧几里得空间中获得距离。但我想获得地理空间距离(最终转换为公里)。接下来我应该去哪里?
#basically cribbed from http://cran.r-project.org/web/packages/spatstat/vignettes/shapefiles.pdf (page 9)
shp <- readShapeSpatial("myShapeFile.shp", proj4string=CRS("+proj=longlat +datum=WGS84"))
regions <- lapply(slot(shp, "polygons"), function(x) SpatialPolygons(list(x)))
windows <- lapply(regions, as.owin)
# need to convert this to geo distance
distance_from_region <- function(regionData, regionName) {
w <- windows[[regionName]]
regionData$dists <- distfun(w)(regionData$lat, regionData$long)
regionData
}
【问题讨论】:
-
在 sp 中尝试 spDistsN1,longlat = TRUE
-
@mdsummer:spDistsN1 计算两点之间的距离。我需要从多边形到点的距离。如何进行转换对我来说并不是很明显......
-
多边形的哪个坐标?质心或某个选定的边界点(最近的?),还是所有的边界点?您的问题对此不清楚。 spDists/spDistsN1 在不选择地图投影的情况下提供了点集之间(不仅仅是两个点之间)所需的大圆距离,因此一旦提取了正确的坐标或摘要,我最终将使用它 - 你能澄清这个问题吗?
-
对不起,我假设与多边形的距离暗示最小距离 = 从点到多边形上最近点的距离。我想我可以做从给定点到多边形中所有边界点的距离,然后取最小值……似乎有点低效,但我想是可行的。在此期间将寻找更好的解决方案。
标签: r geospatial