Mogę otrzymywać mapy z dowolnego źródła dla mojego projektu, a dla algorytmu C ++, który tworzę, algorytm musi wiedzieć, gdzie znajdują się skrzyżowania (węzły, w których spotykają się więcej niż dwa odcinki drogi). Poza tym na wielu mapach, które otrzymuję, są przekroczenia i niedostosowania dróg (tj. Drogi nie są właściwie połączone). Jednym ze sposobów rozwiązania tego problemu jest „czyszczenie” sieci dróg za pomocą Autocad. Mam pytania:
- Czy istnieje skuteczny sposób (jakiekolwiek oprogramowanie, które to potrafi?), Aby uzyskać mapę w formacie GML, który zawiera informacje o skrzyżowaniach na mapie? (może mieć tag GML, który mówi, że dany węzeł jest skrzyżowaniem)
- Czy jest jakiś inny sposób na „oczyszczenie” sieci dróg?
Koledzy zasugerowali FME, ale wiąże się to z pisaniem skryptów i nie jesteśmy pewni, czy skrypt byłby wystarczająco elastyczny, aby pomieścić wszystkie mapy. Jedynym innym sposobem wykrywania skrzyżowań jest użycie siły brutalnej i znalezienie, które odcinki drogi mają wspólne węzły. Czy ArcGIS pomógłby? (nie użyłem go, ale słyszałem o tym) Jestem pewien, że powinien istnieć lepszy sposób ...
Odpowiedzi:
Jeśli masz drogi w formie przestrzennej, na przykład Shapefile, możesz załadować je do PostGIS i automatycznie wyszukiwać je za pomocą zapytania SQL. Zrobiłem to już wcześniej - instrukcja SQL została zaprojektowana, aby dla każdej drogi znaleźć te, które przecinają się geograficznie i stworzyć punkt węzłowy dla każdego skrzyżowania.
Spróbuję to później wyczyścić, ale oto podstawowy przepływ, który możesz wziąć ...
Funkcje ST_ * sprawiają, że działa to w PostGIS
Oto tylko fragmenty, ponieważ nie mam czasu na ukończenie, być może ktoś może je edytować, zanim wrócę tutaj ...
źródło
Możesz analizować polilinie w niesamowity sposób, używając buforów. Jest to zwykle nieefektywne - bufory tworzą wiele dodatkowych wierzchołków - ale (a) jest to technika dostępna w wielu GIS (opartych na wektorze lub rastrze) i (b) czasami może wytwarzać informacje, które w innym przypadku byłyby trudne do uzyskania.
W takim przypadku buforowanie drogi niewielką ilością, a następnie buforowanie ujemną tej samej ilości pozostawia małe „wyspy” wokół wszystkich zakrętów i wokół wszystkich skrzyżowań. Łatwo to udowodnić geometrycznie.
Oto przykład 10 m bufora polilinii (szary) i jego bufora -10 m (jasnoczerwony) na mapie o szerokości 650 m:
Teraz przecinają oryginalną warstwę polilinii z tymi wielokątami wyspowymi, łączą segmenty według identyfikatora wyspy i liczą elementy:
Jasnożółte segmenty oznaczają części o wysokiej liczbie, a ciemnoniebieskie segmenty oznaczają te o niskiej liczbie. W ten sposób (a) znaleźliśmy wszystkie zakręty i skrzyżowania (w tym skrzyżowania własne) i bliskie skrzyżowania (patrz skrajna lewa strona, gdzie dwa segmenty nie do końca się spotykają)) oraz (b) odróżniły zakręty od skrzyżowań. Możemy znaleźć prawie skrzyżowania, wybierając wyspy zawierające dwa lub więcej połączonych segmentów: zagięcia zawierają tylko połączone segmenty.
Ze względu na symetrię buforowania centroidy wysp skrzyżowania są punktami przecięcia.
Jednym pięknym aspektem tego stylu analizy jest to, że nie ma znaczenia, w jaki sposób reprezentowana jest polilinia: może to być pojedyncza cecha, może to być jedna cecha dla każdego segmentu linii lub cokolwiek pomiędzy.
źródło
Tak, na pewno możesz to zrobić za pomocą FME. Istnieje wiele „transformatorów”, które zajmują się czyszczeniem, skrzyżowaniami i topologią; W takim przypadku wypróbowałbym transformator TopologyBuilder .
Wszelkie skrypty są wykonywane w środowisku graficznym, więc jest to bardzo proste.
Zawsze możesz uzyskać wersję próbną ze strony www.safe.com
(Ujawnienie: Mark Ireland, znany również jako FME Evangelist, Safe Software Inc.)
źródło
GRASS GIS ma bardzo wydajne narzędzia do czyszczenia wielokątów tak, jak chcesz, spójrz na: http://grass.fbk.eu/grass62/manuals/html62_user/v.clean.html
źródło
Analityk sieci Arcgis, który możesz uzyskać dzięki bezpłatnej wersji próbnej, robi to w mniej niż 10 sekund i za pomocą zaledwie kilku kliknięć.
źródło
Proces ten można wykonać w ArcGIS z analitykiem sieci.
W ArcGIS jest też inna droga: możesz przejść przez następujące kroki: „Arctoolbox” → „Narzędzia do zarządzania danymi” → „funkcje” → „wierzchołki punktów do punktów” i tam możesz zrobić to, czego potrzebujesz.
źródło