Fractionner toutes les lignes en couche aux sommets à l'aide de QGIS?

11

Je veux diviser automatiquement toutes les lignes d'une couche QGIS à leurs sommets ( comme ceci ).

J'ai fait une recherche Google et j'ai trouvé cet article , qui est assez proche mais le workflow est compliqué. Parce que je vais devoir former mes collègues (qui ne connaissent pas le SIG) à utiliser cet outil, je veux quelque chose d'aussi simple qu'un plugin ou quelque chose qui ne nécessite pas GRASS. Comme cela fait longtemps de 2010 - le temps de la réponse précédente , je me demande s'il y a une meilleure façon d'obtenir le même résultat?

Cao Minh Tu
la source
Vous pouvez utiliser les outils GRASS de QGIS aujourd'hui. Peut-être Vector-> Geometry Tools-> Single parts to multipart pourrait vous aider. La boîte à outils Sextante devrait avoir "Couche de ligne éclatée" Et il y a un plugin "fonctionnalité partagée"
simplexio
Je pense que la réponse à laquelle vous avez fait référence est (toujours) la bonne procédure. L'outil vectoriel "Single Part to Multipart" ne fera pas ce que vous voulez. Il divise une chaîne multi-lignes aux nœuds , pas à chaque sommet.
Micha
@simplexio: avec la boîte à outils Sextante, j'ai reçu un message d'erreur comme dans la réponse de Bernd V. et je ne trouve pas le plugin 'split feature' n'importe où sur le net.
Cao Minh Tu
@Micha: cette procédure est peut-être correcte, mais elle sera trop complexe pour mes collègues - qui ne connaissent pas le SIG, donc je la considérerai comme le dernier recours, quand tout le reste a échoué :)
Cao Minh Tu
@Cao Minh Tu: j'ai testé à nouveau la 'fonctionnalité Split' sur Linux Master et sur Win7 1.8 avec une couche de ligne nouvellement créée, et là ça marche. Veuillez créer un calque de test à partir de zéro et l'appliquer là. Peut-être qu'il y a des erreurs dans vos calques d'origine qui doivent être résolues en premier!?
Bernd V.

Réponses:

17

Les lignes éclatées de la boîte à outils de traitement diviseront toutes les lignes à leurs sommets en lignes distinctes.

Traitement des menus -> Boîte à outils. Tapez "exploser" dans le champ de recherche pour trouver la fonction. Sélectionnez votre couche de ligne dans la liste déroulante et commencez. Cela produira une nouvelle couche.

La sélection d'une ou plusieurs lignes dans le calque de ligne produira un calque divisé avec uniquement ces caractéristiques, éliminant le reste.

Remarque: Comme QGIS évolue rapidement, toutes les informations ci-dessous sont déjà obsolètes.

Je pense que les lignes Explode seraient la solution noob via la boîte à outils SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Malheureusement, cela ne semble pas fonctionner pour le moment, je reçois uniquement un message d'erreur.

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

Une solution de travail est le Split Feature-Plugin du référentiel "contribué", qui fait le travail pour moi.

En général, je préfère les fonctions sextante aux plugins séparés, car le flux de travail avec sextante est tellement plus rapide et ne produit aucun fichier indésirable d'étapes intermédiaires (à condition que cela fonctionne).

EDIT: Malheureusement, de nombreux plugins n'ont pas encore été déplacés vers le référentiel de plugins officiel, mais ne sont toujours disponibles que via le référentiel de plugins "contribué": http://pyqgis.org/repo/contributed , qui a été supprimé des référentiels par défaut liste avec la version 1.8.

Là, vous pouvez les télécharger individuellement et les décompresser dans votre dossier .qgis / python / plugins OU vous ajoutez cette adresse à votre liste de référentiels de plugins: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.

Bernd V.
la source
Pouvez-vous me dire où trouver le plugin 'Split Feature' - je ne le trouve pas dans le référentiel officiel des plugins? Avec SEXTANTE Explode lines, j'ai reçu le même message d'erreur que le vôtre - il y a un rapport de bogue ici: hub.qgis.org/issues/7157
Cao Minh Tu
@Cao Minh Tu: désolé, j'ai complètement oublié que j'ai ajouté l'ancien référentiel à ma liste, où ce plugin réside exclusivement. voir mes modifications.
Bernd V.21
J'ai essayé le plugin Split Feature, il n'y a pas de message d'erreur mais la couche de sortie ne contient rien.
Cao Minh Tu
Il n'y a qu'une erreur 404 sur pyqgis.org/repo/contributed - l'URL a-t-elle changé?
til_b
@til_be voir mon montage
Bernd V.
4
  1. Ouvrez / créez un jeu de cartes GRASS (afin que vous puissiez exécuter les outils sur vos données)
  2. Ouvrez les outils GRASS / Importez le fichier de formes que vous souhaitez diviser dans la base de données GRASS
  3. Exécutez v.split.vert (définissez le nombre maximum de sommets = 2)
user32879
la source
Cette solution conserve les valeurs z dans les géométries de segment
Tamas Kosa
1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
Steve
la source