1

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

是一个使用 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;
}

编辑:显然删除空格有效。即使那样,有没有更好的方法来做到这一点?

4

1 回答 1

2

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

使用 system() 通常不是一个好习惯。您应该研究一个允许您在 C 中发出简单 GET 请求的库。既然您已经知道如何使用 cURL,那么这里有一个有趣的技巧!您可以要求 cURL 为您生成 C 代码,然后对其进行调整。只是通过它的--libcurl选项!

于 2018-05-04T03:32:34.757 回答