Sa UTM pretvaračem možete lako pretvoriti UTM koordinate u vrijednosti širine i dužine. Univerzalna transverzalna Merkatorova (UTM) koordinata se sastoji od broja zone, istočne, sjeverne i hemisfere (N/S).
Preuzeti sada
Ako želite što prije početi koristiti softver, možete:
Inače, ako želite DIY, možete pročitati sadržaj ispod.
Hajde da pripremimo GUI
Kao što je prikazano na slici, ostavite gornja 4 reda Excel tabele za podatke o datumu karte, zoni i hemisferi. Ove 3 vrijednosti će se koristiti za sve redove u Excel tabeli. U redu 5, počevši od kolone A, dodajte ih kao zaglavlja.
- DLS_KEY
- RM
- EASTING
- NORTHING
- ŠIRINA
- DUŽINA
Vrijednost u kolonama A do kolone D se unosi, a izlaz, tj. širina i dužina se prikazuju u kolonama E i F
Učinimo ga funkcionalnim
Kopirajte skriptu u novi modul i prikačite makro na dugme na listu. Uvjerite se da vaša mašina ima Internet Explorer. Bez IE ova skripta neće raditi.
Hajde da ga testiramo
Kada pokrenete makro, možete lako pratiti status sa statusne trake vaše Excel aplikacije. Kako smo ručno napravili pauzu između svake konverzije, makrou će trebati vremena da pretvori sve vaše UTM koordinate u Lat i Long vrijednosti. Kada su svi zapisi obrađeni, možete vidjeti iskačuću poruku na ekranu. Ako makro ne može sačuvati podatke na listovima, možda je to zbog oštećenja u vašoj Excel datoteci. Popravite oštećenu Excel datoteku i ponovo pokrenite skriptu.
Skripta:
Sub UTM_Converter()
' Place all your declarations here
Dim i As Long
Dim browobject As Object
Dim obj1 As Object
Dim obj2 As Object
Set browobject = CreateObject("InternetExplorer.Application")
browobject.Visible = False
'Process each row in the excle till the macro meets the last used row
For r = 6 To 9
' Navigate to the URL to process data
browobject.navigate "http://www.rcn.montana.edu/resources/converter.aspx"
' Inform Users about the status
Application.StatusBar = "Macro is converting data. Please wait... Now at Row : " & r & " /// Total Rows : " & Sheets("UTM to LAT LON").Range("C" & Rows.Count).End(xlUp).Row
' As this is dynamic, we have to wait for the browobject to process input and generate output
Do While browobject.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Application.Wait (Now() + TimeValue("00:00:02"))
'Lets populate the form
browobject.document.getElementById("mapDatum").Value = "1"
browobject.document.getElementById("utmZone").Value = "14"
browobject.document.getElementById("utmHemi").Value = "N"
'utmEasting
browobject.document.getElementById("utmEasting").Value = Sheets("UTM to LAT LON").Range("C" & r).Value
'utmNorthing
browobject.document.getElementById("utmNorthing").Value = Sheets("UTM to LAT LON").Range("D" & r).Value
Set obj2 = browobject.document.getElementsByTagName("input")
v_length = 0
While v_length < obj2.Length
If obj2(v_length).Value = "Convert Standard UTM" Then
GoTo comehere
End If
v_length = v_length + 1
Wend
comehere:
obj2(v_length).Click
' Wait while browobject loading...
Do While browobject.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Application.Wait (Now() + TimeValue("00:00:02"))
'Show converted data on the sheet
Sheets("UTM to LAT LON").Range("F" & r).Value = browobject.document.getElementById("decimalLongitude").Value
Sheets("UTM to LAT LON").Range("E" & r).Value = browobject.document.getElementById("decimalLatitude").Value
Next r
' Show browobject
browobject.Visible = False
browobject.Quit
' Clean up
Set browobject = Nothing
Set obj1 = Nothing
Set obj2 = Nothing
Application.StatusBar = ""
'Inform User that entire process was completed
MsgBox "Converted !", vbInformation, "UTM to LAT LON converter v1.0"
End Sub
Uvod za autora:
Nick Vipond je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popraviti doc datoteku i Outlook softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com


