我目前正在学习一类算法并且必须做一个与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;
}
编辑:显然删除了工作空间。即便如此,还有更好的方法吗?
答案 0 :(得分:2)
我是您使用的Open-Elevation服务的作者:)请随时问我任何问题。
使用system()通常不是好习惯。您应该查看一个允许您在C中发出简单GET请求的库。既然您已经知道如何使用cURL,那么这是一个有趣的技巧!您可以ask cURL to generate C code for you,然后进行调整。只需传递--libcurl
选项!