Chcę używać QGIS do tworzenia punktów wzdłuż linii, ale w określonej odległości. W SEXTANTE Toolbox znalazłem dwa narzędzia GRASS :
- v.to. punkty
- v.segment
Próbowałem v.to. punktów , ustawiając maksymalną odległość między punktami w jednostkach mapy na 100 i otrzymałem to :
Drugie zdjęcie pokazało dokładne spojrzenie z górnego. Rezultat był tym, czego chcę, ale chcę uzyskać mniej punktów , ale nawet ustawiłem maksymalną odległość na 1000 lub 1000000, wynik był taki sam.
Próbowałem użyć v.segment , ale nie miałem pliku zawierającego reguły segmentów.
Podmrok dał mi kilka rad i spróbowałem geometrii Densify z pewnym odstępem czasu . Najpierw dał mi plik kształtu polilinii taki sam, jak na wejściu, a następnie użyłem ekstraktów z węzłów, aby spróbować uzyskać te punkty. Ale wynik był taki sam, jak w przypadku punktów v.to. , bez względu na to, co ustawiłem interwał odległości.
Jak mogę tworzyć punkty wzdłuż linii i w określonej odległości?
źródło
Odpowiedzi:
W konsoli Python:
możesz użyć modułu Shapely (jak w Jak tworzyć równo odległe punkty w QGIS? ) z funkcją
point = line.interpolate (currentdistance)
Nowe API Pythona w wersji master (1.9) ma równoważne polecenie (jak w Generowanie węzłów pikietażowych (odległość) w QGIS Nathana Woodrowa)
point = geom.interpolate (currentdistance)
lub możesz użyć algebry wektorowej i cosinusów kierunkowych (jak w PyQGIS: geometria, wektory, algebry wektorowej lub cosinusów kierunkowych, przykłady zastosowań , w języku francuskim)
1) Utwórz klasę warstwy pamięci (klasa pełna (bez atrybutów) na crea_mem_layer.py )
2) funkcje algebry wektorowej (z algèbre_vect_PyQGIS.py )
3) kierunek cosinus
4) linia procesowa lub odcinki linii
Wyniki
polilinia, punkt w równej odległości z Shapely lub PyQGIS2, z cosinusami kierunku
Następnie dostosuj interwał
źródło
Jest teraz wtyczka o nazwie QChainage, która robi dokładnie to, co chcesz. Podajesz odległość interwału, a wtyczka tworzy punkty wzdłuż linii w określonym interwale.
źródło
Napisałem skrypt, który zmienia narzędzie geometrii Sextante Densify na akceptowanie pewnej odległości. Nazywa się to geometriami Densify z określonym interwałem .
Po uruchomieniu Densify możesz wyodrębnić punkty za pomocą narzędzia Wyodrębnij węzły .
Możesz go pobrać z Github, a instrukcje instalacji znajdują się na moim blogu .
źródło
Jeśli nie chcesz korzystać ze skryptów Pythona, możesz po prostu zainstalować wtyczkę „Profil z linii” i użyć jej oraz zignorować / usunąć kolumnę wartości rastrowej. Pikietaż będzie taki, jak ustawiony interwał próbkowania.
źródło
Nie jestem pewien, czy jest to wersja stabilna, ale w przyborniku sextante na wersji 1.9 alfa pod Geoalgorytmami-> Wektor jest opcja „Konwertuj linie na punkty”. Działa przysmak, bądź świetny, jeśli dodał również pole do odległości wzdłuż linii.
Ciekawe, że dodał pole NAME z mojej warstwy wektorowej.
Próbowałem uruchomić ten skrypt Pythona autorstwa Nathana Woodrowa, ale mam do czynienia z Pythonem. I wydaje się, że z kodem w ogóle.
źródło
Długo walczyłem z tym problemem, ale w końcu dostałem mniej więcej to, czego szukałem za pomocą QChainage. Chciałbym się podzielić tym, co może pomóc innym. Podczas korzystania z narzędzia do rozpuszczania geoprzetwarzania SAGA na linii, QChainage generuje nieprawidłowe wyniki. Użycie innego narzędzia do rozpuszczania powoduje jego prawidłowe działanie.
źródło