Penyusun Fathurrahmani
Materi:
Instalasi Codeigniter
1. Aktifkan webserver apache dan database mysql melalui XAMPP.
Pengaturan Codeigniter
1. Buka folder “webgis” menggunakan visual studio code
2. Buat controller Home (home.php) dan view Home (v_home.php) dengan cara mengganti
welcome.php -> home.php dan welcome_message.php -> v_home.php
home.php
v_home.php
3. Ubah pengaturan di config.php untuk mengubah base_url dan index_page (menghilangkan
index.php di url)
Instalasi Leaflet
1. Download leaflet terbaru dari https://leafletjs.com/download.html
2. Ekstrak hasil download dan pindah ke folder webgis->assets->vendor
3. Lakukan pengaturan terhadap css dan javasript leaflet
7. Hasil akhir
Bab 2 Bekerja dengan Marker
Persiapan
Alat dan bahan:
1. Seperti bab 1
2. MariaDB/MySQL 10
Persiapan database
1. Buatlah database dengan nama “webgis”
2. Buat tabel dengan nama “faskes”
id_faskes: autoincreament, kat_faskes: enum
Menambah data Faskes
1. Buka google maps (https://www.google.com/maps/)
2. Cari lokasi RSUD H. Boejasin Pelaihari, temukan koordinatnya dengan cara klik kanan peta
kemudian pilih “What’s here?”, maka koordinatnya akan muncul seperti gambar berikut:
1. Buka folder webgis->application->config, buka dan ubah file database.php seperti gambar
berikut:
1. Tambahkan kontruktor
1. Modifikasi script pada file v_home.php di folder views. Script ini akan mengambil data JSON dari
url http://localhost/webgis/home/faskes kemudian menampilkannya di console.log
Hasilnya:
2. Data yang ditampilkan tidak cukup hanya dilihat di console log. Data harus ditampilkan di peta.
Modifikasi kembali v_home.php
Hasilnya:
1. Buat folder baru “images” dan didalamnya buat lagi folder “marker”
2. Salin gambar marker ke folder marker
b. Variabel iconFaskes
c. Variabel markerFaskes
2. Daftarkan marker kedalam grup dan buat variabel markerFaskes.id untuk menyimpan id faskes
Persiapan
Alat dan bahan:
1. Seperti bab 2
2. Geojson.io
1. Buka geojson melalui url berikut: http://geojson.io/. Polygon yang dibuat pada modul ini adalah
pemukiman
2. Cari “pelaihari” pada kotak pencarian dengan cara klik gambar kaca pembesar
4. Zoom in peta menggunakan tombol + atau menggunakan scroll mouse untuk mendapatkan
penampang pemukiman
8. Lakukan digitasi
9. Klik kiri pada bidang hasil digitasi untuk melakukan perubahan property. Bisa merubah warna
dll.
10. Tambahkan custom row pada property, dengan mengklik “add row”. Penambahan custom row
ini bermanfaat untuk melakukan filtering dan grouping layer nantinya
13. Satu file geojson bisa menyimpan 3 jenis bidang data vektor (point, line dan polygon).
2. Saatnya ngoding
3. Tulis kode berikut pada v_home.php, berada pada blok script yang sudah dibuat sebelumnya
$.getJSON(base_url+"assets/geojson/map.geojson", function(result){
geoLayer = L.geoJson(result, {
style: function(feature) {
return {
fillOpacity: 0.8,
weight: 1,
opacity: 1,
color: "#ff0000"
}
},
onEachFeature: function(feature, layer){
var lat = parseFloat(feature.properties.latitude);
}
}).addTo(map);
});
4. Anda bisa mengubah style dari polygon yang ditampilkan pada peta di blok kode berikut:
style: function(feature) {
return {
fillOpacity: 0.8,
weight: 1,
opacity: 1,
color: "#ff0000"
}
}
5. Hasil akhirnya
Bab 4 Multi Bidang GeoJSON
Persiapan
Alat dan bahan:
1. Seperti bab 3
2. Geojson.io
3. Hasilnya akan seperti gambar berikut (hasilnya mungkin berbeda-beda tergantung dari polygon
yang kalian buat di materi sebelumnya). Gambar yang ditampilkan adalah pemukiman.
4. Tambahkan data polygon baru yaitu lahan kosong. Tahapannya sama seperti materi ketiga.
5. Untuk menampilkan base map seperti gambar diatas kalian bisa mengubah base mapnya
menjadi Mapbox. Basemap berada pada pojok kiri bawah.
8. Tambahkan juga property untuk data polygon perkantoran. Langkahnya sama seperti poin 7
9. Jangan lupa simpan setiap kali melakukan perubahan pada detil property dengan cara mengklik
Save.
10. Selanjutnya simpan GeoJSON yang sudah dibuat. Caranya pilih menu Save->GeoJSON.
11. Browser akan mendownload file GeoJSON kalian. Kemudian salin file tersebut kedalam folder
xampp->htdocs->webgis->assets->geojson. File geojson terdahulu ditimpa saja dengan file
geojson yang baru.
12. Lihat hasil perubahannya dengan cara mengakses http://localhost/webgis/.
13. Lakukan langkah dari poin 1 – 11 jika kalian ingin melakukan perubahan terhadap GeoJSON.
$.getJSON(base_url+"assets/geojson/map.geojson", function(result){
geoLayer = L.geoJson(result, {
style: function(feature) {
var kategori = feature.properties.kategori;
if (kategori == 1) {
return {
fillOpacity: 0.8,
weight: 1,
opacity: 1,
color: "#ff0000"
};
} else if (kategori == 2) {
return {
fillOpacity: 0.8,
weight: 1,
opacity: 1,
color: "#3dfc03"
};
} else {
return {
fillOpacity: 0.8,
weight: 1,
opacity: 1,
color: "#1403fc"
};
}
},
onEachFeature: function(feature, layer){
var lat = parseFloat(feature.properties.latitude);
}
}).addTo(map);
});
4. Hasilnya akan seperti gambar berikut. Merah untuk pemukiman, hijau untuk lahan kosong dan
biru untuk perkantoran.
layer.bindPopup(info_bidang, {
maxWidth: 230,
closeButton: true,
offset: L.point(0, 20)
});
layer.on('click', function(){
layer.openPopup();
});
}
4. Hasil dari kode tersebut adalah pop up dari setiap bidang dan menampilkan gambar serta link
detil yang di munculkan berdasarkan kode polygon dari geojson.
Bab 5 Polygon GeoJSON dan MySQl
Persiapan
Alat dan bahan:
1. Seperti bab 4
2. Geojson.io
3. MySQL
Materi di bab 4 kita sudah berhasil menampilkan gambar dan pop up dari bidang polygon yang dibuat
menggunakan GeoJSON, namun gambarnya masih statis dan detil dari bidang belum ada. Materi dibab 5
ini kita akan membuat gambarnya ditampilkan berdasarkan data yang terdapat di database dan
menampilkan detil dari setiap bidang yang datanya juga berasal dari database MySQL.
3. Kalian bisa menggunakan foto masing-masing tapi dengan penamaan yang sama dengan gambar
diatas.
layer.bindPopup(info_bidang, {
maxWidth: 230,
closeButton: true,
offset: L.point(0, 20)
});
layer.on('click', function(){
layer.openPopup();
});
});
}
$getJSON() adalah fungsi dari AJAX untuk mengambil data JSON dari URL dan menyimpannya kedalam
variabel result. Berikut hasilnya.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Web GIS</title>
<link href="https://www.jqueryscript.net/css/jquerysctipttop.css" rel="styles
heet" type="text/css">
<!-- Bootstrap -->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.3.0/
css/bootstrap.min.css">
<link href="<?= base_url()?>assets/vendor/leaflet/leaflet.css" rel="styleshee
t">
<!-- HTML5 shim e Respond.js per rendere compatibile l'HTML 5 in IE8 -->
<!-
- ATTENZIONE: Respond.js non funziona se la pagina viene visualizzata in locale f
ile:// -->
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<style type="text/css">
.user {
padding: 5px;
margin-bottom: 5px;
}
#mapid {
height: 380px;
}
.peta {
float: left;
width: 50%;
}
.foto {
float: right;
width: 50%;
height: 380px;
}
.foto img {
height: 380px;
width: 100%;
}
.detilpeta {
width: 100%;
padding-top: 20px;
}
</style>
</head>
<body>
<div class="peta">
<div id="mapid"></div>
</div>
<div class="foto owl-carousel">
<?php foreach($dok as $data) { ?>
<img src="<?= base_url()?>assets/uploads/<?= $data['gambar'] ?>">
<?php } ?>
</div>
<div class="detilpeta">
<h3>Informasi Detil Peta</h3>
<h5>Nama Bidang : <?= $bidang['nama']; ?></h5>
<h5>Keterangan : <?= $bidang['ket']; ?></h5>
</div>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min
.js"></script>
<script src="<?= base_url()?>assets/vendor/leaflet/leaflet.js"></script>
<script type="text/javascript">
var owl = $('.owl-carousel');
owl.owlCarousel({
items: 1,
loop: true,
margin: 10,
autoplay: true,
autoplayTimeout: 1000,
autoplayHoverPause: true
});
</script>
<script type="text/javascript">
var map = L.map('mapid').setView([-3.842695, 114.6620476], 13);
var base_url = "<?= base_url() ?>";
var v_kode = "<?= $kode ?>";
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright
">OpenStreetMap</a> contributors'
}).addTo(map);
</script>
</body>
</html>