วิธีหลีกเลี่ยงการสร้าง Shapefiles ที่เสียหายระหว่างการแก้ไข


15

ฉันมีหนึ่งในช่างเทคนิคระบบสารสนเทศภูมิศาสตร์ของฉันทำให้เป็นเส้นบางดิจิตอลใน QGIS ในรูปแบบ shapefile ฉันไม่รู้ว่าเขาทำมันได้อย่างไร (และเขาก็ไม่ได้) แต่อย่างใดรูปร่างของไฟล์ก็เสียหาย มันกำลังสร้างเส้นสุ่มหรือบางบรรทัดที่เขาสร้างจะหายไป ฉันเข้าสู่ ArcCatalogue เพื่อดูว่ามันเป็นอย่างไรใน ArcGIS และนี่คือสิ่งที่ฉันเห็น:

ป้อนคำอธิบายรูปภาพที่นี่

สังเกตุไอคอนเครื่องหมายคำถามที่ฉันควรเห็นไอคอนรูปร่าง 'เส้น' เห็นได้ชัดว่า ArcCatalogue ไม่สามารถอ่านไฟล์นี้ นอกจากนี้ไฟล์ dbf ตัวที่สองดูเหมือนจะถูกสร้างขึ้นโดยแนบไฟล์ '_packed' ไว้ที่ท้าย เมื่อฉันดูที่ shapefile โดยใช้ Windows explorer ฉันเห็นว่ามี. dbf สำหรับ shapefile 'M3_PRE_SMU_lines_10Apr13_SMC.dbf' แล้วดังนั้นฉันจึงไม่รู้ว่ารูปร่างแบบ _packed นี้มาจากที่ใดและฉันไม่สามารถหาสิ่งใดออนไลน์ได้ ที่พูดกับมัน

ฉันพยายามที่จะเพิ่มไฟล์นี้ลงใน ArcMap และฉันได้รับข้อผิดพลาดต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อผิดพลาดคือการอธิบายตนเอง ... จำนวนรูปร่างไม่ตรงกับจำนวนเรคคอร์ด ฉันไม่รู้ว่าทำไมมันถึงเกิดขึ้น ดูเหมือนจะไม่มีอะไรออนไลน์ที่อธิบายว่าสิ่งนี้เกิดขึ้นใน QGIS ได้อย่างไร แต่ฉันเห็นเครื่องมือซ่อมแซมสองอย่าง ฉันซ่อมแซมตัวเองด้วยการเปิด QGIS เพิ่มเลเยอร์จากนั้นคลิกขวาที่เลเยอร์และ 'save as' shapefile อื่น ดังนั้นฉันจึงคิดหาวิธีแก้ไข แต่ฉันหวังว่าจะหาวิธีแก้ปัญหาที่จะหยุดสิ่งนี้ไม่ให้เกิดขึ้นตั้งแต่แรก ขอบคุณไมค์


1
ฉันใช้ QGIS มาหลายปีแล้วและไม่เคยเห็นปัญหานี้มาก่อน ลักษณะที่ปรากฏ "ขลัง" ของ. dbf ตัวอื่นแสดงให้เห็นว่า Shapefile ได้รับการดัดแปลงด้วยภายนอกของ QGIS หากคุณสามารถสร้างข้อผิดพลาดโดยใช้ QGIS เท่านั้นโปรดยื่นรายงานข้อผิดพลาด นั่นจะสำคัญมาก!
— underdark

ฉันพยายามทำซ้ำปัญหาโดยไม่มีโชค สิ่งหนึ่งที่ฉันสังเกตเห็นคือไม่เหมือนกับใน ArcGIS ฉันไม่ได้รับข้อความล็อค schema เมื่อทำการแก้ไขใน QGIS (เช่นถ้ามีคนที่ล็อค schema บนรูปร่างไฟล์และคุณเริ่มแก้ไขไฟล์เดียวกัน ArcGIS จะโยนข้อผิดพลาดเมื่อบันทึก การแก้ไข QGIS ไม่ได้) ฉันคิดว่ามันประหยัดแปลกเมื่อคุณบันทึกรูปร่างไฟล์ที่ล็อคสคีมา ฉันไม่แน่ใจ 100% ว่านี่คือสาเหตุ แต่มีอะไรบางอย่างที่น่าสังเกต
— Mike

ฉันยังมีข้อผิดพลาดนี้ครอบตัดขณะแก้ไขรูปร่าง งานของฉันคือการแก้ไขของฉันใน ArcMap เห็นได้ชัดว่านั่นไม่ใช่ทางออกที่แท้จริง - แต่ - คุณไม่ได้อยู่คนเดียวในการประสบกับข้อผิดพลาดประเภทนี้
— เควิน

คุณพยายามเปลี่ยนชื่อไฟล์ ..._ SMC.dbf เป็น ..._ SMC.dbf.backup และ ..._ SMC_packed.dbf เป็น ... _ SMC.dbf หรือไม่
— Matthias Kuhn

2
สวัสดีปัญหาเดียวกันกับ Dufur ไฟล์ที่สร้างในสภาพแวดล้อม q gis เท่านั้น มันเกิดขึ้นเมื่อฉันแก้ไขรูปร่างและในที่สุดก็ไปที่บันทึกแล้วหยุดแก้ไขดังนั้นเส้นจะหายไปและตารางแอตทริบิวต์ดูเหมือนว่าจะไม่มีข้อมูลใด ๆ หากพยายามโหลดรูปร่างอีกครั้งบน qgis จะดูว่างเปล่า ในโฟลเดอร์ไฟล์ es mario.shx ได้กลายเป็น mario_packed.shp ฉันพบว่าการลบคำที่บรรจุออกจากชื่อ (กลับมาเป็น mario.shx) รูปร่างได้รับการโหลดแล้วและดูเหมือนว่าจะใช้งานได้ นานแค่ไหน? ไม่ทราบว่าฉันกำลังบ้ากับสิ่งนี้
— user27144

คำตอบ:


16

คำอธิบาย

OGR (ส่วนหนึ่งของ GDAL) เป็นห้องสมุดที่ใช้โดย QGIS เพื่อเข้าถึง shapefiles เมื่อ OGR ลบฟีเจอร์มันจะไม่ลบทันที แต่เพียงทำเครื่องหมายว่าฟีเจอร์นั้นถูกลบ นาน ๆ ครั้งคำสั่งที่เรียกว่าrepackจะถูกดำเนินการซึ่งจะสร้างไฟล์ใหม่ด้วยส่วนต่อท้าย _repack และคัดลอกคุณสมบัติทั้งหมดที่ไม่ได้ทำเครื่องหมายว่าถูกลบไปยังไฟล์ใหม่นี้ เมื่อเสร็จสิ้นแล้ว. dbf ดั้งเดิมจะถูกแทนที่ด้วย _repack.dbf จากนั้นทำสิ่งเดียวกันกับ shapefile: สร้างใหม่ (_packed.shp) คัดลอกคุณสมบัติที่ไม่ถูกลบทั้งหมดและในที่สุดก็แทนที่. shp เดิม

ดูเหมือนว่าอยู่ในกระบวนการนี้มีบางอย่างล้มเหลว (อาจผิดพลาดหรือไม่)

ภายในกระบวนการนี้รหัสคุณลักษณะเปลี่ยนไปดังนั้นฉันเดาว่า shp (เรขาคณิต) ที่คุณมีและ dbf (ตารางแอตทริบิวต์) ใช้รหัสคุณลักษณะที่แตกต่างกันสำหรับคุณสมบัติเดียวกันสิ่งที่นำไปสู่พฤติกรรมแปลก ๆ ที่คุณพบ ดูเหมือนว่าหนึ่งในสองไฟล์นั้นยังคงมี (ส่วนหนึ่งของ) คุณสมบัติที่ถูกลบในขณะที่อีกอันหนึ่งไม่มี

วิธีจัดการกับสิ่งนี้

อัปเดต, พ.ย. 2016: GDAL 2.2 มาพร้อมกับฟังก์ชั่นในตัวเพื่อเรียกหีบห่ออัตโนมัติเมื่อใดก็ตามที่ไฟล์ถูกเขียนลงดิสก์ ดังนั้นก่อนที่จะทำสิ่งใดให้ตรวจสอบรุ่น GDAL ใน QGIS เกี่ยวกับข้อความโต้ตอบและอัปเดต GDAL ของคุณ (มักจัดส่งเป็นส่วนหนึ่งของ QGIS) เป็นรุ่นล่าสุด

อาจมีไม่มากที่คุณสามารถทำได้นอกเหนือจากการสำรองข้อมูลตามปกติเพื่อไม่ให้ข้อมูลสูญหายมากกว่าที่คุณสามารถจัดการได้ (คุณกำลังทำเช่นนั้นใช่ไหม? และถ้าคุณหาวิธีที่จะทำซ้ำนี้ (ที่ดีที่สุดกับชุดข้อมูลตัวอย่าง a) สร้างรายงานข้อผิดพลาด

หากคุณพบปัญหานี้อีกครั้งคุณสามารถลองสร้างดัชนีเชิงพื้นที่บน shapefile ในกระบวนการนี้ QGIS จะเรียกrepackอีกครั้งบน Shapefile และอาจ "ซ่อมแซม" shp / dbf แต่นี่เป็นเพียงการเดาที่ยังไม่ผ่านการตรวจสอบ

ดังกล่าวโดย @rhm และในความคิดเห็นที่มันอาจจะยังช่วยในการเปลี่ยนชื่อ{} xyz _packed. {ต่อ}ไฟล์{xyz}. {ต่อ} หากไฟล์ที่แพ็คได้ถูกเขียนขึ้นอย่างสมบูรณ์แล้วและเป็นเพียงการเปลี่ยนชื่อซึ่งล้มเหลวก็เป็นสิ่งที่ถูกต้องที่จะทำตามขั้นตอนนี้ด้วยตนเอง อย่างไรก็ตามหากไฟล์ _packed ยังไม่ได้เขียนอย่างสมบูรณ์คุณอาจขาดข้อมูลจากส่วนต่างๆของคุณสมบัติของคุณ ดังนั้นก่อนที่คุณจะลองทำสำเนาสำรองของไฟล์ที่เกี่ยวข้องทั้งหมด

ข้อมูลความเป็นมาเกี่ยวกับเวลาที่เรียกว่า repack

ระหว่างQGIS 2.0 และ 2.8 repack ถูกเรียกเมื่อใดก็ตามที่เลเยอร์ถูกยกเลิกการโหลด (ออกจาก QGIS โหลดโครงการอื่น ... ) หากมีการลบสถานที่หรือมีการเปลี่ยนแปลงรูปทรงเรขาคณิตไฟล์. shp และ. dbf พร้อมระเบียนที่ทำเครื่องหมายว่าถูกลบจะปรากฏขึ้น

การเริ่มต้นด้วยการบรรจุหีบห่อQGIS 2.10จะถูกเรียกเมื่อใดก็ตามที่เลเยอร์ถูกบันทึกหลังจากการดำเนินการที่มีศักยภาพในการเพิ่มการตั้งค่าสถานะที่ถูกลบไปยังระเบียน ดังนั้นตอนนี้ไฟล์ควรจะอยู่ในสถานะมีสติเสมอที่จะประมวลผลโดยแอปพลิเคชันอื่น


1

เรื่องนี้เกิดขึ้นกับฉันใน QGIS ฉันจัดการเพื่อแก้ไขปัญหาโดยการลบ '_packed' จากชื่อไฟล์เนื่องจากมีคนแนะนำไว้ในส่วนความคิดเห็นด้านบน


1

อาจเป็นปัญหาของไฟล์ดัชนี. shx ที่ใช้งานไม่ได้อีก ควรเก็บประเภทรูปทรงเรขาคณิตไว้ในส่วนหัว. shp และ. shx หากไม่ตรงกันซอฟต์แวร์จะสร้างข้อผิดพลาด

ดูเหมือนว่า QGIS จะไม่เข้มงวดมากในไฟล์ดัชนีที่ไม่สมบูรณ์และสามารถสร้างขึ้นมาใหม่ได้Save As...ในขณะที่ ARCGIS ยืนยันในไฟล์ดัชนีที่ถูกต้องและสร้าง dbf ที่บรรจุ (ตารางแอตทริบิวต์) สำหรับคุณลักษณะที่สามารถพบได้ผ่านส่วนที่ถูกต้องของ ไฟล์ดัชนีหรืออาจจะไม่ใช้ดัชนี


1

การปรากฏตัวของคุณสมบัติที่ถูกลบและ / หรือพฤติกรรมแปลก ๆ ของเชปไฟล์จากคุณลักษณะถูกลบใน QGIS เป็นปัญหาที่รู้จักเห็นนี้รายงานข้อผิดพลาด 11007และคำถามที่เกี่ยวข้องนี้ - รูปหลายเหลี่ยมที่ถูกลบดูเหมือนจะกลับไปใช้รุ่นเก่า เช่นเดียวกับ ArcGIS ที่มีปัญหากับ shapefiles ดังกล่าวเมื่อบันทึกใน QGIS เป็นไฟล์ MapInfo TAB พวกเขาจะทำให้ปลั๊กอิน MapInfo RouteFinder เกิดความผิดพลาดเว้นแต่ว่าตารางจะบรรจุใน MapInfo ก่อนที่จะโหลด RouteFinder การใช้ Universal Translator เพื่อแปลงรูปร่างที่เสียหายใน MapInfo ล้มเหลว

ตามที่คุณพบปัญหาสามารถแก้ไขได้ด้วยการทำ 'บันทึกเป็น' ใน QGIS

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.