我正在尝试从一个形状文件中读取数据并合并具有相同标识ID的多边形。
当我尝试绘制合并的多边形时:
library(rgdal)
library(maptools)
if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()
usa <- readOGR(dsn = "./path_to_data/", layer="the_name_of_shape_file")
usaIDs <- usa$segment_ID
isTRUE(gpclibPermitStatus())
usaUnion <- unionSpatialPolygons(usa, usaIDs)
当我尝试绘制合并的多边形时:
for(i in c(1:length(names(usaUnion)))){
print(i)
myPol <- usaUnion@polygons[[i]]@Polygons[[1]]@coords
polygon(myPol, pch = 2, cex = 0.3, col = i)
}
合并后的所有区段看起来都很好,除了那些在密歇根周围的区域,合并方式非常奇怪,导致该特定区段的结果区域仅为一个小多边形,如下图所示。
i = 10
usaUnion@polygons[[i]]@Polygons[[1]]@coords
输出:
[,1] [,2]
[1,] -88.62533 48.03317
[2,] -88.90155 47.96025
[3,] -89.02862 47.85066
[4,] -89.13988 47.82408
[5,] -89.19292 47.84461
[6,] -89.20179 47.88386
[7,] -89.15610 47.93923
[8,] -88.49753 48.17380
[9,] -88.62533 48.03317
这个小岛位于北部:
我怀疑问题出在unionSpatialPolygons
函数不喜欢地理上分离的多边形[密歇根州左右两侧],但我还没有找到解决办法。
这是输入数据的链接,您可以进行复制。