Pobieranie wartości prędkości maksymalnej

Cześć. Przeszukuję właśnie pół internetu żeby znaleźć odpowiedź na swoje pytanie. Jestem w trakcie robienia projektu polegającego na zrobieniu aplikacji na androida. Potrzebuję w niej informacji o maksymalnej prędkości dla danego punktu (lub bboxa). Wiem że da się to zrobić przez overpass api ale dane dla PL nie zwracają maxspeed. I tutaj moje pytanie. Czy istnieje jakieś API które umożliwi pobranie wartości maxspeed dla danego punktu z os mapy? Jeśli tak to w jaki sposób można to zrobić? :confused:

Podasz przykład zapytania overpassa które zwraca dane maxspeed i takie które nie zwraca? Możliwe że ta informacja nie jest jeszcze zmapowana dla danej drogi.

[quote=Mateusz Konieczny]
Podasz przykład zapytania overpassa które zwraca dane maxspeed i takie które nie zwraca? Możliwe że ta informacja nie jest jeszcze zmapowana dla danej drogi.[/quote]

Hej, dzięki za odpowiedź. Zapytanie które przechodzi (wzięte ze stackoverflow):

www.overpass-api.de/api/xapi?*[maxspeed=*][bbox=5.6283473,50.5348043,5.6285261,50.534884

Zapytanie które nie zwraca danych maxspeed (droga na której jest oznaczona prędkość na os mapie):
www.overpass-api.de/api/xapi?*[maxspeed=*][bbox=20.897755,52.246316,20.897760,52.246322

Tak na szybko:

(1) linki są coś obcięte (chyba forum coś psuje)

(2) do debugowania polecam overpass turbo ( http://overpass-turbo.eu/ )

(3) czy droga która cię interesuje ma punkt w podanym bbox? Czy tylko przez niego przechodzi? W drugim przypadku nie pojawi się w wynikach.

(4) zauważ że aplikacja jeśli nie będzie małym testem nie będzie mogła za każdym razem robić zapytania do api - powinna pobrać dane i z nich korzystać - patrz https://wiki.openstreetmap.org/wiki/Overpass_API#Public_Overpass_API_instances “you can safely assume that you don’t disturb other users when you do less than 10,000 queries per day and download less than 5 GB data per day.”

Nie zwraca, bo w tym mikroskopijnym bboxie nie ma żadnej drogi. Najbliższa jest oddalona o 2 metry.

Edit:

Zapewne chodzi o to.

I podany tam przykład z around, ale dla twoich danych (działający):
http://overpass-turbo.eu/s/El6

Cześć!

Jako że temat odrobinę się rozrósł to nie chcę go prowadzić w wątku “pytania dla początkujących”. Tu będzie łatwiejszy do znalezienia dla potomnych :slight_smile:

Temat następujący: zapytania poprzez API do OpenStreetMap w celu pobrania prędkości maksymalnej w danym punkcie/obszarze.

Faktycznie po zwiększeniu wielkości bboxa dane dotyczące maksymalnej prędkości w punktach się pojawiają.

Sposób działania aplikacji przewiduję w mniej więcej ten sposób: GPS pobiera lokalizację, wysyła się zapytanie do OSM o maksymalną prędkość w danym punkcie/obszarze i wyświetla ją na ekranie. Czy istnieje inny sposób na wyciąganie maksymalnej prędkości z mapy niż takie zapytania po pliki XML?

Jeśli chodzi o obciążanie aplikacji to spokojnie - nie zamierzam komercyjnie ani nawet prywatnie w późniejszym czasie wykorzystywać tej aplikacji. Kilka zapytań poleci tylko dla testów :slight_smile: Projekt traktuję bardziej jako ciekawostkę/sposób pozyskania nowej wiedzy.

I jeszcze raz dzięki za zainteresowanie wątkiem! Jesteście wielcy :smiley:

Typowe działanie takich aplikacji to pobranie wszystkich danych dla całego obszaru - dzięki temu aplikacja może działać bez dostępu do internetu, bez czekania na odpowiedź i nie obciąża serwerów (dane OSM są darmowe, serwery nie).

Jest możliwa pobrania pełnej bazy danych jak i ekstraktów zawierający dany teren (np. Polska/Małopolska). W ostateczności można też to zrobić Overpassem.

Co więcej w niektórych przypadkach proste odcinki drogi mogą być dość długie - i mogą się ciągnąć całymi kilometrami, bez punktów na odcinku drogi. Wtedy lepiej mieć dane załadowane do bazy danych która potrafi odpowiadać na pytania typu “jaka jest najbliższa droga” nie tylko tam gdzie droga zmienia kierunek.

Przy takiej skali można sobie pozwolić na dziwniejszą architekturę :slight_smile:

Miło że ktoś dane wykorzystuje, po to są mapowane :slight_smile:

A w jaki sposób mógłbym pobrać dany obszar? Zakładam że do osiągniecia założonego celu wystarczyło by mi tylko województwo mazowieckie (chociaż może być nawet niewielki obszar żeby zrozumieć jak to działa i nie spędzić dużo czasu na uzupełnianiu bazy). W jakim formacie wtedy będą dane?
I jak to miało by się do bieżącej lokalizacji urządzenia? Sprawdzana była by tylko najbliższa droga ale czy była by na niej informacja o maksymalnej dozwolonej prędkości?

https://wiki.openstreetmap.org/wiki/Downloading_data

Proponuję do takich testów obszar dużo mniejszy niż województwo (np. dzielnica) by można było pominąć problem wydajności.

“W jakim formacie wtedy będą dane?” zależy co pobierzesz. Overpass Turbo np. udostępnia kilka formatów. Ale będzie to trochę inne przedstawienie tej samej treści.

“I jak to miało by się do bieżącej lokalizacji urządzenia? Sprawdzana była by tylko najbliższa droga ale czy była by na niej informacja o maksymalnej dozwolonej prędkości?” to już zaleźy od twojej implementacji. Pewnie najlepsze jest szukanie najbliższej drogi - która albo może mieć dane albo ich nie mieć.

Przy okazji, polecam aplikację StreetComplete na Androida jeśli chodzi o zbieranie takich danych (w tym ograniczeń prędkości jeśli zajrzy się do ustawień i włączy to w liście aktywnych zadań).

Okej! Mega. Super mi to rozjaśniłeś - dzięki. To teraz pozostaje mi to tylko (albo aż) zaimplementować :roll_eyes: