Jak przekonwertować proste funkcje linii na sieć topologiczną?

12

używając Gdal / OGR czy istnieje sposób na konwersję warstwy linii shp, kml lub PostGIS na sieć węzłów i segmentów, aby można ją było wykorzystać w pakietach takich jak networkx?

dassouki
źródło
2
Prawdopodobnie warto zauważyć, że podczas gdy zarówno OGR, jak i NetworkX twierdzą, że obsługują GML, pierwsza odnosi się do Geography Markup Languagedrugiej, podczas gdy druga Graph Modelling Language.
fmark

Odpowiedzi:

2

Sądząc z listy networkx importowalnych formatów grafów i formatów obsługiwanych przez GDAL , wątpię, aby taka konwersja była możliwa.

podmrok
źródło
to kiepska oferta. Jak więc mogę przeprowadzić analizę sieci?
dassouki,
@dassouki - Rozpocznij projekt open source! Jest na mojej liście, ale w tej chwili daleko. Chciałbym jednak mieć możliwość współpracy w tej sprawie, jeśli inni są zainteresowani.
fmark
@fmark ma już transpotools.com
dassouki
@dassouki - Brzmi ekscytująco! Na jakim etapie jest projekt? Strona główna mówi TranspoTools Will be here shortly. Czy w repozytorium kodu Google jest jakiś kod? Wszystko, co widziałem, było puste.
fmark
@dassouki - Aby potwierdzić, nie wiem wiele o polu analizy transportu (moje zainteresowania GIS nie leżą daleko poza obliczeniem odległości sieci na tym etapie), ale chętnie będę współpracować z ogr2networkxnarzędziem do pisania tekstu.
fmark
2

Nie wspomniałeś konkretnie, jaką analizę sieci chcesz wykonać, ale jeśli jesteś zainteresowany routingiem, istnieje kilka opcji:

PgRouting http://pgrouting.postlbs.org/ współpracuje z danymi w PostGIS, aby przeprowadzić analizę routingu. Obsługuje algorytmy Shortest Path Dijkstra, Shortest Path A *, Shortest Path Shooting Star i Traving Salesperson (TSP). Wykonuje również obliczenia odległości jazdy. Lista przykładowych aplikacji korzystających z PgRouting można znaleźć na stronie http://pgrouting.postlbs.org/wiki/pgRoutingDemo PgRouting napędza aplikację Ride the City http://www.ridethecity.com/.

Projekt OpenRouter http://wiki.osgeo.org/wiki/OpenRouter. Ten projekt wygląda interesująco, ale w tym momencie nie jest szczególnie dojrzały.

(Przepraszamy za cytowane adresy URL, ale nie mam wystarczających środków, aby opublikować> 1 URl ...)

DavidF
źródło
+1 dla ciebie. Patrzę na odejście od danych openstreet i postgis ze względu na ograniczenia danych i fakt, że na razie porzucamy postgis. Zazwyczaj udostępniamy własne dane, które są znacznie lepsze niż Openstreet, ale jednocześnie nie chcemy ograniczać się do pgroutowania. Drugi problem polega na tym, że powiedzmy, że chcemy zaimplementować zbieranie śmieci w Pythonie lub Arcgis lub problemy chińskiego listonosza lub sprzedawcy.
dassouki,
Czy spojrzałeś na SpatiaLite? Dałoby to przestrzenną bazę danych OpenSource, która jest oparta na plikach i niezależna od platformy. Nie korzystałem z niego, ale wygląda na to, że istnieje możliwość routingu w SpatiaLite < gaia-gis.it/spatialite/spatialite-network-2.3.1.html >
DavidF
Dziękujemy również za zwrócenie mojej uwagi na NetworkX. To wygląda na naprawdę fajny moduł Pythona.
DavidF,
2

Myślę, że odpowiedź zależy. Większość formatów GIS nie zawiera jawnie informacji o sąsiedztwie (np. W pliku .shp nie ma wskaźników pełnych prostych funkcji linii wskazujących, że dwie funkcje mają wspólny punkt końcowy), co stanowi przełom w czytaniu ich bezpośrednio w sieci.

Z pobieżnego spojrzenia na kod wygląda na to, że pakiet sieci narzędziowej połączony przez scw ponownie odkryje te informacje tylko wtedy, gdy punkty końcowe są identyczne bit po bicie. Może to być wystarczające dla większości potrzeb, w tym także dla Ciebie! (Mogę się mylić, ponieważ był to tylko pobieżny rzut oka.)

Aby uzyskać coś bardziej niezawodnego - na przykład możesz chcieć utworzyć nowe węzły w sieci, w których przecinają się dwie krawędzie, lub chcesz poradzić sobie z zaburzeniami, które powodują, że nakładające się punkty końcowe są nieco inne - musisz poszukać podejścia która głębiej sprawdza geometrię.

Zrobiłem coś podobnego z Boundary Generator, aby odzyskać informacje o sąsiedztwie sieci z wielokątów: niestety niewłaściwa platforma, język i prymityw geometryczny. Jednak może być wnikliwe, jak podejść do kwestii związanych z odpornością.

Dan S.
źródło
+1 ... Nie jestem pewien, co rozumiesz przez niewłaściwą platformę? Rozumiem twoje wyjaśnienie i naprawdę wierzy, że nie mogę przekonwertować danych na węzły i wagi. jedyne 2 programy, które robią to z plików shp, to TransCAD i EMME2 / 3
dassouki,
Przez „niewłaściwą platformę” miałem na myśli to, że Boundary Generator został napisany dla środowiska ArcGIS, przynajmniej na razie. :) Potrzebowałoby dostosowania do pracy z OGR. (Potrzebny byłby również znaczny kawałek nowego kodu, aby odkryć zbieżne punkty końcowe z linii, w przeciwieństwie do zbieżnych krawędzi z wielokątów. Mogę dodać to do następnej wersji, jeśli mam czas. Wydaje się, że może to być bardzo przydatne .)
Dan S.,
0

W MarineMap znajduje się kod geodjango, który można dostosować do tego zadania.

fmark
źródło
fajnie, możemy to omówić, aby spełnić twój cel ogr2netx Ahmed na elegantdesigns.ca
dassouki