J'ai un ensemble de scripts postgis qui génère deux tableaux - l'un d'un ensemble de points et le second un ensemble de routes qui les entourent. Toutes les données sont dans la même projection et les deux sorties sont stockées dans des tableaux postgres 9.2 avec postgis 2.1
La topologie de routage du réseau routier a été créée et la table de points a une colonne contenant le segment de route le plus proche.
Je voudrais alors générer un sous-ensemble du réseau routier qui représente le plus petit réseau qui relie tous les points en utilisant quelque chose comme un arbre couvrant minimum. Le réseau routier n'est pas dirigé et les coûts sont simplement la longueur de l'itinéraire.
Je peux le faire dans QGIS / Grass en utilisant la famille de modules v.net mais, idéalement, je voudrais également conserver cette dernière étape dans SQL.
J'ai regardé la nouvelle fonction postgis apspWarshall, mais je ne sais pas comment l'encourager à concentrer son énergie sur la connexion des points et non sur l'ensemble du réseau.
Ceci est le court script que j'ai mis en place pour tenter de créer un cadre pour résoudre ce problème, mais je ne vois pas où il est possible de concentrer la fonction pour commencer avec un sous-ensemble des bords.
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
Dans les problèmes de chemin le plus court à chemin unique, la fonction demande le début et la fin, mais apparemment pas dans les problèmes tous points. De même, dans Grass, v.net.spanningtree et v.net.steiner attendent un ensemble de points et de lignes en tant que réseau combiné avec lequel travailler.
Quelqu'un a-t-il des suggestions sur la façon de procéder dans PostGIS?