Atualmente, estou usando a extensão de topologia PostGIS, mas tenho algumas dificuldades para entender como a estrutura funciona:
Um dos pontos principais é o uso de "layer" s: pelo que entendi, os atributos de recursos devem ser armazenados em uma tabela fora do esquema da topologia (aquele nomeado topo_actualname
) e registrados como uma camada dessa topologia AddTopoGeometryColumn
.
No entanto, há uma maneira simples para se juntar os atributos (armazenados na tabela de camada) com os respectivos recursos (elementos no node
, face
ou edge_data
)?
Agora, o que eu faço é:
SELECT whatever
FROM layer_tb l
JOIN topo_topologyname.edge_data e ON (l.topo).id=edge_id;
Mas acho que todo o layer
conceito é inútil se precisar conhecer o nome do esquema de topologia e o nome da camada para obter as informações desejadas.
Na verdade, acho que entendi que a topo
coluna na camada possui informações suficientes para saber onde está a respectiva topologia e, além disso, o topology
esquema armazena uma referência a cada tabela de camada para cada topologia.
Existe uma maneira curta / simples / adequada de juntar informações? Eu estava procurando por algo nas funções de extensão da topologia , mas não consegui encontrar nada útil.
fonte
TopoGeometry
diretamente para uma geometria:SELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb
. O problema é que, se as arestas forem divididas mais tarde, parece que a geometria pode mudar como resultado.Respostas:
O mapeamento dos atributos para a topologia não é direto . O relacionamento é algo como isto para um nó:
Portanto, sua instrução select seria mais ou menos assim:
fonte