Używam QGIS i mam sieć punktów i dróg. Muszę automatycznie wyodrębnić nazwy dróg, które zawierają konkretny punkt. Analiza najbliższych sąsiadów i stref buforowych nie może wykonać zadania, ponieważ w wielu przypadkach punkt jest bliżej, ze względu na zmierzoną odległość, do dróg sąsiadujących, a nie otaczających. Czy są jakieś pomysły, w jaki sposób można wydobyć tylko otaczające drogi?
12
Odpowiedzi:
O moich danych testowych:
ROZWIĄZANIE I
Jeśli są dwa założenia:
Drogi budują dzielnice.
Pracujesz w systemie metrycznym.
Chodzi o zwiększenie / zmniejszenie współrzędnych X i Y punktu. Jeśli pracujesz w systemie metrycznym, możesz przejść 1 m na wschód od swojego punktu, utworzyć nowy punkt i utworzyć linię z punktem oryginalnym. Jedziesz dalej na wschód, aż linia przecina drogę. Aby wyszukać skrzyżowanie na zachodzie, odejmij 1m od oryginalnej współrzędnej X. To samo dla współrzędnej Y. Jeśli na północy / wschodzie / południu / zachodzie nie ma drogi, licznik zatrzymuje się na 1000 (m). Jeśli wiesz, że droga może znajdować się w odległości większej niż 1000 m, musisz zmienić tę wartość.
Możesz rozwiązać zadanie za pomocą następującego kodu:
Edytowane
Kolejny przykład pokazujący, że droga e na Wschodzie nie jest uznawana za pobliską drogę punktu.
Jak wywołać funkcję i wyjście:
Jeśli punkt obejmuje więcej niż 4 drogi, musisz spojrzeć w większą liczbę kierunków (zmień X i Y). Lub możesz zmienić azymut swojej linii, co oznacza, że możesz obrócić ją o jeden stopień w zakresie 0-360 °.
ROZWIĄZANIE II
Zainspirowany komentarzem, możesz
Polygonize
najpierw swoje drogi. Do nich można użyć narzędzia z QGIS:Processing > Toolbox > QGIS geoalgorithms > Vector geometry tools > Polygonize
. Zmień nazwę warstwy tymczasowej napolygon
. Zakładając, że chcesz mieć tylko nazwy dróg dla punktu, który jest całkowicie otoczony drogami. W przeciwnym razie trzeba użyć roztworu I . Działa to tylko wtedy, gdy wszystkie drogi są połączone (zatrzaśnięte)!Najpierw punkt musi przecinać się z wielokątem. Chodzi o to, że oba początkowe
AND
punkty końcowe otaczającej linii muszą przecinać się z wielokątem.Wyjście:
źródło