MODUL 5 MENAMPILKAN PETA 1. Indikator Praktikan dapat

advertisement
MODUL 5
MENAMPILKAN PETA
1. Indikator
Praktikan dapat menampilkan peta dan menampilkan data dari database.
2. Tujuan
Praktikan mendapatkan pengetahuan tentang cara yang dibutuhkan untuk membangun
sebuah webGIS.
3. Perangkat Lunak
a. PostgreSql
b. Notepad++/ Sublime Text
c. Ms4w/XAMPP
4. Teori
A. API Key
API (Application programming interface) adalah fungsi-fungsi pemrograman yang
disediakan oleh aplikasi atau layanan agar layanan tersebut bisa diintegrasikan dengan
aplikasi yang kita buat. Untuk penggunaan API biasanya setiap pemilik layanan
memberikan kode tertentu untuk bisa mengakses layanan tersebut, Salah satu pemilik
layanan yang ada dan yang akan kita pakai adalah Google dengan API Key Google.
API Key yang dipergunakan pada Google Map untuk membuat webGIS didasarkan dari kode
kunci yang dibuat dari akun Google sendiri. API Key pada Google sebenarnya merupakan bagian
dari bisnis. Google menyediakan perizinan standar ( harga gratis, penggunaan API Key tanpa batas
waktu namun perhari dibatasi dengan maksimal penggunaan 1000 permintaan (default) hingga
150000 permintaan (setelah validasi kartu kredit)
dan premium (harga tergantung besar
penggunaan data dan atau permintaan).
Penggunaan API dibedakan menjadi 3 jenis:
1. Android
2. IOS
3. WEB
Google API pada library-nya memiliki lebih dari 100 jenis dalam 8 kelompok besar yang
masing masing memiliki minimal 3 jenis API. Kelompok API yang kita gunakan adalah Google
Maps APIs.
B. Data Geometri
Pada saat kita menyimpan data kolom geometri pada sebuah tabel di dalam basis data
PostgreSql sebelumnya, sebenarnya kita juga telah menyimpan koordinat geografis yang
sesungguhnya dengan format WKB (Well Known Binary). Format WKB ditentukan oleh Open GIS
Consortium (OGC) yang mendefinisikan informasi objek spasial GIS (titik, garis, poligon, dll).
Postgis yang kita gunakan sebelumnya adalah alat untuk menganalisa data geometri dengan format
umum .shp dan .dbf sekaligus sebagai penerapan basis data spasial pada PostgreSql. Fungsi Postgis
untuk menganalisa dan mengolah data saat ini sudah cukup banyak dan akan terus berkembang.
Fungsi Spasial
Data geometri dari basis data memerlukan fungsi spasial untuk pengolahannya. Basis data
spasial yang menyediakan fitur fungsi analisis data dapat dikelompokkan menjadi 5 kategori, yaitu:
1. Konversi: untuk konversi data geometri dan data eksternal.
2. Manajemen: untuk pegelolaan informasi tabel spasial dan administrasi Postgis.
3. Retrieval: pengambilan dan pengukuran geometri.
4. Perbandingan: pembandingan dua geometri melalui hubungan spasial.
5. Generasi: geometri baru.
Beberapa fungsi geometri Postgis ditampilkan pada Tabel 1.
TABEL 1. Fungsi Postgis
Fungsi Pengolahan
AddGeometryColumn(<schema_name>,
Menambah kolom geometri pada tabel yang
<table_name>,
sudah ada
<column_name>,
<srid>,
<type>, <dimension>)
DropGeometryColumn(<schema_name>,
Menghapus kolom geometri
<table_name>, <column_name>)
Fungsi pemrosesan
ST_centroid(geometry)
Mengembalikan geometri sebagai titik poin
ST_Area(geometry)
Mengembalikan sebuah area data ke bentuk
awalnya (untuk polygon dan multi-polygon)
Fungsi Akses
ST_AsText(geometry)
Mengembalikan data geometri ke bentuk teks.
ST_AsBinary(geometry)
Mengembalikan data geometri ke bentuk
binary.
ST_EndPoint(geometry)
Membuat titik poin akhir dari Linestring
menjadi titik tunggal.
ST_StartPoint(geometry)
Membuat titik poin awal dari Linestring
menjadi titik tunggal.
ST_GeometryType(geometry)
Mengembalikan tipe geometri sebagai string.
ST_X
Mengambil data geometri koordinat X
ST_Y
Mengambil data geometri koordinat Y
ST_Z
Mengambil data geometri koordinat Z, Null
jika tidak ada.
ST_M
Mengambil data geometri koordinat M, Null
jika tidak ada.
Geometri konstruktor
ST_GeomFromText(text,[<srid>])
Membuat data geometri yang dari bentuk
WKT oleh SRID.
ST_LinestringFromText(text,[<srid>])
Membuat data geometri yang dari bentuk
WKT oleh SRID namun dalam tipe garis
bersambung. Jika tidak ada SRID, otomatis
menjadi -1.
ST_PolygonFromText(text,[<srid>])
Membuat data geometri yang dari bentuk
WKT oleh SRID namun dalam tipe poligon.
Jika tidak ada SRID, otomatis menjadi -1.
Output Geometri
ST_AsGeoJson([version],
geometry, Mengambil data geometri sebagai elemen
[precision], [options])
GeoJSON
(geometry
Javascript
Object
Notation)
C. SQL
Pembelajaran SQL dari sebelumnya dilanjutkan dengan mengkhususkan pada Query untuk
menampilkan data geometri. Penerapan kali ini adalah bagaimana menerapkan hasil Query untuk
bisa diintegrasikan dengan array pada Javascript nantinya.
Untuk SQL tahap ini kita akan menyuntikkan fungsi tipe spasial (ST) yang berasal dari
Postgis.
*catatan: query bekerja pada bahasa pemograman server dan pada php terdapat 89 fungsi untuk
pengolahan data SQL khusus untuk PostgreSQL
*catatan: SQL termasuk sebuah Bahasa pemograman yang standar untuk basis data.
Contoh penggunaan SQL:
pg_query(“SELECT row_to_json(fc)
FROM ( SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
FROM (SELECT 'Feature' As type , ST_AsGeoJSON(geog)::json As geometry
, row_to_json((SELECT l FROM (SELECT gid, nama, field3, field4) As l
)) As properties
FROM table_unand As lg ) As f ) As fc;”);
Keterangan:
-
pg_query: untuk menjalankan query pada PHP.
-
ST_AsGeoJson(geog): geog merupakan kolom geometri dari tabel PostgreSQL, lalu
diubah menjadi data JSON oleh ST_AsGeoJson.
-
SELECT gid, nama, field3, field4: gid, nama, field3, dan field4 merupakan kolom pada
tabel PostgreSQL sebagai data non-spasial.
-
Table_unand: nama tabel PostgreSQL.
D. Javascript
Kelanjutan pejelasan dari modul 4, kali ini kita fokuskan untuk dokumen HTML dari
Javascript. DOM (Document Object Model) dibentuk untuk inisiasi objek dokumen HTML. Dengan
model objek ini Javascript dapat dengan leluasa memanipulasi dokume HTML agar menjadi HTML
dinamis. DOM adalah standar untuk W3C (World Wide Web Consortium).
DOM untuk menemukan elemen HTML:
1. Document.getElementById(“”): menemukan id pada dokumen HTML.
2. Document.getElementsByTagName(“”): menemukan dokumen HTML dengan nama
yang dituliskan.
3. Document.getElementsByClassName(“”): menemukan nama class yang ditulis pada
dokumen HTML.
E. AJAX
AJAX (Asynchronous JavaScript and XML) adalah suatu teknik pemrograman berbasis web
untuk menciptakan aplikasi web interaktif. AJAX dibentuk dari beberapa kombinasi, yaitu:
1. DOM yang diakses dengan client side scripting language.
2. Objek XMLHTTP dari Microsoft atau XMLHttpRequest .
3. XML
4. JSON
F. JQUERY
JQuery adalah sebuah library yang dibangun dengan menggunakan JavaScript untuk
mengautomasi dan menyederhanakan perintah-perintah umum. Meskipun ada banyak library lain
semacamnya, namun Jquery jauh lebih populer karena kemampuannya untuk menjalankan perintah
pada peramban lama. Jquery berjalan pada browser bersamaan dengan JavaScript biasa. Ia terutama
dipergunakan untuk animasi dan AJAX.
G. JSON
JSON (JavaScript Object Notation) adalah sebuah standar terbuka berbasis teks yang
dirancang untuk pertukaran data yang bersifat human-readable (bisa dibaca). JSON berasal dari
bahasa pemrograman Javascript untuk mempresentasikan struktur data sederhana dari array
asosiatif yang disebut dengan objek.
JSON dibangun dalam dua struktur ;
1. Beberapa pasangan dari nama/nilai. Dalam beberapa bahasa pemrograman biasa disebut
dengan istilah object, record, struct, hash table, key list atau associative array.
2. Nilai-nilai yang tersusun secara ordered list. Biasa disebut dengan array, vektor, atau
daftar dalam bahasa pemrograman.
JSON pada PHP
1. Json_encode
Untuk merubah array ke dalam bentuk json
2. Json_decode
Untuk merubah bentuk json ke bentuk array
5. Cara Praktikum
Pembuatan API Key
1.
Masuklah melalui email google terlebih dahulu
2.
Buat atau pilih sebuah proyek
3.
Aktifkan Google Maps JavaScript API
4.
Dapatkan kunci API dengan masuk ke halaman
https://console.developers.google.com/apis/library
5.
Jadi jika ingin mempergunakan peta google map, lakuakan pendaftaran penggunaan
mapping di google. Jadi kita harus memiliki akun google (pendaftaran email google).
6.
Pilih google maps API untuk javascript!
7.
Setelah itu buat projek baru dan ikuti instruksi website Google.
Halaman Peta WebGIS
1.
Script dasar peta webGIS:
<!DOCTYPE html>
<html>
<head>
<style>
#map {
height: 400px;
width: 100%;
}
</style>
</head>
<body>
<h3>My Google Maps Demo</h3>
<div id="map"></div>
<script>
function initMap() {
var uluru = {lat: -25.363, lng: 131.044};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key= YOUR_API_KEY &callback=initMap">
</script>
</body>
</html>
2.
Tukar tulisan “YOUR_API_KEY” dengan API Key yang didapatkan.
Geolokasi
1. Script dasar geolokasi:
<script>
// Note: This example requires that you consent to location sharing when
// prompted by your browser. If you see the error "The Geolocation service
// failed.", it means you probably did not give permission for the browser to
// locate you.
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 6
});
var infoWindow = new google.maps.InfoWindow({map: map});
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('Location found.');
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
}
</script>
2. Masukkan ke halaman peta WebGIS.
Poligon
1. Script dasar memasukkan poligon ke webGIS:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: {lat: -33.872, lng: 151.252},
});
// Define the LatLng coordinates for the outer path.
var outerCoords = [
{lat: -32.364, lng: 153.207}, // north west
{lat: -35.364, lng: 153.207}, // south west
{lat: -35.364, lng: 158.207}, // south east
{lat: -32.364, lng: 158.207} // north east
];
// Define the LatLng coordinates for an inner path.
var innerCoords1 = [
{lat: -33.364, lng: 154.207},
{lat: -34.364, lng: 154.207},
{lat: -34.364, lng: 155.207},
{lat: -33.364, lng: 155.207}
];
// Define the LatLng coordinates for another inner path.
var innerCoords2 = [
{lat: -33.364, lng: 156.207},
{lat: -34.364, lng: 156.207},
{lat: -34.364, lng: 157.207},
{lat: -33.364, lng: 157.207}
];
map.data.add({geometry: new google.maps.Data.Polygon([outerCoords,
innerCoords1,
innerCoords2])})
2. Masukkan ke dalam fungsi initMap() yang ada pada script geolokasi.
Menampilkan isi tabel dari basis data
1. Gunakan script contoh penggunaan SQL pada halaman 3 (teori SQL) dan ubah
kolom geog dengan kolom geometri pada tabel geometri yang anda miliki, ubah juga
isi kolom dan nama tabelnya.
2. Masukkan script tersebut pada halaman koneksi yang telah dibuat berdasarkan tugas
modul 4.
Download