使用 R 中的 SP 包查找哪些多边形包含哪些点时遇到问题
Posted
技术标签:
【中文标题】使用 R 中的 SP 包查找哪些多边形包含哪些点时遇到问题【英文标题】:Trouble finding which polygons contain which points using SP package in R 【发布时间】:2017-12-04 13:57:03 【问题描述】:我有一组点:
> head(Map3)
SpatialPoints:
lat long
Cincinnati OH 39.10312 -84.51202
Dayton OH 39.75895 -84.19161
Lexington KY 38.04058 -84.50372
Zanesville OH 39.94035 -82.01319
Louisville KY 38.25266 -85.75846
Columbus OH 39.96118 -82.99879
Coordinate Reference System (CRS) arguments: +proj=utm +zone=10 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
还有一组名为 shape
的多边形,它们是美国的区域 (DMA)。
它们有相同的坐标系,而且我知道它们是重叠的:
> proj4string(shape)
[1] "+proj=utm +zone=10 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
> proj4string(Map3)
[1] "+proj=utm +zone=10 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
> bbox(Map3 )
min max
lat 21.30694 64.83778
long -157.85833 -68.77781
> bbox(shape )
min max
x -124.73297 -66.94932
y 24.54424 49.38436
它们似乎也有相似的范围(纬度/经度似乎是正确的顺序):
> range(Map3@bbox)
[1] -157.85833 64.83778
> range(shape@bbox)
[1] -124.73297 49.38436
但是当我尝试获取包含点的多边形时,我什么也得不到:
> indices <- over(Map3,shape)
> head(indices)
NAME PHshare Rank PUSA DMA USTV CPHShare Hrank HTV markets marketpop Dmoney Rmoney Dpc Rpc AdsPC adrepshare fraction split
Cincinnati OH <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
Dayton OH <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
Lexington KY <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
Zanesville OH <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
Louisville KY <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
Columbus OH <NA> NA NA NA <NA> NA NA NA NA <NA> NA NA NA NA NA NA NA NA NA
不确定问题出在哪里——我只想找出哪些区域包含这些点。
如果问题是纬度/经度的顺序,我将如何扭转这个?
这里是data
【问题讨论】:
我认为你需要在调用over
时切换Map3和shape的顺序。
【参考方案1】:
您确定您在 SpatialPoints 中正确指定了经度为 x,纬度为 y 吗?
您的bbox
输出的顺序不同,所以我想这是错误的。
编辑: 您的点数据的 bbox 顺序不正确。您应该按原样导入您的 csv 文件:
library(sp)
Map3 <- read.csv("stackdata/points.csv")
coordinates(Map3) <- ~lon+lat
bbox(Map3)
如果您在 shapefile 上绘制点,您应该查看它们是否重叠。
plot(shape)
points(Map3)
【讨论】:
我不确定这是不是错误,因为检查 range(Map3@bbox) 和 range(shape@bbox) 以相同的顺序显示它们。 绘制数据时,它们是否重叠?您能在这里提供您的数据,以便我们自己尝试吗? 共享 shapefile 时,需要包含所有 4 个文件,而不仅仅是.shp
:dbf、shp、shx、prj。否则,我无法打开它。但是,正如我所说,您似乎没有为您的点数据正确指定经度和纬度。在我的回答中查看我的编辑。您是否在叠加之前绘制了数据?如果这仍然不起作用,请添加完整的 R 代码,读取数据和绘图。
这行得通。关键是coordinates(Map3) <- ~lon+lat
非常感谢。以上是关于使用 R 中的 SP 包查找哪些多边形包含哪些点时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章