2016-12-21 4 views
0

Я потратил большую часть недели, пытаясь исследовать, как подключиться к API сервиса высотного запроса USGS через мое приложение для Android с неловкими результатами. Лучшее, что я нашел, это от 6 лет назад here, используя теперь устаревший код. Спойлер - я не мог заставить его работать.Получить высоту (высоту на уровне земли) с помощью USGS Elevation Query Service API

Использование GPS для возведения просто слишком ненадежно для моих приложений, даже после обширных скользящих средних и фильтрации низких/высоких частот, применяемых к данным.

Может ли кто-нибудь поделиться своими рекомендациями/кодом, чтобы получить возвышение через службу запросов на возвышение USGS. Я могу, конечно, предоставить широту и долготу?

ответ

2

простой поиск Google на «USGS Elevation Query Service API» указал на http://ned.usgs.gov/epqs/ (другой адрес от вопроса вы связаны между собой. И API кажется очень прямо вперед.

Вот пример звонка в Лас-Вегас http://nationalmap.gov/epqs/pqs.php?x=36.1251958&y=-115.3150863&output=json&units=Meters

Проблема заключается в том, что согласно их веб-сайту «Если вы не можете найти данные по запрашиваемой точке, эта служба возвращает -1000000», и я лично не смог найти какое-либо место, которое у них есть (попробовал Лас-Вегас и Сан-Франциско).

Кроме того, у Google есть API высот, и я могу только предположить, что это хорошо, учитывая Google Maps. Здесь вы можете увидеть документы https://developers.google.com/maps/documentation/elevation/start и вот пример запроса https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034

Для фактического называть себя, указывают на то, чтобы использовать OkHttp (http://square.github.io/okhttp/) или Модифицированные (который использует OkHttp), чтобы сделать многопоточность для вас), но основной код является:

OkHttpClient client = new OkHttpClient(); 

String getElevation(String url) throws IOException { 
    Request request = new Request.Builder() 
     .url(url) 
     .build(); 

    Response response = client.newCall(request).execute(); 
    return response.body().string(); 
} 

, то это просто разобрать строку JSON

+0

Спасибо, до сих пор я избегал Google. Насколько я понимаю, Google предоставляет очень ограниченное количество вызовов перед взиманием платы. Но, возможно, это лучший вариант. – seekingStillness

+1

Я проверил цену, и мне кажется, что до 2500 запросов в день, но, честно говоря, я пробовал обращаться к API без ключа API, и он отлично работал, тоже – Budius

+0

@Budius, как вы это сделали? Не могли бы вы рассказать мне – Prasad

1

Вы используете тот, который вы указали, просто заменив устаревший httpClient рекомендованным HttpUrlConnection Google. Есть много руководств там, включая Google's own sample code explained here.

+0

Спасибо, я пытаюсь преобразовать. Мой кунг-фу не был достаточно сильным. – seekingStillness

Смежные вопросы