【发布时间】:2018-07-20 00:00:59
【问题描述】:
我们有两个应用程序:一个 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));
}
我们主要关心的不是准确性(w.r.t. 实际距离)。我们的目标是消除两个系统之间的不匹配。我们可以在 OpenLayers 中使用哪种投影,以便其距离公式可以轻松(即,不使用任何外部库)在 C++ 中实现?
谢谢
【问题讨论】:
标签: c++ openlayers geospatial openlayers-3