Sunday, August 31, 2014

Orthorectify Aerial Photographs (Part 2. Orthorectify Aerial Photographs Using ENVI)

Melanjutkan postingan sebelumnya tentang orthorektifikasi foto udara, pada postingan kali ini saya akan coba uraikan bagaimana cara orthorektifikasi foto udara menggunakan software ENVI. Untuk informasi tambahan, selain di ENVI, software lain yang bisa mendukung orthorektifikasi foto udara antara lain PCI geomatica, ERDAS IMAGINE, SOCET SET, ILWIS, dan GRASS, dan juga mungkin software software pengolahan citra yang lain.

Sebelumnya, monggo silahkan di download file KML berikut ini (link), kemudian coba tampilkan di google earth. silahkan diamati di daerah bergunung dimana disitu nampak efek relief displacement pada foto sangat besar. File KML ini dihasilkan dari koreksi geometrik menggunakan toolbar georeferencing ArcGIS. Dari hasil tersebut nampak bahwa georeferencing saja tidak cukup untuk mengkoreksi relief displacement. Anda bisa koreksi ulang dengan menambahkan GCP, meningkatkan orde transformasi polynomial-nya ke orde 2 dan yang lebih tinggi, tapi tetap tidak akan diperoleh hasil yang optimal.

 1. Buka ENVI, kemudian tampilkan foto udara yang belum dikoreksi. Contoh seperti gambar di bawah.



 2. Tampilkan DEM yang akan digunakan sebagai input dalam proses orthorektifikasi (bisa pake SRTM, bisa pake ASTER GDEM)

3. Dari Menu utama ENVI, buka menu Map > Build RPCs. (RPC = rational polynomial coefficient, sudah saya jelaskan di postingan - postingan sebelumnya)

4. Sebelum menu build RPCs muncul, ada pilihan citra yang akan diorthorektifikasi, pilih citra raw yang anda buka di Step 1. Tampilan Build RPCs seperti gambar di bawah. Untuk type sensor, masukkan frame camera, untuk focal length, isikan focal length dari kamera yang dipakai (biasanya ada di tepi foto, tergantung jenis dan merk, untuk yang saya pakai focal length nya adalah 88,31 mm). Principal Point kosongkan saja.


5. Dari menu Build RPCs, kemudian klik build interior orientation>Select fiducial in display. Orientasi interior disini maksudnya, kita akan menghubungkan antara koordinat foto (dalam kondisi cetak), dan koordinat pixel (dalam kondisi digital). Masukkan empat pasang koordinat foto dari fiducial marks pada foto anda. koordinat foto pada fiducial marks biasanya dicantumkan dalam file kalibrasi kamera. Kalau ini tidak ada, maka anda harus mengukur manual menggunakan penggaris pada foto cetak. Caranya, tentukan dulu lokasi principal point (titik pusat foto), principal point koordinatnya 0,0. Kemudian dari principal point ukur keatas (sumbu y positif) sampai titik yang sejajar dengan fiducial marks kiri atas dan kanan atas. Dari pengukuran pertama kita mendapat panjang dari principal points ke fiducial marks atas. Panjang ini merupakan nilai koordinat Y untuk fiducial marks kiri atas dan kanan atas (nilainya positif, gunakan satuan milimeter). Ukur lagi ke kanan (sumbu X negatif) sampai titik yang sejajar fiducial marks kiri atas dan kiri bawah. Panjang yang diperoleh merupakan koordinat X untuk fiducial marks kiri atas dan kanan atas (nilainya negatif). Ukur lagi ke bawah (sumbu Y negatif), dari sini kita akan mendapat koordinat Y untuk fiducial marks kiri bawah dan kanan bawah (nilainya negatif). Dan terakhir, ukur ke kanan (sumbu X positif), dari sini kita mendapat koordinat X untuk fiducial marks Kanan Atas dan Kanan Bawah (nilainya positif). Hasil pengukuran (dalam satuan milimeter) misalnya seperti di bawah ini.


Fiducial Marks


6. Arahkan kursor pada salah satu fiducial marks, kemudian Isikan koordinat fiducial marks yang bersangkutan pada kolom fiducial input, klik add Point. Lanjutkan ke fiducial marks lain.



7. Setelah selesai, Dari menu Interior Fiducial, pilih Options, kemudian Export Fiducials to Build RPCs Widget.



8. Kita lanjutkan dengan Exterior Orientation, disini kita akan memproyeksikan koordinat foto/gambar dengan koordinat permukaan bumi. Klik Select GCPs in Display. Arahkan kursor display di lokasi anda akan mengambil GCP, kemudian masukkan koordinat lapangan dari lokasi tersebut termasuk elevasi (ketinggian) nya. Koordinat dapat diperoleh dari citra satelit lain, peta RBI, atau GPS. Makin akurat koordinat makin baik. GCP idealnya menyebar ke seluruh liputan citra dalam jumlah yang makin banyak (dan akurat) makin baik.


9. Setelah GCP dirasa cukup, dari menu Exterior Orientation input pilih Options, kemudian Export GCPs to Build RPC Widget. Software akan menghitung parameter transformasi yang dicirikan dari indeks Omega, Phi dan Kappa, sekaligus juga RMS error-nya. Klik OK, software akan memberi tau elevasi minimum dan maksimum dari area liputan, ubah kalau misalnya anda paham elevasi minimum dan maksimum dari foto. Tahap Build RPCs Selesai.




10. Dari Menu utama ENVI, pilih menu Map Kemudian Orthorectification, kemudian Generic RPC/RSM, kemudian, Generic RPC/RSM with Ground Control Points. Muncul Menu GCP input, anda bisa memasukkan GCP baru, atau menggunakan GCP yang digunakan di Exterior Orientation step 9. Setelah selesai, Dari Menu GCP, pilih Options, kemudian Orthorectify File.


11. Muncul menu orthorectify, Pilih metode image resampling, input height DEM, kemudian tentukan lokasi output. Dan Selesai.



Hasil Orthorektifikasi contohnya dapat didownload di sini (link), coba bandingkan dengan file hasil georeferensi di atas. Hasil orthorektifikasi dapat mengkoreksi relief displacement. Akurasi hasil orthorektifikasi tergantung dari hasil interior orientation dan exterior orientation. Untuk hasil akurat, lakukan pengukuran interior sepresisi mungkin, dan gunakan GCP berkualitas tinggi (hasil DGPS/RTK) untuk exterior orientation, apalagi jika foto yang diorthorektifikasi merupakan foto udara skala besar. 

UPDATE, 31 Agustus 2014

Andaikan proses orthorektifikasi akan dilakukan di software lain, anda bisa menyimpan hasil Build RPCs (step 9) dengan cara mengexport hasil citra setelah Build RPCs selesai ke format NITF 2.1. Langkah ini akan menghasilkan file foto baru dengan format NITF namun informasi RPC-nya sudah ter-input ke dalam metadata, sehingga anda bisa melanjutkan proses orthorektifikasi di software lain, misalnya ArcGIS.

Saturday, August 30, 2014

Orthorectify Aerial Photographs (Part 1. Nature of Aerial Photographs Geometric Distortion)

Tulisan ini adalah bagian pertama dari Tutorial Orthorektifikasi Foto Udara. Foto udara disini adalah foto udara yang dihasilkan dari Kamera Metrik Fotogrametris/frame camera (film), bukan foto udara yang dihasilkan dari UAV custom yang biasanya menggunakan kamera pocket/SLR yang dipasang pada pesawat RC, walaupun prinsip yang digunakan (mungkin) relatif sama. Pada bagian pertama ini saya akan membahas tentang distorsi geometrik pada foto udara terlebih dahulu.

Foto udara dari frame camera berbeda dengan foto udara atau citra multispektral airborne. Foto udara frame camera direkam secara serentak (sama dengan kamera analog dalam fotografi) dalam satu kali liputan perekaman. Yang dimaksud dengan serentak disini adalah seluruh energi elektromagnetik (pantulan cahaya matahari dari obyek di permukaan bumi) dari seluruh area liputan langsung diterima lensa dan kemudian direkam dalam film sebagai media perekam. Sedangkan untuk sistem digital (electronic airborne multispectral scanner) mekanisme perekamannya mirip citra satelit (mekanisme pushbroom scanning atau whiskbroom scanning). Analogi mekanisme pushbroom scanning antara lain dapat ditemui pada mesin scanner dokumen, dimana sensor akan men-scan obyek dalam garis lurus memanjang yang kemudian bergerak maju.

Gambar Perekaman serentak foto udara (sumber umbc.edu)


Gambar Pushbroom (kiri, sumber nln.geos.ac.ed.uk) dan whiskbroom (kanan, sumber : wikipedia)






























Masih bingung dengan istilah perekaman pushbroom dan whiskbroom??. Coba kamu lihat nenekmu menyapu halaman pakai sapu lidi kalau pagi, seperti itulah whiskbroom scanning. Trus coba kamu lihat ibumu ngepel lantai pakai tongkat pel, seperti itulah pushbroom scanning.  

Perbedaan mekanisme perekaman ini mengakibatkan karakteristik distorsi geometrik yang disebabkan perbedaan relief permukaan bumi (relief displacement) antara foto udara analog dan citra digital berbeda. Untuk foto udara, karakteristik relief displacementnya rebah ke segala arah menjauhi titik pusat foto (nadir), sedangkan untuk citra digital dari sensor pushbroom/whiskbroom rebahnya ke samping kanan dan kiri titik pusat foto.

Relief displacement foto udara (sumber: ccrs)



Relief displacement citra satelit/airborne multispectral scanner (sumber ccrs)



Nah karena karakteristik distorsinya beda, maka cara koreksinya tentu saja berbeda antara foto udara analog dan citra satelit. Untuk koreksi geometrik citra satelit saya sudah pernah posting beberapa tutorial orthorektifikasi citra di blog ini, monggo silahkan dicari postingan sebelumnya.

Bagaimana untuk koreksi geometrik/orthorekfikasi foto udara?? stay tuned for next post :D

Sekedar catatan tambahan, kalau selama ini kamu meng-georeferensi citra pakai teknik rektifikasi dua dimensi (contohnya toolbar georeferencing di ArcGIS), dengan jujur saya katakan itu salah bung, toolbar georeferencing hanya ditujukan untuk meng-georeference peta raster hasil scan2nan agar data spasialnya bisa diekstrak. Toolbar georeferencing tidak bisa mengkoreksi relief displacement secara keseluruhan (sebenarnya bisa sih kalau menurut pendekatan praktis, tapi mungkin kamu perlu jutaan GCP wkwkwk). Apalagi kalau citranya meliput daerah bergunung, mampuss!!!!. Toolbar georeferencing hanya valid digunakan untuk citra satelit apabila citranya hanya meliput daerah datar dengan perbedaan elevasi yang tidak ekstrim. Relief displacement hanya bisa dikoreksi menggunakan teknik orthorektifikasi dimana selain perlu GCP kamu juga memerlukan DEM untuk mengidentifikasi sekaligus mengkoreksi relief displacement. 

Tuesday, August 26, 2014

Power of Phyton Scripting in ArcGIS (Example 1), Clipping Rasters in a workspace

phyton scripting di ArcGIS, mungkin tidak banyak orang yang mengeksplor ArcGIS sampai kesini, tapi berani jamin, anda akan kecanduan memakainya bila sudah memahami fungsionalitas dan manfaatnya.

Contohnya misalnya seperti ini.

"Saya mempunyai beberapa data raster dalam sebuah geodatabase, saya akan memotong raster (clip) tersebut menggunakan data raster dari geodatabase lain (bisa juga dari geodatabase yang sama). Solusinya ada 4. Pertama, proses clipping manual?? well, it is long and damn boring. kedua, proses clipping otomatis pake batch processing??? apa anda tahan membuat tabel batch untuk 250 raster yang akan anda potong??. ketiga, Bikin model builder???, ugh I want to clip rasters right here and right now, not to drawing ballons, bubbles, and arrows. dan ini yang keempat, Phyton Script. nah!.yang ini nih baru oke!, cuman ngetik beberapa baris kode and voila, all rasters clipped!!!."


Oke, jadi gini tutorial penggunaan phyton script

1.  Buka Phyton Window di sini.


2. Tampilan Phyton Windows kayak gini


3. Saya mempunyai folder yang berisi data rasters di folder C:\student\PYTH\Describing_data\Tahoe, di dalamnya ada dua folder lagi, yaitu folder All dan Folder Erner. Folder All berisi beberapa data raster tematik, dan folder erner berisi data raster tematik dari folder All untuk wilayah tertentu. Tujuan kita adalah memotong data raster dari folder All menggunakan data dari folder Erner.


4.Step 1. Memanggil modul phyton ArcGIS Arcpy, ini penting karena tanpa arcpy, kode kita hanya akan dianggap kode phyton biasa dan tidak dapat berinteraksi dengan arcGIS.


5. Step 2. Mengatur Workspace Environment. Workscape ENv adalah direktori (bisa folder, bisa geodatabase, bisa feature dataset) dimana data yang akan kita olah berada disitu.


6. Step 3. Memanggil properties dari raster pemotong (menggunakan perintah describe dari arcpy). Salah satu hasil dari describe adalah extent. Extent ini yang akan kita pakai sebagai bidang pemotong.



7. Step 4. Selanjutnya kita mengambil extent sebagai salah satu hasil describe sebagai variabel (menggunakan perintah desc.extent) dengan nama variabel rasExtent.


8. Step 5. Seluruh data dalam direktori/workspace dipanggil menggunakan perintah arcpy.listRasters. dan hasilnya kita jadikan variabel dengan nama ras_list.


9. Step 6. memotong raster sesuai extent dari pemotong. Proses dimulai dengan memanggil raster melalui perintah "for name in Ras_list". Ras_list adalah seluruh raster di direktori yang kita seting di step 8, "for name in" adalah perintah untuk memanggil nama raster dalam variabel ras_list. Pemotongan menggunakan perintah arcpy.clip_management, kemudian untuk variabel pemotongan ( ) ada tiga, pertama adalah "name" yang berarti kita memanggil nama raster dalam workspace, "str(rasExtent)" adalah variabel extent sebagai pemotong yang kita atur di step 7, dan terakhir adalah variabel output dimana disini output kita panggil variabel "name" yang kita tambahkan kata "potong" di belakangnya menggunakan kode "name + '_potong' " agar tidak ada konflik nama dengan input.


10. Done, di bawah ini contoh hasilnya



Selamat mencoba



*. Tutorial diambil dari buku Introduction to Phyton Geoprocessing di SINI


Saturday, August 16, 2014

Menjadikan Open Street Map (routing enabled) sebagai Peta Dasar Di Garmin GNSS Receiver

Survei atau kegiatan outdoor lain yang menggunakan Receiver Garmin (tipe navigasi) di Indonesia biasanya menggunakan peta dari navigasi.net sebagai peta panduan/peta dasar, selain peta default yang disediakan oleh garmin di receiver GPS buatannya. Selain itu, beberapa receiver keluaran terakhir (oregon,montana dll) juga mendukung custom maps dalam format kmz, sehingga kita bisa menampilkan peta buatan sendiri atau bahkan citra satelit sebagai peta panduan/peta dasar dalam kegiatan survei. Dalam postingan ini saya akan membahas tentang Open Street Map yang ternyata bisa digunakan sebagai peta dasar dengan tampilan dan fungsionalitas seperti peta yang disediakan navigasi.net atau peta dari garmin sendiri. Sebagaimana diketahui, peta dari navigasi.net atau dari garmin menggunakan format vektor khusus dengan ekstensi IMG. Peta ini mempunyau fungsionalitas POI (point of interest) browsing dan routing sehingga dapat dimaksimalkan dalam kegiatan survei/outdoor. Hal ini berbeda dengan custom maps, karena custom maps menggunakan format raster (kmz), sehingga selain loadingnya lama (apalagi jika filenya besar), gambarnya pecah ketika di zoom, juga tidak mempunyai fungsi network analysis/routing/POI browsing. Adapun langkahnya adalah sebagai berikut:

1. Buka situs INI. situs tersebut memberikan layanan download open street map data dalam format garmin IMG.


2. Pilih layanan peta routable bicycle untuk layanan peta yang mendukung routing.


3. Centang manual tile selection, kemudian pilih tile OSM yang mencakup wilayah yang anda inginkan


4. Masukkan email anda, kemudian klik build my map. Anda akan dikirimi dua email, yang pertama adalah konfirmasi request anda, dan yang kedua adalah link download file.


5. Setelah membuka link download, akan muncul halaman web yang menyediakan peta yang anda request dalam format terkompresi zip beserta tools yang digunakan untuk menginstall peta sesuai dengan OS anda. Download hanya file zip yang mempunyai nama "gmapsupp.zip"


6. Step berikutnya adalah koneksikan receiver garmin anda ke PC, kemudian copykan file gmapsupp.img ke folder garmin di memory internal GPS atau ke SD Card (untuk receiver yang mendukung SD Card storage).



7. Nyalakan GPS anda (Contoh menggunakan Garmin Oregon 550), kemudian masuk ke menu settings>map information, receiver akan mengindentifikasi file peta yang anda copykan, kemudian klik enable.




8. Setelah di-enable, peta akan tampil secara otomatis di Menu Map.



9. Selain menampilkan peta, receiver juga akan men-scanning POI dan informasi jalan yang disimpan di file IMG,sehingga dapat digunakan navigasi atau survei, sebagaimana produk yang dihasilkan dari garnin sendiri.



NOTE!!!!!!

Tutorial diatas dibuat menggunakan GPS Garmin Oregon 550, untuk unit lain mungkin ada langkah yang berbeda, terutama untuk treatment file peta vektor *.img. Dari Percobaan yang saya lakukan dengan receiver Colorado 300, ternyata file IMG yang didownload tidak langsung bisa diidentifikasi oleh receiver. Untuk kasus colorado, peta IMG hanya bisa diidentifikasi dan ditampilkan di menu peta apabila peta direname menjadi GMAPSUPP.IMG atau GMAPPROM.IMG. Demikian pula mungkin untuk receiver lain.

Tuesday, August 5, 2014

Membuat Offline Map di Aplikasi OruxMaps (Android) menggunakan Mobile Atlas Creator

Navigasi dan survey GPS menggunakan Handphone memang praktis, tapi jika peta yang digunakan sebagai referensi merupakan peta online, kita akan berhadapan dengan beberapa masalah, yang pertama perlu alokasi pulsa yg cukup untuk mengunduh peta online melalui paket data, baterai yang menjadi lebih cepat habis karena mengakses jaringan 3G, dan coverage jaringan internet seluler yang tidak selalu baik di setiap tempat.

Dengan menggunakan Mobile Atlas Creator, kita dapat membuat offline Map yang nanti dapat dibuka di HP android dan dijadikan sebagai basemap kegiatan navigasi atau survei yang kita lakukan. Dengan demikian kita tidak perlu khawatir mengenai paket data dan baterai yg cepat habis. 

MOBAC dapat diunduh dari situs INI  Di situs itu juga dijabarkan aplikasi aplikasi mobile yang didukung oleh software tersebut. MOBAC memerlukan Java Runtime, oleh karena itu sebelum menggunakan MOBAC pastikan JRE versi terbaru sudah terinstal

MOBAC bersifat portable/executable, sehingga tidak perlu diiinstall, 


1. Buka MOBAC dengan klik 2x file EXE, tampilan awal MOBAC akan menunjukkan pilihan jenis offline maps yang akan kita buat, dalam tutorial ini saya akan menggunakan aplikasi OruxMaps di sistem operasi Android. Setelah itu MOBAC akan tampil dengan pilihan Peta Online default. 




2. Tahap pertama adalah menentukan Area yang akan dibuat offline maps-nya, Buat area kajian di layar peta. Area terpilih akan ditandai dengan warna merah transparan


3. Tahap berikutnya adalah memilih layanan peta yang akan diunduh, pilih salah satu dari jenis layanan yang tersedia. Secara default MOBAC tidak menyediakan layanan peta populer seperti google, bing dan yahoo. Untuk menambahkan layanan peta populer diatas, anda harus mencari file konfigurasi dari layanan tersebut dalam format xml, dan kemudian di letakkan di folder "map sources" . 


4. Tahap berikutnya adalah menentukan zoom level yang akan diunduh, tentukan zoom level sesuai dengan kebutuhan anda. zoom level 1 untuk skala kecil dan zoom level 20 untuk skala besar. Makin besar zoom level yang diunduh, makin besar file size unduhan. Parameter "Custom tile processing" digunakan apabila anda ingin mengubah output format dari peta yang diunduh, konsekuensinya adalah waktu pemrosesan menjadi semakin lama. 


5. Setelah itu, di menu Atlas Content klik "Add Selection", list layer yang akan diunduh akan ditampilkan di menu selection. Anda bisa mengubah nama peta di kolom Name apabila perlu. 


6. Sebelum memulai proses pengunduhan, klik Menu Settings di bawah tombol Create Atlas. Di menu settings ini anda dapat menentukan beberapa parameter seperti lokasi keluaran, kecepatan download paralel dan lain lain. Setelah selesai klik tombol create atlas. Proses pengunduhan akan dimulai. 



7. Setelah selesai, copy folder hasil download ke Handphone Android, ke direktori instalasi oruxmaps, dan simpan di folder "Mapsources". Untuk menampilkan peta di oruxmaps dari menu Map Switch di tab "Offline Maps". 

 

8. Oh ya, Peta offline yang diunduh tidak hanya bisa dari satu layanan, tapi bisa multi layer dari berbagai sumber. Selamat mencoba. :)