【问题标题】:Get elevation (altitude at ground level) using USGS Elevation Query Service API使用 USGS 高程查询服务 API 获取高程(地面高度)
【发布时间】:2016-12-21 19:31:15
【问题描述】:

我花了一周的大部分时间尝试研究如何通过我的 Android 应用程序连接到 USGS 高程查询服务 API,但结果令人尴尬。我发现的最好的是 6 年前的 here 使用现在已弃用的代码。剧透 - 我无法让它工作。

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

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

【问题讨论】:

    标签: android api gps elevation


    【解决方案1】:

    我只是在寻找相关内容时看到此页面,并注意到第一个响应中有错误。它是这样说的:

    这是一个调用 Las Vegas 的示例 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
    

    而且效果很好。希望这对未来的搜索者有所帮助!

    【讨论】:

      【解决方案2】:

      在“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 地图,我只能假设它非常好。在这里你可以看到文档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字符串

      【讨论】:

      • 谢谢,到目前为止,我一直避免使用 Google。据我了解,谷歌在收费之前提供的电话数量非常有限。但也许这是最好的选择。
      • 我查看了价格,似乎每天最多可以免费处理 2500 个请求,但老实说,我尝试在没有任何 API 密钥的情况下调用 API,它也运行良好
      • @Budius 你是怎么做到的?你能告诉我吗
      • @Prasad 你问我是如何在 Google 上搜索的,或者我是如何从他们的文档中复制粘贴标准 OkHttp 实现的?
      • @Budius 我在不使用 API KEY 的情况下询问海拔 api
      【解决方案3】:

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

      【讨论】:

      • 谢谢,我确实尝试过转换。我的功夫不够强。
      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 2018-06-21
      • 2018-03-01
      • 2012-05-01
      相关资源
      最近更新 更多