25 votos

Unir capas con sus respectivos elementos con PostGIS Topology

Actualmente estoy utilizando la extensión de topología PostGIS, pero tengo algunas dificultades para entender cómo funciona la estructura:

Uno de los puntos clave es el uso de "capas": según tengo entendido, los atributos de las características deben almacenarse en una tabla fuera del esquema de la topología (la denominada topo_actualname ) y registrada como capa de esa topología con AddTopoGeometryColumn .

Sin embargo, ¿existe alguna forma sencilla de unir los atributos (almacenados en la tabla de capas) con las características respectivas (elementos de la tabla de capas)? node , face o edge_data )?

Ahora, lo que hago es:

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

Pero supongo que todo el layer es bastante inútil si tengo que conocer tanto el nombre del esquema topológico como el nombre de la capa para obtener la información que quiero.

De hecho, creo haber entendido que el topo columna de la capa tiene suficiente información para saber dónde se encuentra la topología respectiva, y además el topology almacena una referencia a cada tabla de capas para cada topología.

¿Existe una forma breve/sencilla/adecuada de unir la información? Estaba buscando algo en el funciones de extensión topológica pero no he encontrado nada útil.

1voto

Nick Puntos 3115

La correspondencia de los atributos con la topología no es directo . En relación es algo así para un nodo:

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

Así que tu declaración de selección sería más como esto:

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)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X