Scalać sąsiednie linie równoległe i dodać liczbę jako atrybut w QGIS?

9

Mam warstwę zawierającą wiele linii reprezentujących przelatujące ślady samolotów. Moim celem jest tworzenie map do analizy przepływu ruchu w niektórych przestrzeniach powietrznych.

Chciałbym scalić wszystkie równoległe lub prawie równoległe odcinki znajdujące się w pewnej odległości od siebie (powiedzmy 1 milę morską).

Nowe, scalone linie powinny zawierać atrybut zawierający liczbę oryginalnych linii, które zostały scalone. Na przykład, jeśli 5 równoległych linii zostanie połączonych w jedną, nowa połączona linia powinna mieć atrybut count o wartości 5, co pozwoliłoby mi odpowiednio ją stylizować.

Rozważ następujący schematyczny przykład:

Wejście:

wprowadź opis zdjęcia tutaj

Trzy pojedyncze linie, z których dwie mają wspólny równoległy segment.

Pożądane wyjście:

wprowadź opis zdjęcia tutaj

Wspólna część linii zielonej i pomarańczowej została połączona w jedną linię (czerwoną). Nowa czerwona linia będzie miała atrybut liczenia 2.

Uwaga: w tym przykładzie czerwona linia będzie średnią z dwóch oryginalnych segmentów linii. Pozostałe zielone i pomarańczowe segmenty linii nie muszą się łączyć dokładnie z nową czerwoną linią. Innymi słowy, topologia nie musi być nienaruszona, ponieważ wynik zostanie wykorzystany tylko do przedstawienia wizualnego.

Zasadniczo próbuję stworzyć coś takiego:

wprowadź opis zdjęcia tutaj

(źródło)

Jak powinienem osiągnąć taki wynik w QGIS? Pamiętaj, że rzeczywisty zestaw danych jest znacznie większy niż mój przykład powyżej, więc rozwiązanie powinno być skalowalne.

Natknąłem się na ten samouczek, który robi coś bardzo podobnego do tego, co próbuję zrobić. Chciałbym jednak móc to zrobić za pomocą QGIS.

J. Hougaard
źródło

Odpowiedzi:

1

Po pierwsze, tak naprawdę nie chcesz, aby linie nachodziły na siebie, ale tylko w celu odzwierciedlenia w atrybutach liczby lotów, które korzystają z tej samej ścieżki. Można to zrobić, wykonując następujące kroki:

Upewnij się, że utworzyłeś nową kolumnę dla swoich linii, nazwij ją „loty” i użyj wartości 1 dla wszystkich z nich. Użyłem nazwy „Count”, która nie jest najlepsza.

Następnie wykonaj operację buforowania z pożądaną odległością, będziesz musiał grać z odległością, którą uważasz za odpowiednią do analizy: (mój QGIS jest w języku hiszpańskim, ale jestem pewien, że możesz to rozgryźć)

Bufor

Następnie masz zbuforowane linie, które najprawdopodobniej się dotykają, jak kiełbasy. Ostatnim krokiem jest wykonanie połączenia przestrzennego pod wektorem menu zarządzania danymi. Użyj opcji przecinają się w następujący sposób:

Przystąp

Pamiętaj, aby dodać opcję podsumowania z sumą. Rezultatem będzie nowa kolumna w każdym atrybucie, dodając liczbę innych przecinających się lotów. Jeśli linie mają identyfikator, możesz połączyć tę nową kolumnę z oryginalnymi liniami lub możesz zmienić buforowane wielokąty z powrotem w linie.

Jeśli chcesz uprościć i usunąć dodatkowe linie, to inny problem, ale mam nadzieję, że mogłem przynajmniej pomóc ci zacząć.

Sergio C.
źródło