อธิบายความแตกต่างระหว่างไฟล์ shx และ shp ของ shapefile หรือไม่


11

ฉันกำลังค้นหาคำอธิบายเชิงลึกเพิ่มเติมเกี่ยวกับความแตกต่างในไฟล์ shp และ shx เพื่อประโยชน์เล็กน้อย ฉันหมายถึงเกิน 'shp มีรูปทรงเรขาคณิต - shx มีดัชนีของรูปทรงเรขาคณิต'

เหตุผลที่ฉันถามคือเมื่อเร็ว ๆ นี้ขณะที่ทำงานใน QGIS ฉันได้ทำการสังเกตสองครั้งที่ทำให้เกิดคำถามในใจของฉันเกี่ยวกับความแตกต่างที่แน่นอนในขอบเขตไฟล์เหล่านี้:

  1. QGIS สามารถเปิดและแสดงทั้ง shx และ shp และไฟล์แต่ละไฟล์ดูเหมือนจะเหมือนกันมากขึ้นหรือน้อยลงในเอาต์พุตของพวกเขา (จอแสดงผล)
  2. แต่ไม่ใช่อย่างนั้น - ฉันสังเกตเห็นว่าบางครั้งไฟล์ shx / shp ที่ตรงกันแสดง 'off-kilter' ที่สัมพันธ์กันเล็กน้อย ดูเหมือนจะไม่เป็นปัญหาการฉายภาพ แต่พวกเขาก็ไม่ได้วาดในตำแหน่งเดียวกับกันและกัน

ข้อสังเกตเหล่านี้ทำให้ฉันอยากรู้ว่าทำไมความแตกต่างในการแสดงจึงมีอยู่และทำไม QGIS สามารถเปิดและใช้ shx ในลักษณะเดียวกับ shp เมื่อก่อนหน้านี้ความเข้าใจของฉันคือ shp เป็นไฟล์ 'master' ถ้าคุณต้องการ แต่ ต้องการ. dbf และ. shx เพื่อให้ทำงานได้อย่างถูกต้องในรูปแบบเอนทิตี้เดียว



คำตอบ:


19

การอ้างอิงที่ชัดเจนเกี่ยวกับรูปแบบ shapefile เป็นคำอธิบาย ESRI Shapefile เทคนิค

มันเป็นความเข้าใจผิดที่จะอธิบายshxว่าเป็น "ดัชนี" แต่เป็นไฟล์ออฟเซ็ตการเข้าถึงโดยตรง ไม่มีข้อมูลในเป็นเพียงโคลนของร้อยไบต์แรกและบันทึกหมายเลขและชดเชยไบต์เริ่มต้นของการบันทึกว่าในshx shpตำแหน่งเดียวสำหรับแอตทริบิวต์คือdbf(ซึ่งเป็นแบบสแตนด์อโลน - แม้จะมี "ความรู้" ตรงข้าม แต่shxก็ไม่ได้ผูกshpและdbfเพียงบันทึกหมายเลขทำอย่างนั้น)

เป็นไปได้ที่รูปร่างจะมี "ช่องว่าง" shpซึ่งทำให้shxขาดไม่ได้ แต่ในทางปฏิบัติเครื่องมือของ Esri จะเขียนใหม่ทั้งหมดshpและshxเพื่อให้มีการลบช่องว่างที่สร้างโดยการแก้ไขระเบียนใด ๆ ภายใต้เงื่อนไขส่วนใหญ่เป็นไปได้ที่จะกู้คืนshxเนื้อหาถ้ามันหายไป; กระป๋องเดียวกันไม่สามารถกล่าวว่าสำหรับหรือshpdbf

การตั้งชื่อshpและshxเป็นส่วนหนึ่งของVFILEโมดูลการเข้าถึงโดยตรงความกว้างของตัวแปรของระบบปฏิบัติการ PrImeOS ซึ่งพอร์ตแรกโดย Esri ไปยัง Unix, VAX / VMS, Data General และ IBM จากนั้นไปที่ Microsoft Windows sbn/ sbxอวกาศหุ้นดัชนีทั้งคู่ตั้งชื่อเดียวกัน (แม้ว่าเหล่านี้ไม่ได้รับการบันทึกไว้ภายในสเปเชป) ภายในVFILEไลบรารี FORTRAN ดั้งเดิมเฉพาะชื่อไฟล์ฐานเท่านั้นและไฟล์ออฟเซ็ตที่มีxอักขระเทอร์มินัลเพิ่งปรากฏเมื่อสร้างไฟล์


1
และต่อมา: เหตุผลที่มันเป็นคล้ายกับฐานข้อมูลดัชนีThe index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization. a data structure that improves the speed of data retrieval operations
user30184

2
ไม่shxมันไม่ได้เป็นดัชนีเชิงพื้นที่
วินซ์

1
การshxเข้าถึงแบบอนุกรมช้ากว่าจริง (I / O มากขึ้น) แต่มันทำให้การเข้าถึงโดยตรงเป็นไปได้ซึ่งอาจถูกพิจารณาว่าเป็นการปรับปรุง
วินซ์

1
"... เพียงโคลนของร้อยไบต์แรกและบันทึกหมายเลขและ ..." "... SHX ไม่ผูกบราและ DBF เพียงบันทึกจำนวนไม่ว่า" ก่อนอื่นคุณพูดว่า 'หมายเลขบันทึก' อยู่ภายใน. shx หลังจากนั้นคุณพูดว่า. shx ไม่ได้ผูก. shp และ. dbf แต่ 'บันทึกหมายเลข' ทำ หาก 'หมายเลขบันทึก' ผูกสองรูปแบบที่อ้างถึงและเป็นส่วนหนึ่งของ. shx ทำไมจึงไม่สามารถพูดว่า มันทำให้ฉันสับสนในคำตอบของคุณ คุณช่วยอธิบายได้ไหม Tks
Andre Silva

2
จำนวนบันทึกทั้งในปัจจุบันและshp shxมันไม่ได้อยู่ในการdbfชดเชยไบต์โดยนัยเท่านั้นจากจุดสิ้นสุดของระเบียนส่วนหัว (40 ไบต์สำหรับตารางซึ่งรวมถึงการนับเขตข้อมูลและ 40 ไบต์เพิ่มเติมสำหรับแต่ละเขตข้อมูล) คูณขนาดของบันทึก ผมเคยเขียนให้ผู้อ่าน shapefile และนักเขียนทั้งใน 'C' และ Java และมันก็เป็นตัวแปรห่วงเคาน์เตอร์ของโปรแกรมที่เชื่อมโยงshp/ ไปshx ให้การเชื่อมโยงของการบันทึกหมายเลขโดยการชดเชยด้วยการตรวจสอบความสมบูรณ์ recno เพื่อการเริ่มต้นของการบันทึกไม่มีอะไรมาก dbfshxshp
วินซ์

12

SHX แน่นอนมีอะไรที่จะแสดงบนแผนที่เพียงอย่างเดียวที่คุณสามารถอ่านได้จากข้อกำหนดhttps://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

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

หากคุณลบ. shp ส่วนหนึ่งคุณจะเห็นว่า QGIS ไม่เปิด. shx เพียงอย่างเดียว


ความผิดพลาดของฉันฉันตรวจสอบไฟล์เดิมอีกครั้งและมันเป็นการฉายที่ไม่ตรงกัน เมื่อฉันปรับเปลี่ยนสิ่งเหล่านี้ใหม่ shx และ shp ของเลเยอร์เดียวกันเรียงกันและเหมือนกันตามที่คาดไว้ ที่น่าสนใจ QGIS อนุญาตให้อัปโหลดทั้ง. shx และ. shp ไปยังโครงการเดียวกันและพวกเขาแสดงเส้นทางที่มาของตนเองตามลำดับ แต่ตามที่คนอื่น ๆ ชี้เอาท์พุทเป็นรูปทรงเรขาคณิตที่แน่นอนเช่นเดียวกับไฟล์เหล่านี้
Maggie

2

.shxเป็นดัชนีสำหรับ.shpไฟล์

คุณต้องทั้งคู่จึงจะสามารถเปิด.shpไฟล์ได้ หากคุณเปิด.shxไฟล์ใน QGIS จะเป็นการเปิด.shpไฟล์ หากปิดอยู่แสดงว่ามีปัญหาการฉายภาพ

ShapeFile ต้องการสามองค์ประกอบ:

  1. .shp - เก็บรูปทรงเรขาคณิต
  2. .shx - เก็บดัชนี
  3. .dbf - เก็บคุณสมบัติ

.prjไฟล์มักจะแนะนำที่เก็บข้อมูลการฉาย อาจมีไฟล์อื่น ๆ ที่เกี่ยวข้องกับ ShapeFile แต่ไม่จำเป็นต้องใช้

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