Thông tin OGR - Kiểm tra chỉ số không gian?


9

Nếu chúng ta muốn lấy thông tin về một lớp vectơ (ví dụ shapefile), chúng ta có thể sử dụng ogrinfo:

ogrinfo -so myshapefile.shp mylayer

Điều này trả về rất nhiều thông tin thích hợp về shapefile. Có thể trả về việc có tồn tại một chỉ số không gian không? Nếu vậy, chúng ta có thể truy cập thông tin về chỉ số không gian?

Lưu ý: Tôi nhận ra việc mở thư mục chứa shapefile và tìm kiếm một .sbn hoặc .sbx là không quan trọng và vì vậy câu hỏi dành riêng cho ogrinfo.


Tôi có cùng một câu hỏi, với sự nhấn mạnh vào GeoPackage.
alphasoup

Câu trả lời:


4

Như một câu trả lời cho nhận xét của @Richard Law, tên của bảng rtree ảo có chứa chỉ mục không gian trong GeoPackage luôn được đặt tên theo mẫu rtree_[table_name]_[geometry_column_name]

Do đó, bạn có thể tạo một truy vấn SQL để kiểm tra sự tồn tại của bảng rtree.

Ví dụ: bạn có thể kiểm tra xem bảng "bảng1" có chỉ mục không gian với ogrinfo không

ogrinfo -sql "SELECT EXISTS(SELECT 1 FROM sqlite_master WHERE tbl_name like 'rtree_table1_%') as has_spatial_index" mygeopackage.gpkg


INFO: Open of `mygeopackage.gpkg'
      using driver `GPKG' successful.

Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
has_spatial_index: Integer (0.0)
OGRFeature(SELECT):0
  has_spatial_index (Integer) = 1

Trong trường hợp này, các không gian không tồn tại. Nếu không thì sẽ là "0".

Trong GeoPackage, một bảng chỉ có thể có một trường hình học và do đó chỉ cần kiểm tra bằng "rtree" và tên của bảng mà không cần biết tên của trường hình học là đủ rtree_table1_%.


Câu trả lời tốt. Tôi chỉ thất vọng vì không có sự trừu tượng hóa cho điều này trên các định dạng vector khác nhau.
alphabetasoup

Bằng cách xem danh sách các định dạng OGR được hỗ trợ gdal.org/ogr_formats.html khá ít định dạng hỗ trợ chỉ mục không gian. Hầu hết các định dạng cơ sở dữ liệu đều hỗ trợ các chỉ mục không gian một cách minh bạch và khá khó tìm thấy ví dụ từ Oracle nếu bảng có chỉ số không gian hay không. Tôi đoán rằng sự tiết chế đó sẽ không sớm rơi vào GDAL.
dùng49584

2

Với GDAL 2.2.0 , một trong những thay đổi đối với trình điều khiển GPKG là:

  • thêm hàm SQL HasSpatial Index (tblname, geomcolname)

Ví dụ:

ogrinfo -sql "SELECT HasSpatialIndex('some_layer', 'geom')" some-file.gpkg

Trình diễn:

INFO: Open of `some-file.gpkg'
      using driver `GPKG' successful.

Layer name: SELECT
Geometry: Unknown (any)
Feature Count: 1
Layer SRS WKT:
(unknown)
HasSpatialIndex: Integer (0.0)
OGRFeature(SELECT):0
  HasSpatialIndex (Integer) = 1

Hoặc tốt hơn, chọn từ gpkg_geometry_columnsđể hiển thị thông tin cho tất cả các cột hình học trong tệp:

ogrinfo -sql "SELECT table_name, column_name, HasSpatialIndex(table_name, column_name) FROM gpkg_geometry_columns" some-file.gpkg

1

Ogr không sử dụng các tệp Chỉ mục không gian ESRI .sbn, sbx. Nó tạo ra một tệp .qix có thể chứa chỉ mục không gian và / hoặc chỉ mục thuộc tính. Bạn có thể xây dựng .qix thông qua ogrinfo.
Trình điều khiển shapefile Ogr

Tôi cũng tìm thấy một tệp GDAL đề cập đến tập tin .sbn hiện có thể đọc được. Không chắc điều này có nghĩa là gì.
vé số 4719


2
"Bắt đầu với OGR 1.10, [trình điều khiển Shapefile ESRI] cũng có thể sử dụng các tệp chỉ mục không gian ESRI (.sbn / .sbx)" gdal.org/ogr/drv_shapefile.html
Mike T

@MikeToews Hình như tôi đã nâng cấp tốt hơn. Cảm ơn!
Jay Laura

@JayLaura 1.10 chưa được phát hành, nhưng tôi chắc chắn các nhà phát triển rất muốn thử nghiệm nó
Mike T

1
GDAL / OGR 1.10.0 đã xuất hiện vào tuần trước: trac.osgeo.org/gdal/wiki/Release/1.10.0-News
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.