使用 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) &lt;- ~lon+lat 非常感谢。

以上是关于使用 R 中的 SP 包查找哪些多边形包含哪些点时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何查找哪些列会影响 R 中的预测

如何判断你在 R 中使用了哪些包

R:在 shapefile 中的多边形上绘制 .gdb 文件中的点

R语言在统计中的应用都有哪些?

查找 db 中的哪些圆形区域包含地图上的特定点

SQL Server 中的 sp_depends,都有哪些可能的依赖关系?