Wenn wir Informationen über eine Vektorebene (z. B. Shapefile) erhalten möchten, können wir ogrinfo verwenden:
ogrinfo -so myshapefile.shp mylayer
Dies gibt viele relevante Informationen über das Shapefile zurück. Kann zurückgegeben werden, ob ein räumlicher Index vorhanden ist oder nicht? Wenn ja, können wir auf Informationen über den räumlichen Index zugreifen?
Hinweis: Mir ist klar, dass es trivial ist, den Ordner mit dem Shapefile zu öffnen und nach einer .sbn- oder .sbx-Datei zu suchen. Daher ist die Frage spezifisch für ogrinfo.
Antworten:
Als Antwort auf den Kommentar von @Richard Law wird der Name der virtuellen rtree-Tabelle, die den räumlichen Index in GeoPackage enthält, immer nach Vorlage benannt
rtree_[table_name]_[geometry_column_name]
Daher können Sie eine SQL-Abfrage durchführen, die das Vorhandensein der Tabelle rtree überprüft.
Mit ogrinfo können Sie beispielsweise überprüfen, ob die Tabelle "table1" einen räumlichen Index hat
In diesem Fall existieren die räumlichen Indes. Sonst wäre das "0" gewesen.
In GeoPackage kann eine Tabelle nur ein Geometriefeld haben. Daher reicht es aus, eine Überprüfung nur mit "rtree" und dem Namen der Tabelle durchzuführen, ohne den Namen des Geometriefelds als zu kennen
rtree_table1_%
.quelle
Mit GDAL 2.2.0 ist eine der Änderungen am GPKG-Treiber:
Zum Beispiel:
Zeigt an:
Oder wählen Sie besser aus
gpkg_geometry_columns
, um Informationen für alle Geometriespalten in der Datei anzuzeigen:quelle
Ogr verwendet die räumlichen ESRI-Indexdateien .sbn, sbx nicht. Es wird eine .qix-Datei erstellt, die einen räumlichen Index und / oder einen Attributindex enthalten kann. Sie können die .qix über ogrinfo erstellen.
Ogr Shapefile-Treiber
Ich habe auch ein GDAL-Ticket gefunden, in dem erwähnt wird, dass die .sbn-Datei jetzt lesbar ist. Ich bin mir nicht sicher, was das bedeutet.
Ticket # 4719
quelle