如何获取Anylogic中两个纬度经点之间的距离?

时间:2019-11-26 16:13:16

标签: anylogic

我是 Anylogic 的新手,我正在尝试使用给定的 latitude-longitude 值来计算两点之间的距离。我想要以英里为单位的距离。我在下面的Anylogic网站上找到了一种方法

default double getDistance(double startLat,
                           double startLon,
                           double endLat,
                           double endLon)

通过路线计算两个指定点之间的距离。 返回值: 两个指定点之间的距离,以米为单位。

  

(来源:   https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fjavadoc%2Fcom%2Fanylogic%2Fengine%2Fgis%2FIGISRouteProvider.html

但是,当我用纬度-经度运行两组点时

Point 1:
latitude:41.40174, longitude: -72.0201
Point 2:
latitude:45.332, longitude:-73.2215

在任何逻辑上,这给我4.1098062654025815米的距离;这是错误的。请您帮我提供见解,我可能做错了什么?谢谢

1 个答案:

答案 0 :(得分:1)

出什么事了

您当前正在使用Utilities中的标准距离函数,该函数将输入用作笛卡尔坐标,而不是地理纬度和对数:

public static final double getDistance(double x1,double y1,double x2,double y2)

Returns the distance between two given points (x1, y1) and (x2, y2)
Parameters:x1 - the x coordinate of the first pointy1 - the y coordinate of the first pointx2 - the x coordinate of the second pointy2 - the y coordinate of the second point
Returns:the distance between points

如何修复

为了计算纬度和经度的地理距离,您将必须使用ShapeGISMap object随附的功能:

double  getDistanceByRoute(double latFrom, double lonFrom, double latTo, double lonTo)
Calculates length of route from one point to another.
double  getDistance(double latFrom, double lonFrom, double latTo, double lonTo)
Returns distance, in meters, between 2 given points

您可以通过从 SpaceMarkup 面板(此处的实例为map)添加一个 GIS Map 并对其进行引用来访问它们:

map.getDistanceByRoute(41.40174,-72.0201,45.332,-73.2215);

其他提示

您始终可以通过以下方式检查自己是否在上下文中使用了正确的功能:使用Java自动补全功能(键入功能名称的第一部分,然后按CTRL +空格键),然后查看显示的JavaDoc :

Auto Completion