PostGISトポロジを使用してレイヤーをそれぞれの要素と結合する


24

現在、PostGISトポロジ拡張を使用していますが、構造がどのように機能するかを理解するのは困難です。

重要なポイントの1つは「レイヤー」の使用です。私が理解しているように、フィーチャ属性はトポロジのスキーマ(という名前のスキーマtopo_actualname)からテーブルに保存し、そのトポロジのレイヤーとしてに登録する必要がありAddTopoGeometryColumnます。

しかし、それぞれの特徴(の要素を有する(層テーブルに格納された)属性を結合する簡単な方法がありnodefaceまたはedge_data)か?

今、私がしていることは:

SELECT whatever
FROM layer_tb l
     JOIN topo_topologyname.edge_data e ON (l.topo).id=edge_id;

しかしlayer、必要な情報を取得するためにトポロジスキーマ名とレイヤー名の両方を知る必要がある場合、概念全体はかなり役に立たないと思います。

実際、topoレイヤーの列にはそれぞれのトポロジがどこにあるかを知るのに十分な情報があり、さらにtopologyスキーマには各トポロジの各レイヤーテーブルへの参照が格納されていることを理解したと思います。

情報を結合するための短い/シンプル/適切な方法はありますか?トポロジ拡張機能で何かを探していましたが、有用なものが見つかりませんでした。


3
トポロジをどのように活用するかについても少し迷っていますが、これが役立つかもしれません。をTopoGeometryジオメトリに直接キャストできますSELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb。問題は、後でエッジが分割されると、結果としてジオメトリが変更される可能性があることです。
jpmc26 14

1
必要なのは、ツール、または交差、結合、マージなどのデータ操作です。QGISはポストGISで動作し、無料でこのようなツールを備えています。フィーチャはレイヤー内にあり、これらのタイプの操作に基づいてレイヤーをマージすると結合されます。
ルイス

回答:


1

トポロジへの属性のマッピングは直接ではありません。ノードの関係は次のようなものです。

your_topogeom -> (topogeom_id) relation table (element_id)-> (node_id) node

したがって、selectステートメントは次のようになります。

SELECT whatever
FROM layer_tb l
INNER JOIN relation AS r ON (((l.mytopogeom).id , (l.mytopogeom).layer_id)) = (r.topogeo_id, r.layer_id  )
INNER JOIN edge_data AS e ON (r.element_id = e.edge_id)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.