Я пытаюсь выполнить объединение на общем поле после объединения двух смежных шейп-файлов. Шейп-файлы заканчиваются как минимум одним узким промежутком между ними. Когда я пытаюсь объединиться, я получаю следующую ошибку:
Ошибка в createPolygonsComment (p): rgeos_PolyCreateComment: потерянная дыра, не удается найти содержащий полигон для дыры с индексом 17
Я загрузил воспроизводимый пример в Dropbox по этой ссылке .
Вот код для воссоздания проблемы:
#loading required packages
require(sp)
require(rgdal)
require(maptools)
require(rgeos)
#load example data, set "dsn=" to your working directory or specify the path
example <- readOGR(dsn=".",layer="ReproducibleExample")
#Attempting a UnionSpatialPolygons based on the COUNTY field
example.df <- as(example, "data.frame")
countycol <- example.df$COUNTY
example.diss <- unionSpatialPolygons(example, countycol)
Возвращает:
Ошибка в createPolygonsComment (p): rgeos_PolyCreateComment: потерянная дыра, не удается найти содержащий полигон для дыры с индексом 17
Попытка исправить предложенное здесь и здесь :
slot(example, "polygons") <- lapply(slot(example, "polygons"), checkPolygonsHoles)
Это возвращает ту же ошибку, которая приходит от попытки объединения, но с другим порядковым номером:
rgeos_PolyCreateComment: потерянная дыра, не может найти содержащий полигон для дыры с индексом 30
Попытка исправить предложенное в полезном уроке Роджера Биванда
fix <- slot(example, "polygons")
fixa <- lapply(fix, checkPolygonsHoles)
Возвращает ту же ошибку с индексом 30, как указано выше.
Другие поднимали эту проблему здесь и здесь , и, хотя приведенные выше решения, по-видимому, работают для некоторых случаев, другие случаи не решаются. Один пользователь использовал QGIS для решения проблемы, а другому было исправлено 2 из 3 пунктов, но окончательного решения не было.
Похоже, что у людей продолжают возникать проблемы, несмотря на то, что этот код работает время от времени. Кто-нибудь нашел решение в R?
Я выполнил инструмент «восстановить геометрию» в ArcGIS, и он исправил проблему, но, похоже, в R. должно быть исправление