PostGISでリージョンを使用してポリラインを分割する


8

PostGISでポリゴンの境界線(領域)でポリラインを分割することが可能かどうか疑問に思っていました。

代替テキスト

リージョンroad_blocksとラインを呼び出しましょうroad_cl

road_block新しく作成したポリラインの下から新しいポリラインにデータをコピーできる場合、それは本当のボーナスになります。

回答:


11
CREATE TABLE new_road_cl AS
  SELECT ST_Intersection(r.geom, b.geom) AS geom,
         b.attr1, b.attr2, b.attr3,
         r.attr1, r.attr2, r.attr3
  FROM road_blocks b, road_cl r
  WHERE ST_Intersects(r.geom, b.geom);

おかげで私は、私はそれを実行したときに、これを取得するように見える: TopologyException: found non-noded intersection between LINESTRING (397766 6.83237e+006, 397769 6.83237e+006) and LINESTRING (397767 6.83238e+006, 397766 6.83237e+006) at 397766 6.83237e+006
ネイサンW

単一の道路で実行しただけで、どこかに不正なデータがあるようです。
ネイサンW

1
+1いいね。デフォルトのジオメトリフィールド名ではありませthe_geomgeomか?
Adam Matan

2

ネイサン、

1)ジオメトリが有効であることを確認してください。無効なジオメトリは、この種のエラーの主な原因です。SELECT ST_IsValid(geom);

2)実行しているgeoのバージョンは何ですか?する

SELECT postgis_full_version();

GEOS 3.2以降では、これらのトポロジー例外の問題のいくつかが実行されます。

アダムへ-ある日、彼はthe_geomを入力するのが面倒だと決めた:)-それで彼は「今からデフォルトは-geom」と宣言した。私たちはみんな自分の足にスタンプを押して言った-2.0まではNO

したがって、geogはgeographyのデフォルトであり、geomは2.0のジオメトリのデフォルトになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.