-
May 5th, 2010, 01:01 AM
#41
Addicted Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hi
i have these coordinates N53200,E70300 from a map and this place in saudi arabia
and i want to convert to it corresponding lat and lon (lat=27 13.0947 lon=49 539406)
how?
i try the above code but it gives me wrong value
thanks in advance.
-
May 5th, 2010, 01:38 AM
#42
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
which is many miles to the south of where I want. I want to be able to zoom to google maps based on the user click.maybe something happened when I convert to C#.
-
May 23rd, 2010, 08:12 AM
#43
New Member
UTM to decimal degree
In sample 2 from your first post, how do I return decimal degree?
Regds
Inge
-
May 23rd, 2010, 10:23 PM
#44
Addicted Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
any idea how to convert those coordinates N53200,E70300
to degrees? because i don't know what are these coordinates are?
thanks in advance.
-
Jun 1st, 2010, 03:48 PM
#45
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Please verify all coordinates with this (or any other) online conversion engine: http://www.rcn.montana.edu/resources...ordinates.aspx
I've verified this class many times with the example one I gave and several others, and it's been extremely accurate. If you don't know what kind of coordinate data you have, then I suggest reviewing your own data and researching various coordinate systems on Google.
Looking over the code, you should easily find where it generates the decimal values of Latitude and Longitude before converting it to the output strings.
Finally, no, I don't know what global coordinate system Google Maps uses or if it works/doesn't work with this class. Once again, it's something you'll have to research with Google. Like the title of this post says, this class converts between Lat/Long and various UTM Coordinates such as WGS84. If you don't understand what every word in that last sentence means, then you've got some research to do.
Converting map coordinates is far-far trickier than most people think. There are a LOT of coordinate/mapping standards out there; some global, some outdated, many local or country-specific. Some are even patch-work which means depending on where you are, the computational data changes (such as NAD27). Know what you're working with before posting please.
Thanks you.
-
Aug 5th, 2010, 09:36 PM
#46
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hello Jenner,
I am new to coordinate conversion, but was googling around and found your class and it is exactly what I need. I am following your examples, using a Lat/Long of 35.97327766/-85.96502471 and trying to convert it to NAD83 UTM (TN Zone 4100). I am getting the values easting: 593312.90865883883 and northing: 3981479.7292554607, but the values I have supplied to me by a flight client for the easting/northing are 1978849.094,596951.126. Any help or expertise you could provide would be greatly appreciated.
Thank you.
Last edited by 23michaelj45; Aug 5th, 2010 at 09:47 PM.
-
Oct 6th, 2010, 09:43 AM
#47
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Can this be used to override zones? By that I mean, can I force it to calculate the Easting/Northing in a specific zone?
Thanks,
John
-
Jun 21st, 2011, 05:10 PM
#48
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hello Jenner,
(I hope you are still paying attention to this thread)
I am trying to use the class you built in VB in my project. However, I am having problems with coordinates in the southern hemisphere.
I have created a C# test class based on the Excel spreadsheet from http://www.uwgb.edu/dutchs/UsefulDat...ertUTMNoOZ.HTM . I have put the file on GitHub - it is available on https://github.com/jlundstocholm/Coo...Transformation .
All coordinates in the Northern hemissphere are calculated correctly, but all coordinates in South fail. As an example, the coordiates
Northern: 3000000
Eastern: 430000
Hemisphere: South
Zone: 28
Is supposed (from the spreadsheet as well at the test page on http://www.rcn.montana.edu/resources...&n=3000000&h=S ) to be
Code:
Longitude: 15° 42' 22,616" West
Latitude: 27° 8' 45.503" South
But your class yields the result
Code:
Longitude: {16° 23' 16,314" West
Latitude: 63° 7' 21,179" South
I have looked thru the code and as far as I can see, it pretty much mimics the formulas in the spreadsheet.
Do you have an idea of what I am doing wrong?
And also: have you thought about putting an Open Source license to your class like Apache, BSD or similar? It would make it easier to reuse in projects.
Thank you,
:-)
/Jesper Lund Stocholm
Copenhagen, Denmark
-
Jul 24th, 2011, 05:00 AM
#49
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hello Jenner.
I need to convert Lat/Lon coordinates to MGRS and vice-versa ina VB. Net web application (VS2010).
Could you help?
T.I.A.
-
Jul 25th, 2011, 08:35 AM
#50
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
MGRS is based on UTM and isn't too hard to convert between the two. Just Google "MGRS to UTM formula" and you should find something you can use. Thus, you can use this class to convert from Lat/Long to UTM and then from UTM to MGRS and back.
-
Oct 21st, 2011, 05:08 PM
#51
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Originally Posted by jvonbokel
Can this be used to override zones? By that I mean, can I force it to calculate the Easting/Northing in a specific zone?
Thanks,
John
The GPS.vb was just what I've been looking for. It works great.
But I also need to "force" zones. In Norway we only use UTM zone 32,33 and 35. We skip 31, 34 and 36.
Can anyone give me a hint of what to do?
Thanks.
-
Oct 24th, 2011, 08:58 PM
#52
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
You can probably change the math routine to skip certain zones and calculate to adjacent zones. It sounds like Norway uses a local variant of general purpose UTM. Several countries do apparently, there are dozens and dozens of "local" systems that are anywhere from small tweaks to UTM to complete hybrids with local patch transforms.
-
Oct 25th, 2011, 02:51 PM
#53
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Originally Posted by Jenner
You can probably change the math routine to skip certain zones and calculate to adjacent zones. It sounds like Norway uses a local variant of general purpose UTM. Several countries do apparently, there are dozens and dozens of "local" systems that are anywhere from small tweaks to UTM to complete hybrids with local patch transforms.
I could substitue GetZoneCM() with 9 (centermeridian of zone 32). that would probably do the trick. Btw all of southern Norway is in zone 32, although the western part should be in zone 31.
http://en.wikipedia.org/wiki/File:LA...-UTM-zones.png
Anyway thnx
-
Jan 25th, 2012, 05:09 PM
#54
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hi Jenner - I really appreciate the effort you have invested to make this code available and I accept that it is accurate, so I also accept any error is my error but hoping to prevail on your good nature (what a creep, eh)
OK, although I'm new to this vb .Net lark, I think I have installed the code OK on the grounds that it doesn't crash and it doesn't complain and it does something.
vb Code:
Dim utm As New GPS.UTM(340374, 366857, 30) utm.UTMLatitudeHemisphere = GPS.UTMLat.North utm.Datum = GPS.UTMDatum.WGS84 txtLatitude = utm.Latitude.ToString txtLongitude = utm.Longitude.ToString MsgBox(txtLatitude & "," & txtLongitude)
The txtlatitude variable returned is 3 degrees, 4 minutes and 43.550 seconds
the txtLongitude variable returned is 4 degrees, 11 minutes and 53.319 seconds
but if I use an external website thus
http://rcn.montana.edu/resources/too...4&n=366858&h=N
I get
Latitude: 3° 19' 4.776" N
Longitude: 4° 26' 12.338" W
I don't understand how I have made an error. Can you help?
A second question, if I may - can the code return Degree Decimal format results?
Thanks in anticipation
Tim
Last edited by gep13; Jan 26th, 2012 at 01:52 AM.
Reason: Added Highlight Tags
-
Jan 26th, 2012, 01:51 AM
#55
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hello TimHaydnJones,
Welcome to the forums!
Just a quick note...
When you are posting code into the forum, can you please remember to surround it in [code][/code] or [HIGHLIGHT=vb][/highlight] tags? It makes it a lot easier to read. I have done this for you in your above post.
Gary
-
Jan 27th, 2012, 12:54 PM
#56
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Originally Posted by TimHaydnJones
Hi Jenner - I really appreciate the effort you have invested to make this code available and I accept that it is accurate, so I also accept any error is my error but hoping to prevail on your good nature (what a creep, eh)
OK, although I'm new to this vb .Net lark, I think I have installed the code OK on the grounds that it doesn't crash and it doesn't complain and it does something.
vb Code:
Dim utm As New GPS.UTM(340374, 366857, 30) utm.UTMLatitudeHemisphere = GPS.UTMLat.North utm.Datum = GPS.UTMDatum.WGS84 txtLatitude = utm.Latitude.ToString txtLongitude = utm.Longitude.ToString MsgBox(txtLatitude & "," & txtLongitude)
The txtlatitude variable returned is 3 degrees, 4 minutes and 43.550 seconds
the txtLongitude variable returned is 4 degrees, 11 minutes and 53.319 seconds
but if I use an external website thus
[url]http://rcn.montana.edu/resources/tools/coordinates.aspx?nav=11&c=UTM&md=83&mdt=NAD83/WGS84&z=30&e=340374&n=366858&h=N
I get
Latitude: 3° 19' 4.776" N
Longitude: 4° 26' 12.338" W
I don't understand how I have made an error. Can you help?
A second question, if I may - can the code return Degree Decimal format results?
Thanks in anticipation
Tim
Your Northing and Easting are reversed. In my tool, you use the format:
GPS.UTM(Northing, Easting, Zone)
GPS.UTM(340374, 366857, 30)
but in the web tool, your link shows:
http://rcn.montana.edu/resources/tools/coordinates.aspx?nav=11&c=UTM&md=83&mdt=NAD83/WGS84&z=30&e=340374&n=366858&h=N
If you flip the two on the web tool, you'll see you get a result that matches my tool and vice-versa.
Last edited by Jenner; Jan 27th, 2012 at 12:58 PM.
-
Jan 31st, 2012, 05:53 PM
#57
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
DOH! - do I feel sheepish or what!
Moving onto my next issue, if I may - Is there a way I can pass in 6x6 digit UK Eastings and Northings, based on the Ordnance Survey National Grid (OSNG)?
The OSNG coordinates (Eastings) 329636, (Northings) 407288 relate to a lat/long of 53.5575437399072, -3.06531429290771 but convert back to a
UTM Easting of 495673 and a UTM Northing of 5934298 (WGS84 Zone 30).
(Reading some documentation from the Ordnance Survey, I guess this is something to do with the fact that the OSNG origin is at Lat 49 degrees North and Long 2 degrees West, which means that my OSNG Northings are too small and (it seems) I can't pass them into your code in their native form)
So, I understand that I can use your code to translate from the UTM to Lat/Long and vice versa but can I use it to convert my 6x6 OSNG co-ordinate to Lat/Long?
-
Jan 31st, 2012, 06:07 PM
#58
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
As written, I'm afraid not. Every local/country grid has it's own sets of peculiarities that must be programmed around. I mean, it's certainly possible to write a conversion, but I'm afraid I'm not that good at math to undertake such a task.
Back when I found the formulations and decided to write this class up, I looked into writing up routines to convert into the United States system as well... but researching the problem showed me just how immensely complex that would have been since almost every state in our country has it's own "local grid data" with table-loads of conversions required to stitch it all together into the monstrosity known as NAD83.
-
Jan 31st, 2012, 06:14 PM
#59
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Thanks for a rapid response, Jenner and thanks again for the code.
Oh, and by the way, if you think your Maths is questionable, you should see mine
regards
Tim
-
Feb 22nd, 2012, 10:57 AM
#60
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
A word of warning - as you might have gathered from some of the posts in this thread, porting this class to C# using an online converter will screw some things up. My latitude was off by about 10 miles. If I ever get a C# version running, I will edit this post with a link to the code.
-
Jun 19th, 2012, 08:48 AM
#61
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Very nice! I downloaded this for two reasons. The first was to learn how to convert UTM to Lat/Long (and vice versa). The second was as an example of a Class. Being a relative newcomer to the whole OOP thing (though I've had many years of programming experience), I wanted to learn more about it.
Quick question. Would this class be a good place to put conversion routines for doing the various lat/long formats (DMS.dd, DM.dd, D.dd)?
Thanks for the code!
Larry
-
Jun 22nd, 2012, 02:37 PM
#62
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Absolutely! Classes are as flexible as you need them to be.
-
Jun 28th, 2012, 12:03 PM
#63
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
We are looking to use this in a research project. Is there a license agreement for this code?
-
Jun 29th, 2012, 02:47 PM
#64
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Nope, freeware as far as I'm concerned. That's why it's posted on here.
-
Jun 30th, 2012, 11:23 AM
#65
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
I'm afraid your class is extremely accurate and useful.
Also for peeps who be tryin to convert to C#. This is what I did:
1) Create a VB Library Project.
2) Add the GPS.vb class
3) Compile
4) Start a new C# project
5) Reference the first VB Library Project directly or through the compiled DLL
6) There you can use the class as if it were c#
Anw. Thanks again. You have saved so many lives by posting this code.
-
Dec 24th, 2012, 10:17 AM
#66
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
It seems like a simple question, but i just cant seem to work it out.
I have Eastings, Northings, Hemisphere and the Zone, I can get the class to work and it outputs Latitudes and Logditudes for me, but they are in DMS, but I really need to get the output in Decimal Long/Lat.
I know im missing something simple.
this is the code i use to output the Long/Lat, is there a conversion function?
Dim utm As New GPS.UTM(Northing, Easting, Zone)
utm.UTMLatitudeHemisphere = GPS.UTMLat.South
MyLatitude = utm.Latitude.ToString
MyLongitude = utm.Longitude.ToString
i feel like it should be
MyLatitude = utm.Decimal.Latitude.ToString
MyLongitude = utm.Decimal.Longitude.ToString
Or something similar.
Thanks, Mike
-
Dec 25th, 2012, 02:17 AM
#67
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
To get decimal degrees, it's
degrees + (minutes/60) + (seconds/3600)
-
Dec 25th, 2012, 02:09 PM
#68
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
To get decimal degrees, it's
degrees + (minutes/60) + (seconds/3600)
-
Dec 26th, 2012, 04:54 PM
#69
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Originally Posted by lar3ry
To get decimal degrees, it's
degrees + (minutes/60) + (seconds/3600)
I understand the Maths involved, im just unsure of how to implement this. Would i do it in the GPS.vb class or would i do this in my function?
This is a snippet of my code:
If reader.HasRows Then
While reader.Read()
Northing = reader("Northing")
Easting = reader("Easting")
CarNumber = reader("CarNbr")
Zone = reader("Zone")
Dim utm As New GPS.UTM(Northing, Easting, Zone)
utm.UTMLatitudeHemisphere = GPS.UTMLat.South
MyLatitude = utm.Latitude.ToString
MyLongitude = utm.Longitude.ToString
Lats = Left(MyLatitude, Len(MyLatitude) - 6)
Longs = Left(MyLongitude, Len(MyLongitude) - 5)
'LongsDblQotPos = InStr(Longs, """)
'LongsSnglQotPos = InStr(Longs, "'")
'LongsMin = Mid(Longs, 6, Len(Longs) - 7 - LongsSnglQotPos)
'LongsSec = Mid(Longs, LongsSnglQotPos + 2, Len(Longs) - (LongsSnglQotPos + 2))
'LongsDecimal = (((LongsSec / 60) + LongsMin) / 60) + 27
'LatsDblQotPos = InStr(Lats, """)
'LatsSnglQotPos = InStr(Lats, "'")
'LatsMin = Mid(Lats, 5, Len(Lats) - 6 - LatsSnglQotPos)
'LatsSec = Mid(Lats, LatsSnglQotPos + 2, Len(Lats) - (LatsSnglQotPos + 2))
'LatsDecimal = CDbl(Val((((LatsSec / 60) + LatsMin) / 60) + 153))
My.Computer.FileSystem.WriteAllText("C:\TestCopy.txt", "['Car:" & CarNumber & "'," & " -" & Lats & "," & " " & Longs & ", " & index & "]" & Chr(10), True)
index = index + 1
End While
End If
It reads the values from a DB then converts them from UTM to Lat Long, but my application needs lat longs in decimal format. Im just unsure of how to do that.
-
Dec 26th, 2012, 05:43 PM
#70
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Dismiss my last question... it seems with a little more obvious thinking i worked it out!
If reader.HasRows Then
While reader.Read()
Northing = reader("Northing")
Easting = reader("Easting")
CarNumber = reader("CarNbr")
Zone = reader("Zone")
Dim utm As New GPS.UTM(Northing, Easting, Zone)
utm.UTMLatitudeHemisphere = GPS.UTMLat.South
MyLatitude = utm.Latitude.ToString
MyLongitude = utm.Longitude.ToString
LatsDecimal = utm.Latitude.Degrees + (utm.Latitude.Minutes / 60) + (utm.Latitude.Seconds / 3600)
LongsDecimal = utm.Longitude.Degrees + (utm.Longitude.Minutes / 60) + (utm.Longitude.Seconds / 3600)
My.Computer.FileSystem.WriteAllText("C:\TestCopy.txt", "['Car:" & CarNumber & "'," & " -" & LatsDecimal & "," & " " & LongsDecimal & ", " & index & "]," & Chr(10), True)
index = index + 1
End While
End If
-
Mar 18th, 2013, 03:28 PM
#71
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
Hi Jenner - I have implemented your code to geolocate aerial images - and the locations are only somewhat close. I have a centroid located at 35.44752324, -119.0344939 and the UTM comes out as 11N 3925110.67478774, 314745.859021866 - this is about 373 and 741 meters off. The Lat/Lon are in WGS84, and I am loading the resulting UTM Arcmap using NAD83_UTM_Zone11 as my projection. . Thanks for your help
-
Sep 13th, 2013, 11:02 AM
#72
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
I see a lot of posts here requesting decimal Lat/Long output instead of ddd mm' ss.ss".
So, I added two read only properties to the class. Here is the code with the new parts highlighted:
Added two local private double variables...
Code:
Public Class UTM
Private Const k0 As Double = 0.9996
Private cooLat As New Coordinate(0, CoordinateType.Latitude)
Private cooLong As New Coordinate(0, CoordinateType.Longitude)
Private utmDat As UTMDatum = UTMDatum.WGS84
Private dblNorthing As Double = 0
Private dblEasting As Double = 0
Private DecLat As Double = 0.0
Private DecLong As Double = 0.0
Private utmL As UTMLat = UTMLat.North
Private intZone As Int32
Added two read only properties...
Code:
#Region "Properties"
.
.
.
Public ReadOnly Property DecLatitude() As Double
Get
Return DecLat
End Get
End Property
Public ReadOnly Property DecLongitude() As Double
Get
Return DecLong
End Get
End Property
.
.
.
#End Region
Filled in the private class variables with the values in the UTM to LL conversion ....
Code:
Public Sub GetLatLong()
.
.
.
cooLat = New Coordinate(Convert.ToDecimal(lat), CoordinateType.Latitude)
DecLat = lat
Dim lon As Double = GetZoneCM() - ((lof1 - lof2 + lof3) / Math.Cos(phi1)) * 180 / Math.PI
DecLong = lon
cooLong = New Coordinate(Convert.ToDecimal(lon), CoordinateType.Longitude)
End Sub
My question to the forum here is, has anyone seen a class like this, but for U.S. State-Planes <-> LatLong ?
Korg sends
-
Sep 18th, 2013, 11:32 AM
#73
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
I have been testing the class and it works well ... thank you.
When I try to convert a UTM coordinate to a Lat/Long coordinate, the latitude is off slightly but the longitude is the same. I am comparing my results to the National Resources Canada website at:
http://webapp.geod.nrcan.gc.ca/geod/...outils/trx.php.
The values I am using are:
N: 5453095.17
E: 704731.39
Zone: 13
The results I get from the class are:
Lat: 49.196384246396228 (49° 11' 46.9833")
Long: -102.18969397760389 (-102° 11' 22.8983")
but the results from the Geodetic site are:
Lat: 49° 11' 47.17321"
Long: -102° 11' 22.89833"
From other samples I tested, it appears that the longitude is always the same but the latitude is always off a bit.
Here is the code I am using:
Dim utm As New clsGPS.UTM(myNorthing, myEasting, Zone)
utm.UTMLatitudeHemisphere = clsGPS.UTMLat.North
lat = utm.Latitude.GetDecimalCoordinate
lon = utm.Longitude.GetDecimalCoordinate
Am I missing something?
Blair
-
Feb 3rd, 2019, 11:02 PM
#74
New Member
Re: GPS Class that maps Lat/Long to UTM Coordinates (WGS84 and others)
I made some changes in the function GetLatLong() that solve the problem in the south hemisphere, added local variable dNorth and dEast :
Dim dNorth As Double = 0
Dim dEast As Double = 0
' dblNorthing = If(utmL = UTMLat.North, dblNorthing, 10000000 - dblNorthing)
dNorth = If(utmL = UTMLat.North, dblNorthing, 10000000 - dblNorthing)
dEast = dblEasting
Dim arc As Double = dNorth / k0
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|