【发布时间】:2018-03-13 22:17:53
【问题描述】:
这是我第一次在 R 中进行任何类型的空间数据可视化,我被困在一个特定的问题上。我想根据世界地图裁剪一个空间多边形(由一系列纬度/经度坐标指定),以便删除与地图多边形重叠的多边形的任何部分。以下面代码中的内容为例,我想剪裁矩形空间多边形,以便只保留多边形的海洋部分。
我找到了如何保留两个空间多边形之间的交集的示例,但我想做相反的事情。也许有一种方法可以定义交集,然后从我希望剪辑的多边形中“减去”?
这可能是一个非常基本的问题,但我们将不胜感激任何提示!
指定纬度/经度数据:
x_coord <- c(25, 25, 275, 275)
y_coord <- c(20, -50, -50, 20)
xy.mat <- cbind(x_coord, y_coord)
xy.mat
转换为空间多边形对象:
library(sp)
poly = Polygon(xy.mat)
polys = Polygons(list(poly),1)
spatial.polys = SpatialPolygons(list(polys))
proj4string(spatial.polys) = CRS("+proj=longlat +datum=WGS84 +no_defs
+ellps=WGS84 +towgs84=0,0,0")
转换为空间多边形数据框并导出为 shapefile:
df = data.frame(f=99.9)
spatial.polys.df = SpatialPolygonsDataFrame(spatial.polys, df)
spatial.polys.df
library(GISTools)
library(rgdal)
writeOGR(obj=spatial.polys.df, dsn="tmp", layer="polygon",
driver="ESRI Shapefile")
绘制世界地图并添加 .shp 文件:
map("world", wrap=c(0,360), resolution=0, ylim=c(-60,60))
map.axes()
shp <- readOGR("polygon.shp")
plot(shp, add=TRUE, col="blue", border=FALSE)
【问题讨论】:
标签: r gis geospatial spatial