Widziałem wiele pytań dotyczących podziału linii za pomocą warstwy punktowej.
Chcę podzielić linię na ułamki jej długości.
Na przykład mam 400
metr długości, chcę podzielić go na cztery linie o długości 100 metrów każda.
Istnieje moduł trawy v.split
, ale pojawia się komunikat o błędzie, gdy uruchamiam go z przybornika qgis:
*"TypeError: object of type 'NoneType' has no len()"*
Nie jestem więc pewien, czy uda mi się to uruchomić, jeśli byłoby to rozwiązanie.
qgis
line
digitizing
Gilles
źródło
źródło
Odpowiedzi:
Funkcja v.split.length z GRASS powinna robić dokładnie to, co chcesz, dzieląc linię na równe segmenty zdefiniowane przez użytkownika bez potrzeby stosowania warstwy punktowej. Oto prosty przykład linii prostej (działa również na nieprostych i wielu liniach):
Dodałem kolumnę, aby obliczyć jej długość za pomocą
$length
wyrażenia:Korzystając z funkcji v.split.length z GRASS za pośrednictwem Processing Toolbox , zdecydowałem się podzielić linię na 25m segmenty, które powinny składać się w sumie z 4 części:
Następnie zaktualizowałem kolumnę Długość warstwy wyjściowej i użyłem tego samego polecenia, co powyżej, aby ponownie obliczyć długość:
Nie masz pewności, dlaczego pojawia się błąd, czy możesz udostępnić warstwę linii użytkownikom do przetestowania?
źródło
Załóżmy, że istnieje warstwa polilinii o nazwie
"lines"
.Mogę zaproponować użycie „Wirtualnej warstwy” przez
Layer > Add Layer > Add/Edit Virtual Layer...
Możliwych jest kilka przypadków:
Przypadek 1. Podział linii na równe segmenty, w zasadzie równa długość, którą określa użytkownik.
Za pomocą następującego zapytania można osiągnąć wynik. Aby zwiększyć / zmniejszyć długość segmentu, dostosuj wartość
1000 AS step_length
w-- configurations
.Wyjściowa warstwa wirtualna będzie wyglądać następująco
Uwaga: Jeśli „delta” (np ostatni segment najkrótsza) nie powinny być włączone, a następnie włożyć
WHERE sec_length >= step_length
w-- query
, patrz poniżejPrzypadek 2. Podział linii na określoną liczbę segmentów
Za pomocą następującego zapytania można osiągnąć wynik. Aby zwiększyć / zmniejszyć liczbę segmentów, dostosuj wartość
8 AS sections
w-- configurations
.Wyjściowa warstwa wirtualna będzie wyglądać następująco
źródło