Wysokości punktów na mapie z Google Elevation Web Services

Tym razem artykuł będzie o pobieraniu dodatkowej informacji w zakresie map - wysokości. Google udostępnia specjalną usługę, która pozwala pobrać wysokość dowolnego punktu. Oprócz pobierania pojedynczych wartości dla punktów, istnieje także możliwość pobrania serii wyników dla linii (do 512 punktów).

Pobranie informacji o wysokości punktu sprowadza się do wysłania żądania na określony adres URL. W Google Elevation API istnieją dwa rodzaje danych odpowiedzi:
  • XML - wówczas żądanie jest wysyłane na adres http://maps.google.com/maps/api/elevation/xml
  • JSON - żądanie jest wysyłane na
    http://maps.google.com/maps/api/elevation/json
Dostępne parametry:
  • locations - podajemy w momencie, kiedy chcemy poznać wysokości tylko punktu/ów podanych w tym parametrze; poszczególne parametry podaje się jako parę szerokości i długości geograficznej rozdzieloną przecinkiem (np. 51.1113,17.0343); kolejne punkty rozdzielane są znakiem | (np. 51.1113,17.0343|51.3143,17.0618)
  • path - parametry są podawane w taki sam sposób jak powyżej, jednak w wyniku będą przesłane paramtery dla całej ścieżki w określonej ilości parametrem samples
  • samples (wymagany w przypadku paramteru path) - ilość próbek z określonej trasy (stała odległość pomiędzy próbkami)
  • sensor - true lub false - w zależności od tego czy nasza aplikacja wykorzystuje urządzenie typu GPS lub inne do lokalizacji (istotne w urządzeniach mobilnych)
Otrzymane odpowiedzi dla parametru locations:
Otrzymane wyniki dla parametru path oraz samples ustawionym na wartość 3:


Uzyskane w ten sposób wyniki możemy przedstawić na wykresie np. wykorzystując Google Charts. W tym celu posłużymy się prostym skryptem PHP, który wygeneruje i przekieruje na odpowiedni adres (uwaga: skrypt jest na tyle prosty, że nie ma żadnej obsługi błędów - jeśli chcesz wykorzystać go u siebie na stronie radziłbym dodać podstawową obsługę błędów :)). I tak przykładowo sprawdzając trasę z Wrocławia do Trzebnicy z 80 próbkami uzyskamy następujący skrypt oraz wynik.
<?php

$data = json_decode(
 file_get_contents('http://maps.google.com/maps/api/elevation/json?path=51.10179728957699,17.027435302734375|51.3185971205743,17.054901123046875&samples=80&sensor=false'),
 true);
 
$elevation = array();
foreach($data['results'] as $one) {
 $elevation[] = $one['elevation'];
}
 
header('Location: http://chart.apis.google.com/chart?cht=lc&chs=575x340&chd=t:'.
  implode(',', $elevation).'&chds='.min($elevation).','.max($elevation).'&chxr=1,'.
  min($elevation).','.max($elevation).'&chxt=x,y');

Przekrój Wrocław-Trzebnica

A oto droga, którą badaliśmy:



Więcej informacji o usłudze Google Elevation znajdziecie na oficjalnej stronie API.

A na koniec myślę, że ciekawa prezentacja o zasobach Google Geo przygotowana na 2010 rok

Prześlij dalej:

4 komentarze:

Anonimowy pisze...

Ha, fajnie.
Szkoda, że miesiąc temu nie znalazłem tego artykułu, pewnie bardzo by się przydał i jakieś pytania mógł bym zadać. A teraz już po ptokach. Skorzystałem z tego API Googla i powstało coś takiego, zapraszam:
http://www.geocontext.org/publ/2010/04/profiler/pl

Anonimowy pisze...

A można jakiś jeden płeny kod ? bo to tylko urywek php jest

Michał Biniek pisze...

Umieszczony kod php jest pełny.
Aby dostać dane z wyznaczonego fragmentu, należy zmienić adres URL podawany w funkcji file_get_contents na samym początku skryptu - sposoby preparowania URL są zawarte w samym poście :)

Anonimowy pisze...

Faktycznie działa - po prostu wrzuciłem na krasnala na localhoscie i nie kumał funkcji file_get_contets

Prześlij komentarz