将度分秒转换为十进制 LatLng
Convert DegreesMinutesSeconds to Decimal LatLng
正在尝试编写一个 vbscript 函数将 DMS 中的坐标转换为十进制格式。
38°37'16.662"N, 109°36'5.01"W
应转换为 38.621295,-109.601391666667
使用下面的函数,我得到了正确的数字,但我不知道如何确定是否将负号放在 lng 之前。
latLngDmsToDecimal(38, 37, 16.662) = 38.621295
latLngDmsToDecimal(109, 36, 5.01) = 109.601391666667
请注意,第二个结果中没有负号。
Function latLngDmsToDecimal(byVal d, byVal m, byVal s)
d = cDbl(d)
m = cDbl(m)
s = cDbl(s)
If d < 0 Then
latLngDmsToDecimal = -(s / 3600) - (m / 60) + d
Else
latLngDmsToDecimal = (s / 3600) + (m / 60) + d
End If
End Function
您需要解析方向。 W 和 S 应该是负数。要么这应该传递到你的函数中,解析器应该反转度数部分
所以第二个应该读作
latLngDmsToDecimal(109, 36, 5.01, W) = -109.601391666667
或
latLngDmsToDecimal(-109, 36, 5.01) = -109.601391666667
正在尝试编写一个 vbscript 函数将 DMS 中的坐标转换为十进制格式。
38°37'16.662"N, 109°36'5.01"W
应转换为 38.621295,-109.601391666667
使用下面的函数,我得到了正确的数字,但我不知道如何确定是否将负号放在 lng 之前。
latLngDmsToDecimal(38, 37, 16.662) = 38.621295
latLngDmsToDecimal(109, 36, 5.01) = 109.601391666667
请注意,第二个结果中没有负号。
Function latLngDmsToDecimal(byVal d, byVal m, byVal s)
d = cDbl(d)
m = cDbl(m)
s = cDbl(s)
If d < 0 Then
latLngDmsToDecimal = -(s / 3600) - (m / 60) + d
Else
latLngDmsToDecimal = (s / 3600) + (m / 60) + d
End If
End Function
您需要解析方向。 W 和 S 应该是负数。要么这应该传递到你的函数中,解析器应该反转度数部分
所以第二个应该读作
latLngDmsToDecimal(109, 36, 5.01, W) = -109.601391666667
或
latLngDmsToDecimal(-109, 36, 5.01) = -109.601391666667