将DegreesMinutesSeconds转换为Decimal LatLng

时间:2016-01-19 03:01:05

标签: vbscript gis

尝试编写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

1 个答案:

答案 0 :(得分:1)

你需要解析方向。 W和S应为负数。这应该传递给你的函数,解析器应该反转度数部分

所以第二个应该读

latLngDmsToDecimal(109,36,5.01,W)= -109.601391666667

或者

latLngDmsToDecimal(-109,36,5.01)= -109.601391666667