Dzielenie wszystkich linii w warstwie w wierzchołkach za pomocą QGIS?

11

Chcę automatycznie podzielić wszystkie linie w warstwie QGIS na ich wierzchołkach ( tak jak to ).

Przeprowadziłem wyszukiwanie w Google i znalazłem ten artykuł , który jest dość blisko, ale przepływ pracy jest skomplikowany. Ponieważ będę musiał szkolić moich współpracowników (którzy nie znają GIS) do korzystania z tego narzędzia, chcę czegoś tak prostego jak wtyczka lub czegoś, co nie wymaga GRASS. Ponieważ minęło dużo czasu od 2010 roku - czas od poprzedniej odpowiedzi , zastanawiam się, czy istnieje lepszy sposób na osiągnięcie tego samego rezultatu?

Cao Minh Tu
źródło
W dzisiejszych czasach możesz używać narzędzi GRASS z QGIS. Może pomóc wektor -> narzędzia geometrii -> Pojedyncze części do wielu części. Przybornik Sextante powinien mieć „Rozbij warstwę liniową”. I jest wtyczka „funkcja podziału”
simplexio
Myślę, że odpowiedź, o której wspomniałeś, jest (nadal) poprawną procedurą. Narzędzie wektorowe „Pojedyncza część na wiele części” nie zrobi tego, co chcesz. Dzieli wielowierszowy na węzłach , a nie na każdym wierzchołku.
Micha
@simplexio: z przybornikiem Sextante otrzymałem komunikat o błędzie, jak w odpowiedzi Bernd V. i nie mogę znaleźć wtyczki „funkcja podziału” nigdzie w sieci.
Cao Minh Tu
@Micha: ta procedura może być poprawna, ale będzie zbyt skomplikowana dla moich współpracowników - którzy nie znają GIS, więc uznam ją za ostateczność, gdy wszystko inne się nie powiedzie :)
Cao Minh Tu
@Cao Minh Tu: ponownie przetestowałem „funkcję podziału” na Linux Master i Win7 1.8 z nowo utworzoną warstwą liniową i tam działa. Utwórz warstwę testową od podstaw i zastosuj ją tam. Być może w twoich oryginalnych warstwach są błędy, które należy najpierw rozwiązać!?
Bernd V.

Odpowiedzi:

17

Rozbij linie z przybornika przetwarzania podzieli wszystkie linie w ich wierzchołkach na osobne linie.

Przetwarzanie menu -> Przybornik. Wpisz „explode” w polu wyszukiwania, aby znaleźć funkcję. Wybierz warstwę z rozwijanego menu i zacznij. Spowoduje to utworzenie nowej warstwy.

Wybranie jednej lub więcej linii z warstwy linii spowoduje utworzenie warstwy podzielonej zawierającej tylko te funkcje, odrzucając resztę.

Uwaga: Ponieważ QGIS działa szybko, wszystkie poniższe informacje są już nieaktualne.

Myślę, że linie rozstrzelenia byłyby rozwiązaniem noob za pomocą zestawu narzędzi SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Niestety obecnie nie działa, pojawia się tylko komunikat o błędzie.

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

Działającym rozwiązaniem jest Split Feature-Plugin z repozytorium „przyczyniło się”, który wykonuje moje zadanie.

Ogólnie wolę funkcje sextante niż osobne wtyczki, ponieważ przepływ pracy z sextante jest o wiele szybszy i nie powoduje powstawania zbędnych plików pośrednich kroków (pod warunkiem, że działa).

EDYCJA: Niestety wiele wtyczek nie zostało jeszcze przeniesionych do oficjalnego repozytorium wtyczek, ale nadal są dostępne tylko za pośrednictwem „wniesionego” repozytorium wtyczek: http://pyqgis.org/repo/contributed , które zostało usunięte z domyślnych repozytoriów lista z wersją 1.8.

Tam możesz pobrać je pojedynczo i rozpakować w folderze .qgis / python / plugins LUB dodać ten adres do listy repozytoriów wtyczek: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.

Bernd V.
źródło
Czy możesz mi powiedzieć, gdzie znaleźć wtyczkę „Funkcja podziału” - nie mogę jej znaleźć w oficjalnym repozytorium wtyczek? Z SEXTANTE Explode lines otrzymałem taki sam komunikat o błędzie jak twój - tutaj jest raport o błędzie
Cao Minh Tu
@Cao Minh Tu: przepraszam, całkowicie zapomniałem, że dodałem stare repozytorium do mojej listy, gdzie ta wtyczka jest dostępna wyłącznie. zobacz moje zmiany.
Bernd V.
Próbowałem wtyczki Split Feature, nie ma komunikatu o błędzie, ale warstwa wyjściowa nic nie zawierała.
Cao Minh Tu
Na stronie pyqgis.org/repo/contribute występuje tylko błąd 404 - czy adres URL się zmienił?
til_b
@til_be zobacz moją edycję
Bernd V.
4
  1. Otwórz / Utwórz zestaw map GRASS (abyś mógł uruchomić narzędzia na swoich danych)
  2. Otwórz narzędzia GRASS / Zaimportuj plik kształtu, który chcesz podzielić na bazę danych GRASS
  3. Uruchom v.split.vert (ustaw maksymalną liczbę wierzchołków = 2)
użytkownik32879
źródło
To rozwiązanie utrzymuje wartości Z w geometrii segmentu
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
źródło