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]即可获得纬度。