第一、找ChatGPT询问如何计算两个地点(分别提供经度longitude和纬度latitude)的距离。得到以下的答案和代码:
如果您想在 UiPath 中计算两个经纬度之间的距离,可以使用"Haversine"公式。
公式如下:
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
其中:
lat1, lat2是两个点的纬度。
Δlat = lat2 − lat1。
Δlong = long2 − long1。
R是地球的半径(一般设置为6,371km)。
您可以使用以下代码实现此功能:
Public Function Distance(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double
Const R As Double = 6371 ' Earth's radius in km
Dim lat As Double = Math.Abs(lat2 - lat1) * (Math.PI / 180)
Dim lon As Double = Math.Abs(lon2 - lon1) * (Math.PI / 180)
lat1 = lat1 * (Math.PI / 180)
lat2 = lat2 * (Math.PI / 180)
Dim a As Double = Math.Sin(lat / 2) * Math.Sin(lat / 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Sin(lon / 2) * Math.Sin(lon / 2)
Dim c As Double = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a))
Return R * c
End Function
第二、可以在UiPath中使用Invoke code活动来引用VB代码。在UiPath中插入Invoke code活动,见下图:
在Edit Code里面输入上面的VB代码,但要做出一定调整,需要去掉头尾两句声明,并将输入数据的定义声明放入Edit Arguments里面,使用Arguments获取相关的数据并输出结果:
第三,设置工作流,输入数据并测试计算结果输出数据
成功!