V. INSTALASI POSTGRESQL DAN SEKILAS TENTANG POSTGIS

dokumen-dokumen yang mirip
Sistem Basis data Spasial dengan Software GIS Nafizah PRAKTIKUM

III. BAHAN DAN METODE

FINAL PROJECT PRAKTIKUM BASIS DATA SPASIAL

Tahap Instalasi PostgreSQL di Windows

Lampiran 1 DFD Level 1 GIS Kampus IPB Darmaga. Lampiran 2 DFD Level 2 proses 3 GIS Kampus IPB Darmaga

BAB V PEMBAHASAN DAN IMPLEMENTASI

BAB II PEMBUATAN DAN MANAJEMEN TABLE

Perangkat Lunak Pengembangan Web

VII. MEMBUAT APLIKASI DEMO WEBGIS MAPSERVER - POSTGIS

MODUL VII DATABASE DAN MICROSOFT SQL SERVER 2000

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

MySQL J A M K E T I G A

Untuk menjalankan Mysql secara konpensional jalankan Mysql.exe pada direktori Mysql\Bin. Akan tampak tampilan sebagai berikut:

MODUL III STRUCTURED QUERY ANGUAGE (SQL)

MODUL 3 IMPORT DATA DARI MAPINFO KE DATABASE. Praktikan dapat mengetahui cara meng-inport data dari MapInfo ke database pada PostgreSQL.

Introduction to SQL. Database Programming. 2 nd Chapter

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

Praktikum Basis Data (Database Server MySQL) Bekerja Dengan Tabel

Basis Data Spasial Modul 2

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle.

Menggunakan PostgreSQL dan PostGIS. Oleh : Edi Sugiarto, M.Kom

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Pengenalan Structured Query Language

Lampiran 1 Contoh peta statis yang tersedia.

STRUCTURE QUERY LANGUAGE (SQL)

Pertemuan 12 Pengenalan Structured Query Language

MySQL. Setelah Anda melakukan tahapan-tahapan di atas Anda akan dapatkan screen seperti ini

Modul 2. Database Menggunakan Primary Key, Unique, Auto Increment, Alter-Add dan Alter-Drop. Disusun oleh. Sri Siska Wirdaniyati JURUSAN STATISTIKA

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL

MODUL II. Instalasi OracleXE Dan SQL

3. Tekan tombol Next, hingga muncul tampilan kotak dialog berikutnya.

Menginstall MYSQL SERVER 5.6 pada Windows 8. Sebelum nya download sql offline installer pada link ini (windows 8 32 bit Support)

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal.

X. PENGANTAR DATABASE

TINJAUAN PUSTAKA. Gambar 1 Evolusi Web Mapping (Peng &Tsou 2003).

Contoh SQL Constraint

HASIL DAN PEMBAHASAN. ditampilkan dalam sebuah layer yang akan muncul dalam aplikasi SIG. Integrasi dan Perancangan Antarmuka Sistem

STRUCTURE QUERY LANGUAGE

MODUL PRAKTIKUM 04. Database Implementation dengan Perintah SQL

Otodidak. MySQL untuk Pemula

MySQL AL AZHAR COMPUTER CLUB

OPTIMALISASI QUERY DALAM BASIS DATA MY SQL MENGGUNAKAN INDEX

PERINTAH DASAR MySQL

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

Dasar Microsoft Access 2007

Praktikum 2 Mata Kuliah : Sistem Pengolahan Basis Data Dosen : Nandang Hermanto

Obyek pada Oracle. Manajemen Obyek Basis Data dan Dictionary View. Obyek pada Oracle adalah segala hal yang bisa dibuat di Oracle, seperti:

Schema Objects. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data


Constraint dan Manajemen Data dalam Timezone Berbeda

Pemrograman Web Lanjut 2017

Oracle Academic Initiative

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

PENDAHULUAN TINJAUAN PUSTAKA

LAPORAN TUGAS BASIS DATA I

3 MEMBUAT DATA SPASIAL

LATIHAN : DIJITASI PETA

BAB I Penginstallan dan setting PHPTriad

Contoh SQL Constraint

Modul 3 : Query Penggabungan Tabel

SQL. Brigida Arie Minartiningtyas, M.Kom

7 VARIASI INSERT YANG TERLUPAKAN

S Q L STRUCTURED QUERY LANGUAGE DEFINITION MANIPULATION C O N T R O L D M L SELECT INSERT UPDATE DELETE

STRUCTURE QUERY LANGUAGE DDL & DML

1. Memulai pengelolaan database Menampilkan daftar database Sintaks : show databases;

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

18.1 Hasil Untuk Menambahkan Layer Pertama Anda Hasil Untuk Gambaran Umum Antarmuka

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

BERMAIN DATA DENGAN SQL SERVER

Apakah SQL? Membuat basis data dan struktur tabel Input, update, dan delete data dari tabel Membuat query sederhana dan kompleks SQL

BAB 4 ANALISIS 4.1 Analisis Data Ketelitian Data Terkait Kedetailan Informasi

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL.

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

Masukkan CD Program ke CDROM Buka CD Program melalui My Computer Double click file installer EpiInfo343.exe

STRUCTURED QUERY LANGUAGE (SQL)

Mengenal Tabel Base BAB

Praktikum Basis Data 2017 TE UM

PRAKTIKUM SISTEM BASISDATA

TUGAS PRAKTIKUM SISTEM BASIS DATA

APLIKASI BASIS DATA BERBASIS MICROSOFT ACCESS

Konsep Sistem Informasi B. BAB 2 - SQL Overview

Pertemuan III Oleh: Ilham Rais Arvianto, M.Pd

BAB-I DATABASE DAN MENGENAL MICROSOFT ACCESS

PENGENALAN SINTAKS DASAR DALAM MySQL

Syntax Syntax SQL. Untuk lebih jelasnya dapat dilihat sebagai berikut : 1. DDL (Definition Data Language) a. CREATE

MODUL 1 Pengenalan MySQL, DDL, DML

MODUL 7 STRUCTURED QUERY LANGUAGE

Praktikum Basis Data 2017 TE UM MODUL 8 TRIGGER A. TUJUAN

Statement DDL Create database drop database Create table drop table alter table

By Mrs Imana Malia Kondou, S.T. missimanakondou.wordpress.com

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

E-trik Ajax. Database MySQL. Dedi Alnas

PRAKTIKUM SISTEM INFORMASI GEOGRAFIS QUERY OLEH : Lili Somantri, S.Pd, M.Si

Pertemuan VI F U N C T I O N

Transkripsi:

V. INSTALASI POSTGRESQL DAN SEKILAS TENTANG POSTGIS Bagian ini akan mengulas secara sederhana tentang POSTGIS (ekstensi spasial untuk database PostgreSQL). Database yang digunakan : postgresql-8.2.3-1 ; pada platform Windows INSTALASI POSTGRESQL - POSTGIS Ada berbagai cara untuk membangun database PostgreSQL yang mendukung data spasial (postgis). Akan tetapi cara mudahnya adalah menggunakan postgresql-8.2.msi (installer windows dengan fitur PostgreSQL lengkap, termasuk PostGIS) yang dapat di download di situsnya : http://www.postgresql.org. Kemudian, jangan lupa kunjungi situs PostGIS untuk informasi lebih lengkap, termasuk download dokumentasi/manual posgis (http://www.postgis.org) OBJEK SPASIAL PostGIS mendukung semua objek spasial yang di spesifikasikan oleh OpenGIS Consortium (http://www.opengis.org) pada dokumen Simple Features for Specification for SQL (http://www.opengis.org/techno/specs/99-049.pdf). Postgis juga mengembangkan kapabilitasnya dengan 3DZ, 3DM dan 4D koordinat. WKB and WKT OpenGIS menspesifikasikan ada2 cara standard untuk mengexpresikan objek spasial : format Well-Known Text (WKT) dan Well-Known Binary (WKB). Contoh WKT : POINT(0 0) LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) MULTIPOINT(0 0,1 2) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1-1,-1-2,-2-2,-2-1,-1-1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

Input data pada database biasanya menggunakan format WKT seperti diatas. Akan tetapi data spasial disimpan pada database dengan format heksadesimal. Kita dapat memanipulasi format Input/Output, sebagai berikut: bytea WKB = asbinary(geometry); text WKT = astext(geometry); geometry = GeomFromWKB(bytea WKB, SRID); geometry = GeometryFromText(text WKT, SRID); NB : SRID = spatial referencing system identifier. contoh query insert : INSERT INTO SPATIALTABLE ( THE_GEOM, THE_NAME ) VALUES ( GeomFromText( POINT(-126.4 45.32), 312), A Place ) ; MEMBUAT DATABASE SPASIAL Cara paling mudah, adalah menggunakan pgadmin, yang shortcut nya sudah tersedia pada start menu Windows, pada folder PostgreSQL. Setelah pgadmin dijalankan, pilih menu Edit New Object New Database. Masukkan pilihan database template : template_postgis TABEL SPATIAL_REF_SYS DAN TABEL GEOMETRY_COLUMNS Kita akan melihat pada database kita ada beberapa table yang telah terbuat. Salah satunya SPATIAL_REF_SYS dan GEOMETRY_COLUMNS. Yang digunakan untuk menyimpan informasi meta dari objek spasial yang kita buat. select * from spatial_ref_sys ; select * from geometry_columns ; MEMBUAT TABEL SPASIAL Langkah pertama adalah membuat database seperti biasa. Misal: CREATE TABLE ROADS_GEOM ( ID int4, NAME varchar(25) ) 1

Langkah kedua adalah menambahkan kolom spasial dengan fungsi AddGeometryColumn. Dengan format : SELECT AddGeometryColumn(<table_name>, <column_name>, <srid>, <type>, <dimension>). Misal : SELECT AddGeometryColumn( public, roads_geom, geom, 423, LINESTRING, 2); SELECT AddGeometryColumn( roads_geom, geom, 423, LINESTRING, 2); Jika tidak ingin pusing dengan SRID (Spatial Reference ID), berikan nilai SRID = -1. Misal: CREATE TABLE roads ( ROAD_ID int4, ROAD_NAME varchar(128) ); SELECT AddGeometryColumn( roads, roads_geom, -1, GEOMETRY, 3 ); Perhatikan bahwa OGC geometries tidak memperbolehkan nilai Z atau M. Sehingga bagian dimension cukup kita beri nilai 2. MENJAGA KONSISTENSI DATA PADA KOLOM SPASIAL Pastikan kolom geometri kita memenuhi spesifikasi standard OpenGIS. Salah satunya dengan fungsi IsValid(). Misal : select isvalid( LINESTRING(0 0, 1 1) ), isvalid( LINESTRING(0 0,0 0) ); isvalid isvalid ---------+--------- t f Ada cara untuk mempermudah kita menjaga data supaya tetap memenuhi standar, yaitu dengan membuat satu check constraint. Misal : ALTER TABLE mytable ADD CONSTRAINT geometry_valid_check CHECK (isvalid(the_geom)); check constraint juga akan dibuat secara otomatis apabila kita menambahkan kolom geometris dengan perintah AddGeometryColumn(). MEMASUKKAN DATA SPATIAL Ada beberapa metode yang bisa kita gunakan. Cara pertama adalah dengan menggunakan perintah query insert seperti biasa. Misal kita membuat file (roads.sql) yang berisi : 2

BEGIN; INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (1,GeomFromText( LINESTRING(191232 243118,191108 243242),-1), Jeff Rd ); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (2,GeomFromText( LINESTRING(189141 244158,189265 244817),-1), Geordie Rd ); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (3,GeomFromText( LINESTRING(192783 228138,192612 229814),-1), Paul St ); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (4,GeomFromText( LINESTRING(189412 252431,189631 259122),-1), Graeme Ave ); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES- (5,GeomFromText( LINESTRING(190131 224148,190871 228134),-1), Phil Tce ); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES- (6,GeomFromText( LINESTRING(198231 263418,198213 268322),-1), Dave Cres ); COMMIT; Kemudian eksekusi dengan perintah pada "psql" SQL terminal monitor: psql -d [database] -f roads.sql MENGGUNAKAN SHP2PGSQL Jika kita telah mempunyai file shp yang berisi data-data spasial kita, lebih mudah menggunakan shp2pgsql data loader yang akan mengkonversi file ESRI shp ke dalam SQL. Shp2pgsql dapat kita jalankan pada "psql" SQL terminal monitor. Misal : shp2pgsql shaperoads myschema.roadstable > roads.sql psql -d roadsdb -f roads.sql Atau : shp2pgsql shaperoads myschema.roadstable psql -d roadsdb MENAMPILKAN DATA SPASIAL Untuk menampilkan data spatial, kita gunakan perintah SELECT. Misal : SELECT id, AsText(geom) AS geom, name FROM ROADS_GEOM; Kita bisa menggunakan beberapa operator pada query kita : 3

o && Mengatakan apakah batas luar geometry sebuah objek intersects / beririsan dengan batas luar geometry objek lain. o ~= Mengetes apakah 2 buah geometry adalah identik. Misal, apakah POLYGON((0 0,1 1,1 0,0 0)) identik dengan POLYGON((0 0,1 1,1 0,0 0)) (ya). o = Mengetes apakah batas luar 2 buah geometry adalah identik Contoh : SELECT ID, NAME FROM ROADS_GEOM WHERE GEOM ~= GeomFromText( LINESTRING(191232 243118,191108 243242),-1); SELECT ID, NAME FROM ROADS_GEOM WHERE GEOM && GeomFromText( POLYGON((191232 243117,191232 243119,191234-243117,191232 243117)),-1); MENGGUNAKAN PGSQL2SHP Kita dapat menggunakan pgsql2shp untuk mengkonversi tabel (atau data spasial tertentu pada database kita) ke dalam format file ESRI.shp pgsql2shp [<options>] <database> [<schema>.]<table> pgsql2shp [<options>] <database> <query> MEMBUAT INDEX SPATIAL Index digunakan untuk mempercepat pencarian data. PostGIS Menggunakan GiST (Generalized Search Trees) indexes. CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] GIST_GEOMETRY_OPS ); Tabel dengan 1 juta barisdata, pada mesin 300MHz Solaris, membutuhkan waktgu komputasi 1 jam. 4

Kemudian eksekusi perintah untuk membuat / mengupdate geometry statistic yang sangat penting, untuk optimasi eksekusi query oleh database. VACUUM ANALYZE [table_name] ( [column_name] ); Sebaiknya Vacuum Database dilakukan secara rutin, seperti pada kebanyakan PostgreSQL DBA melakukan VACUUM dengan cron job secara periodic, untuk menjaga agar index dapat berfungsi secara baik dalam mempercepat query. COMPLEX QUERIES Kita dapat menggunakan fungsi-fungsi geometry dalam perintah query kita. Misalkan fungsi distance() yang digunakan untuk mengukur jarak antar 2 buah objek geometry. SELECT the_geom FROM geom_table WHERE distance( the_geom, GeomFromText( POINT(100000 200000), -1 ) ) < 100 Kita dapat menggunakan fungsi expand() untuk menemukan objek geometri dalam radius dari suatu objek: SELECT * FROM GEOTABLE WHERE GEOCOLUMN && Expand(GeomFromText( POINT(1000 1000),-1),100) AND Distance(GeomFromText( POINT(1000 1000),-1),GEOCOLUMN) < 100; Fungsi spasial selengkapnya dapat dilihat pada manual/postgis reference. CONTOH IMPLEMENTASI SQL SPATIAL Buat table dan isinya dengan perintah sebagai berikut. CREATE TABLE bc_roads ( gid INTEGER PRIMARY KEY, name VARCHAR ) SELECT AddGeometryColumn('public', 'bc_roads', 'the_geom', -1, 'LINESTRING', 2) ; 5

insert into bc_roads values (1, 'JALAN PERTAMA', GeomFromText('LINESTRING(1 1, 3 2, 4 3)') ) ; insert into bc_roads values (2, 'JALAN KEDUA', GeomFromText('LINESTRING(2 4, 4 0)') ) ; CREATE TABLE bc_municipality ( gid INTEGER PRIMARY KEY, code INTEGER UNIQUE, name VARCHAR ) SELECT AddGeometryColumn('public', 'bc_municipality', 'the_geom', -1, 'MULTIPOLYGON', 2) ; insert into bc_municipality values (1, 101,'AREA PERTAMA', GeomFromText('MULTIPOLYGON(((1 1, 5 1, 5 5, 1 5, 1 1)))') ) ; insert into bc_municipality values (2, 102,'AREA KEDUA', GeomFromText('MULTIPOLYGON(((4 4, 6 4, 6 6, 4 6, 4 4)))') ) ; insert into bc_municipality values (3, 103,'AREA KETIGA', GeomFromText('MULTIPOLYGON(((2 2, 4 2, 4 4, 2 4, 2 2)))') ) ; insert into bc_municipality values (4, 104,'AREA KEEMPAT', GeomFromText('MULTIPOLYGON( ( (2 2, 4 2, 4 4, 2 4, 2 2), (3 3, 4 3, 4 4, 3 4, 3 3) ) )') ) ; CONTOH PERMASALAHAN SEDERHANA 1. Mencari total panjang jalan (dalam kilometer)? SELECT sum(length(the_geom))/1000 AS PANJANG_JALAN FROM bc_roads ; 2. Letak perpotongan semua jalan dengan titik (1 1) SELECT ASTEXT( INTERSECTION(the_geom, GeomFromText('POINT( 1 1 )')) ) FROM bc_roads; 3. Luas Kota bernama AREA PERTAMA (dalam hektar) SELECT area(the_geom)/10000 AS LUAS_HEKTAR FROM bc_municipality WHERE name='area PERTAMA' ; 4. Apakah kota terbesar? SELECT name, area(the_geom)/10000 AS LUAS_HEKTAR FROM bc_municipality LIMIT 1 ; 6

Atau SELECT max(area(the_geom)/10000) AS LUAS_HEKTAR FROM bc_municipality ; 5. Berapa panjang jalan pada masing-masing kota? SELECT m.name, SUM(LENGTH(r.the_geom))/1000 AS KM_JALAN FROM bc_roads r, bc_municipality m WHERE CONTAINS(m.the_geom, r.the_geom) AND m.the_geom && r.the_geom GROUP BY m.name ; 6. Buat table baru dengan isi : semua jalan pada kota AREA PERTAMA dengan tambahan kolom panjang jalan tersebut disemua kota, dan titik perpotongannya dengan kota AREA PERTAMA. CREATE TABLE pg_roads AS SELECT r.*, ASTEXT( INTERSECTION(r.the_geom, m.the_geom)) AS "PERPOTONGAN DI :", LENGTH(r.the_geom)/1000 AS "PANJANG ASLI JALAN (KM)" FROM bc_roads r, bc_municipality m WHERE r.the_geom && m.the_geom AND CONTAINS(m.the_geom, r.the_geom) AND m.name = 'AREA PERTAMA' ; 7. Berapa kilometer panjang jalan JALAN PERTAMA di kota AREA PERTAMA? SELECT SUM(LENGTH(r.the_geom))/1000 AS "KM PANJANGNYA =" FROM bc_roads r, bc_municipality m WHERE m.name = 'AREA PERTAMA' AND r.name = 'JALAN PERTAMA' AND m.the_geom && r.the_geom 8. Cari kota terbesar yang memiliki lubang SELECT gid, area(the_geom)/1000 AS "LUAS KOTA" FROM bc_municipality WHERE nrings(the_geom) > 1 ORDER BY "LUAS KOTA" DESC LIMIT 1 7