Irmante Astalavista

Simsalabim!!!
Blog ini bercerita tentang dunia IT, ilmu kebumian, dan lain-lain.

Thursday, December 11, 2008

Pengukuran Dimensi Peta dalam Postgis

Geodatabase sudah semakin keren dan canggih dewasa ini. Peta-peta sekarang udah banyak tersimpan di geodatabase, dibandingkan penyimpanan secara terpisah per file yang membuat redundan data. Padahal banyak peta-peta yang sifatnya confidential. Berikut adalah komparasi antar beberapa geodatabase, postgis, SQLServer 2008, dan MySQL di sini.

Sesudah peta masuk ke dalam postgis misal lewat tools shp2pgsql. Pertanyaan selanjutnya biasanya berkutat pada di pengukuran dimensi, selain perhitungan2 spasial lain. Function yang disiapkan postgis buanyak. Diawali dengan code ST_*, misal untuk menghitung luas area
menggunakan function ST_area, menghitung panjang menggunakan ST_length, dst.

Nah yang jadi pertanyaan klasik adalah, kok nilai perhitungan areanya keliru?
Misal perintah SQL-nya:
SELECT blok, st_area(geometry)/10000 as hectares
FROM areal order by blok asc
Menghasilkan luas per blok:
R1: 2.513432432
R2: 1.3432566549
dst...
Nilai luas ini keliru, setelah dibandingkan dengan hasil perhitungan software mapping.

Nah ini yang menjadi pertanyaan klasik, dan jawabannya terletak pada proyeksi peta yang kita masukkan dalam geodatabase.

Peta di Indonesia ada 4 macam proyeksi:
1. proyeksi lokal (asal gambar dari peta kertas tanpa koordinat),
2. proyeksi Derajat Desimal
3. Proyeksi Universal Transverse Mercantor (UTM)
4. Proyeksi TM3

Untuk peta proyeksi lokal yang biasanya satuan meter, ya ukuran luasnya dijamin pas, karena dimensinya tanpa melibatkan proyeksi muka bumi proj4. Sementara kalo kita inputnya peta derajat desimal, outputnya keliru, kenapa? Karena output proyeksi derajat desimal adalah derajat, bukan meter.

Padahal yang pengen dikeluarkan adalah satuan meter/km/hektar... ya tho ya tho...

Untuk melakukan pengubahan satuan ini kita perlu tau aturan main geodatabase postgis. Yaitu perlunya dilibatkan yang namanya SRID (Spatial Reference Identification).
Kongkretnya gini untuk peta shapefile berproyeksi derajat desimal memiliki kode SRID = 4236.
Sementara untuk UTM, dibagi kedalam 2 bagian satuan 6 derajat:
- zone x north.
- zone x south.
Zone x indonesia umumnya dari zone 46- hingga zone 54.

Kode SRID untuk UTM bisa dilihat begini:
north: 326
south: 327
Zonanya mengikuti bro:

So misalnya peta tersebut yang ada pada UTM zona 49S, brati kode SRID-nya:
327 (kode south) + 49 (zona 49) = 32749.
Misal UTM zona 47N brati kode SRID-nya
326 (kode north) + 49 (zona 49) = 32647.

Sesudah Anda memahami fakta ini, maka selanjutnya adalah mengganti perintah SQL perhitungan luas ini dari koordinat derajat desimal dengan output derajat:
SELECT blok, st_area(geometry)/10000 as hectares
FROM areal order by blok asc
menjadi proyeksi UTM zona 49s dengan satuan dimensi meter:
SELECT blok, st_area(st_transform(geometry, 32749))/10000 as hectares
FROM areal order by blok asc

Outputnya:
R1: 31.5991234 hektar
R2: 45.1234322 hektar
dst... nahhhh ini baru beneerrr!

Selamat mencoba teman-teman... :D

Labels: ,