R:联合空间多边形赢得';不要完全拆下分离线

R:联合空间多边形赢得';不要完全拆下分离线,r,gis,geospatial,sp,rgdal,R,Gis,Geospatial,Sp,Rgdal,故事和数据: 我在爱沙尼亚的一个农场实习,想打印出他们田地的平面图(草图)。然而,我从爱沙尼亚农业部获得的田地形状文件(->下拉菜单:Põllumassivid->Taotlejanimi=“Pahkla Camphilli Küla Farmi OÜ”->在搜索结果中:Lae and Med alla->ESRI SHP |对不起,我不知道如何提供数据,因为那里的下载链接不稳定)这些字段是否按照某一年的情况进行了划分: 但是碎片几乎每年都略有不同,所以我想有一个最小的碎片。因此,我想合并一些

故事和数据:
我在爱沙尼亚的一个农场实习,想打印出他们田地的平面图(草图)。然而,我从爱沙尼亚农业部获得的田地形状文件(->下拉菜单:Põllumassivid->Taotlejanimi=“Pahkla Camphilli Küla Farmi OÜ”->在搜索结果中:Lae and Med alla->ESRI SHP |对不起,我不知道如何提供数据,因为那里的下载链接不稳定)这些字段是否按照某一年的情况进行了划分:

但是碎片几乎每年都略有不同,所以我想有一个最小的碎片。因此,我想合并一些多边形

我的工作:

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)
然后,结果在问题区域中包含一条不同的线,该线几乎将前两个多边形分开:

我想要什么:
但我希望这些多边形边界完全消失

我也尝试了什么:
因为问题只出现在我合并3个多边形的地方,我试着先合并其中的2个,然后再合并第三个。然而,这让我完全没有触及这两个和第三个之间的分界线

如果我尝试(到目前为止仅使用QGIS)将多边形转化为直线,在其顶点处分割它们,并取出分割多边形的边,则有一条边需要进一步缩短。这样做也给我留下了一个问题,
直线到多边形
不会产生任何输出。然后再次返回到R,使用强制转换回多边形,会得到许多面积为0的多边形,即绘图看起来正确,但随后绘制的多边形仅为直线

问题:

是否有人知道一种解决方法,可以正确地删除所有不需要的多边形边界?

如果数据不那么难获得,我想这将极大地提高我找到答案的机会。因此,如果有人知道一种很好的方法来为你提供小的shapefile(52 KB解压),我会很高兴听到它。这不是一个很好的答案,但它对我很有用,也可能对我这种情况下的其他人有所帮助:在将多边形转换为直线后,将直线在顶点处拆分(QGIS:Processing->Tools->Explode)删除分隔线,我可以使用QGIS:Processing->Tools->Polygonize工具重新创建除一个多边形外的所有多边形。这一张是我在抓拍的帮助下重新画的。它不是100%的原始版本,因此我不能再将数据用于官方目的,但它对我来说已经足够了。我想,随着所有QGIS的内容进入其中,来描述我在绝望中所做的事情,这个问题现在会更好地放在GIS堆栈交换社区中。取决于您需要的精度,你可能想在你的形状周围做一个小的缓冲区(比如1米左右,越小越好)。这可能有助于解决您的具体问题,但也可能导致其他问题…@Bastien这比我的解决方案要好得多。我使用了一个1毫米的缓冲器,到目前为止,它满足了我的精度要求。
fields <- spTransform(fields, CRS("+init=epsg:4326"))