OpenLayers距离公式
OpenLayers distance formula
本文关键字:距离 OpenLayers 更新时间:2023-10-16
我们有两个应用程序:一个web应用程序(使用OpenLayers3(和一个C++应用程序。目前,计算两点之间距离的公式不匹配。
对于OpenLayers:我们使用默认投影(https://openlayers.org/en/latest/doc/faq.html#how-do-i-change-the-projection-of-my-map-(。
对于C++应用:我们使用"投影到平面的椭球地球"小节中给出的公式:https://en.wikipedia.org/wiki/Geographical_distance.这是代码:
double distanceKMs(Node* a, Node* b)
{
double latMean = (a->lat + b->lat) / 2.0;
double lonDiff = b->longi - a->longi;
double latDiff = b->lat - a->lat;
double k1 = 111.13209 - 0.56605 * cos(2 * latMean) + 0.00120 * cos(4 * latMean);
double k2 = 111.41513 * cos(latMean) -
0.09455 * cos(3 * latMean) +
0.00012 * cos(5 * latMean);
return sqrt( pow((k1 * latDiff), 2) + pow((k2 * lonDiff), 2));
}
我们主要不关心的准确性(相对于乌鸦飞行距离的实际值(。我们的目标是消除这两种制度之间的不匹配。我们可以在OpenLayers中使用哪个投影,以便其距离公式可以在C++中轻松实现(即,不使用任何外部库(?
谢谢
您可能需要将OpenLayers JavaScript公式转换为C++。
为了做到这一点,您应该转换ol.sphere.getDistance
(OpenLayers v5(,以前称为ol.Sphere.haversineDistance
(OpenLayer v4(函数https://github.com/openlayers/openlayers/blob/v5.1.2/src/ol/sphere.js#L44
在客户端,要使用经度获得点坐标,只需使用ol.proj.fromLonLat([lon, lat]
即可获得纬度。
相关文章:
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 计算所有对之间的曼哈顿距离
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- Levenshtein 两个文件的距离花费了太多时间
- 两个有符号数字之间的距离
- 计算车辆之间的距离并设置速度,使距离保持不变,例如 5 米
- 计算两个迭代器之间的距离时"Vector Iterators Incompatible"
- 浮动距离为80位长双精度
- 查找彼此之间具有不同最小距离的随机数
- 相同字符之间的最小距离
- 如何根据距离矩阵确定节点?
- 如何排列二进制字符串以最小化它们之间的距离
- 曼哈顿距离比曼哈顿距离+线性冲突效果更好
- 使用C++中的链表对与原点的距离、x 和 y 坐标进行排序
- 应该如何编写用于计算最近点距离的C++函数?
- 有效地计算像素到其对应核线的距离
- 堆和堆栈之间的距离
- std::使用迭代器映射查找距离,程序不会终止
- OpenLayers距离公式