SpatiaLiteには数千のポリゴンがあります。「タッチ」クエリを実行しようとしています。
select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
うわー、遅いですか!
ただし、map1の1つの区画に対してのみ実行するように要求すると、それは非常に高速に実行されます。
select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
and map1."ROWID" = 753
最初のクエリの実行速度は遅くなると思いますが、驚くほど遅いです。SQLServer、マニホールドGIS、PostGISで非常に高速に実行されます。Spatialiteは本当に非効率的ですか?
9
スペーシャライトの速度に関するいくつかのテストについては、こちらを参照してください。インデックスを使用する場合、大規模なデータセットでのST_Intersects操作の速度が200倍になることを示唆しています。
—
シンバマング2012年
リンクFezterをありがとう。この例の唯一の問題は、バウンディングボックスを含めるために追加のSQLコードを作成する必要があったことです(そして、エンベロープを強制的にフィードしなければなりませんでした)。次のバージョンのspatialiteが、すでにそこにある空間インデックスを単に利用することは素晴らしいことです。
—
AJL
gis.stackexchange.comへようこそ!このサイトの形式は、投稿された回答が元の質問に対する回答であることを意味します。回答またはコメントに応答するときは、コメントにすることが最善です。
—
Sean