Jarak Dua Titik

Foto os

Anda memiliki data berupa dua buah titik, dengan kata lain dua koordinat. Masalahnya sederhana, berapa meter jarak keduanya ? Jawabannya akan diselesaikan dengan PostGIS, sebuah fitur tambahan pada Database PostgreSQL yang dirancang khusus untuk masalah pemetaan.

Ada banyak sistem koordinat yang sudah didefinisikan. Di sini kita menggunakan sistem koordinat yang digunakan oleh peta pada umumnya, yaitu lintang dan bujur, alias latitude dan longitude. Keduanya tersimpan dalam bentuk bilangan desimal, bisa positif atau negatif. Berikut ini contoh koordinat Margonda, Depok:

http://map.rab.co.id/g/-6.369368/106.832986

Latitude -6,369368 berarti lintang selatan ( karena negatif ), dan longitude 106,832986 berarti bujur timur (karena positif). Koordinat kedua adalah Senen, Jakarta Pusat, yaitu:
http://map.rab.co.id/g/-6.179036/106.843870

Kedua koordinat ini akan dihitung jaraknya dalam satuan meter, dimana kita gunakan query pada PostgreSQL.
 
Pemasangan
Kita bisa gunakan distro Ubuntu atau distro berbasis Debian lainnya. Pertama kita perbaharui dulu daftar paket Debian, mulailah sebagai superuser:
$ sudo su
# apt-get update

Kemudian pasang database server dan paket PostGIS:
# apt-get install postgresql-8.3 postgresql-8.3-postgis

Update 2 Agustus 2010
Pengguna Ubuntu 10.04 (Lucid) atau Blankon 6 (Ombilin) bisa memasang PostgreSQL 8.4:
# apt-get install postgresql postgresql-8.4-postgis

Lanjutkan dengan pembuatan user database, katakanlah bernama cepy. Anda perlu sebagai user postgres untuk melakukan itu:
# su postgres
$ createuser -P cepy
Password: ****

Kemudian buatkan cepy database map:
$ createdb -O cepy map

Pasang procedural language plpgsql
$ createlang plpgsql map

Berikutnya pasang PostGIS dalam database map. Ingat, Anda harus tetap sebagai user postgres untuk memasang PostGIS dalam database, karena ada pembuatan function yang mengacu ke C library.
$ psql map -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
$ psql map -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql

Update 2 Agustus 2010
Untuk PostgreSQL 8.4:
$ psql map -f /usr/share/postgresql/8.4/contrib/postgis.sql
$ psql map -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql

Login-lah ke database map:
$ psql map

Berikan hak akses untuk grup public agar dapat membaca tabel referensi sistem koordinat:
GRANT SELECT ON spatial_ref_sys TO PUBLIC;

Logout dari psql dengan menekan tombol Ctrl-D, dan login-lah sebagai user cepy:
$ psql -U cepy map -h localhost

Saatnya mencari jarak:
SELECT st_distance(
  st_transform(st_pointfromtext('POINT(106.832986 -6.369368)',4269),32661),
  st_transform(st_pointfromtext('POINT(106.843870 -6.179036)',4269),32661)
  );
 
   st_distance
------------------
46861.5191828321 (1 ROW)

Jawaban di atas berarti juga 46,86km.

Data Peta
Data awal biasanya dalam bentuk foto udara yang di-scan dan jadilah sebuah file gambar bitmap atau disebut juga berbasis pixel. Data ini kemudian dipilah berlapis-lapis. Misalkan foto udara berupa sebuah kota, maka lapisan pertama merupakan batas kota, lapisan kedua batas kecamatan, lapisan ketiga batas kelurahan. Lalu dilanjutkan dengan jalan, gedung-gedung, elevasi (ketinggian dari permukaan laut), dst. Lapisan-lapisan ini tersimpan dalam bentuk vektor, dan proses pemilahannya disebut digitizing. Biasanya disimpan dalam file ber-extention SHP. Anda bisa melakukan itu semua dengan Quantum GIS.

# apt-get install qgis

Qgis juga dapat menyimpan data vektor yang ada dalam file SHP ke database PostgreSQL. Setiap file SHP disimpan dalam sebuah tabel. Namun definisi tambahan yang berkaitan dengan peta disimpan dalam tabel geometry_columns. Karena tabel ini dibuat oleh user postgres di atas, maka user cepy sebagai pemilik database perlu mendapat hak akses penuh:

GRANT ALL ON geometry_columns TO cepy;

Setelah itu Anda bisa melakukan import SHP file ke PostGIS melalui Qgis.

Selamat mencoba.

Referensi: