Pantaskah?

Hari ini saya membaca sebuah lowongan pekerjaan di salah satu milis bahasa pemrograman di Indonesia. Lazimnya sebuah iklan lowongan pekerjaan, di dalamnya ada posisi, deskripsi pekerjaan dan persyaratan apa saja yang harus dimiliki oleh calon pelamar. Bagi saya, iklan seperti ini di milis amat bermanfaat, bagi mereka yang mencari pekerjaan dan juga bagi yang memiliki perusahaan sejenis [ bisa curi-curi ide :D].

Yang membuat saya risih atau merasa aneh adalah balasan dari iklan lowongan tersebut yang tanpa basa-basi menanyakan kisaran gaji. Spontan saya berpikir bahwa yang bertanya adalah orang yang baru lulus, masih muda. Ditambah lagi dengan tulisannya, one liner, satu baris saja, tanpa menyebutkan siapa nama lengkapnya. Bukan satu dua kali saya membaca hal ini. Pada kasus lain, ada beberapa orang yang menanyakan hal yang sama. Untungnya si pembuka lowongan adalah orang yang bijak :P.

Pantaskah kita membalas iklan lowongan dengan cara demikian? Kalau saya sebagai si empunya lowongan, maka saya akan catat alamat emailnya, saya lacak IP-nya. Bila si pembalas email tersebut melamar, maka sudah pasti tidak akan saya panggil. Mengapa? Bagi saya dia tidak tahu cara atau etika yang baik dalam berkomunikasi. Kalau memang dia tertarik dengan pekerjaan tersebut, ya lamar lah. Kalaupun tidak tertarik banget, bisa juga coba-coba bertanya dengan baik-baik melalui email resmi dari kantor yang membuka lowongan. Bukan dengan bertanya tanpa basa-basi di jalur umum. Jadi? Waspadalah-waspadalah …

Convert image data using gdal_translate

In remote sensing data analyses, usually we have to convert Landsat data to Top of Atmosphere value. This process will change the original digital number, in Landsat 5 from 8 bit to decimal with the range between 0 and 1. If the data is Landsat 8 then it will change from 16bit data to decimal with range between 0 and 1.

If you want to analyze the ToA (reflectance), i.e., land cover classification, you can directly use the image. The problem will appear if you want to analyze with certain formula that require 8bit data, for example Forest Canopy Density Model. So, after you do radiometric correction to reflectance, you have to rescale into 8bit integer.

Usually I use GRASS GIS for this purpose. But somehow today I found it’s difficult to use GRASS GIS. The result seems strange. After hours of trying, I found I trick to do the process.

GDAL to the rescue

We can use gdal_translate to convert data from any kind of range into 8bit integer. There are two steps to do this :

  1. Investigate the statistics of the data source. Use the minimum and maximum value in the data source
    • gdal_info filename.tif -stats
    • Metadata:

          STATISTICS_MAXIMUM=0.38453308863717

          STATISTICS_MEAN=0.11160144537989

          STATISTICS_MINIMUM=0.010000000000004

          STATISTICS_STDDEV=0.063021296050904

  2. Translate the data using gdal_translate command
    • gdal_translate -of GTiff -ot Byte -scale 0.010000000000004 0.38453308863717 1 255 source.tif target.tif

RGB Color Correction di TileMill

Semalam suntuk kami berusaha mencari cara bagaimana melakukan setting RGB di TileMill, sehingga data yang bernilai NULL atau NODATA menjadi transparan. Kami menemukan situs http://www.mapbox.com/blog/tilemill-raster-colorizer-analysis/ , namun setelah (seperti biasa), copy-paste kodenya, ada pesan kesalahan bahwa raster-colorizer-default-mode tidak dikenal. Pesan ini muncul karena TileMill yang kami gunakan merupakan versi stabil, sedangkan fungsi di atas baru ada di versi development. Oleh karena itu, kami update TileMill menjadi versi development. Sebagai catatan, kita hanya bisa melakukan update apabila memilih Install Developer Builds pada Updates Preferences.

Berikut kode yang kami gunakan, sehingga citra awal seperti pada Gambar 1, berubah menjadi seperti pada Gambar 2. Yang perlu diperhatikan adalah:

raster-colorizer-epsilon:0.2; 
Nilai 0.2 merupakan simpangan baku dari histogram
stop(0,transparent)
Angka 0 adalah angka digital yang merupakan representasi nilai NULL atau NODATA

stop(1,#000)
Angka 1 adalah angka digital yang merupakan nilai minimum citra, dan diberikan warna hitam
stop(255,rgb(255,0,0))
Angka 255 adalah angka digital yang merupakan nilai maksimum citra. Apabila datanya 8bit, maka nilainya adalah 255, sedangkan apabila datanya 11 bit, maka nilainya adalah 2^11.

style.mss

#red {
raster-scaling:gaussian;
raster-comp-op:plus;
raster-colorizer-default-mode:linear;
raster-colorizer-default-color: transparent;
raster-colorizer-epsilon:0.2;
raster-colorizer-stops:
stop(0,transparent)
stop(1,#000)
stop(255,rgb(255,0,0))
}

#green {
raster-scaling:gaussian;
raster-comp-op:plus;
raster-colorizer-default-mode:linear;
raster-colorizer-default-color: transparent;
raster-colorizer-epsilon:0.2;
raster-colorizer-stops:
stop(0,transparent)
stop(1,#000)
stop(255,rgb(0,255,0))
}

#blue {
raster-scaling:gaussian;
raster-comp-op:plus;
raster-colorizer-default-mode:linear;
raster-colorizer-default-color: transparent;
raster-colorizer-epsilon:0.2;
raster-colorizer-stops:
stop(0,transparent)
stop(1,#000)
stop(255,rgb(0,0,255))
}

Visualisasi RGB

Gambar 1. Visualisasi RGB Sebelum Koreksi

Screen Shot 2013-06-06 at 12.31.22 PM

Gambar 2. Visualisasi RGB setelah koreksi

Saba kota

Dulu, sebelum kucing berbulu, saya pernah berkata pada diri sendiri, “tak sudi, tak rela bekerja di Jakarta”. Kehidupannya keras, panas, macet, bisa-bisa tua di jalan. Ternyata e ternyata, hari Rabu tanggal 2 Januari 2013, secara de facto saya mulai bekerja tetap di ibu kota.

Tidak seperti Kabayan yang berangkat ke Ibu Kota dalam rangka mengejar Nyi Iteung, saya mengadu nasib di Jakarta untuk mengejar mimpi. Tidak mungkin saya mengejar Nyi Iteung juga, nanti berantem sama Kabayan dan bini di rumah dong :P.

Lalu mimpi saya apa? Sulit untuk menuliskannya, lha saya kan sedang bangun. Kalau sedang tidur, baru bisa saya tulis, itu pun kalau saya tidak lupa hihihihihi …

Konversi data vektor ke raster

GRASS GIS, sebuah perangkat lunak open source remote sensing / GIS, adalah perangkat lunak andalan saya dalam melakukan proses konversi data dari vektor ke raster. Mengapa? Karena GRASS GIS dapat diandalkan dalam cleaning topology. Seringkali kita mendapatkan data vektor yang tidak jelas asal-usulnya, tidak jelas pula topologinya. Kalau begini, kadang-kadang (atau sering), saat kita menghitung luas kelas lahan tertentu misalnya, luas total obyeknya akan lebih besar dari luas wilayah sebenarnya. Nah, di sinilah GRASS GIS bisa menjadi pahlawan bertopeng, penolong untuk mempercepat proses analisis :D .

Baca lebih lanjut

To change is the key to survive

There are 31,530,000 seconds in a year
1,000 milliseconds in a second
A million microseconds
A billion nanoseconds
And the one constant, connecting nanoseconds to years
is change.

The universe.
From atom to galaxy,
is in a perpetual state of flux.

But we humans
don’t like change.
We fight it. It scares us.

So we create the illusion of stasis.
We want to believe in a world at rest,
the world of right now.

Yet our great paradox
remains the same…

The moment
we grasp the “now”…
that “now” is gone.

We cling to snapshots.
But life is moving pictures.
Each nanosecond
different from the last.

Time forces us to grow.
To adapt.
Because every time
we blink our eyes…
the world shifts beneath our feet.

……

Change isn’t easy
More often, it’s wrenching and difficult.
But maybe that’s a good thing
that makes us strong.
Keeps us resilient
It teaches us to evolve

(Jake Bohm, Touch S01E12)

Jangan Asal Bicara

Ada pepatah mengatakan, ‘mulutmu harimaumu’. Di dalam Islam, kita juga tahu bahwa ‘ucapan adalah do’a’. Dua hal ini yang langsung ada dalam ingatan saya setelah membaca status Facebook seorang teman. Ada satu cerita yang masih tersimpan rapi di otak saya, sebuah kisah yang dituturkan oleh ayah dari sahabat saya, Yuvan. Begini ceritanya … Baca lebih lanjut