OGR情報-空間インデックスを確認しますか?


9

ベクターレイヤー(シェープファイルなど)に関する情報を取得する場合は、ogrinfoを使用できます。

ogrinfo -so myshapefile.shp mylayer

これにより、シェープファイルに関する多くの関連情報が返されます。空間インデックスが存在するかどうかを返すことはできますか?もしそうなら、空間インデックスに関する情報にアクセスできますか?

注:シェープファイルを含むフォルダーを開いて.sbnまたは.sbxを探すのは簡単なことなので、質問はogrinfoに固有です。


GeoPackageに重点を置いた同じ質問があります。
alphabetasoup

回答:


4

@Richard Lawによるコメントへの回答として、GeoPackageの空間インデックスを含む仮想rtreeテーブルの名前は、常にテンプレートに従って命名されます rtree_[table_name]_[geometry_column_name]

したがって、rtreeテーブルの存在をチェックするSQLクエリを作成できます。

たとえば、テーブル「table1」にogrinfoで空間インデックスがあるかどうかを確認できます

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

この場合、空間インデックスは存在します。それ以外の場合は「0」になります。

GeoPackageでは、テーブルに含めることができるジオメトリフィールドは1つだけなので、ジオメトリフィールドの名前がであることがわからなくても、「rtree」とテーブル名だけでチェックするだけで十分rtree_table1_%です。


いい答えです。異なるベクター形式間でこれを抽象化できないことに失望しているだけです。
alphabetasoup

サポートされているOGR形式のリストを見ると、gdal.org / ogr_formats.html空間インデックスをサポートしている形式はほとんどありません。ほとんどのデータベース形式は空間インデックスを透過的にサポートしており、たとえばテーブルに空間インデックスがあるかどうかをOracleから見つけるのはかなり困難です。
user30184

2

GDAL 2.2.0、GPKGドライバへの変更の一つは次のとおりです。

  • HasSpatialIndex(tblname、geomcolname)SQL関数を追加

例えば:

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

ショー:

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

またはgpkg_geometry_columns、ファイルからすべてのジオメトリ列の情報を表示するように選択します。

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

1

Ogrは、ESRI空間インデックスファイル.sbn、sbxを使用しません。これは、空間インデックスや属性インデックスを含むことができる.qixファイルを作成します。ogrinfoを使用して.qixをビルドできます。
Ogrシェープファイルドライバー

.sbnファイルについて言及しているGDALチケットも読み取り可能になりました。これが何を意味するのかわかりません。
チケット#4719


2
「OGR 1.10以降、[ESRIシェイプファイルドライバー]はESRI空間インデックスファイル(.sbn / .sbx)も使用できる」gdal.org/ogr/drv_shapefile.html
Mike T

@MikeToewsアップグレードしたほうがいいようです。ありがとう!
Jay Laura

@JayLaura 1.10はまだリリースされていませんが、開発者がテストしてみたいと思うのは間違いありません
マイクT

1
GDAL / OGR 1.10.0が先週公開されました: trac.osgeo.org/gdal/wiki/Release/1.10.0-News
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.