Unir capas con elementos respectivos con la topología de PostGIS

23

Actualmente estoy usando 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 "layer" s: a partir de lo que entiendo, los atributos de las características deben almacenarse en una tabla fuera del esquema de la topología (el denominado topo_actualname ) y registrarse como una capa de esa topología con AddTopoGeometryColumn .

Sin embargo, ¿existe una forma sencilla de unir los atributos (almacenados en la tabla de capas) con las características respectivas (elementos en 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 concepto layer es bastante inútil si tengo que saber tanto el nombre del esquema de topología como el nombre de la capa para obtener la información que quiero.

De hecho, creo que entendí que la columna topo en la capa tiene suficiente información para saber dónde está la topología respectiva, y además el esquema topology almacena una referencia a cada tabla de capa para cada topología.

¿Existe una forma corta / simple / adecuada de unir información? Estaba buscando algo en las funciones de extensión de topología , pero no pude encontrar nada útil.

    
pregunta Davide 10.05.2013 - 10:26

1 respuesta

1

La asignación de los atributos a la topología no es direct . La relación es algo así para un nodo:

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

Por lo tanto, su 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)
    
respondido por el MappaGnosis 17.11.2017 - 10:31

Lea otras preguntas en las etiquetas