Lignes agrégées basées sur la distance entre les segments

12

J'ai un fond de carte VectorTile que j'optimise (en travaillant sur la réduction de la taille des carreaux individuels), le gros morceau de la taille des carreaux est les données routières (géométrie et attributs). Je travaille à simplifier les géométries de route individuelles en fonction du niveau de zoom et à agréger également les routes en fonction des niveaux de zoom.

Les routes sont stockées dans un tableau Postgis (tableau individuel pour chaque niveau de zoom) et je souhaite agréger les routes en fonction du niveau de zoom auquel elles seront affichées. Par exemple, dans le tableau du niveau de zoom 5, je souhaite agréger les routes situées à une certaine distance les unes des autres et créer une seule ligne pour les segments de route: entrez la description de l'image ici

Puisqu'il n'est pas possible de distinguer des routes individuelles à ce niveau de zoom: entrez la description de l'image ici

Comment puis-je agréger les géométries de route en fonction de la distance entre les segments de route?

PS: je travaille sur PostGIS et QGIS sur Linux, mais je suis ouvert aux solutions utilisant n'importe quelle plateforme ou technologie Open Source

Hasan Mustafa
la source
Les routes ont-elles un ID commun, par exemple deux voies au niveau de zoom 5 sur l'A50 sont représentées par deux lignes, mais au niveau 4 par une ligne et elles ont toutes "A50" comme attribut?
AnserGIS
Ils sont représentés par deux lignes à tous les niveaux de zoom. Ces autoroutes et autoroutes auront l'attribut commun comme "M-2" pour les autoroutes.
Hasan Mustafa

Réponses:

5

Vous pouvez essayer de chercher dans cette option de système d'exploitation, Skeletron , il:

généralise les collections de lignes à un niveau de zoom mercator sphérique spécifique et à une précision de pixel, en utilisant un tampon polygonal et un diagramme de voronoi

Il est basé sur un document de 1996 par Alnoor Ladak et Roberto B. Martinez, "Dérivation automatisée des axes routiers de haute précision Thiessen Polygons Technique"

Certaines dépendances sont requises:

Dépendances requises:
- binaire qhull ( http://www.qhull.org )
- shapely 1.2+ ( http://pypi.python.org/pypi/Shapely )
- pyproj ( http://code.google.com/p / pyproj )
- networkx 1.5+ ( http://networkx.lanl.gov )
- StreetNames 0.1+ ( https://github.com/nvkelso/map-label-style-manual/tree/master/tools/street_names )

Remarque: Il s'agit d'un ancien modèle / outil qui peut être appliqué, simplement comme référence à explorer.

whyzar
la source
1
Je pense que skeletron pourrait être le chemin à parcourir, mais votre réponse est juste une copie du fichier Lisez-moi et le lien vers le site Web esri est mort. Voici un lien pour montrer ce qu'il fait pour les cartes: kartographie.geo.tu-dresden.de/downloads/ica-gen/workshop2004/… . ça a l'air vraiment super mais quand j'essaye de l'utiliser je ne savais pas comment l'utiliser. Je n'ai pas trouvé de documentation sauf quelques pots-de-vin avec la commande use ou setup.py --help ... Si quelqu'un explique comment utiliser cette lib, je lui donne la prime.
Hugo Roussaffa - GeoDatup
Aussi, il utilise des routes OSM en entrée pour autant que je puisse voir, je veux une solution qui peut fonctionner sur n'importe quel type de ligne. Pourtant, j'aime vraiment la science derrière, j'aimerais aussi l'appliquer à d'autres scénarios.
Hasan Mustafa
J'ai mis à jour mon message pour refléter vos commentaires, j'apprécie les commentaires.
whyzar
4

ArcGIS est le plus simple s'il est du tout une option. Je sais que l'OP spécifie le système d'exploitation, mais je le mentionne car les options du système d'exploitation ne semblent tout simplement pas très utiles par rapport à: http://resources.arcgis.com/en/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /

Les réponses à cette question donnent quelques options Open Source: Comment puis-je fusionner / réduire des lignes de route à proximité et parallèles (par exemple une route à deux voies) en une seule ligne?

Si vous codez, vous pouvez calculer la position moyenne des coordonnées sur une base de sommets, sinon:

  1. tampon les routes avec une option "fusionner tout" sur la sortie.
  2. Obtenez la ligne médiane du polygone
  3. Séparez les lignes aux intersections avec JUMP Split Lines à l'intersection d'autres lignes
  4. Spatial Rejoins les attributs sur

Il ne semble pas non plus y avoir un bon système d'exploitation équivalent à l'outil ArcGIS 'Polygon to Center line'. Je pourrais suggérer:

une. Créez un diagramme de voronoi et prenez le squelette.
b. Créer un raster de distance euclidienne et extraire la valeur centrale et convertir en ligne

... probablement d'autres aussi.

Enfin, en fonction de l'échelle et de l'application .. il peut également être utile de supprimer l'une des deux lignes - l'imprécision importera-t-elle?

AnserGIS
la source
L'option ArcGIS semble bonne, je vais essayer, mais je préférerais une solution de système d'exploitation. Calculer la position moyenne des coordonnées sur une base de sommets est ma stratégie de repli. Je vais essayer toutes les méthodes que vous avez énumérées et voir si elles fonctionnent pour moi, merci!
Hasan Mustafa
L'outil ArcGIS, `` Merge Divided Roads (Cartography) '', est exactement ce que je recherche, mais tout le traitement que je fais est sur Linux, en utilisant Postgres et QGIS, pour utiliser l'outil dont j'ai besoin pour passer à Windows .
Hasan Mustafa