ฉันพยายามที่จะทำการรวมกันในสนามทั่วไปหลังจากรวมสองไฟล์รูปร่างที่อยู่ติดกัน ท้ายที่สุดรูปร่างของไฟล์นั้นจะมีช่องว่างระหว่างเศษไม้อย่างน้อยหนึ่งอัน เมื่อฉันพยายามสหภาพฉันได้รับข้อผิดพลาดของหลุมที่กำพร้าต่อไปนี้:
ข้อผิดพลาดใน 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
ลองใช้การแก้ไขที่เสนอในบทช่วยสอนของ Roger Bivand
fix <- slot(example, "polygons")
fixa <- lapply(fix, checkPolygonsHoles)
ส่งคืนข้อผิดพลาดเดียวกันที่ดัชนี 30 ตามด้านบน
มีคนอื่นยกปัญหานี้ขึ้นมาที่นี่และที่นี่และในขณะที่วิธีแก้ปัญหาที่กล่าวมาข้างต้นดูเหมือนจะใช้งานได้ในบางกรณีกรณีอื่น ๆ ก็ไม่ได้รับการแก้ไข ผู้ใช้รายหนึ่งใช้ QGIS เพื่อแก้ไขปัญหาและอีกรายการหนึ่งมีการแก้ไข 2 จาก 3 รายการ แต่ไม่มีการแก้ไขสำหรับรายการสุดท้าย
ปรากฏว่าผู้คนยังคงมีปัญหาแม้รหัสนี้จะทำงานเป็นครั้งคราว มีใครพบวิธีแก้ปัญหาภายใน R หรือไม่?
ฉันใช้เครื่องมือ "ซ่อมแซมเรขาคณิต" ใน ArcGIS แล้วและแก้ไขปัญหาได้ แต่ดูเหมือนว่าควรมีการแก้ไขใน R