Scalanie linii z nieco innymi punktami końcowymi w QGIS

22

W QGIS mam dwie linie. Punkty końcowe są blisko siebie, ale nie do końca wyrównane. Chciałbym zamienić dwie linie w jedną, z dwoma punktami końcowymi połączonymi w punkty środkowe.

Najbliższe, jakie udało mi się znaleźć, to „Scal wybrane funkcje”. To daje mi jedną cechę, ale składa się z dwóch rozłącznych linii - nie ma linii między punktami końcowymi.

Szukam czegoś, który zachowuje się podobnie do programu Illustrator's Join Paths (Object> Paths> Join).

Czy QGIS to robi?

Evan
źródło

Odpowiedzi:

12

Szybka odpowiedź: nie! Nie ma takiego narzędzia do wykonywania tej operacji bezpośrednio na warstwie (wtyczka „Połącz dwie linie” wymaga przecięcia).

Możesz to zrobić dla bardzo prostej warstwy, obracając linie do punktów (wyodrębniaj węzły), a następnie łącząc je z point2one (wyjście linii), ale byłoby to DUŻO wolniejsze niż zwykła edycja ręcznie:

  1. Upewnij się, że masz włączone przyciąganie (Ustawienia | Opcje przyciągania ...) dla twojej warstwy liniowej (5 pikseli działa dla mnie dobrze).
  2. Utwórz nową linię od jednego punktu końcowego do drugiego.
  3. Wybierz wszystkie trzy linie (dwie oryginalne linie + nowa) i połącz je (Edycja | Scal wybrane funkcje lub przycisk paska narzędzi).
Simbamangu
źródło
1
Dzięki. Miałem tylko kilka linii do scalenia, więc było to szybkie i łatwe. (Odpowiedź @Michael Markieta wydawała się lepiej dostosowana do złożonych sytuacji).
Evan
14

Możesz to osiągnąć za pomocą kombinacji QGIS i GRASS.

  1. Zaimportuj warstwę wektorową do zestawu map GRASS (Trawa | Plik> Importuj dane wektorowe)
  2. Otwórz swój zestaw map w QGIS (QGIS | Wtyczki> GRASS> Otwórz zestaw map)
  3. Dodaj warstwę wektorową ze swojego zestawu map GRASS do projektu QGIS (QGIS | Wtyczki> GRASS> Dodaj warstwę wektorową GRASS)
  4. Użyj v.clean.snap (QGIS | Wtyczki> GRASS> Otwórz narzędzia GRASS> Lista modułów> v.clean.snap)

Dostosuj „próg” v.clean.snap, aby uzyskać prawidłowe przyciąganie wierzchołków w całym obszarze badania.

Michał Markieta
źródło
10

Zakładam, że chcesz połączyć dwa segmenty linii w jedną linię. wprowadź opis zdjęcia tutaj

Tak to zrobiłem ...

  • Umożliwić edycję.
  • Włącz przyciąganie (Ustawienia -> Opcje przyciągania ...) wprowadź opis zdjęcia tutaj
  • Wybierz narzędzie węzła węzła.wprowadź opis zdjęcia tutaj
  • Kliknij dwukrotnie blisko końca jednej z linii, aby dodać węzeł. wprowadź opis zdjęcia tutaj
  • Przeciągnij węzeł na końcu, aby zaczepić się na końcu drugiej linii wprowadź opis zdjęcia tutaj
  • Wybierz obie linie
  • Scal ich atrybuty (nie można utworzyć jednej linii, jeśli mają różne atrybuty)wprowadź opis zdjęcia tutaj
  • Scal dwie funkcjewprowadź opis zdjęcia tutaj

Powinno to spowodować powstanie jednej linii. wprowadź opis zdjęcia tutaj

DickShinnery
źródło
Wszystko w porządku. A co z zestawem danych zawierającym 22 000 wierszy? Nie mogę tego robić ręcznie ...
FaCoffee,
3

Jeśli masz na myśli, że twoja pojedyncza funkcja składa się z MULTILINESTRING zamiast pojedynczego LINESTRING, możesz łatwo to naprawić, jeśli korzystasz z bazy danych Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Jeśli chcesz to zrobić tylko w 1 wierszu, dodaj oczywiście GDZIE id = twoj_rudowy_id oczywiście.

mrg
źródło
2

Również ktoś może spróbować:

  1. zapisz .shp jako .dxf
  2. otwórz .dxf za pomocą DraftSight
  3. dołącz do części polilinii
  4. ponownie otwórz .dxf za pomocą qgis i zapisz jako .shp
  5. z menu Wektor -> Narzędzia geometrii -> Linie do wielokątów
chamin
źródło
2

Właśnie to zrobiłem z QGIS 3.4.0, używając wtyczki Połącz wiele linii wspomnianej powyżej przez tnagel (instaluje się w menu Wektor> Dołącz do wielu linii). Dobrze działało, łącząc około 60 fragmentów linii szlaku w około 20 linii szlaku. Im więcej masz fragmentów i im większy jest ich obszar, tym mniej jest to praktyczne, ponieważ musisz obserwować wyniki pod kątem problemów (tnagel mógł mieć jeden z opisanych przeze mnie problemów).

Wybierz linie, które chcesz połączyć, kliknij element menu, a on je połączy (możesz wybrać tyle linii, ile chcesz, ale ...), nawet jeśli końce są oddalone o milę, otrzymasz linię prostą od koniec jednego do końca drugiego łącząc je, więc upewnij się, że twoje końce są wystarczająco blisko, abyś był zadowolony z wyników (użyłem końcówki w innym poście, aby oznaczyć końce moich linii znacznikami, aby były łatwe aby zobaczyć (Właściwości> Symbolika> dodaj linię znacznika i spraw, aby symbol był wystarczająco duży, aby łatwo go zobaczyć> wybierz przycisk opcji „tylko na ostatnim wierzchołku” (a jeśli chcesz, dodaj kolejną linię znacznika z innym symbolem i wybierz „na początku” tylko wierzchołek ”)).

Również linie najwyraźniej mogą być kierunkowe. Musisz więc obserwować (na przykład), że najbardziej wysunięty na południe koniec linii A nie łączy się z najbardziej wysuniętym na południe końcem linii B poniżej (kolejna długa prosta, w której nie chcesz).

Zauważyłem, że kiedy to się stało, mogłem „cofnąć” i użyć „Odwróć linię” na pasku narzędzi zaawansowanego przetwarzania, aby odwrócić kierunek linii od jednego końca do drugiego (nie zmienia to, gdzie jest linia, po prostu odwraca początek linii z końcem linii), a następnie ponownie dołącz do linii.

Dobrą rzeczą jest to, że zmiany / edycje są zapisywane w istniejącej warstwie, więc nie trzeba zapisywać wyników jako nowego pliku kształtu (najpierw wykonaj kopię zapasową).

Ciągle jestem zdumiony pracą wykonaną przez głównych twórców i wtyczek QGIS. Pokazuje, co inteligentni konstruktywni ludzie mogą zrobić, gdy zdecydują się współpracować. Dziękuję Ci!

JJD
źródło
0

Korzystanie z OpenJUMP (edycja Plus):

  1. Plik> Otwórz plik
  2. Wtyczki> Topologia> Czyszczenie topologii sieci ...
  3. Kliknij nową warstwę prawym przyciskiem myszy (naprawiono): Zapisz zestaw danych jako ....

Oto wynik: wprowadź opis zdjęcia tutaj

Fabiog
źródło
0

W moim przypadku linie były na różnych warstwach i miały różne atrybuty. Połączyłem warstwy z mmqgis, a następnie połączyłem linie w następnym kroku za pomocą techniki przyciągania i łączenia linii.

Herr Eichert
źródło