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;
また、内部結合の機能がわからない-これは結果を元のオブジェクトに結合しますか?
これは
—
djq
AddTopoGeometryColumn
、クエリを実行する前にテーブルにを追加する必要があることを意味しますか?ST_Touches
私がチェックした値の結果に基づいて、すべてが理にかなっていますが、おそらくそれは偶然でしょう。
を呼び出す必要があるだけでなく
—
MerseyViking
AddTopoGeometryColumn
、トポロジー的に一貫した方法でデータをデジタル化する必要があります。たとえば、伝統的に、2つの半戸建住宅を2つのポリゴンとしてデジタル化し、GISで「頂点にスナップ」を使用して共有壁が接触するようにしますが、両端に一致するポイントを持つ2つの一致する線として保存されます。しかし、それらをトポロジ的にデジタル化すると、共有壁は実際には各ポリゴンで共有される1つのラインと2つのノードにすぎません。ST_Touches
位相的なものではなく、近接性の空間的なチェックのみを行います。
CreateTopology
などでスキーマを設定する必要があります(bit.ly/oLk8QY)しかし、建物がデジタル化される方法は私に見えますエッジが視覚的に近いにもかかわらず、トポロジ的に区別されるように。将来の質問者が知っておくべきこと。