PostGISを使用してトポロジ関係を識別する


16

PostGISを使用して基本的な類型分析を実行しようとしています。私の目的は、他のポリゴンに接触するポリゴンを見つけることです。これを行うために、私ST_GetFaceEdgesはうまくいくと思った(リファレンス)。データベース内のすべてのポリゴンをチェックし、それに接触する他のすべてのポリゴンをリストしたい。下の画像では、2つのポリゴン(建物)が1つの建物に接触し、他の4つのポリゴンが0のポリゴンに接触していると言う結果が期待されます。

ここに画像の説明を入力してください

しかし、私は何をすべきかを理解するのに少し苦労しています。この例をコピーしようとしたときに、理解できない部分がいくつかありました。

-- Returns the sequence, edge id
-- , and geometry of the edges that bound face 1
-- If you just need geom and seq, can use ST_GetFaceGeometry
SELECT t.seq, t.edge, geom
FROM topology.ST_GetFaceEdges('tt',1) As t(seq,edge)
    INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;

topologyテーブル、列、または関数の一部の名前がわからない。私はそれがテーブルだと思っていましたが、よくわかりません。

-- try out on sample of data
-- Table is called 'TestArea', column used is 'fid_1'
SELECT t.seq, t.edge, geom
FROM  TestArea.ST_GetFaceEdges('fid_1', 1) As t(seq,edge)
    INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;

また、内部結合の機能がわからない-これは結果を元のオブジェクトに結合しますか?


4
underdarkが彼女の特徴的に明確な図でこれに答えていることは知っていますが、最初はポリゴンがトポロジ的に関連しているかどうかはわかりません。この場合のトポロジは、視覚的表現とは別のエンティティ間の論理的な関係を意味し、(PostGISでは)CreateTopologyなどでスキーマを設定する必要があります(bit.ly/oLk8QY)しかし、建物がデジタル化される方法は私に見えますエッジが視覚的に近いにもかかわらず、トポロジ的に区別されるように。将来の質問者が知っておくべきこと。
MerseyViking

これはAddTopoGeometryColumn、クエリを実行する前にテーブルにを追加する必要があることを意味しますか?ST_Touches私がチェックした値の結果に基づいて、すべてが理にかなっていますが、おそらくそれは偶然でしょう。
djq

1
を呼び出す必要があるだけでなくAddTopoGeometryColumn、トポロジー的に一貫した方法でデータをデジタル化する必要があります。たとえば、伝統的に、2つの半戸建住宅を2つのポリゴンとしてデジタル化し、GISで「頂点にスナップ」を使用して共有壁が接触するようにしますが、両端に一致するポイントを持つ2つの一致する線として保存されます。しかし、それらをトポロジ的にデジタル化すると、共有壁は実際には各ポリゴンで共有される1つのラインと2つのノードにすぎません。ST_Touches位相的なものではなく、近接性の空間的なチェックのみを行います。
MerseyViking

回答:


19

代わりにST_Touchesを使用できます。

ST_Touches —ジオメトリに少なくとも1つの共通点があるが、それらの内部が交差していない場合にTRUEを返します。

ST_Touchesは、たとえばTRUEを返します

ここに画像の説明を入力してください

カウントを取得すると、次のようになります。

SELECT a.id, count(*)
FROM polygon_table as a
JOIN polygon_table as b
  ON ST_Touches(a.the_geom,b.the_geom)
GROUP BY a.id

ただし、各ポリゴンがいくつのポリゴンに接しているかを知りたいです。それ以外の場合、それは完璧であり、私はそれを実行しました!
djq

1
私はちょうどそれがすべての場合に真/偽の値を返すことに気づいたので、私がしなければならないのはそこにある真の値の数を数えることです。ありがとう!
djq

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