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_%
.