Mais

Consultas múltiplas em pgrouting (comprimento como resultado)


Estou enfrentando o seguinte problema com duas tabelas:

A primeira tabela contém tudo my streetnetwork com custo, origem, destino. Outra tabela contém 60 nós (da rede acima). Entre todos esses 60 nós, quero calcular o comprimento do caminho (por exemplo: do nó 1 ao 2,3,4 ... 60, do nó 2 ao 1,3,4,5 ... 60 etc.)

Você tem uma solução que pode calcular automaticamente o comprimento de todos os caminhos? Até agora, posso apenas calcular manualmente um caminho, salvar a tabela e calcular o comprimento.

Mas como você pode imaginar, não quero calcular relações 60 * 60 manualmente.

Veja minha consulta SQL até agora:

SELECT seq, id1 AS node, id2 AS edge, a.cost, geom_way FROM pgr_dijkstra ('SELECT id, source, target, km as cost, km as reverse_cost FROM routing onde o custo não é nulo', (SELECT nodes FROM nodelist WHERE id = 1), (SELECT nodes FROM nodelist WHERE id = 2), false, true) AS a Roteamento de junção b ON a.id2 = b.id ORDER BY seq;

Você pode usar pgr_kDijkstra para calcular o caminho ou custo total de 1 nó para muitos. Não há nenhuma função até agora para cálculos muitos para muitos, mas a acima já deve ser muito melhor.

O workshop pgRouting também explica como usarpgr_kDijkstra:

SELECT seq, id1 AS source, id2 AS target, custo FROM pgr_kdijkstraCost ('SELECT gid AS id, source :: integer, target :: integer, length :: double precision AS cost FROM way', 10, array [60,70, 80], falso, falso);

O argumento para especificar os nós de destino deve ser uma matriz de IDs de nós. Você teve que executar esta função uma vez para cada um de seus 60 nós.


Assista o vídeo: QGeek 004 - NETWORK ANALYSIS IN QGIS - POSTGISPGROUTINGOSM2PGROUTING (Outubro 2021).