Home > Geo, Server > Install PostGIS

Install PostGIS


Sekarang bagian dimana kita akan menginstall PostGIS sebagai media penyimpanan data kita menggunakan PostgreSQL database server. Mengapa PostgreSQL? Kenapa gak menggunakan MySQL yang notabene sudah biasa digunakan?

Pertama, saranku adalah jalan2 ke OpenGIS. Dari perkembangan awal Open Geospatial Consortium dibentuk, postgre dev-team menjadi salah satu pembentuk OGC standarisasi untuk pembentuk data geometri dalam database. Oracle kemudian berkontribusi semenjak merilis versi open database-nya Oracle 10g dan MySQL baru dapat mengimplementasikan pada versi 5.0. Tipe data geometri (wkb/wkt) yang dirilis mysql5 ini juga awalnya kurang disetujui oleh OGC karena tidak memenuhi standarisasi yang telah ditetapkan. Sebelum unsubscribe dari milis PostGIS, versi awal MySQL5 ini juga banyak dikritik oleh dev-team nya PostGIS dan belum layak disertakan dan disebut MyGIS. Mereka bahkan mengejek bahwa mysql belum dapat dikatakan sebagai true database dan jangan malu-malu kalau memang butuh bantuan untuk developnya. Saat ini kurang tahu juga perkembangannya tapi sepertinya sudah dapat diterima masyarakat GIS sendiri walaupun rata-rata masih menggunakan modul OGR/TAB yang diberikan GDAL menggunakan koneksi ODBC. Bagi yang sudah terbiasa menggunakan phpMyAdmin, tentu tidak akan menemukan tipe data geometri ini. tapi kalau Anda memasukkan tipe geometry akan diterima oleh mysql (yang tentu saja harus sesuai dengan standarisasi pembentukan data geometri ini).

Instalasi ini akan kita bagi menjadi 3: Instalasi PostgreSQL, Instalasi PostGIS dan Pembuatan Template PostGIS. Tidak lupa juga disertakan satu contoh untuk memasukkan data geometri ke dalam postgresql server. Dan lagi-lagi dilakukan di lingkungan FreeBSD ya. Soalnya bego kalau pakai yang laen ;))

1. Instalasi PostgreSQL

Sangat disarankan untuk menggunakan postgesql 8.1 ke atas karena sudah lebih stabil dan standarisasi bentuk geometri telah ditetapkan. untuk versi 7.8 – 8.0.0 mempunyai bentuk masing-masing yang berbeda dan akan menyulitkan apabila terjadi pemindahan data (backup – upload) dari satu server ke server lain.

cd /usr/ports/databases/postgresql81-server && make install clean

echo 'postgresql_enable="YES"'>> /etc/rc.conf

echo 'postgresql_data="/usr/local/pgsql/data"'>> /etc/rc.conf

echo 'postgresql_flags="-w -s -m fast"'>> /etc/rc.conf

/usr/local/bin/initdb -D /usr/local/pgsql/data

  # pastikan semua direktori data dimiliki oleh user pgsql (ato postgres)
chown -R pgsql : pgsql /usr/local/pgsql

  # edit konfigurasi untuk server Anda sesuai dengan kebutuhan ( postgresql.conf )
edit /usr/local/pgsql/data/postgresql.conf

  -- listen_addresses = 'localhost'
  # diaktifkan (uncomment) dan isi dengan

  -- listen_addresses = '*'

  # agar bisa konek dari alamat lain atau tinggalkan terkomen (default)
  # bila hanya localhost yang dapat melakukan koneksi (untuk keamanan)
  # edit konfigurasi untuk autentikasi user ( pg_hba.conf )
  # secara default, koneksi dari localhost dibebaskan (tanpa password)
  # tentu ini sangat berbahaya untuk keamanan

edit /usr/local/pgsql/data/pg_hba.conf
  # pada paling bawah cari bagian trust ganti dengan password
  # # TYPE  DATABASE	USER		CIDR-ADDRESS		METHOD
  # # "local" is for Unix domain socket connections only
  # local	all		 all				password
  # # IPv4 local connections:
  # host	all		 all		127.0.0.1/32	password
  # # IPv6 local connections:
  # host	all		 all		::1/128		password

  # Start PostgreSQL
/usr/local/etc/rc.d/postgresql start

Selesai

2. Instalasi PostGIS

Ini bisa kita lakukan lewat port ataupun secara manual. Disarankan lewat cara manual karena ini bukan system library yang dibutuhkan program lain untuk berjalan dan lebih up-to-date tapi biar mudah kita install lewat port aja.

cd /usr/ports/databases/postgis && make install clean
  # semua diinstall di /usr/local/share/postgis (lwpostgis.sql, spatial_ref_sys.sql, ...)

3. Template PostGIS

Menggunakan PostGIS pada database sebenarnya agak merepotkan admin (root) karena membutuhkan superuser
postgresql untuk setting plpgsql dan memasukkan fungsi-fungsi-nya lewat data sql (lwpostgis.sql & spatial_ref_sys.sql)
Cara ini bisa kutuliskan sebagai berikut (menggunakan user eric):

$eric~> createdb jalan -W
$eric~> psql -U pgsql -d roads -f lwpostgis.sql -W
$eric~> psql -U pgsql -d roads -f spatial_ref_sys.sql -W
$eric~> psql -U postgres -d roads -W
	psql> ALTER TABLE geometry_columns OWNER TO eric;
	psql> ALTER TABLE spatial_ref_sys OWNER TO eric;

Bandingkan dengan cara ini :

$eric~> createdb jalan -W -T template_postgis

Lebih simpel mana? ;)

Sekarang kita buat template_postgis agar semua user bisa membuat database menggunakan template ini.
Cara ini diperoleh dari milis postgis oleh GeoLabs

$pgsql~> psql template1
\c template1
CREATE DATABASE template_postgis WITH template = template1;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis';
\c template_postgis
CREATE LANGUAGE plpgsql ;
\i /usr/local/share/postgis/lwpostgis.sql;
\i /usr/local/share/postgis/spatial_ref_sys.sql;
GRANT ALL ON geometry_columns TO PUBLIC;
GRANT ALL ON spatial_ref_sys TO PUBLIC;
VACUUM FREEZE;

Sekarang semua user bisa membuat database gis sendiri lengkap dengan fungsi-fungsi geometri dengan mudah.

Oke, segitu aja. Kalau ada pertanyaan tulis di komen ato lewat email.
Yeahhh…. PostGIS rocks!!!

Bookmark and Share
Categories: Geo, Server Tags: , , ,
  1. koda
    May 8th, 2007 at 15:37 | #1

    nice posting boss …
    ada yang under windows nda :D.

    makasi boss

  2. May 9th, 2007 at 22:38 | #2

    koda :

    nice posting boss …
    ada yang under windows nda :D.

    makasi boss

    klo yang under windows kan udah ada installernya. tinggal klik dan jadi deh ;)
    hanya saja secara default tidak di-GRANT ALL jadi harus superuser yang buat database dengan template_postgis-nya.

  3. one
    June 10th, 2008 at 11:48 | #3

    om mau nanya neeh kalo pake Fedora 7 gman cara install nya..??

    apa sama – sama aja ato gman…???
    sangat di tunggu jawaban nya

    tengkiu seblumnya …

  4. June 14th, 2008 at 01:02 | #4

    sama-sama aja sih intinya nginstall di manapun.
    yang kadang jadi masalah hanya di require library nya aja. untuk instalasi postgis sih ga terlalu bermasalah lah.cuma permasalahan tempat script sql (lwpostgis.sql dan spatial_ref_sys.sql) disimpan dimana.
    kasi tau klo udah berhasil ya ;)

  5. July 16th, 2008 at 12:53 | #5

    Klo yg versi Windows agak bermasalah untuk partisi yg bukan NTFS. Ada step-by-step nya ga agar bisa lancar di partisi FAT32?

  6. July 17th, 2008 at 16:41 | #6

    wah, blom pernah nyobain yg FAT32.
    memang postgis membuat cluster di harddisk. mungkin masalah cluster ini kali ya yg gak support di FAT32.
    Klo ada perkembangan kasitau ya :D

  7. Andi
    July 20th, 2008 at 09:53 | #7

    Bos, mo nanya nih.. Masih baru mo nyoba2 main dengan postgis dan postgreSQL. Yang pengen saya tanyain, hubungan antara postgis dan postgeSQL itu sebenernya gmn yah??

  8. July 23rd, 2008 at 02:24 | #8

    PostgreSQL itu database server-nya, bos.
    Sedangkan postgis itu sendiri semacam modul/extension di postgesql buat mengenali type data geometry.
    Jelasnya liat di wikipedia atau di situsnya PostGIS deh.

    Atau mau saya buatkan satu tulisan khusus buat itu?
    :)

  9. Andi
    July 23rd, 2008 at 19:52 | #9

    Wah, makasih banyak yah bro Eric.. Udah agak ngerti sedikit nih..

    Sekali lagi makasih banyak yah bro..

  10. August 30th, 2008 at 11:18 | #10

    bro, bikin juga donk tutorialnya buat OS linux yg lain… pusing nih dapet errro yg ga sembuh2:

    Error :
    psql:lwpostgis.sql:44: NOTICE: type “histogram2d” is not yet defined
    DETAIL: Creating a shell type definition.
    psql:lwpostgis.sql:44: ERROR: could not access file “$libdir/liblwgeom”: No such file or directory
    psql:lwpostgis.sql:50: ERROR: current transaction is aborted, commands ignored until end of transaction block
    ……

    saya pikir ini karena file library liblwgeom*.* ga ada, maka saya copy dari /usr/lib/psql/liblw*.* ke /usr/local/pgsql/lib

    tapi hasilnya malah :

    ….
    ERROR: incompatible library
    “/usr/local/pgsql/lib/liblwgeom.so.1.2?: missing magic block INT: Extension libraries are required to use the
    PG_MODULE_MAGIC

  11. September 6th, 2008 at 00:48 | #11

    hehehe…ok. ok.
    klo ada waktu ya. bener lagi sibuk2 ga jelas juga nih.
    Btw, klo ada library gitu ga usah dicopy tapi di-link aja:
    ln -s /usr/lib/pgsql /usr/local/pgsql/lib

    Itu sih karena ada library yang gak ke-install baik tuh. libproj barangkali??

  12. Ryan
    September 18th, 2008 at 15:39 | #12

    kk…mo nanya dunk ttg instalasi postgis..
    Klo sebelumnya kita udah nginstall postgre dari rpm…bukan sors nya gmn…?

    Ngulik ampe botak nginstall postgis g berhasil2…:)…saya pknya postgis hasil rpm juga…harap maklum bukan pengguna linux tingkat tinggi

    Trus klo kasus data yg ada di DB postgre hasil rpmnya dah banyak banget gmn….? adakah solusi tanpa perlu install ulang postgre..?

    hatur Nuhun

  13. agung
    February 12th, 2009 at 10:46 | #13

    Mas kenapa pakai freeBSD apa lebih stabil

  14. Yiyi
    February 16th, 2009 at 13:37 | #14

    Bos, saya masih belum bisa nginstall PostGIS. PostGrsSQL sudah saya install. Saya menggukana Windos VISTA, ada ide?

  15. ardian
    March 6th, 2009 at 09:50 | #15

    salam mas eric,
    saya coba install postgis di windows, installationnya ga finish malah keluar create database template failed. saya coba cari solusinya di mailing list tapi ga da hasil. apakah mas eric ada solusi.

    best regards

  16. March 24th, 2009 at 02:58 | #16

    @agung
    waduh, itu karena kebiasaan aja kali ya :D
    ntar klo pembahasan ke linux vs freebsd lagi ya gak ada habisnya. Tapi secara pribadi sih menurutku freebsd emang lebih cepat dan handal daripada yang lain (terutama Windows). walopun klo mw usaha lebih lagi, linux jg muantap abis ;)

    @Yiyi
    errornya dimana?
    Yang perlu diperhatikan PostGIS itu sangat bergantung pada versi PostgreSQL nya sendiri lho. Gak bisa sembarang :)

    @ardian
    di milis kan udah dikasi solusi juga tuh. klo mau reinstall, abisin semuanya termasuk document setting dan folder instalasinya. Trus install lagi dan cocokin versi postgis dan postgresql-nya :)

    Gutlak deh

  17. March 26th, 2009 at 01:44 | #17

    mas, gimana ya buat instalasi postgis di ubuntu yang menggunakan postgresql 8.3 , khususnya konfigurasi supaya template_postgis muncul pemilihan database template
    saya sudah coba tutorial di atas, masih belum berhasil :(
    thx you :)

  18. March 26th, 2009 at 01:57 | #18

    roosandi :

    mas, gimana ya buat instalasi postgis di ubuntu yang menggunakan postgresql 8.3 , khususnya konfigurasi supaya template_postgis muncul pemilihan database template
    saya sudah coba tutorial di atas, masih belum berhasil :(
    thx you :)

    Sekalian dengan yang komentar kif #10 di atas (padahal udah tahun lalu tuh ya? hehe…), ntar deh di posting khusus penginstalan di linux dulu. Pengen nulis ga ada waktu, tiba giliran ada waktu lagi gak pengen nulis :))

  19. fahmi
    November 22nd, 2009 at 23:34 | #19

    mas tolong saya mas..saya sudah buat file .map di app cahameleon
    terus kata teman saya kalo mau cepet pake postgree/postgis gimana caranya mas??untuk mengkonekin data dari postgre ke index php nya???saya juga sudah create shp2postgee semua shp nya sudah di buat juga..terusnya ke siniin nya saya bingung mas..ada gambaran ga???buat tugas akhir nih mas..dag 1tahun masalah nya di sini aja..tolong yah mas..maksih..mohon petunjuk nya..

  20. November 24th, 2009 at 06:51 | #20

    fahmi :

    mas tolong saya mas..saya sudah buat file .map di app cahameleon
    terus kata teman saya kalo mau cepet pake postgree/postgis gimana caranya mas??untuk mengkonekin data dari postgre ke index php nya???saya juga sudah create shp2postgee semua shp nya sudah di buat juga..terusnya ke siniin nya saya bingung mas..ada gambaran ga???buat tugas akhir nih mas..dag 1tahun masalah nya di sini aja..tolong yah mas..maksih..mohon petunjuk nya..

    masalahnya dimana ya??
    cepat atau tidaknya tergantung datanya sebenarnya. untuk data yang kecil saran tetap pakai DBF sedangkan untuk data yang besar mending pake postgres atau oracle yg lebih luwes query db-nya. Bisa lebih detail kesulitannya dimana?
    Lewat email barangkali?? Tulis pesan di halaman About aja ya ;)

  21. fahmi
    December 11th, 2009 at 14:35 | #21

    mas punya saya ada error di bagian ini nih..

    UPDATE tproperti SET gid = ‘1′, lt=’66′, lb=’105′, harga_jual = ‘122′, fasilitas = ‘Rp.650.000.000′, nama_perum = ”, jenis_prop = ‘The Mandala Heights’, spesifikas = ‘Ruko’, keterangan = ”, posisi_are = ‘terjual’, id = ‘1′, the_geom = ‘66′ WHERE gid=1
    Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: parse error – invalid geometry in C:\ms4w\apps\demo\samples\htdocs\admin\prosesUpdate.php on line 67

    dengan scrip update nya

    1 <?php
    //memulai session untuk halaman ini
    session_start();
    //pengambilan nilai session ke dalam variabel sesi
    $sesi=$_SESSION[sesi];
    //pengambilan nilai dari textfield id yang terdapat pada halaman kost.php
    if(! empty($_GET["lt"]))
    $lt=$_GET["lt"];
    //pengambilan nilai dari textfield id yang terdapat pada halaman kost.php
    if(! empty($_GET["lb"]))
    $lb=$_GET["lb"];
    //pengambilan nilai dari textfield id yang terdapat pada halaman kost.php
    if(! empty($_GET["harga"]))
    $harga_jual=$_GET["harga"];
    //pengambilan nilai dari textfield alamat yang terdapat pada halaman kost.php
    if(! empty($_GET["fasilitas"]))
    $fasilitas=$_GET["fasilitas"];
    //pengambilan nilai dari textfield jumlah_kamar yang terdapat pada halaman kost.php
    if(! empty($_GET["nama_perum"]))
    $nama_perum=$_GET["nama_perum"];
    //pengambilan nilai dari textfield kapasitas_maks yang terdapat pada halaman kost.php
    if(! empty($_GET["jns_prop"]))
    $jns_prop=$_GET["jns_prop"];
    //pengambilan nilai dari textfield kamar_terisi yang terdapat pada halaman kost.php
    if(! empty($_GET["spesifikasi"]))
    $spesifikasi=$_GET["spesifikasi"];
    //pengambilan nilai dari textfield kamar_kosong yang terdapat pada halaman kost.php
    if(! empty($_GET["keterangan"]))
    $keterangan=$_GET["keterangan"];
    //pengambilan nilai dari textfield fasilitas yang terdapat pada halaman kost.php
    if(! empty($_GET["posisi"]))
    $posisi_area=$_GET["posisi"];
    //pengambilan nilai dari textfield fasilitas yang terdapat pada halaman kost.php
    if(! empty($_GET["id"]))
    $id=$_GET["id"];
    $connection = pg_connect("dbname=tadbQ user=postgres password=fahmis");//koneksi database postgre dengan nama database
    //tos dan user admin

    //pengecekan koneksi jika gagal
    if (!$connection) {
    print("Connection Failed.");
    exit;
    }
    //melakukan eksekusi query untuk mmencari username dan password yang diinputkan
    //pengguna
    $myresult = pg_exec($connection, "select* from tproperti");
    //pengambilan nilai the_geom kedalam variabel geom
    for ($ltr = 0; $ltr

  22. March 14th, 2010 at 19:56 | #22

    fahmi, untuk update atau apapun yang melibatkan kolom geometri (the_geom), seluruh operasi dilakukan dengan tipe geometry (PG/PLSQL geom binary). Tidak bisa dengan teks, integer ataupun data lainnya. Baiknya dilakukan secara langsung di sintaks kueri SQL-nya, tidak melalui skrip PHP.