waigani's diary

QGISを中心にFOSS4Gをいじくる

OGRでSQL

GDAL/OGR 1.10

GDAL/OGR 1.10がリリースされたのは見ていたのですが、そのうちOSGeo4Wのバージョンが上がってから試そうと放置してました。
でも、ちょっと調べ物をしていたら、このページを発見。
SQLite SQL dialect
ogrinfoやogr2ogrで"-dialect SQLITE"オプションを付けると、SQLite/SpatialiteのSQLを実行出来るってことですか。

SpatialiteのVirtualShape

結構気に入ってたのですが、SpatialiteのSQL関数をOGRで利用したい時は、VirtualShapeを利用して、

 ogr2ogr -f "ESRI Shapefile" dst.shp VirtualShape:src.shp -sql "select simplify(geometry, 0.001) from org"
  • 変換元 : src.shp
  • 変換先 : dst.shp
  • Spatialiteのsimplify()関数で図形の中間点間引き

みたいにしてました。でもこの方法、shapefileにしか使用出来ません。

-dialect SQLITE

GDAL/OGR 1.10からは、-dialect SQLITEを付けてあげれば、

 ogr2ogr -f "ESRI Shapefile" dst.shp src.shp -dialect SQLITE -sql "select simplify(geometry, 0.001) from org"

はもちろん、元ファイルがshapefile以外でも大丈夫。
from以下の読み込み先のレイヤはあらかじめ、ogrinfoで調べましょう。