Jak obliczyć obszary wpływu w QGIS?

10

Usiłuję utworzyć warstwę wielokątów pokazującą wielokąty odpowiadające najbliższemu sklepowi.

W przypadku zestawu 30 lokalizacji sklepów rezultatem powinna być warstwa wielokąta z 30 funkcjami, po jednej dla każdego sklepu. Każda funkcja będzie reprezentować obszar, w którym odpowiedni sklep jest najbliżej. Na przykład adres w obrębie wielokąta 12 oznacza, że ​​sklep 12 jest najbliższy.

Mam warstwę lokalizacji sklepu i warstwę ulic OSM z kolumną maksymalnej prędkości. Powstała warstwa wielokąta powinna być oparta na warstwie ulic OSM, a nie tylko liniowych obszarach.

Chodzi o to, że biorąc pod uwagę stały zestaw sklepów i dróg, najbliższy sklep powinien pozostać stały w dowolnym punkcie na mapie. Dlatego mam nadzieję, że powstająca warstwa wielokąta będzie bez przerwy.

Ten film z oprogramowaniem Maptitude stanowi doskonały przykład tego, co próbuję osiągnąć (szybkie przejście do 1:55 filmu). Alternatywnie, zobacz przykład poniżej:

Obszary Maptitude najbliższe szpitala

Dla każdego szpitala istnieje odpowiedni obszar, w którym wszystko w tym obszarze jest najbliżej szpitala znajdującego się w tym obszarze.

Jak mogę to zreplikować za pomocą QGIS?

ge0m3try
źródło

Odpowiedzi:

8

algorytm trawiasty v.net.alloc może tworzyć podsieci - można go wywołać z przybornika Przetwarzanie (testowane w QGIS 2.16)

Potrzebna będzie warstwa punktowa (dla obiektów) i warstwa liniowa z kosztami (czas / długość). Utworzy nową warstwę liniową z catdodanym polem , które będzie identyfikatorem najbliższego obiektu.

Oto przykład oparty na odległości do najbliższego pubu. Każdy segment linii jest pokolorowany przy catużyciu losowych kolorów: -

Przykład v.net.alloc

Zauważ, że czasami dwie sąsiednie sieci dróg pubów mają bardzo podobne kolory; jeśli je oznaczysz, zobaczysz, że faktycznie zadziałało.

Jeśli chodzi o uzyskiwanie wielokątów wolnych od luk, takich jak pokazane powyżej, jestem zszokowany. Jeśli „wyodrębnisz węzły” z wyników i zastosujesz „Wypukły kadłub” (grupowanie według kota), pojawią się luki i nakładki.

EDYTOWAĆ

naprawdę możesz uzyskać pożądany rezultat. Jak zasugerowałeś w swoim komentarzu, możesz wykonać następujące czynności ...

  • uruchom Wyodrębnij węzły na wyjściu v.net.alloc
  • uruchom wielokąty Voronoi na warstwie ekstraktów węzłów
  • uruchom Naprawiono bufor odległości , aby upewnić się, że wielokąty zachodzą na siebie (np. bufor o 1 metr)
  • uruchom Dissolve na zbuforowanej warstwie, używając pola „cat”

Oto wynik ... nie jest idealny, czasami zobaczysz fragmenty sieci dróg zbłąkane w sąsiednie wielokąty.

wprowadź opis zdjęcia tutaj

W nowym 2.16 GUI istnieje „pułapka” na rozpuszczenie. Ustawiłem pole, ale wszystko to rozpuściło. Musisz pamiętać o odznaczeniu pola wyboru „rozpuść wszystko”, w przeciwnym razie ustawienie pola zostanie zignorowane.

Steven Kay
źródło
Jest to pomocne i z pewnością mogę wykorzystać wynik w mojej aplikacji. Pozostawię to tymczasowo otwarte, aby sprawdzić, czy jest sposób, aby skończyć z wielokątami. Czy to możliwe, że użycie narzędzia Wielokąty Voroni w jakiś sposób pomogłoby?
ge0m3try
Voronoi w twoich obiektach poda jedynie przybliżenie, oparte na odległości euklidesowej „w linii prostej” , więc skutecznie ignoruje twoją sieć dróg.
Steven Kay,
Jestem ciekawy, czy wyodrębnić węzły z wyniku v.net.alloc, voroni to, a następnie rozpuścić wielokąty wyborcze na podstawie unikalnego identyfikatora obiektu. Rozmiar zestawu danych o drogach jest bardzo duży, więc nie będę w stanie przetestować tego szybko, ale może w międzyczasie pojawią się pewne przemyślenia, dlaczego to nie działa.
ge0m3try
właściwie twoje przeczucie jest słuszne - po prostu wypróbowałem.
Steven Kay,
2
WAŻNA UWAGA: Jest kilka niedogodności związanych z tym przepływem pracy, które wymyśliłem, jak przezwyciężyć. Narzędzie stałego bufora odległości nie jest konieczne. DissolveNarzędzie SAGA wydaje się być znacznie szybsze niż odpowiednik QGIS. Wydaje się również, że szybsze jest dzielenie Voronoiwarstwy według catpola, a następnie dissolvekażdego obszaru osobno. Mergeje z powrotem razem. Następnie uruchom GRASS v.cleani wybierz narzędzie rmdupldo usuwania zduplikowanych węzłów. Jest to ważne, w przeciwnym razie inne procesy, takie jak obcinanie, łączenie przestrzenne, nie będą działać poprawnie na scalonym rozpuszczonym lauyer voronoi.
ge0m3try