Verbinden von Layern mit entsprechenden Elementen mit der PostGIS-Topologie

24

Ich verwende derzeit die PostGIS-Topologieerweiterung, habe jedoch einige Schwierigkeiten, die Funktionsweise der Struktur zu verstehen:

Einer der wichtigsten Punkte ist die Verwendung von "Layern": Soweit ich weiß, sollten Feature-Attribute in einer Tabelle außerhalb des Topologie-Schemas (des genannten Schemas topo_actualname) gespeichert und als Layer dieser Topologie mit registriert werden AddTopoGeometryColumn.

Jedoch ist es eine einfache Möglichkeit , die Attribute (gespeichert in der Schicht Tabelle) mit den entsprechenden Funktionen (Elementen in der verbinden node, faceoder edge_data)?

Was ich jetzt mache ist:

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

Aber ich denke, das ganze layerKonzept ist ziemlich nutzlos, wenn ich sowohl den Namen des Topologie-Schemas als auch den Namen des Layers kennen muss, um die gewünschten Informationen zu erhalten.

Tatsächlich habe ich verstanden, dass die topoSpalte auf dem Layer über genügend Informationen verfügt, um zu wissen, wo sich die jeweilige Topologie befindet. Außerdem topologyspeichert das Schema für jede Topologie einen Verweis auf jede Layer-Tabelle.

Gibt es eine kurze / einfache / richtige Möglichkeit, Informationen zusammenzufügen? Ich habe nach etwas in den Topologieerweiterungsfunktionen gesucht , aber nichts Nützliches gefunden.

Davide
quelle
3
Ich bin ein bisschen ratlos, wie Sie Topologien nutzen sollen, aber das könnte helfen. Sie können einen Guss TopoGeometrydirekt mit einer Geometrie: SELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb. Die Sache ist, dass, wenn die Kanten später geteilt werden, es scheint, dass sich die Geometrie infolgedessen ändern könnte.
jpmc26
1
Was Sie wollen, sind Werkzeuge oder Datenoperationen wie Verschneiden, Vereinigen oder Zusammenführen. QGIS arbeitet mit Post-GIS und ist kostenlos und verfügt über solche Tools. Features befinden sich in der Ebene und werden verbunden, wenn Sie Ebenen basierend auf diesen Operationstypen zusammenführen.
Lewis

Antworten:

1

Die Zuordnung der Attribute zur Topologie ist nicht direkt . Die Beziehung ist für einen Knoten ungefähr so:

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

Ihre select-Anweisung würde also eher so lauten:

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)
MappaGnosis
quelle