as in your example the Exact Lat,Long (In degrees) this location refers to is
3731.9404 ----> 37 + 31.9404/60 = 37.53234 degrees
10601.6986 ---> 106+1.6986/60 = 106.02831 degrees
Main Topics
Browse All TopicsI see answers post all over the internet for this question. But it seems that people disagree on one issue.
Is the latitude and longitude in an NMEA sentence stored in DegreesMinutes.Minutes (dm.m) or is it in DegreesMinutes.Seconds (dm.s)? Or, worse yet, is it in DegreesMinutes.MinutesSeco
$GPRMC,182807.036,A,3731.9
$GPGGA,182808.036,3731.940
I've tried converting the coordinates listed above so I can get the correct location on MS Streets & Trips but I always land up a few miles off.
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
I did some more testing and I must go back on what I have implied. I'm getting some very accurate readings by using the method you posted, imarshad. I don't know what I was doing wrong last week when I was testing this. For the convenience of anyone else trying to mess with this GPS raw data stuff, here are my VB / VBA functions that you can use to extract the Decimal Degrees from raw NMEA strings. I'm also posting a couple of other simple functions that I'm using.
Public Function fncGetLatitude(strNMEAStri
'This function extracts the latitude from an NMEA string and converts it to Decimal Degrees (as a string).
'To use this function you must specify what string type you are passing in, either GPRMC or GPGGA
Dim aryNMEAString() As String
aryNMEAString() = Split(strNMEAString, ",")
Dim sngMinutes As Single, sngLatitude As Single
Select Case strNMEAStringType
Case "GPRMC"
'Latitude is the Number 3 place in the array (4th place in the string)
If aryNMEAString(2) = "A" Then 'A represents a valid string
sngMinutes = (CSng(Mid(aryNMEAString(3)
sngLatitude = CSng(Left(aryNMEAString(3)
fncGetLatitude = CStr(sngLatitude)
End If
Case "GPGGA"
'Latitude is the Number 2 place in the array (3rd place in the string)
If CSng(aryNMEAString(2)) <> 0 Then 'If string is invalid it will be 0
sngMinutes = (CSng(Mid(aryNMEAString(2)
sngLatitude = CSng(Left(aryNMEAString(2)
fncGetLatitude = CStr(sngLatitude)
End If
End Select
End Function
Public Function fncGetLongitude(strNMEAStr
'This function extracts the longitude from an NMEA string and converts it to Decimal Degrees (as a string).
'To use this function you must specify what string type you are passing in, either GPRMC or GPGGA
Dim aryNMEAString() As String
aryNMEAString() = Split(strNMEAString, ",")
Dim sngMinutes As Single, sngLongitude As Single
Select Case strNMEAStringType
Case "GPRMC"
'Latitude is the Number 3 place in the array (4th place in the string)
If aryNMEAString(2) = "A" Then
sngMinutes = (CSng(Mid(aryNMEAString(5)
sngLongitude = CSng(Left(aryNMEAString(5)
fncGetLongitude = CStr(sngLongitude)
End If
Case "GPGGA"
'Latitude is the Number 2 place in the array (3rd place in the string)
If CSng(aryNMEAString(4)) <> 0 Then
sngMinutes = (CSng(Mid(aryNMEAString(4)
sngLongitude = CSng(Left(aryNMEAString(4)
fncGetLongitude = CStr(sngLongitude)
End If
End Select
End Function
Public Function fncGetSpeed(strGPRMC As String) As Integer
Dim aryGPRMC() As String, dblSpeed As Double
aryGPRMC() = Split(strGPRMC, ",")
If aryGPRMC(7) <> "" Then dblSpeed = CDbl(aryGPRMC(7))
fncGetSpeed = CInt(dblSpeed * 1.15077945)
End Function
Public Function fncGetHeading(strGPRMC As String) As Single
Dim aryGPRMC() As String
aryGPRMC() = Split(strGPRMC, ",")
If aryGPRMC(8) <> "" Then fncGetHeading = CSng(aryGPRMC(8))
End Function
Public Function fncGetSatellites(strGPGGA As String) As Integer
Dim aryGPGGA() As String
aryGPGGA() = Split(strGPGGA, ",")
fncGetSatellites = CInt(aryGPGGA(7))
End Function
Business Accounts
Answer for Membership
by: imarshadPosted on 2007-01-08 at 03:31:18ID: 18265973
It is in ddmm.mmmm format for latitude and in dddmm.mmmm for longitude.....
to convert it into dd.dddd fromat you will need to do
ddd + mm.mmmm/60
Imran