ポリゴンデータの整合性、トポロジをチェックする方法(まだ途中)

ポリゴンの整合性をチェックしたり修正したりを簡単にしたいので、その方法の途中結果です。

整合性には2種類あって、A.自分自身でインターセクションしてたりするものと、B.他のオブジェクトとオーバーラップしてたりギャップがあったりするものです。
A.の場合はpostgisでST_IsValidで整合性をチェックでき、ST_MakeValidで修復することができますが、B.の場合は一筋縄ではいかなさそうです。
postgisではトポロジーをサポートしているので、それを使ってなんとかするのだと思いますが、詳細はググり中です。
で、ひとまずトポロジのチェックだけでもしたい場合は、QGISのトポロジチェッカープラグインを利用するとよさそうです。

参考

ST_Bufferで修復したテーブルを作る方法

CREATE TABLE new_buffered_table as
SELECT ST_Buffer(the_geom,0.0) as the_geom, gid FROM original_table;

Spatilaiteでもだいたい同じ

spatialite> select OGC_FID,IsValid(geometry) from vg_04a where not isvalid(geometry);
spatialite> create table newveg as select buffer(geometry,0.0) as geometry,OGC_FID from vg_04a;
spatialite> select RecoverGeometryColumn("newveg","geometry",4612,"POLYGON","XY");

geometry columnを再設定するのをお忘れなく。<-自分

macpostgisサポートのgdalのインストール

brew install gdal --with-postgres --with-postgresql

データのインポート

ogr2ogr -f PostgreSQL PG:dbname=testdb vg_04a.shp -nlt polygon -s_srs epsg:4612 -t_srs epsg:4612