Eu tenho um conjunto de scripts postgis que gera duas tabelas - uma de um conjunto de pontos e a segunda um conjunto de estradas que as cercam. Todos os dados estão na mesma projeção e as duas saídas são armazenadas nas tabelas do postgres 9.2 com o postgis 2.1
A topologia de pgrouting da rede de estradas foi criada e a tabela de pontos possui uma coluna contendo o segmento de estrada mais próximo.
Gostaria, então, de gerar um subconjunto da rede rodoviária, que representa a menor rede que conecta todos os pontos usando algo como uma árvore de abrangência mínima. A rede rodoviária não é direcionada e os custos são simplesmente o comprimento da rota.
Posso fazer isso no QGIS / Grass usando a família de módulos v.net, mas, idealmente, também gostaria de manter esta etapa final no SQL.
Eu olhei para a nova função apspWarshall postgis, mas não sei como pode ser incentivado a concentrar sua energia na conexão dos pontos e não de toda a rede.
Este é o script curto que reuni na tentativa de criar uma estrutura para resolver isso, mas não vejo onde é possível focar a função para começar com um subconjunto das arestas.
SELECT seq, id1 AS node, id2 AS edge, cost, the_geom
FROM pgr_apspWarshall('SELECT gid AS id,
source,
target,
st_length(the_geom) AS cost
FROM road_network
',
false, false
) AS tree
JOIN road_network As roads
ON tree.id2 = roads.gid
Nos problemas de caminho mais curto de caminho único, a função solicita o início e o fim, mas aparentemente não nos problemas de todos os pontos. Igualmente no Grass, o v.net.spanningtree e o v.net.steiner esperam um conjunto de pontos e linhas como uma rede combinada para trabalhar.
Alguém tem alguma sugestão de como fazer isso no PostGIS?