J'essaie d'utiliser QGIS 2.14 pour aligner un réseau routier sur une grille hexagonale, mais j'obtiens d'étranges artefacts.
J'ai créé une grille hexagonale avec MMQGIS , les cellules mesurent environ 20 x 23 m. J'ai tamponné le réseau routier de 1 m et je l'ai densifié pour qu'il y ait un nœud tous les quelques mètres. Vous pouvez voir ce que j'essaie de réaliser ci-dessous. Comme vous pouvez le voir, je peux le faire fonctionner dans certains cas: -
- le bleu est la route densifiée (une ligne tamponnée)
- le rouge est la version «hexifiée» - c'est ce que je veux trouver
- le gris est la grille hexagonale
J'ai ensuite utilisé la nouvelle fonction Snap geometries pour accrocher les nœuds au coin hexagonal le plus proche. Les résultats sont prometteurs, mais il semble y avoir des cas marginaux où la ligne se dilate pour remplir l'hexagone (ou une partie de celui-ci): -
La raison du tampon est que les géométries d'accrochage ne vous permettent pas de vous accrocher à une couche dont la géométrie est différente. Par exemple, vous ne pouvez pas accrocher des nœuds sur une couche LINE à des points sur une couche POINT). Il semble être le plus heureux de claquer POLYGON en POLYGON.
Je soupçonne que les routes se dilatent lorsqu'un côté de la ligne de route tamponnée saute d'un côté de la cellule hexadécimale et que l'autre côté saute de l'autre côté de la cellule hexadécimale. Dans mon exemple, les routes qui traversent l'ouest-est à un angle aigu semblent être les pires.
Des choses que j'ai essayées, sans succès: -
- tampon du réseau routier par une petite quantité, il reste donc un polygone mais est très mince.
- densifier les cellules hexagonales (donc il y a des nœuds le long des bords, pas seulement aux coins)
- faire varier la distance de capture maximale (cela a le plus grand effet, mais je n'arrive pas à trouver une valeur idéale)
- en utilisant des couches LINE, pas des POLYGONs
Je trouve que si je passe à l'utilisation de calques LINE uniquement, cela fonctionne pendant un certain temps, puis se bloque. Il semble enregistrer son travail au fur et à mesure - certaines lignes ont été partiellement traitées.
Quelqu'un connaît-il une autre façon d'aligner les points d'une ligne sur le point le plus proche d'une autre couche de ligne / polygone, idéalement sans avoir besoin d'utiliser postgres / postgis (bien qu'une solution avec postgis soit également la bienvenue)?
ÉDITER
Pour tous ceux qui souhaitent essayer, j'ai mis un projet QGIS de démarrage ici sur Dropbox . Cela inclut les couches Grille hexagonale et Lignes densifiées. (Le réseau routier provient d'OSM, il peut donc être téléchargé à l'aide de QuickOSM, par exemple si vous devez obtenir l'original pour densifier les routes).
Notez que c'est en OSGB (epsg: 27700) qui est une UTM localisée pour le Royaume-Uni, avec des unités en mètres.