Tworzenie wielokątów czasu jazdy za pomocą narzędzi Open Source?

55

Czy ktoś używa narzędzi i / lub danych typu open source do generowania wielokątów czasu jazdy, które promieniują z danej lokalizacji? Na przykład używałem produktów ESRI, takich jak Network Analyst i Business Analyst, do generowania granic wielokątów, które reprezentują maksymalną odległość, jaką można pokonać siecią drogową z danego punktu w określonym przez użytkownika okresie czasu (powiedzmy 5, 10 i / lub 15 minut). Czy istnieją podobne alternatywy typu open source lub internetowe?

Widziałem ten post, ale tak naprawdę nie daje alternatywnych opcji: czy możesz zrobić wielokąt regionu podróży za pomocą Google Maps API?

Byłem szczególnie ciekawy, czy ktoś jest (lub może) używać OpenStreetMap do analizy czasu jazdy?

Czy jest też jakaś implementacja narzędzi pgRouting, które można by wykorzystać do generowania wielokątów? http://pgrouting.postlbs.org/

RyanDalton
źródło
Chciałbym zobaczyć odpowiedź na to pytanie. Moim zdaniem ESRI przewodzi nad serwerami Open-Source, głównie dlatego, że ujawnia Geoprocessing w modelu łatwym do serwowania / konsumpcji.
Simon
Jakaś aktualizacja tego pytania? Naprawdę jestem zainteresowany zabawą z otwartym twórcą DT poly poly w skryptach map.
Furlong,
Nie mogę na razie udzielić odpowiedzi, ponieważ musiałem wstrzymać pracę nad tym projektem. Ponieważ nie jestem facetem „GRASS”, prawdopodobnie nie zamierzam iść tą drogą, chociaż wydaje się, że jest to bardzo realne rozwiązanie. Teraz jednak skłaniam się ku próbie użycia pgRouting, który podobno ma wbudowane funkcje Alpha Shapes.
RyanDalton

Odpowiedzi:

52

GRASS v.net.iso daje taki wynik:

wprowadź opis zdjęcia tutaj

Być może nie chcesz uruchamiać algorytmu wypukłego kadłuba na tym wyjściu. Wyobraź sobie niebieskie drogi: wypukły kadłub wokół nich zawierałby wiele części, do których nie można dotrzeć w czasie oznaczonym przez „niebieski”.

Zamiast tego warto przyjrzeć się kształtom alfa (pokrewne pytanie: Czym są definicja, algorytmy i praktyczne rozwiązania dla kadłuba wklęsłego? )

szkic kształtu alfa

Możesz tworzyć izochrony czasu jazdy za pomocą pgRouting i QGIS ( jak opisano tutaj ). W tym przypadku nie użyłem OSM, ale oczywiście możesz zbudować swoją sieć routingową w oparciu o OSM (zobacz narzędzie do osm2pgrouting ).

wprowadź opis zdjęcia tutaj

( pełna rozdzielczość )

W przypadku czystego rozwiązania PostGIS można użyć funkcji kształtu alfa pgRouting . Oto porównanie kształtów alfa zaimplementowanych w pgRouting i podejście, które przedstawiłem w poprzedniej aktualizacji:

wprowadź opis zdjęcia tutaj

Kolorowe obszary przedstawiają wyniki funkcji kształtu alfa, czarne linie to wyniki opisanego wcześniej podejścia interpolacyjnego. Obszary zlewni są mniej szczegółowe przy użyciu kształtów alfa pgRouting. Ponadto wydaje się, że nie ma sposobu na różnicowanie wartości alfa w celu stworzenia bardziej szczegółowych reprezentacji.

podmrok
źródło
2
+1 na kształtach alfa! Naucz się czegoś nowego każdego dnia! Wiedziałem, że wypukły kadłub nie jest dokładnie rozwiązaniem, ale nie wiedziałem o nich!
Darren Cope
1
Dziękuję bardzo za opublikowanie opisu tego na swoim blogu. Zdecydowanie planuję przyjrzeć się temu wkrótce i przekonać się, czy mogę go replikować z moimi danymi. Wygląda jednak fantastycznie!
RyanDalton
10

GRASS „v.net.iso można wykorzystać do utworzenia„ sieci ”czasu napędu, którą można przekazać do polecenia„ wypukłego kadłuba ”w celu uzyskania wielokąta. Być może nie jest idealny, ale zadziała!

Darren Cope
źródło
1
Haha - po prostu mnie pokonaj!
om_henners
+1 dla v.net.iso, ale nie jestem pewien co do wypukłej części kadłuba - patrz moja odpowiedź
podmrok
9

Cóż, potencjalnie możesz użyć v.net.iso z GRASS GIS. Jednak nie tworzy wielokątów (AFAIK), ale dzieli linie według klas kosztów ze źródła.

Jeśli chodzi o obliczanie czasów jazdy z OSM, możesz zaimportować dane do GRASS za pomocą v.in.osm i użyć v.net.iso do obliczenia stref kosztów. Jeśli chciałeś czasu podróży i potencjalnie nie masz ograniczeń prędkości, możesz obliczyć ograniczenie prędkości na podstawie funkcji klasy drogi.

om_henners
źródło
7

Do tego zadania można użyć GraphHopper, który obsługuje również inny tryb, np. Spacer lub jazdę na rowerze i domyślnie korzysta z OpenStreetMap. Będziesz potrzebował trochę kodu Java, który bada sieć drogową od punktu początkowego podobnego do działania algorytmów Dijkstra, ale wtedy możesz uzyskać coś takiego, nawet w czasie rzeczywistym (<0,5s):

wprowadź opis zdjęcia tutaj

Kod zbierze punkty, które musisz przekonwertować na wielokąt za pomocą np . Narzędzi JTS . Prędkość zależy w dużej mierze od tego ostatniego kroku. Bez tego byłoby to możliwe poniżej 0,5 sekundy nawet na duże odległości.

Innym sposobem może być OpenTripPlanner .

Karussell
źródło
5

Warto sprawdzić otwarty interfejs API JavaScript Route360 ° , który działa zarówno z mapami Leaflet, jak i Google. Zwraca wielokąty czasu podróży dla następujących trybów podróży: pieszo, rowerem, samochodem, tranzytem.

Wieloboki czasu podróży - NYC

Jest darmowy i open source, a zasięg jest całkiem dobry. Na stronie internetowej można znaleźć wiele różnych samouczków dotyczących korzystania z niej.

Yoya01
źródło
1
Po stronie klienta jest open source, ale po stronie serwera nie ma IMO.
Karussell
2

Chociaż nie odpowiadasz bezpośrednio na twoje pytanie, powinieneś spojrzeć na Mapnificent API .

Mapnificent zapewnia dynamiczne mapy czasu podróży transportem publicznym dla wielu miast w USA i niektórych na całym świecie. Możesz użyć Mapnificent API, aby rozszerzyć swoją aplikację Google Maps o nakładki czasu podróży w transporcie publicznym. Nakładki.

Spójrz na Londyn tutaj . alternatywny tekst

Szymon
źródło
mapnificent jest open source?
Karussell
2

Natknąłem się również na rozszerzenie sieciowe gvSIG , ale dokumentacja konfiguracyjna, którą do tej pory znalazłem, jest dość słaba. Mam na to duże nadzieje, muszę tylko ustalić szczegóły obliczania kosztów.

Użyłem danych amerykańskiego spisu ludności TIGER dla sieci drogowej i faktycznie wygenerowałem kilka wielokątów, ale po prostu nie mogłem uzyskać jednostek kosztu, które naprawdę miałyby sens. Jeśli ktoś pomyślnie wdrożył to narzędzie, chciałbym o nim usłyszeć.

Znalazłem także Quantum Navigator dla QGIS, ale nie znalazłem żadnych najnowszych aktualizacji.

RyanDalton
źródło
2

Rezultat podejścia z wklęsłym kadłubem jest świetny i zainspirowałem się powyższymi zdjęciami. Zauważyłem jednak, że wyniki mogą obejmować niektóre obszary niedostępne na drodze (na przykład rzekę). Nie ma wątpliwości, że nie stanowi to problemu pod względem wyszukiwania odpowiednich cech (centroidy populacji, liczba domów) według odległości lub czasu od miejsca pochodzenia. Ale działa również tylko na obu końcach każdego linku. Znowu nie stanowi to problemu w zdecydowanej większości przypadków (ponieważ najdłuższe połączenia drogowe mają kontrolę dostępu - normalnie nie można ich zjechać, dopóki nie dojdzie się do następnego skrzyżowania / skrzyżowania).

Mimo to pracowałem nad innym podejściem opartym na LINKACH zwracanych przez PgRouting / (lub surowym algorytmie „Dijkstra”) uporządkowanym według czasu z węzła źródłowego. Jest to stosunkowo proste i kategoryzuje linki według przedziału czasowego, a także dzieli linki, które przekraczają granice czasu. Następnie linki o tej samej kategoryzacji (np. 0-2 minuty, 2-4 minuty) są buforowane o 250 metrów.

John Steedman
źródło
1

Na tegorocznym WhereCampPDX kilku przedstawicieli OpenStreetMap stwierdziło, że używanie danych OSM do routingu jest dość powszechne w Europie. Jest to jednak rzadsze w USA, ponieważ mapa zwykle nie jest wystarczająco dobra. Możesz sprawdzić usługę routingu opartą na OSM pod adresem:

http://openrouteservice.org/

jvangeld
źródło
1
Żaden routing nie jest tym samym, co czas jazdy, ale jest powiązany.
jvangeld
1
To rodzaj trasy, ale „jeden do wszystkich” ograniczony czasem lub odległością
Karussell
1
Ta usługa działa dla mnie dobrze. Nie miałem okazji przetestować dokładności, ale pozwala mi to znaleźć np. 1-godzinny promień wokół określonego obszaru. Bardzo dobrze, jeśli trzeba przenieść się w nieznane miejsce do pracy itp.
Rzym
1
Openrouteservices.org ma opcję eksportu naszych danych do geoJSON. Następnie możemy go przekonwertować i wyświetlić naszą mapę izochroniczną, tj. W Google Earth, Mapach Google itp. ... mkrgeo-blog.com/…
Mariusz Krukar
Niesamowite. Wygląda na to, że Openrouteservice działa teraz dobrze w Stanach.
jvangeld