J'ai vu beaucoup de questions concernant le fractionnement d'une ligne à l'aide d'une couche de points.
Je veux diviser une ligne en fractions de sa longueur.
Par exemple, j'ai une ligne de 400
mètres de long, je veux la diviser en quatre lignes de 100 mètres de long chacune.
Il y a le module grass v.split
, mais je reçois un message d'erreur lorsque je le démarre à partir de la boîte à outils qgis:
*"TypeError: object of type 'NoneType' has no len()"*
Je ne sais donc pas si je vais le faire fonctionner si ce serait une solution.
qgis
line
digitizing
Gilles
la source
la source
Réponses:
La fonction v.split.length de GRASS devrait faire exactement ce que vous voulez en divisant la ligne en segments égaux définis par l'utilisateur sans avoir besoin d'une couche de points. Voici un exemple simple de ligne droite (cela fonctionne également sur les lignes non droites et multiples):
J'ai ajouté une colonne pour calculer sa longueur à l'aide
$length
de l'expression:En utilisant la fonction v.split.length de GRASS via la boîte à outils de traitement , j'ai choisi de diviser la ligne en segments de 25 m qui devraient faire un total de 4 parties:
J'ai ensuite mis à jour la colonne Longueur du calque de sortie et utilisé la même commande que ci-dessus pour recalculer la longueur:
Vous ne savez pas pourquoi vous recevez l'erreur, pourriez-vous partager votre couche de ligne pour que les gens puissent la tester?
la source
Supposons qu'il existe un calque de polyligne appelé
"lines"
.Je peux suggérer d'utiliser une "couche virtuelle" via
Layer > Add Layer > Add/Edit Virtual Layer...
Il existe plusieurs cas possibles:
Cas 1. Diviser la ligne en segments égaux, essentiellement une longueur égale qui est définie par l'utilisateur.
Avec la requête suivante, il est possible d'obtenir le résultat. Pour augmenter / diminuer la longueur du segment, s'il vous plaît régler la
1000 AS step_length
dans-- configurations
.La couche virtuelle de sortie se présente comme suit
Note: Si « delta » (par exemplele dernier segmentplus court) ne doit pas être inclus, puis insérez
WHERE sec_length >= step_length
dans-- query
, voir cidessousCas 2. Diviser la ligne en un certain nombre de segments
Avec la requête suivante, il est possible d'obtenir le résultat. Pour augmenter / diminuer le nombre de segments, s'il vous plaît régler la
8 AS sections
dans-- configurations
.La couche virtuelle de sortie se présente comme suit
la source