Giải thích sự khác nhau giữa các tập tin shx và shp của shapefile?


11

Tôi đang tìm kiếm một lời giải thích sâu hơn về sự khác biệt trong các tệp shp và shx nhưng không có kết quả. Ý tôi là ngoài 'shp chứa hình học - shx chứa một chỉ mục của hình học'.

Lý do tôi hỏi, là bởi vì trong khi làm việc tại QGIS gần đây, tôi đã thực hiện hai quan sát dẫn đến các câu hỏi trong đầu xung quanh sự khác biệt chính xác trong các phạm vi tệp này:

  1. QGIS có thể mở và hiển thị cả shx và shp, và mỗi tệp dường như giống nhau ít nhiều trong đầu ra (hiển thị) của chúng,
  2. nhưng không chính xác như vậy - Tôi đã nhận thấy rằng đôi khi các tệp shx / shp phù hợp hiển thị hơi 'off-kilter' so với nhau. Nó dường như không phải là một vấn đề chiếu, họ chỉ đơn giản là không vẽ ở cùng một vị trí với nhau.

Những quan sát này khiến tôi tò mò về lý do tại sao những khác biệt trong hiển thị này tồn tại và tại sao QGIS có thể mở và vận hành shx theo cách tương tự như shp, khi trước đây tôi hiểu rằng shp là tệp 'chính' nếu bạn muốn, nhưng bạn sẽ yêu cầu .dbf và .shx hoạt động chính xác như một thực thể duy nhất.



Câu trả lời:


18

Tham chiếu chính xác về định dạng shapefile là Mô tả kỹ thuật Shapefile ESRI .

Thật sai lầm khi mô tả shxnhư là một "chỉ số". Thay vào đó, nó là tập tin bù truy cập trực tiếp. Không có dữ liệu trong shx, chỉ có một bản sao của hàng trăm byte và số bản ghi đầu tiên và được bù vào byte bắt đầu của bản ghi đó trong shp. Vị trí duy nhất cho các thuộc tính là dbf(độc lập - mặc dù "kiến thức" ngược lại, shxkhông ràng buộc shpdbf, chỉ có số bản ghi thực hiện điều đó).

Các shapefile có thể có "khoảng trống" trong shpđó làm cho shxkhông thể thiếu, nhưng trong thực tế, các công cụ Esri sẽ viết lại toàn bộ shpshxdo đó, bất kỳ khoảng trống nào được tạo bằng cách chỉnh sửa các bản ghi sẽ được xóa. Trong hầu hết các điều kiện, có thể khôi phục shxnội dung nếu nó bị mất; điều tương tự không thể được nói cho shphay dbf.

Việc đặt tên shpshxlà một thành phần của VFILEmô-đun truy cập trực tiếp có chiều rộng thay đổi của hệ điều hành PrImeOS, lần đầu tiên được Esri chuyển sang Unix, VAX / VMS, Data General và IBM, sau đó đến Microsoft Windows. Các sbn/ sbxkhông gian cặp chỉ số cổ phiếu quy ước đặt tên giống nhau (mặc dù chúng không được ghi nhận trong các đặc điểm kỹ thuật shapefile). Trong VFILEthư viện FORTRAN ban đầu , chỉ có tệp cơ sở được đặt tên và tệp bù có xký tự đầu cuối chỉ xuất hiện khi tạo tệp.


1
Và sau này: The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.Về mặt logic, nó tương tự như các chỉ mục cơ sở dữ liệu a data structure that improves the speed of data retrieval operations.
dùng49584

2
Không, shxhoàn toàn không phải là một chỉ số không gian.
Vince

1
Thực shxtế làm chậm truy cập nối tiếp (nhiều I / O), nhưng nó làm cho truy cập trực tiếp có thể , có thể được coi là một cải tiến.
Vince

1
"..., Chỉ một bản sao của hàng trăm byte và số bản ghi đầu tiên và ..." . "... Shx không ràng buộc shp và dbf, chỉ có số bản ghi thực hiện điều đó" . Đầu tiên bạn nói 'số bản ghi' nằm trong .shx. Sau này bạn nói .shx không ràng buộc .shp và .dbf, nhưng đó là 'số kỷ lục'. Nếu 'số bản ghi' liên kết hai định dạng được trích dẫn và nó là một phần của .shx, thì tại sao không thể nói .shx quan hệ .shp và .dbf? Thật khó hiểu với tôi phần này trong câu trả lời của bạn. Bạn có thể làm rõ? Tks.
Andre Silva

2
Số lượng hồ sơ có mặt trong cả hai shpshx. Nó không có trong dbf, chỉ có phần bù byte ẩn từ cuối bản ghi tiêu đề (40 byte cho bảng, bao gồm số trường và 40 byte bổ sung cho mỗi trường) nhân với kích thước bản ghi. Tôi đã viết các trình đọc và nhà văn shapefile bằng cả 'C' và Java và đó là biến đếm vòng lặp của chương trình liên kết shp/ shxvới dbf. Việc shxcung cấp liên kết của số bản ghi, bằng cách bù với kiểm tra tính toàn vẹn recno, để bắt đầu shpbản ghi, không có gì hơn.
Vince

12

Shx chắc chắn không có gì để hiển thị trên bản đồ một mình khi bạn có thể đọc từ thông số kỹ thuật https://www.esri.com/l Library / whitepapers / pdfs / shapefile.pdf .

Bạn thực sự đúng khi có thể mở shapefile bằng cách chọn phần .shx với QGIS 3.0.3 nhưng tôi không thể thấy bất kỳ sự khác biệt nào về vị trí. Tôi tin rằng shapefile vẫn được mở thông qua cùng một đường dẫn và kết quả là như nhau. Nếu bạn có thể tạo một trường hợp thử nghiệm để tái tạo vấn đề về vị trí khác nhau của hình học, vui lòng tạo một vé QGIS về vấn đề này.

Nếu bạn xóa phần .shp, bạn sẽ thấy rằng QGIS không mở .shx một mình.


Lỗi của tôi, tôi đã kiểm tra các tập tin tương tự một lần nữa và nó thực sự là một phép chiếu không khớp. Khi tôi sắp xếp lại những thứ này, các phiên bản shx và shp của cùng một lớp xếp thành hàng và giống hệt như mong đợi. Thật thú vị, QGIS cho phép cả .shx và .shp được tải lên cùng một dự án và chúng hiển thị đường dẫn nguồn tương ứng của riêng chúng, nhưng như được chỉ ra bởi những người khác, đầu ra là cùng một hình học vì đây thực sự là cùng một tệp.
Maggie

2

.shxlà chỉ mục cho một .shptập tin.

Bạn cần cả hai để có thể mở .shptập tin. Nếu bạn mở một .shxtệp trong QGIS, nó sẽ mở .shptệp. Nếu họ tắt, có một vấn đề chiếu.

Một ShapeFile cần ba thành phần:

  1. .shp - lưu trữ hình học
  2. .shx - lưu trữ chỉ mục
  3. .dbf - lưu trữ các thuộc tính

Một .prjtập tin thường được đề nghị, trong đó lưu trữ thông tin chiếu. Có thể có các tệp khác được liên kết với ShapeFile, nhưng chúng không thực sự cần thiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.