Konversi Degrees Minutes Seconds (DMS) ke Decimal Degrees (DD)



Beberapa hari belakangan ini kami dipusingkan dengan mundurnya waktu penyelesaian dan penyerahan report survey outlet oleh pihak surveyor. Data survey sementara yang kami terima ternyata masih jauh dari ekspektasi kami. Beberapa alasan teknis yang menjadi kendala survey di lapangan seperti masalah cuaca, jauhnya jarak antar outlet dll masih bisa kami tolerir, namun selebihnya terkesan mengada-ada. Dari 30 ribu outlet yang tersebar di Jawa Barat, baru 50%-nya saja yang berhasil didata. Sementara diawal tender, mereka menyatakan sanggup mensurvey lebih dari 80% populasi outlet yang ada di wilayah Jawa Barat. Tidak hanya itu saja, ketika data attribut outlet tersebut kami konversikan ke dalam bentuk data spasial (di MapInfo Professional), ternyata hanya 5% saja yang termapping secara sempurna sesuai dengan alamatnya, sisanya menyebar tak beraturan di luar cluster (yang) seharusnya.


Dua hari yang lalu kami mengundang mereka untuk membahas kasus ini lebih lanjut, sekaligus membuat kesepakatan deadline penyerahan data outlet (yang valid) ke kami. Akhirnya semua pihak sepakat bahwa seluruh data survey outlet akan diserahkan (ke kami) maksimal tanggal 18 Juli 2011. Itu artinya, no more excuse to say, “It’s unfinished yet due to….”. Namun demikian, kami tidak mau berlepas diri dan berpangku tangan saja, i.e di satu sisi ‘memaksa’ mereka menyelesaikan tugasnya (sebelum deadline), namun di sisi lain kami tidak melakukan usaha apapun (do nothing) guna membantu mereka mencari akar masalah dan solusinya.

Setelah deadline disepakati, pihak surveyor bertanya, “Proyeksi apa yang bapak pakai di MapInfo?, UTM kah, Non-Earth kah atau..?”. Saya pun menjawab, “Wah punten pisan Pak, saya tidak tahu. Setahu saya, saya tidak mengubah settingan apapun di MapInfo. Artinya proyeksi yang saya pakai adalah proyeksi default. Hanya saja saya belum pernah mengecek secara langsung satuan apa yang terpakai saat itu.” Mereka menduga, ketidakakuratan mapping outlet (di MapInfo) terjadi karena tidak presisinya penyettingan koordinat pada perangkat GPS yang mereka gunakan atau (bisajadi pula karena) kesalahan pencatatan manual (by paper) koordinat latitude dan longitude-nya.


Rasa penasaran membuat kami mereschedule kembali pertemuan dengan team surveyor di hari berikutnya. Pada pertemuan tersebut, kami memberikan kesempatan kepada mereka untuk menunjukkan sampel outlet yang mereka survey di Map Source. Ternyata hasilnya lebih mendekati meskipun border kecamatannya tidak bisa ditampilkan. Selanjutnya kami meminta mereka menunjukkan satuan koordinatnya, dan ternyata yang tercatat adalah DMS (Degree, Minutes, Seconds). Nah disinilah letak permasalahannya selama ini. Perbedaan satuan koordinat (ternyata) menyebabkan posisi outlet tidak termapping secara benar di MapInfo. Sesederhana itu memang (harap dimaklumi karena kami baru belajar.. :P). Di MapInfo, default koordinat BTS (eksisting) yang kami punya adalah Decimal Degrees (DD), sedangkan satuan koordinat GPS yang diset oleh team surveyor adalah DMS. Terus apa solusinya?. Satuan koordinatnya harus diseragamkan, apakah itu dalam satuan DMS atau pun dalam DD. Karena default koordinat BTS eksisting kami dalam satuan DD, maka koordinat outletlah yang pada akhirnya harus menyesuaikan. “Tapi kan banyak mas?, ada 13.000 outlet lo. Kalau diganti secara manual, kami pesimis bisa merampungkannya sebelum tanggal 18 Juli 2011.” kata mereka.


Tenang, kami punya formulasinya. Perhatikan gambar berikut:




Tabel dengan header hitam diatas adalah data outlet dari team surveyor dimana format latitude dan longitude-nya masih dalam satuan DMS dan belum dikonversikan ke dalam satuan lain [contoh; latitude dan longitude untuk Hilmi Cell secara berturut-turut adalah (07* 07’ 18,1”) dan (107* 25’ 29,9”)]. Sedangkan tabel dengan header merah berisi data koordinat yang sudah dikonversikan ke DD [contoh; latitude dan longitude Hilmi Cell paska konversi ke DD (-7.121666667) dan (107.4247222)]. Bagaimana cara mengkonversikan koordinat dari satuan DMS ke DD?. Berikut teknisnya.


[1]. Aktifkan Macros Excel anda (caranya; klik office button [di pojok kiri atas MS Excel anda] > klik excel option [di pojok kiri bawah, di sebelah exit excel] > klik trust center > klik trust center settings > klik macro settings > centang option; enable all macros dan trust access to VBA)
[2]. Copy-paste syntax dibawah ini ke module VBA (caranya; tekan ALT+F11 kemudian klik menu insert > module)



Function DWI_NOVIYANTO(Degree_Deg As String) As Double

' Declare the variables to be double precision floating-point.
Dim degrees As Double
Dim minutes As Double
Dim seconds As Double

' Set degree to value before "*" of Argument Passed.
degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "*") - 1))

' Set minutes to the value between the "*" and the "'"
' of the text string for the variable Degree_Deg divided by
' 60. The Val function converts the text string to a number.
minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "*") + 2, _
InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
"*") - 2)) / 60

' Set seconds to the number to the right of "'" that is
' converted to a value and then divided by 3600.
seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
/ 3600

DWI_NOVIYANTO = degrees + minutes + seconds
End Function

[3]. Kembali ke sheet1 yang berisi data koordinat longitude dan latitude yang berformat DMS (sebagaimana gambar diatas). Silahkan ketik formulasi berikut pada cell M4 (header LAT yang berwarna merah);

=VALUE("-"&DWI_NOVIYANTO(CONCATENATE(IF(RIGHT($F4,1)<>"*",SUBSTITUTE($F4,RIGHT($F4,1),"*"),$F4)," ",IF(RIGHT($G4,1)<>"'",SUBSTITUTE($G4,RIGHT($G4,1),"'"),$G4)," ",IF(RIGHT($H4,1)<>"""",SUBSTITUTE($H4,RIGHT($H4,1),""""),$H4))))


Dan juga formulasi berikut pada cell N4 (header LONG yang berwarna merah);

=VALUE(DWI_NOVIYANTO(CONCATENATE(IF(RIGHT($I4,1)<>"*",SUBSTITUTE($I4,RIGHT($I4,1),"*"),$I4)," ",IF(RIGHT($J4,1)<>"'",SUBSTITUTE($J4,RIGHT($J4,1),"'"),$J4)," ",IF(RIGHT($K4,1)<>"""",SUBSTITUTE($K4,RIGHT($K4,1),""""),$K4))))


Penjelasan Singkat Formulasi

Karena kedua formulasi diatas serupa, maka saya ambil salah satunya saja sebagai contoh (i.e formulasi untuk cell M4 atau header LAT):
=CONCATENATE(IF(RIGHT($F4,1)<>"*",SUBSTITUTE($F4,RIGHT($F4,1),"*"),$F4)," ",IF(RIGHT($G4,1)<>"'",SUBSTITUTE($G4,RIGHT($G4,1),"'"),$G4)," ",IF(RIGHT($H4,1)<>"""",SUBSTITUTE($H4,RIGHT($H4,1),""""),$H4))


Berfungsi menggabungkan data latitude pada kolom F, G, H menjadi format 07* 07’ 18,1”. Perhatikan dua bulatan kuning pada gambar diatas. Itu adalah salah satu contoh kesalahan penulisan format LAT oleh team surveyor. Pada cell F6 tertulis 07', seharusnya ditulis 07* yang artinya 7 degrees. Begitu pula pada cell G8, disana tertulis 06*, seharusnya ditulis 06' yang artinya 6 minutes. Nah jika terjadi kesalahan sebagaimana contoh diatas, maka formulasi ini akan secara otomatis mengoreksi dan menampilkan format LAT yang seharusnya (baca: benar).

Selanjutnya, jika A = CONCATENATE(IF(RIGHT($F4,1)<>"*",SUBSTITUTE($F4,RIGHT($F4,1),"*"),$F4)," ",IF(RIGHT($G4,1)<>"'",SUBSTITUTE($G4,RIGHT($G4,1),"'"),$G4)," ",IF(RIGHT($H4,1)<>"""",SUBSTITUTE($H4,RIGHT($H4,1),""""),$H4))


Maka, =VALUE(DWI_NOVIYANTO(A)) akan mengubah format 07* 07’ 18,1” menjadi -7.121666667

Adapun formulasi yang mengkonversikan format DMS menjadi DD sendiri dilakukan oleh:

=DWI_NOVIYANTO(A) sedangkan =VALUE() berfungsi mengubah -7.121666667 yang sebelumnya berformat TEXT menjadi -7.121666667 yang berformat VALUE.


[4]. Silahkan copy formulasi tersebut ke record/data selanjutnya, maka seluruh data DMS akan terkonversi ke dalam format Decimal Degrees secara sempurna. Berikut adalah hasil mapping outlet pasca konversi (DMS ke DD) di MapInfo.





Itu saja yang bisa saya share, mudah-mudahan bermanfaat.


4 Respones to "Konversi Degrees Minutes Seconds (DMS) ke Decimal Degrees (DD)"

Unknown mengatakan...

Salam kenal mas nakula.
Saya sedang membutuhkan cara untuk mengonversi DMS ke DD, kira2 ada cara yang lebih sederhana apa gak ya?
Misalnya menggunakan Ms. Excel gitu...


5 Juli 2012 pukul 19.10
Old Nakula mengatakan...

Salam kenal juga mas Alhuda,
Formulasi diatas sebenarnya dibuat di dalam ms excel mas, hanya saja memang tidak murni menggunakan formulasi embedded excel. Sengaja saya gunakan kombinasi antara VBA (untuk membuat Function tambahan. Dalam case ini adalah creating conversion function, red) dan formulasi embedded excel seperti concatenate, Right, Subtitute, Value dan logika IF. Yang menyebabkan formulasi diatas sedikit agak rumit sebenarnya adalah inputan raw datanya. Kebetulan data koordinat yang disubmit oleh pihak surveyor tidak seragam e.g ada yang menggunakan tanda * untuk menunjukkan detik, adapula yang menggunakan ' untuk menunjukkan detik. Nah formulasi diatas berfungsi untuk menyeragamkan format data yang tidak sama tersebut sebelum dikonversikan ke DD secara otomatis. Formulasi konversinya sendiri simpel, yakni (DMS to DD) = Derajat + menit/60 + detik/3600. Menitnya sampeyan bagi dengan 60, detiknya sampeyan bagi dengan 3600. Setelah itu tambahkan seluruh komponennya mengikuti rumus dasar diatas. Demikian mas


5 Juli 2012 pukul 20.55
Unknown mengatakan...

Terima kasih, postingan yang yang agan bagi sangat membatu saya.
Salam Kenal


26 Mei 2014 pukul 13.19
Unknown mengatakan...

cara untuk mengetahui koordinatnya menggunakan positif dan negatif bagaimana.?


10 Oktober 2014 pukul 08.55

Posting Komentar

 

Entri Populer

Recent Comments

Blog Statistic

Return to top of page Copyright © 2007 | Old Nakula