Mais

Removendo pseudo nós do banco de dados PostGIS usando ST_ModEdgeHeal ()?


Usei o osm2po (5.0.0) e seu arquivo SQL gerado automaticamente para carregar cerca de 25% de Europe.osm.pbf como um rede tabela em meu banco de dados PostGIS. Eu também criei um associado nós mesa comselecione pgr_createTopology ('rede', 0,00001, 'geom_way', 'id');

Uma vez que leva literalmente dias para calcular qualquer coisa neste conjunto de dados sem resultados aparentes, eu simplifiquei, removendo todas as arestas que eram de classe de estrada inferior (atributo do osm2po clazz> 30), para que minha rede seja bastante simplificada. No entanto, isso resulta em mais de 800k nós (de 1m no total no banco de dados) que são pseudo nós (grau = 2), ou seja, eles conectam dois segmentos da mesma estrada da mesma classe e velocidade máxima permitida e agora são meramente resíduos indesejados da topologia original e mais complexa.

Para excluir esses nós, tenho tentado usar ST_ModEdgeHeal (), conforme sugerido em Como simplificar uma rede roteável? e pretendo usar um código como o abaixo.

selecione ST_ModEdgeHeal ('rede', ns.id, nt.id) de pseudonodes p rede de junção externa esquerda ns em ns.source = p.id rede de junção externa esquerda nt em nt.target = p.id onde ns.clazz = nt .clazz e ns.kmh = nt.kmh;

Parece, no entanto, que meu rede não é a rede que ST_ModEdgeHeal () espera. Depois que eu pergunteiSELECT CreateTopology ('rede', 4326);criou um novo esquema em branco rede, enquanto estou usando o esquema público, onde rede e nós as tabelas são armazenadas. Não sei como combinar esses dois esquemas para que ST_ModEdgeHeal () funcione. Então, agora eu tenho um erroExceção espacial SQL / MM - borda inexistente 2629192. Compreensível, como rede esquema é preenchido com tabelas vazias.

Portanto, a questão é: eu tenho que fazer alguma codificação adicional, além daquela feita automaticamente com o SQL gerado pelo osm2po, para configurar minha rede e tabelas de nós como topologia e fazer ST_ModEdgeHeal () funcionar?

Para remover pseudo nós também tentei uma solução para esta questão (Encontre pseudo nós em software GIS grátis), mas não obtive nenhum resultado após 2 dias de cálculos.


Assista o vídeo: Postgresql: Create Postgis database and import shapefiles. (Outubro 2021).