これは前の質問の続きです。私は新しいPostGISユーザーです。
データでトポロジの有効性を確認し、土地被覆(ポリゴン)データセットで約1700のトポロジの問題を見つけました。これらはすべて「Ring Self_intersection」です。
Paul Ramsayによるこのプレゼンテーション(20ページ)のいくつかの有用な情報を使用して、それに応じてデータをバッファーに入れようとしました。
UPDATE schema.data SET the_geom = buffer(the_geom、0.0)WHERE isvalid(the_geom)= false and isvalid(buffer(the_geom、0.0))= true;
しかし、私は応答を受け取ります:
通知:ポイントまたはその近くのリングの自己交差(編集)エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"に違反しています
**********エラー**********
エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"のSQL状態に違反しています:23514
私も試してみました:
UPDATE csgn.sgm_buffer SET the_geom = buffer(the_geom、0.0)
そして得る:
エラー:リレーション "sgm_buffer"の新しい行はチェック制約 "enforce_geotype_the_geom"に違反しています
**********エラー**********
エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"のSQL状態に違反しています:23514
それで、このバッファテクニックが私の問題で機能しないと思いますか?それとも私は何か間違ったことをしていますか?
ラムゼイ氏は同じ文書で、「8の数字」ポリゴンを処理するための追加の手法を提案しています。私はこれをコードで完全に書く方法(またはそれが何をしているか、そしてそれが私を助けるかどうか)を完全に理解していません:
SELECT ST_BuildArea(ST_Union( 'LINESTRING EMPTY'、ST_ExteriorRing( 'POLYGON((...))'
だから……誰でも手伝ってくれる?これは、PostGISにおける私の厳しいタイムスケールと限られたスキルで、実際の悪夢を証明しています。
ST_Multi()
すべてのポリゴンを強制的にMULTIPOLYGON
sにする必要がある場合があります(これは想定です)