Ho una serie di script Postgis che genera due tabelle: una di una serie di punti e la seconda una serie di strade che li circondano. Tutti i dati sono nella stessa proiezione ed entrambi gli output sono memorizzati nelle tabelle Postgres 9.2 con Postgis 2.1
È stata creata la topologia pgrouting della rete stradale e la tabella dei punti ha una colonna contenente il segmento stradale più vicino.
Vorrei quindi generare un sottoinsieme della rete stradale che rappresenta la rete più piccola che collega tutti i punti usando qualcosa come un albero di spanning minimo. La rete stradale non è indirizzata e i costi sono semplicemente la lunghezza del percorso.
Posso farlo in QGIS / Grass usando la famiglia di moduli v.net ma idealmente mi piacerebbe mantenere anche questo passaggio finale in SQL.
Ho esaminato la nuova funzione postgis di apspWarshall, ma non riesco a capire come può essere incoraggiato a concentrare la propria energia sulla connessione dei punti e non sull'intera rete.
Questo è lo script breve che ho messo insieme nel tentativo di creare un framework per risolverlo, ma non riesco a vedere dove sia possibile focalizzare la funzione per iniziare con un sottoinsieme dei bordi.
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
Nei singoli percorsi più brevi, la funzione richiede l'inizio e la fine, ma apparentemente non in tutti i punti. Allo stesso modo in Grass, v.net.spanningtree e v.net.steiner si aspettano un insieme di punti e linee come una rete combinata con cui lavorare.
Qualcuno ha un suggerimento su come farlo in PostGIS?