如何使用例如开放式海拔来获取一组位置的高度?

时间:2018-03-24 00:34:13

标签: curl openstreetmap altitude

我目前正在学习一类算法并且必须做一个与Graphs相关的项目,更具体地说是找到一组位置中的最短路径。问题是我们不仅要考虑点之间的距离,还需要知道它们的高度。 现在,我已经搜索了openstreetmaps,google elevation api等,我还没有找到一种方法来获得提升。根据我的理解,osm只有少量节点的高程。

Here 是一个使用open-elevation API的curl的例子。有没有办法制作一个简单的程序(最好是C / C ++)来做我想做的事情?我已经尝试过,但无法让它发挥作用。

我的第一个想法是使用system()。如果它工作,那么我可以读取位置并创建一个字符串以传递给该函数。 但是,我得到了许多与引号相关的编译器错误。我没有逃过一切吗? 这是代码:

#include <stdlib.h>

int main()
{
    system("curl -X POST \\
    https://api.open-elevation.com/api/v1/lookup \\
    -H \'Accept: application/json\' \\
    -H \'Content-Type: application/json\' \\
    -d \'{
    \"locations\":
    [
          {
              \"latitude\": 41.1488064,
              \"longitude\": -8.6094618
          },
          {
              \"latitude\":20,
              \"longitude\": 20
          },
          {
              \"latitude\":41.161758,
              \"longitude\":-8.583933
          }
      ]

  }\'");

    return 0;
}

编辑:显然删除了工作空间。即便如此,还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我是您使用的Open-Elevation服务的作者:)请随时问我任何问题。

使用system()通常不是好习惯。您应该查看一个允许您在C中发出简单GET请求的库。既然您已经知道如何使用cURL,那么这是一个有趣的技巧!您可以ask cURL to generate C code for you,然后进行调整。只需传递--libcurl选项!