使用USGS海拔查询服务API

时间:2016-12-21 19:31:16

标签: android api gps elevation

我花了大约一周时间尝试研究如何通过我的Android应用程序连接到USGS Elevation Query Service API并获得令人尴尬的结果。我发现的最好的是6年前here使用现已弃用的代码。掠夺者 - 我无法让它发挥作用。

使用GPS进行升高对于我的应用需求来说太不可靠了,即使在对数据进行大量移动平均和低/高通滤波之后也是如此。

任何人都可以通过USGS海拔查询服务分享他们的建议/代码来检索海拔。我当然可以提供纬度和经度吗?

3 个答案:

答案 0 :(得分:3)

我刚浏览此页面寻找相关内容,发现第一个响应中有错误。它说:

  

以下是打给拉斯维加斯的示例电话   http://nationalmap.gov/epqs/pqs.php?x=36.1251958&y=-115.3150863&output=json&units=Meters

     

问题是,根据他们的网站,“如果无法在   请求的点,此服务返回-1000000“,我个人   找不到他们有位置的任何位置(尝试过拉斯维加斯   和旧金山)。

该示例将X和Y颠倒了。切换到

https://nationalmap.gov/epqs/pqs.php?y=36.1251958&x=-115.3150863&output=json&units=Meters

,效果很好。希望这对将来的搜索者有所帮助!

答案 1 :(得分:2)

简单的谷歌搜索" USGS海拔查询服务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,考虑到谷歌地图,我只能认为它非常好。您可以在此处查看文档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/)或Retrofit(使用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字符串

答案 2 :(得分:1)

您只需使用Google推荐的HttpUrlConnection替换已弃用的httpClient即可使用您引用的那个。那里有很多教程,包括Google's own sample code explained here.