J'ai un Shapefile (composé des principales routes européennes) avec environ 250 000 segments que je dois simplifier pour le pgrouting. Mais je n'arrive pas à trouver un moyen de le faire correctement.
Voici à quoi ça ressemble:
et voici à quoi cela devrait ressembler:
Je dois en quelque sorte supprimer tous les points des lignes qui sont connectés à moins de 3 lignes (n'étant pas une intersection) tout en préservant les connexions topologiques entre les points restants. Si quelqu'un a une idée, ce serait grandement apprécié!
Meilleures salutations
EDIT: J'ai essayé de mettre en œuvre l'idée de @dkastl et j'ai réussi à obtenir uniquement les nœuds inutiles (nœuds avec seulement 2 chaînes de lignes adjacentes) de mon réseau avec le code ci-dessous (génération de réseau tirée du blog d'Underdark http://underdark.wordpress.com / 2011/02/07 / un-guide-débutant-pour-le-groutage / ):
SELECT * FROM
(SELECT tmp.id as gid, node.the_geom FROM
(SELECT id, count(*) FROM network
JOIN node
ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
GROUP BY id ORDER BY id) as tmp
JOIN node ON (tmp.id = node.id)
WHERE tmp.count = 2) as unn_node;
Donc, je n'ai plus qu'à fusionner les lignes. Cependant, je ne sais pas comment. J'imagine qu'il doit s'agir d'une boucle qui, pour chaque ligne du résultat de la requête ci-dessus, obtient les lignes adjacentes et les fusionne. Ensuite, il reconstruirait complètement le réseau et répéterait le processus jusqu'à ce que la requête ci-dessus renvoie un résultat vide.
Réponses:
Vous devez certainement appliquer un filtre ramer-douglass-peucker sur vos lignes. Il est disponible dans PostGIS en tant que fonction ST_Simplify . La version avec conservation de la topologie peut être intéressante pour votre cas. Bonne chance!
la source