Я намагаюся виконати об'єднання на загальному полі після об'єднання двох суміжних фігур. Файли форми закінчуються принаймні одним тонким пробілом між ними. Коли я намагаюся об'єднати, я отримую таку помилку, осиротілу дірку:
Помилка в створенніPolygonsComment (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)
Повернення:
Помилка в створенніPolygonsComment (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, і він виправляв проблему, але, схоже, має бути виправлення в Р.