Znajdowanie odległości między punktami wzdłuż rzeki (odniesienie liniowe)

10

Jestem nowy w GIS i jestem zaskoczony. Mam sieć rzek, która składa się z małych linii brzegowych (polilinii). W innym pliku kształtu mam lokalizacje kilku stacji nad rzeką. Muszę znaleźć odległość wzdłuż rzeki od każdej stacji do końca rzeki.

Problem polega na tym, że nie mam jednego kompletnego koryta rzeki. I nie ma wspólnego atrybutu, którego mógłbym użyć do zjednoczenia lub połączenia linii. Ponadto niektóre stacje znajdują się na dopływach.

wprowadź opis zdjęcia tutaj

Więc najważniejsze jest to, że muszę stworzyć dużą sieć rzek, w tym dopływów i wykonać odniesienia liniowe. Ale nie wiem jak to zrobić. Każda pomoc jest bardzo ceniona. Proszę wyjaśnić tak jasno, jak to możliwe.

Proszę o komentarz, jeśli potrzebujesz więcej informacji.

Naresh
źródło
3
Jakiej platformy oprogramowania używasz?
TheSteve0
próbowałem arcmap arcinfo. Ale była to przytłaczająca informacja o referencjach liniowych. Potem przeniosłem się na pgRouting i QGIS. Nadal walczę.
Naresh
Czy masz dostęp do rozszerzenia ArcGIS Network Analyst? Myślę, że możliwe byłoby zbudowanie zestawu danych sieciowych przy użyciu twoich rzek, a następnie znalezienie najkrótszych odległości powinno być naprawdę łatwe.
radek

Odpowiedzi:

2

Zgodziłbym się z BWill. Twoim głównym problemem jest określenie pochodzenia każdej polilinii. Co stanowi „rzekę”? Ι przyjąłby założenie, że dopływ jest samodzielną „trasą” rozpoczynającą się od 0-> długości dopływu. Następnie zrobiłbym to samo dla głównych rzek, ale w tym przypadku stworzyłbym scaloną polilinię ze wszystkich składowych polilinii. Myślę, że kiedy już to zrobisz, jesteś „prawie” tam. Następnie: przekonwertuj wszystkie połączone polilinie na zmierzone polilinie (PolylineM) - w tym dopływy. Następnie masz swoją „sieć tras”. Odtąd kwestią jest znalezienie odległości wzdłuż trasy dla każdej stacji. Myślę, że lokalizacje stacji są zdefiniowane w XY? Ponadto - kolejne przypuszczenie - nie spadają dokładnie na szczyt rzeki, czy oni? W każdym razie potrzebujesz sposobu na znalezienie odległości od stacji od początku każdej rzeki lub plemienia. Teoretycznie, jeśli stacja znajduje się na przecięciu rzeki i dopływu, może mieć 2 lokalizacje (po jednej dla każdej).

Aby znaleźć tę lokalizację, możesz użyć narzędzi ArcMap, ale nie korzystałeś z nich przez jakiś czas, więc nie mogę pamiętać o czubku głowy. Z drugiej strony, jeśli importujesz pliki shapefile (?) Do PostGIS, możesz użyć ST_Line_Locate_Point . Ta funkcja:

Zwraca liczbę zmiennoprzecinkową między 0 a 1, reprezentującą lokalizację najbliższego punktu na LineString do danego punktu, jako ułamek całkowitej długości linii 2d.

Co oznacza, że ​​możesz następnie znaleźć lokalizację wzdłuż rzeki, mnożąc to, co znajdujesz, przez (połączoną) długość rzeki. Ostatnia uwaga - jeśli korzystasz z PostGIS, nie musisz przechodzić przez etap tworzenia PolylineM - tylko ArcGIS wymaga tego do odniesienia liniowego.

Mam nadzieję, że to ma sens!

mapoholic
źródło
moje stacje są dokładnie nad dopływami lub rzeką. Głupie jest to, że nie ma jednej dużej rzeki, tylko małe odcinki linii. Widzę wielką rzekę bt, same dane nie mają wspólnego atrybutu, aby stworzyć pełną rzekę. Ponadto mam współrzędne w stopniach, więc kiedy tworzę trasy w arcmap, otrzymuję długość w stopniach? Myślę, że to nie ma sensu. Muszę przekonwertować współrzędne z wgs84 na inną projekcję. I tak, importowałem pliki kształtu do PostGIS.
Naresh,
1

Z mojego pytania o tej samej naturze

Jak utworzyć punkt wzdłuż linii podanej odległości

pojawiły się następujące przydatne linki.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

Nie kończę zadania z braku wysiłku. Wierzę, że nudy, których doświadczysz, wyznaczają pochodzenie każdej polilinii.

BWill
źródło
2
zrobiłem pewne postępy. Mogę znaleźć najkrótszą ścieżkę za pomocą pGrouting, ale muszę zaktualizować „węzły”. Teraz tworzę tabelę węzłów w postgresql i używam jej do stworzenia sieci, którą karmię do pgroutingu. Ale muszę dodać niestandardowe węzły w tabeli, które nie są węzłami końcowymi. Szybki sposób polega na podzieleniu moich polilinii na stacjach, aby stały się węzłami automatycznie. Wciąż pracuje. Zaktualizuj wkrótce.
Naresh,