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

时间:2015-02-09 22:27:23

标签: r gis

我试图在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)

1 个答案:

答案 0 :(得分:0)

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

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