故事和数据:
我正在爱沙尼亚的一个农场做实习,并希望打印出他们田地的场地规划(草图)。但是,我从爱沙尼亚农业部(https://kls.pria.ee/kaart - &gt;下拉菜单中获得的字段的shapefile:Põllumassiivid - &gt; Taotlejanimi =“PahklaCamphilliKülaFarmiOÜ” - &gt;在搜索结果中: Lae andmed alla - &gt; ESRI SHP |很抱歉,但我不知道如何提供数据,因为下载链接不稳定)的字段按某些年份划分:< / p>
但是碎片几乎每年都会略有不同,所以我希望最小化碎片。因此我想合并一些多边形。
我做了什么:
library(rgdal)
library(rgeos)
# Read in data:
fields <- readOGR("PCK_fields.shp")
# Add ID-column for merging:
fields$põllunumbrid <- character(length(fields$xy_id))
fields$põllunumbrid[grepl("55155929528", as.character(fields$xy_id)) | grepl("55155926080", as.character(fields$xy_id))] <- "1"
fields$põllunumbrid[grepl("55155918524", as.character(fields$xy_id)) | grepl("55155908713", as.character(fields$xy_id)) |
grepl("55155916421", as.character(fields$xy_id))] <- "2"
fields$põllunumbrid[grepl("55055979669", as.character(fields$xy_id))] <- "3"
fields$põllunumbrid[grepl("55155904072", as.character(fields$xy_id))] <- "4"
fields$põllunumbrid[grepl("55055978792", as.character(fields$xy_id)) | grepl("55055958459", as.character(fields$xy_id))] <- "5"
fields$põllunumbrid[grepl("55055959045", as.character(fields$xy_id))] <- "6A"
fields$põllunumbrid[grepl("55056021718", as.character(fields$xy_id))] <- "6B"
fields$põllunumbrid[grepl("55056047115", as.character(fields$xy_id))] <- "7A"
fields$põllunumbrid[grepl("55056047987", as.character(fields$xy_id))] <- "7B"
fields$põllunumbrid[grepl("55055982185", as.character(fields$xy_id))] <- "8A"
fields$põllunumbrid[grepl("55055970417", as.character(fields$xy_id))] <- "8B"
fields$põllunumbrid[grepl("55155910853", as.character(fields$xy_id))] <- "9"
fields$põllunumbrid[grepl("55055956707", as.character(fields$xy_id))] <- "10"
fields$põllunumbrid[grepl("55055924834", as.character(fields$xy_id))] <- "11"
fields$põllunumbrid[grepl("54955995000", as.character(fields$xy_id))] <- "12"
fields$põllunumbrid[grepl("55055997994", as.character(fields$xy_id))] <- "Aed"
# Perform Union
fields1 <- gUnaryUnion(fields, id = fields$põllunumbrid)
# or
#library(maptools)
#fields1 <- unionSpatialPolygons(fields, fields$põllunumbrid)
我得到了什么:
(maptools::unionSpatialPolygons()
和QGIS'溶解给出完全相同的结果)
某些分界线似乎被无法正常删除。有趣的是,这取决于坐标系/投影。如果我首先通过
将多边形重新投影到WGS84fields <- spTransform(fields, CRS("+init=epsg:4326"))
然后结果在问题区域中包含一条不同的线,几乎将前两个多边形分开:
我想要的是什么:
但我希望这些多边形边框完全消失!
我尝试了什么:
因为问题只出现在我合并3个多边形的地方,我试图首先合并其中的2个,然后是第3个多边形。然而,这让我在两者和第三者之间的分界线完全不受影响。
如果我尝试(到目前为止仅使用QGIS)将多边形转换为线条,将它们分割为它们的顶点,并将那些边缘分开,然后有一条边需要进一步缩短。这样做也会让我遇到lines to polygons
不会产生任何输出的问题。然后使用the trick from Kamran Safi再次返回R强制转换回多边形,这给了我很多面积为0的多边形,即绘图看起来正确,但绘制的多边形只是线条。
Qustion:
有人知道正确删除所有不需要的多边形边界的解决方法吗?