คำอธิบาย
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จะถูกเรียกเมื่อใดก็ตามที่เลเยอร์ถูกบันทึกหลังจากการดำเนินการที่มีศักยภาพในการเพิ่มการตั้งค่าสถานะที่ถูกลบไปยังระเบียน ดังนั้นตอนนี้ไฟล์ควรจะอยู่ในสถานะมีสติเสมอที่จะประมวลผลโดยแอปพลิเคชันอื่น