Obliczanie najkrótszej odległości od punktu do linii za pomocą QGIS?

12

Jaka jest najlepsza metoda obliczania odległości od najbliższej drogi dla szeregu punktów adresowych w QGIS, posiadających bardzo duży zestaw danych? (QGIS 2.0.1, Win XP)

Czytam odpowiedzi na poprzednie podobne pytania:

Mierzenie odległości między liniami i punktami w QGIS

Rysowanie linii prostopadłych w PyQGIS?

Obliczanie minimalnej odległości między punktami i wielokątami w QGIS?

/programming/16448402/distance-of-point-feature-to-nearest-polygon-in-r

Niemniej jednak:

  1. Wtyczka MMQGIS znajduje dystans do najbliższego węzła sieci liniowej, a nie najkrótszą (prostopadłą) odległość do linii.

  2. Proponowane skrypty R i Python działają poprawnie dla małych zestawów danych i można je zaimplementować w programie do modelowania, jednak dla mojej pracy mam 530 punktów i regionalną warstwę uliczną z około 135'000 cechami, a następnie przeglądam wszystkie funkcje, a następnie pokonuję najkrótszą odległość dla wszystkie punkty zajmą bardzo dużo czasu

  3. Mam problemy z uruchomieniem GRASS w QGIS 2.0.1 ( GRASS w QGIS nie działa (Windows XP) ).

mic_cord
źródło
1
Udało mi się obliczyć minimalną odległość w QGIS 1.8.0 za pomocą wtyczki GRASS i narzędzia v.distance . Wykonanie zajmuje około 15 minut (plus czas poświęcony na prawidłowe ustawienie GRASS i importowanie warstw ...). Dlaczego ArcGIS (e, łączone przestrzennie) wciąż jest tak szybki w porównaniu?
mic_cord
1
Jest to kwestia zoptymalizowania indeksu przestrzennego i kodu do tego zadania. Właśnie sprawdziłem naszą bibliotekę routingu (RW Net 4) i może ona wykonać 2000 takich obliczeń na sekundę dla ulicznej sieci aplikacji. taki sam rozmiar jak twój. Dzięki temu jest około 4000 razy szybszy niż wtyczka GRASS.
Uffe Kousgaard
3
Postgis powinien to zrobić szybko
Nicklas Avén,
1
@mic_cord Czy możesz podać szczegółowe wyjaśnienie metody wtyczki GRASS v.distance? Udało mi się uzyskać v.distance do pracy przy użyciu GRASS poza QGIS, ale nie jestem w stanie zmusić go do działania w zestawie narzędzi Przetwarzanie (QGIS 2.6).
user25976,

Odpowiedzi:

6

Rozwiązaliśmy podobny problem. Najlepszy i najszybszy sposób dla nas to:

  1. Rasteryzuj warstwę liniową (Raster / Conversion / Rasterize ...)
  2. Konwertuj na odległość (raster / analiza / odległość ...)
  3. Użyj wtyczki Narzędzie do próbkowania punktów, aby uzyskać wartości dla wszystkich punktów z rastra
Miro
źródło
5

Niektóre odpowiedzi na Pomiar odległości między liniami i punktami w QGIS zalecają wtyczkę NNJoin QGIS ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Wykona połączenie przestrzenne najbliższego sąsiada i uwzględni wynik w odległości. NNJoin plugin używa indeksu przestrzennego, więc powinien obsłużyć stosunkowo dużych zbiorów danych.

Håvard Tveite
źródło
Tveite, popieram twoją sugestię. Byłem bardzo zaskoczony, że ta wtyczka działała szybciej niż zalecany pakiet w R (tj. Geosphere :: dist2Line).
Johanness