Vb.net 将GPS度数分秒转换为十进制度数

Vb.net 将GPS度数分秒转换为十进制度数,vb.net,gps,coordinates,degrees,Vb.net,Gps,Coordinates,Degrees,我有一个公式,我用它从gps坐标计算十进制度数 GPS坐标: 3800.5825,北 08735.5417,西 公式: Private Function DMStoDD(ByVal toConvert As Double, ByVal Dir As String) As Double Dim DD As Double Dim deg As Double Dim min As Double Dim sec As Double deg = CDbl(toCon

我有一个公式,我用它从gps坐标计算十进制度数

GPS坐标: 3800.5825,北 08735.5417,西

公式:

Private Function DMStoDD(ByVal toConvert As Double, ByVal Dir As String) As Double
    Dim DD As Double
    Dim deg As Double
    Dim min As Double
    Dim sec As Double
    deg = CDbl(toConvert.ToString.Substring(0, 2))
    min = CDbl(toConvert.ToString.Substring(2, 2))
    sec = CDbl(toConvert.ToString.Split(".")(1)) * 0.01
    DD = deg + (min / 60) + (sec / 3600)
    'Negative for West
    If Dir = "W" Then DD = DD * -1
    Return DD
End Function
返回: 38.0161805555556 -87.598380556(西部为负数)
结果非常接近,但并不完全正确。我相信它们只是在它们应该坠落的地方的西北一点。我已经搜索并查看了很多不同的公式,但从我所读的内容来看,我认为我的公式应该是正确的。提前谢谢你的帮助

你的公式看起来不对,有秒数的部分!它尝试DMS到度的转换。但坐标是用DM表示法(度数+十进制分钟)

所以你需要一个DM到DEG的转换
08735.5417,W=87度35.5147分钟W


只需执行87+35.5147/60,然后与-1相乘即可。这里没有公式,即使用esri sdk并从DMS字符串创建DDCoordinate。我相信应该有一种方法来转换它,而不是包含一个额外的sdk。在“示例”下面是与我上面的代码相对应的额外信息:根据计算器,我的结果实际上可能是正确的。也许是GPS问题,谢谢!经过几天的研究,我得出了相同的结论。这确实解决了我的问题