Fusion de lignes avec des points de terminaison légèrement différents dans QGIS

22

Dans QGIS, j'ai deux lignes. Les points d'extrémité sont proches les uns des autres, mais pas tout à fait alignés. Je voudrais transformer les deux lignes en une seule, avec les deux points d'extrémité fusionnés en points médians.

Le plus proche que j'ai pu venir est avec "Fusionner les fonctionnalités sélectionnées". Cela me donne une fonctionnalité, mais elle est composée de deux lignes disjointes - il n'y a pas de ligne entre les points de terminaison.

Je recherche quelque chose qui se comporte de la même manière que la fonction Join Paths d'Illustrator (Objet> Chemins> Join).

QGIS fait-il cela?

Evan
la source

Réponses:

12

Réponse rapide: non! Il n'y a pas d'outil comme ça pour faire cette opération directement sur le calque (le plugin "Join Two Lines" nécessite l'intersection).

Vous pouvez le faire pour un calque très simple en transformant les lignes en points (extraire les nœuds) puis en les joignant à points2one (sortie de ligne) mais cela serait BEAUCOUP plus lent que de simplement éditer à la main:

  1. Assurez-vous que la capture (Paramètres | Options de capture ...) est activée pour votre calque de ligne (5 pixels fonctionnent bien pour moi).
  2. Créez une nouvelle ligne d'un point de terminaison à l'autre.
  3. Sélectionnez les trois lignes (les deux lignes originales + la nouvelle) et fusionnez-les (Édition | Fusionner les fonctions sélectionnées ou le bouton de la barre d'outils).
Simbamangu
la source
1
Merci. Je n'avais que quelques lignes à fusionner, donc c'était rapide et facile. (La réponse de @Michael Markieta semblait mieux adaptée aux situations complexes.)
Evan
14

Vous pouvez accomplir cela avec une combinaison de QGIS et GRASS.

  1. Importez votre couche vectorielle dans un jeu de cartes GRASS (Grass | File> Import Vector Data)
  2. Ouvrez votre jeu de cartes dans QGIS (QGIS | Plugins> GRASS> Ouvrir le jeu de cartes)
  3. Ajoutez une couche vectorielle de votre jeu de cartes GRASS à votre projet QGIS (QGIS | Plugins> GRASS> Ajouter une couche vectorielle GRASS)
  4. Utilisez v.clean.snap (QGIS | Plugins> GRASS> Ouvrir les outils GRASS> Liste des modules> v.clean.snap)

Ajustez le «seuil» v.clean.snap pour obtenir un accrochage approprié des sommets dans toute la zone d'étude.

Michael Markieta
la source
10

Je suppose que vous souhaitez joindre deux segments de ligne en une seule ligne. entrez la description de l'image ici

Voilà comment je l'ai fait ...

  • Activer la modification.
  • Activer la capture (Paramètres -> Options de capture ...) entrez la description de l'image ici
  • Sélectionnez l'outil de nœud de nœud.entrez la description de l'image ici
  • Double-cliquez près de la fin d'une des lignes pour ajouter un nœud. entrez la description de l'image ici
  • Faites glisser le nœud à la fin pour accrocher à la fin de l'autre ligne entrez la description de l'image ici
  • Sélectionnez les deux lignes
  • Fusionnez leurs attributs (vous ne pouvez pas créer une ligne thermique s'ils ont des attributs différents)entrez la description de l'image ici
  • Fusionner les deux fonctionnalitésentrez la description de l'image ici

Cela devrait entraîner une seule ligne. entrez la description de l'image ici

DickShinnery
la source
Tout va bien. Mais que diriez-vous d'un ensemble de données de 22 000 lignes? Je ne peux pas faire ça manuellement ...
FaCoffee
3

Si vous voulez dire que votre fonctionnalité unique consiste en une MULTILINESTRING au lieu d'une seule LINESTRING, vous pouvez facilement résoudre ce problème si vous utilisez une base de données Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Si vous ne voulez que la 1 ligne pour ce faire, vous devez bien sûr ajouter WHERE id = your_row_id.

mrg
la source
2

Quelqu'un pourrait aussi essayer:

  1. enregistrer .shp sous .dxf
  2. ouvrir .dxf avec DraftSight
  3. joindre des pièces de polyligne
  4. rouvrez .dxf avec qgis et enregistrez-le sous .shp
  5. depuis le menu Vector -> Outils de géométrie -> Lignes vers les polygones
chamin
la source
2

Je viens de le faire avec QGIS 3.4.0, en utilisant le plugin Join Multiple Lines mentionné par tnagel ci-dessus (installe sous le menu Vector> Join Multiple Lines). A bien fonctionné pour joindre environ 60 fragments de lignes de sentiers en environ 20 lignes de sentiers. Plus vous avez de fragments et plus la zone qu'ils couvrent est grande, moins c'est pratique, car vous devez surveiller les résultats des problèmes (tnagel peut avoir eu l'un des problèmes que je décris).

Vous sélectionnez les lignes que vous souhaitez joindre, cliquez sur l'élément de menu et il les joint (vous pouvez sélectionner autant de lignes que vous le souhaitez, mais ...), même si les extrémités sont éloignées d'un mile, vous obtenez une ligne droite à partir du fin de l'un à la fin de l'autre en les connectant, alors assurez-vous que vos extrémités sont assez proches pour que vous soyez satisfait des résultats (j'ai utilisé la pointe dans un autre post pour marquer les extrémités de mes lignes avec des marqueurs, donc elles étaient faciles pour voir (Propriétés> Symbologie> ajouter une ligne de marqueur et agrandir le symbole pour voir facilement> sélectionnez le bouton radio "sur le dernier sommet uniquement" (et si vous le souhaitez, ajoutez une autre ligne de marqueur avec un symbole différent et sélectionnez "sur la première" sommet uniquement ")).

De plus, les lignes peuvent apparemment être directionnelles. Il faut donc veiller (par exemple) à ce que l'extrémité sud de la ligne A ne se rejoigne pas avec l'extrémité sud de la ligne B en dessous (une autre longue ligne droite où vous ne le voulez pas).

J'ai trouvé que lorsque cela se produisait, je pouvais "annuler" et utiliser "Inverser la ligne" dans la barre d'outils de traitement avancé pour inverser la direction d'une ligne d'un bout à l'autre (ne change pas où se trouve la ligne, inverse simplement le début de la ligne avec la fin de la ligne), puis joignez à nouveau les lignes.

Une bonne chose à ce sujet est que vos modifications / modifications sont enregistrées dans votre couche existante, donc pas besoin d'enregistrer les résultats en tant que nouveau fichier de formes (faites d'abord une sauvegarde).

Je suis constamment étonné du travail effectué par les développeurs de base et de plugins de QGIS. Montre ce que les humains constructifs intelligents peuvent faire lorsqu'ils décident de travailler ensemble. Merci!

JJD
la source
0

Utilisation d'OpenJUMP (édition Plus):

  1. Fichier> Ouvrir un fichier
  2. Plugins> Topologie> Nettoyage de la topologie réseau ...
  3. Clic droit sur la nouvelle couche (fixe): Enregistrer le jeu de données sous ....

Voici le résultat: entrez la description de l'image ici

Fabiog
la source
0

Dans mon cas, les lignes étaient dans différentes couches et avec des attributs différents. J'ai fusionné les calques avec mmqgis , puis j'ai fusionné les lignes à l'étape suivante avec la technique de capture et de fusion des lignes.

Herr Eichert
la source