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

Posted

技术标签:

【中文标题】R:在 shapefile 中的多边形上绘制 .gdb 文件中的点【英文标题】:R: Plotting points from a .gdb file over polygons in a shapefile 【发布时间】:2015-02-09 22:27:23 【问题描述】:

我正在尝试在 R 中叠加两种不同类型的地理空间数据(我无法访问 ArcMap,也无法在我的工作站上安装任何其他软件)。我可以毫无问题地映射多边形,但是在这些多边形上绘制点时遇到了麻烦。这些点似乎是相对于不同的坐标系绘制的。如果我调整包含所有绘制数据的图形窗口的大小,则这些点不会保持在相对于底层多边形的恒定位置(尽管所有多边形层彼此保持恒定对齐)。我的猜测是我在从 .gdb 文件中导入点时做错了,但我不确定是什么。我尝试更改 .gdb 文件上的投影以匹配我的 shapefile 中的投影,但这似乎没有任何效果。

注意:我的其中一个图层有许多多边形。为了加快加载速度,我使用 readShapeSpatial 导入数据,然后将生成的对象保存到 .rdata 文件中。

代码如下:

require(RColorBrewer)
require(GISTools)
require(maps)
require(rgdal)
require(maptools)

# latitude and longitude limits
lat_lims  = c( 26.2,  30.8)
long_lims = c(-98.2, -88.0)

load("map2100a1Hi5.rdata")
plot(map2100a1Hi5, lty=0, ylim=lat_lims, xlim=long_lims)

par(new=T)
basemap = readShapeSpatial("cb_2013_us_state_500k.shp")
plot(basemap, xlim = long_lims, ylim = lat_lims)

projection = CRS("+proj=longlat +datum=NAD83")
layers = ogrListLayers("RefineriesGulfCat1.gdb")
refineries =   readOGR("RefineriesGulfCat1.gdb", layer=layers[4])
refineries = spTransform(refineries, projection)
par(new=T)
plot(refineries, ylim=lat_lims, xlim=long_lims)

【问题讨论】:

你试过plot(basemap, xlim = long_lims, ylim = lat_lims); plot(refineries, add = T) 吗? 【参考方案1】:

我最终将这些点转换为 SpatialPoints,从而使它们能够正确绘制。不知道为什么这是必要的,但它确实有效。

plot(SpatialPoints(refineries@coords), ylims=lat_lims, xlims=long_lims)

【讨论】:

以上是关于R:在 shapefile 中的多边形上绘制 .gdb 文件中的点的主要内容,如果未能解决你的问题,请参考以下文章

在R中相交轮廓和多边形

R:将Shapefile 1中的多边形与shapefile 2中的区域代码匹配

Foxall 的 G 函数在 R spatstat 中具有多边形

R:将栅格聚合为 shapefile 多边形

自更新以来,多边形未在小叶r图中绘制

如何从shapefile传单R访问多边形信息