Anda di halaman 1dari 100

Outline

• Pengantar GIS Python


• Programming dan Code Editor
• Virtual Environment
• Membuat Projek Baru
• Library
• Proyek Flask Sederhana
• Folium
• Proyek GIS-Folium dengan flask

Samsu Arif
Pengantar GIS - Python

1. Software GIS vs GIS-Python


2. Kenapa GIS-Python
3. Bidang Aplikasi GIS-Python

Samsu Arif
Software GIS vs GIS-Python

Samsu Arif
Kenapa GIS-Python
Folium - PyQT

Samsu Arif
Kenapa GIS-Python

• SIG bertujuan memudahkan kita dalam mencari informasi terkait suatu lokasi tertentu beserta karakteristiknya.
• Tanpa disadari, kita sudah menggunakan SIG dalam kehidupan sehari-hari.
• Salah satu bentuknya adalah Global Positioning System (GPS) pada smartphone.
• Dengan menggunakan GPS, kamu bisa menggunakan peta elektronik untuk menuju lokasi tertentu.
• Contoh peta elektronik yang biasa digunakan antara lain Google Maps.
• Google Maps adalah contoh yang paling popular penggunaan GIS berbasis jaringan internet.
• Untuk kebutuhan yang lebih kompleks dan luas, ESRI dengan arcgis online.

• Python menjadi semacam bahasa skripting utama dalam menangani tugas-tugas analisis geospasial.
• Bahkan ketika ESRI menghentikan rilis ArcView pada tahun 2002, secara resmi ESRI meninggalkan bahasa skripting
ciptaannya sendiri, yaitu Avenue, dan memutuskan untuk menjadikan Python sebagai bahasa skripting standar pada
generasi aplikasi penerus ArcView, yaitu ArcGIS.
• Demikian juga halnya dengan beberapa aplikasi SIG open source, yang juga menggunakan Python sebagai bahasa
skripting untuk analisis geospasial.
• Salah satunya yang paling populer adalah Quantum GIS.
• Bahkan aplikasi SIG yang diyakini sebagai aplikasi SIG open source yang tertua di dunia, yaitu GRASS, secara
keseluruhan kode programnya ditulis dengan Bahasa Python.

Samsu Arif
Bidang Aplikasi GIS-Python

Samsu Arif
Programming dan Code Editor

1. Python dan Visual Studio Code


2. Tools Visual Studio Code
3. Xampp - MYSQL

Samsu Arif
Python dan Visual Studio Code

• Install Python dan Visual Studio Code

https://www.python.org/downloads/windows/ https://code.visualstudio.com/

Samsu Arif
Tools – Visual Studio Code

• Install Ekstensi di Visual Studio Code

Samsu Arif
xampp - MySQL

• https://www.apachefriends.org/download.html

Samsu Arif
Instalasi Pendukung

1. Instalasi Virtual Environment


2. Cara Membuat Proyek Baru
3. Instalasi Library Flask
4. Instalasi Library Folium

Samsu Arif
Instalasi Virtual Environment

• Virtual environment adalah sebuah ruang lingkup virtual yang terisolasi dari dependencies utama. Virtual
Environment sangat berguna ketika kita membutuhkan dependencies yang berbeda-beda antara projek satu
dengan lainnya yang berjalan pada satu system operasi yang sama

Virtual Environment Virtual Environment

Flask 1.1.2 Flask 1.0.0

Default Modul

Instalasi Virtual Environment


• pip install virtualenv

Samsu Arif
Cara Membuat Projek Baru

• Buat folder projek, bisa melalui command prompt


• mkdir namaprojek
• cd namaprojek
• virtualenv env
• Aktifkan virtual environment
• cd env/scripts
• activate

Samsu Arif
Install Library - Flask

• Flask adalah sebuah web framework yang ditulis dengan bahasa Python dan tergolong sebagai jenis
microframework. Flask berfungsi sebagai kerangka kerja aplikasi dan tampilan dari suatu web. Dengan
menggunakan Flask dan bahasa Python, pengembang dapat membuat sebuah web yang terstruktur dan
dapat mengatur behaviour suatu web dengan lebih mudah.

Samsu Arif
Install Library - folium

• folium adalah sebuah library yang digunakan pada python dengan bertumpu pada leaflet.js. Data
dimanipulasi dengan python lalu di visualisasikan petanya dengan leaflet melalui folium.

Samsu Arif
Proyek Sederhana

1. Proyek Sederhana Flask


2. Proyek Sederhana Flask – Folium
3. Keluaran Proyek Sederhana Flask – Folium

Samsu Arif
Apa itu Flask

• Flask merupakan framework mikro yang ditulis menggunakan Python dan berdasar pada
pustaka Werzeug dan Jinja.
• Werzeug adalah pustaka Python yang berfungsi untuk melakukan pemetaan WSGI
• Jinja adalah pustaka yang digunakan untuk membuat halaman web (dalam flask disebut
template).

Samsu Arif
Arsitektur Aplikasi Flask

User Objek Aplikasi

View (berupa
Model Database
fungsi)

Template

Samsu Arif
Proyek Sederhana Flask
Contoh program minimal dengan flask
D:\gis_python\pertemuan_1\1.Pengantar_gis_python\app.py

Samsu Arif
Proyek Sederhana flask - folium
Contoh program minimal dengan flask - folium

D:\gis_python\pertemuan_1\2.folium_sederhana\app.py

Samsu Arif
Keluaran Proyek Sederhana flask - folium
Contoh program minimal dengan flask - folium

Samsu Arif
Instalasi Library

1. Library
2. Cara Instalasi Library

Samsu Arif
Library

Data Analys & Visualization GIS


• Numpy : Paket dasar untuk komputasi ilmiah dengan • GDAL : Paket dasar untuk memproses format data
Python vektor dan raster. Digunakan untuk pemrosesan
• Pandas : Struktur data dan alat analisis data raster.
berkinerja tinggi dan mudah digunakan • Geopandas : Bekerja dengan data geospasial di
• Scipy : Kumpulan algoritma numerik dan tools box Python menjadi lebih mudah, menggabungkan
khusus domain, termasuk pemrosesan sinyal, kemampuan panda dan shapely.
optimasi, dan statistik • Shapely : Paket Python untuk manipulasi dan analisis
• Matplotlib : Pustaka plot dasar untuk Python objek geometris.
• Bokeh : Visualisasi interaktif untuk web (juga peta) • Fiona : Membaca dan menulis data spasial.
• Plotly : Visualisasi interaktif (juga peta) untuk web • Pyproj : Melakukan transformasi kartografi dan
(komersial - gratis untuk tujuan pendidikan) perhitungan geodetik (berdasarkan PROJ.4).
• Pysal : Pustaka fungsi analisis spasial yang ditulis
dengan Python.

Samsu Arif
Cara Instalasi Library

Data Analys & Visualization GIS


• pip install numpy • Cek versi Python
• pip install pandas • Download library GIS yang sama versinya dengan
• pip install scipy python
• pip install matplotlib (https://www.lfd.uci.edu/~gohlke/pythonlibs/)
• pip install bokeh
• pip install plotly

Samsu Arif
Outline

• Pengantar Template
• Menangani Beberapa Template
• Mengirim Parameter ke Template
• Template Engine dengan Jinja2
• Struktur Template
• Link dan Button

Samsu Arif
Pengantar Template
Contoh program minimal dengan flask - folium

D:\gis_python\pertemuan_1\2.folium_sederhana\app.py

Samsu Arif
Pengantar Template

{% extends "layout.html" %}

Layout.html indeks.html

{% include "map.html" %}

map.html
template

folium_map.save('templates/map.html')

Samsu Arif
Pengantar Template
Contoh program minimal flask – folium dengan template
D:\gis_python\pertemuan_2\1.template_dasar\app.py

• Render sebuah template digunakan modul render_template()


• Berikan nama template dengan ektensi .html (index.html)
• Disini disimpan hasil tampilan folium ke dalam sebuah file html (map.html) Index.html
• map.html dipanggil ke dalam file index.html menggunakan Jinja2
• Secara deafult, flask akan mencari template di folder templates/
Samsu Arif
Menangani Beberapa Template
Penanganan multi template menggunakan @app.route()

https://localhost:5000

https://localhost:5000/jinja2_folium

D:\gis_python\pertemuan_2\2.multitemplate\app.py
Samsu Arif
Mengirim Parameter ke Template
Variabel dapat dikirim dari konteks Flask ke template yang dirender melalui parameter template
D:\gis_python\pertemuan_2\3.mengirim_paramter_ke_template\multi_template.py

Flask menggunakan Jinja2


sebagai template engine
yang dapat membantu
merender HTML

{{…}} symbol Jinja2 yang


digunakan untuk
menuliskan variabel

D:\gis_python\pertemuan_2\3.mengirim_paramter_ke_template\templates\index.html

Samsu Arif
Template Engine dengan Template2

1. Jinja2
2. Penggunaan Template Engine dengan Jinja2
3. Link dan Button

Samsu Arif
Jinja2

Paramter inisialisasi Jinja2

• block_start_string : String yang menandai awal blok -> '{%'.

• block_end_string : String yang menandai akhir blok -> '%}'.

• variable_start_string : String yang menandai awal cetak variable -> '{{'.

• variable_end_string : String yang menandai akhir cetak variable -> '}}'.

• comment_start_string : String yang menandai awal untuk mencetak komentar -> '{#'.

• comment_end_string : String yang menandai akhir untuk mencetak komentar -> '#}'.

Samsu Arif
Struktur Template

Index.html

layout.html

Samsu Arif
Template Engine dengan Jinja2

• Jinja For Loop structure • Jinja Comparison Operator


{% for item in list %} {% if varX == varY %}
{{item}} {% if varX != varY %}
{% endfor %} {% if varX > varY %}
{% if varX < varY %}
{% if varX >= varY %}
• Jinja If-else structure {% if varX <= varY %}
{% if name in list %}
... do something • Jinja Membership Operator
{% elif name == “John Doe”%}
{% if item in list %}
... do something
{% if item not in list %}
{% else %}
.... do something
{% endif %} • Jinja Identity Operator

{% if objectA is objectB %}
{% if objectA is not none %}

Samsu Arif
Penggunaan Template Engine dengan Jinja2
D:\gis_python\pertemuan_2\4.engine_jinja2\engine_jinja2.py

D:\gis_python\pertemuan_2\4.engine_jinja2\templates\index.html

Samsu Arif
Template Engine dengan Jinja2

Samsu Arif
Link dan Button

Link ke html membutuhkan URL target, untuk kebutuhan tersebut dapat


digunakan url_for(func_name) untuk mendapatkan URL dari sebuah fungsi.

D:\gis_python\pertemuan_2\6.link_dan_button\templates\index.html

D:\gis_python\pertemuan_2\6.link_dan_button\templates\peta.html

D:\gis_python\pertemuan_2\6.link_dan_button\link_button.py
Samsu Arif
Outline

• Download Bootstrap - JS
• Menu - Navbar
• Menu – Navbar Dropdown
• URL Converter
• HTTP Method
• Flash Message
• Form dan Input Data
• WTForm

Samsu Arif
Download Bootstrap

https://getbootstrap.com/docs/5.1/getting-started/download/

https://popper.js.org/

D:\gis_python\pertemuan_3\1.bootstrap_dan_jquery\static\js\popper.min.js

Samsu Arif
Menu - Navbar

https://www.w3schools.com/bootstrap5/bootstrap_navbar.php

Samsu Arif
Menu - Navbar
D:\gis_python\pertemuan_3\1.bootstrap_dan_jquery\templates\_layout.html

Samsu Arif
Menu – Navbar Dropdown

https://www.w3schools.com/bootstrap5/bootstrap_navbar.php

Samsu Arif
Menu – Navbar Dropdown

D:\gis_python\pertemuan_3\2.menu_navbar\templates\_layout.html
Samsu Arif
URL Converter

Di dalam @app.route(), dapat ditambakan variable ke URL yang dituju dengan bentuk
penulisan <nama_variable>.
Fungsi yang ada di bawah routing kemudian menerima <nama_variable> sebagai kata kunci
argument.
Jenis argument yang diterima secara devault dikenal sebagai string, untuk tipe data spesifik
argument dapat diatur sebagai: integer, float (<int:id>, <float:lokasi>)

http://localhost:5000/zoom/11

http://localhost:5000/koordinat_tengah/-5.1543/119.437

D:\gis_python\pertemuan_3\3.URL_converter\app.py

Samsu Arif
URL Converter
D:\gis_python\pertemuan_3\3.URL_converter\app.py
http://localhost:5000/html_folium/Universitas Hasanuddin

Samsu Arif
HTTP Method

Kita dapat juga mendefenisikan HTTP Method di dalam @app.route()


Sebagai contoh berikut diperlihatkan bagaimana /user endpoint menerima
method GET dan POST. D:\gis_python\pertemuan_3\4.HTTP_method\app.py

http://localhost:5000/user

Samsu Arif
Flash Message

• Flash message membantu kita memberikan beberapa pesan umpan balik dari server ke browser web.
• Pesannya dapat berupa pesan sukses, atau memberi tahu jika ada yang tidak beres.
• Untuk mengaktifkan pesan flash di aplikasi, letakkan di bawah template Jinja2 agar dapat memperoleh
dan menampilkan pesan flash di dalam _layout.html

D:\gis_python\pertemuan_3\5.flash_message\templates\_layout.html

Samsu Arif
Flash Message

• Di dalam fungsi rute, kita dapat memanggil pesan flash dengan sintaks flash(“pesan”, “tipe”)
• Tipe dapat berupa:
• success
• danger
• info
• dll (sesuai dengan color class di Bootstrap)

• perlu menempatkan app.config SECRET_KEY untuk membuat pesan flash berfungsi.


• karena pesan flash menggunakan session untuk bekerja.

Samsu Arif
Flash Message

Samsu Arif
Form dan Input Data

Form Input
Nama

Email

Nomor Telpon

Password

Password Lagi

Setuju

Submit
Submit

Samsu Arif
WTForm

• WTForms adalah perpustakaan validasi dan rendering formulir yang fleksibel untuk pengembangan web Python
• Mendukung validasi data, perlindungan CSRF, internasionalisasi (I18N), dan banyak lagi.
• Bagaimana cara memasukkan Flask WTForm ke dalam aplikasi kita?
• Untuk kasus sederhana, tempatkan definisi formulir di dalam forms.py

/templates

app.py

form.py

Samsu Arif
WTForm
• Buat class UserForm() di dalam file form.py, dengan field: nama, email, telpon, password, confirm, setuju dan
submit
• class UserForm() diwarisi (inherited) dari class Form WTForm
• Di dalam class itu kita bisa meletakkan form field seperti StringField (Input Text), PasswordField (Password
Input), BooleanField (Checkbox Input) dan SubmitField (tombol Submit)
• Penggunaan objek validators yang dapat membantu melakukan validasi data seperti panjang input data, field
yang dibutuhkan, dan lain-lain.

D:\gis_python\pertemuan_3\6.WTForm\form.py Samsu Arif


WTForm
• Import class UserForm ke dalam app.py

app.py

form.py

• Selanjutnya buat objek form dari class UserForm, dan ambil nilai dari form dengan request.form

D:\gis_python\pertemuan_3\6.WTForm\app.py

Samsu Arif
WTForm

• Atur letak dari elemen form yang disimpan dalam file “_form_macro.html” (dapat diberi nama lain)
• Copy macro dari alamat: http://matrix.umcs.lublin.pl/DOC/python-flask-doc/html/patterns/wtforms.html

D:\gis_python\pertemuan_3\6.WTForm\templates\_form_macro.html
Samsu Arif
WTForm

• Kemudian kita dapat merender formulir menggunakan macro render_field() di dalam file “_form_macro.html”

D:\gis_python\pertemuan_3\6.WTForm\templates\user.html

• Jika kita memiliki banyak bentuk, mekanisme ini jauh lebih bersih dan
mudah dirawat jika spesifikasi bentuk (gaya, dll) berubah.
• Di bagian selanjutnya kita akan belajar bagaimana menambahkan kelas
Bootstrap di dalam bidang yang dirender.
Samsu Arif
WTForm

from form import UserForm

app.py

return render_template("user.html“, form=form)


_layout.html
form.py

class UserForm(Form): {% extends "_layout.html" %}

User.html render_field(form.nama)

{% from "_form_macro.html" import render_field %}

_form_macro.
html

Samsu Arif
Outline

• Pengenalan Database
• Konfigurasi SQL-Alchemy
• Model Relasi SQL-Alchemy
• Insert dan Select
• User Form
• Tabel
• Pagination

Samsu Arif
Pengenalan Database

1. Apa itu Database


2. Database Management System (DBMS)
3. Relational Database
4. Cara Kerja DBMS
5. Database Client
6. Database File
7. Structured Query Language (SQL)

Samsu Arif
Apa itu Database

• Database adalah kumpulan data yang


terorganisir, yang umumnya disimpan dan
diakses secara elektronik dari suatu sistem
komputer (Wikipedia).
• Perangkat lunak yang digunakan untuk
mengelola dan memanggil kueri (query) basis
data disebut sistem manajemen basis data
(database management system, DBMS).

https://corporatefinanceinstitute.com/resources/knowledge/data-analysis/database/

Samsu Arif
Database Management System

• DBMS adalah aplikasi yang digunakan untuk me-manage data


• Tanpa menggunakan DBMS, untuk me-manage data, kita harus menyimpannya dalam bentuk file (misal
seperti ketika menggunakan Excel)
• DBMS biasanya berjalan sebagai aplikasi server yang digunakan untuk me-manage data, kita hanya tinggal
memberi perintah ke DBMS untuk melakukan proses manajemen datanya, seperti menambah, mengubah,
menghapus atau mengambil data
• Contoh DBMS yang populer seperti MySQL, PostgreSQL, MongoDB, Oracle, dan lain-lain

Samsu Arif
Relational Database

• Beberapa jenis-jenis DBMS:


• seperti Relational Database,
• Document Database,
• Key-Value Database, dan lain-lain
• Relational database cukup mudah dimengerti dan
dipelajari karena kita sudah terbiasa menyimpan
data dalam bentuk tabular (tabel) seperti di
Microsoft Excel.
• Selain itu relational database memiliki perintah
standard menggunakan SQL.

Samsu Arif
Cara Kerja DBMS

DBMS System calls Data


SQL
Statements
data

HTML
document
CF Server

Samsu Arif
Database Client

• Database client adalah aplikasi yang digunakan


Aplikasi untuk berkomunikasi dengan DBMS
• Biasanya DBMS sudah menyediakan database
client sederhana yang bisa kita gunakan untuk
Software
berkomunikasi dengan DBMS agar lebih mudah
DBMS • Atau kita bisa membuat aplikasi untuk
berkomunikasi dengan DBMS, misal membuat
aplikasi database client menggunakan Java, PHP
atau bahasa pemrograman lainnya

Samsu Arif
Database File

RAM
• Mayoritas DBMS menyimpan datanya di file, walaupun ada
beberapa database yang hanya menyimpan datanya di
memory (RAM)
DBMS Data • Database File akan di optimasi oleh DBMS agar
Insert mempermudah DBMS dalam manajemen datanya, seperti
insert, update, delete dan select
update • Tiap DBMS biasanya memiliki cara masing-masing mengelola
File Database File nya, dan kita tidak perlu harus tau, karena yang
delete kita perlu tahu hanya cara berkomunikasi ke DBMS

select

Samsu Arif
Structures Query Language (SQL)

• Structured Query Language Merupakan bahasa yang digunakan


untuk mengirim perintah ke DBMS
• SQL adalah bahasa yang mudah karena hanya berisi instruksi untuk
menyimpan, mengubah, menghapus atau mengambil data melalui
DBMS
• Secara garis besar, semua perintah SQL di Relational Database itu
hampir sama, namun biasanya tiap DBMS ada improvement yang
membedakan hal-hal kecil dalam perintah SQL, namun secara garis
besar perintahnya tetap sama

Samsu Arif
MySQL

• MySQL adalah DBMS Relational OpenSource yang paling populer


di dunia saat ini
• Tidak hanya OpenSource, MySQL juga gratis untuk digunakan
• MySQL pertama kali dibuat dan diperkenalkan tahun 1995 oleh
David Axmark dan Michael Widenius
• MySQL sangat populer sekali terutama dikalangan programmer
web seperti Python.
• https://www.mysql.com/

Kelebihan MySQL:
• Mendukung Integrasi Dengan Bahasa Pemrograman Lain
• Tidak Membutuhkan RAM Besar
• Mendukung Multi User
• Bersifat Open Source
• Struktur Tabel yang Fleksibel
• Tipe Data yang Bervariasi
• Keamanan yang Terjamin

Samsu Arif
Model Database - Flask

1. phpyadmin
2. Buat database di phpmyadmin
3. ORM menggunakan Flask - SQL Alchemy
4. Konfigurasi Flask - SQL Alchemy
5. Penggunaan SQLToolMySQL VS Code Extension

Samsu Arif
phpmyadmin

http://localhost/phpmyadmin/

Samsu Arif
Buat Database di phpmyadmin

Samsu Arif
ORM Menggunakan Flask - SQL Alchemy

• Object–relational mapping (ORM, O/RM, and O/R mapping tool) dalam ilmu komputer adalah teknik
pemrograman untuk mengubah data antara sistem tipe yang tidak kompatibel menggunakan bahasa
pemrograman berorientasi objek (Wikipedia).

Kelebihan ORM
• Mudah diakses dan dipelihara
• Lebih aman dari hacker injeksi
• Memperbaiki format SQL
• Menggunakan OOP (kemampuan untuk
memperluas & mewarisi Model)

• SQLAlchemy merupakan sekumpulan perangkat lunak dengan sumber terbuka untuk SQL dan
Pemetaan Objek Relasional (object-relational mapper disingkat dengan ORM) untuk bahasa
pemrograman Python (Wikipedia)

Samsu Arif
Konfigurasi Flask - SQL Alchemy

• Flask-SQLAlchemy adalah ekstensi untuk Flask yang menambahkan dukungan untuk SQLAlchemy ke aplikasi yang
dibuat.
• Bertujuan untuk menyederhanakan penggunaan SQLAlchemy dengan Flask dengan menyediakan default yang
berguna dan pembantu tambahan yang membuatnya lebih mudah untuk menyelesaikan tugas-tugas umum. [Flask-
SQLAlchemy]

D:\gis_python\pertemuan_4\1.orm\config.py
D:\gis_python\pertemuan_4\1.orm\app.py

D:\gis_python\pertemuan_4\1.orm\model.py

Samsu Arif
Konfigurasi Flask - SQL Alchemy

• config.py adalah tempat kita menyimpan konfigurasi kita seperti koneksi


database, dll.
• model.py adalah tempat kami membuat model data untuk Aplikasi kami.
• Dua file ini, akan diimpor oleh app.py

D:\gis_python\pertemuan_4\1.orm\config.py

• Kita bisa meletakkan semua konfigurasi Flask di dalam file ini, tidak hanya
untuk koneksi database.

• Kemudian, di dalam app.py, kita hanya memuat config.py


menggunakan metode app.config.from_pyfile() setelah
membuat objek aplikasi.

D:\gis_python\pertemuan_4\1.orm\app.py
Samsu Arif
Konfigurasi Flask - SQL Alchemy
D:\gis_python\pertemuan_4\1.orm\model.py

• Setelah konfigurasi dimuat di dalam app.py


• Sekarang, kita perlu mendefinisikan setidaknya satu
model di dalam model.py
• Membuat User model yang mewarisi dari Model Class
SQLAlchemy, kemudian tentukan field-fieldnya.

D:\gis_python\pertemuan_4\1.orm\app.py

• Bagian yang penting adalah, kita perlu mengimpor objek db di atas ke app.py.
• setelah itu kita dapat menggunakan db.init_app(app) untuk melampirkan
objek db ke dalam konteks aplikasi Flask.
• Setelah itu kita langsung saja (untuk kasus ini) langsung saja menggunakan
db.create_all() untuk membuat Database yang sudah didefinisikan
sebelumnya di dalam model.py
• Tujuan app.app_context() adalah untuk mendorong konteks aplikasi saat
membuat tabel, kita perlu melakukan ini karena bagian ini berada di luar
tampilan/rute kita

Samsu Arif
Penggunaan SQLTools MySQL di VS Code

Samsu Arif
Penggunaan SQLTools MySQL di VS Code

Samsu Arif
Penggunaan SQLTools MySQL di VS Code

show

Samsu Arif
Relasi Database

• Buat Data Model baru bernama Alamat dan tambahkan ForeignKey userId dengan menentukan
db.ForeignKey(‘user.id’) dengan tipe Integer

D:\gis_python\pertemuan_4\2.relasi_database\model.py

Samsu Arif
Insert Data

D:\gis_python\pertemuan_4\3.insert_data\app.py
• Untuk insert data ke User kita perlu membuat objek yang
diturunkan dari class User dengan nilai variabel yang
ditentukan.
• Gunakan db.session.add(object) akan mengeluarkan
pernyataan INSERT ke dalam database.
• Kemudian db.session.commit() akan membuat data yang
disisipkan berada di database.

Samsu Arif
Insert Data

• Bagaimana caranya menampilkan data yang telah tersimpan dalam database?


• Flask-SQLAlchemy menyediakan atribut Query pada Model class.

• Ketika mengakses data, akan diperoleh kembali objek query baru di semua record.
• Untuk memfilter record dapat digunakan metode filter() dan filter_by().
• Sebelum diaktifkan pilih dengan all() atau first().
• Jika ingin menggunakan primery_key, dapat menggunakan get()
• Kita dapat mengorder data menggunakan order_by()
• Untuk membatasi jumlah record digunakan limit()

Lebih detail tentang propertis dan metode Query, kunjungi situs :

https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query

Samsu Arif
Select (Query) Data
D:\gis_python\pertemuan_4\4.select_data\app.py

Samsu Arif
Select (Query) Data

• Beberapa metode dalam penggunaan Query:


• count() : digunakan untuk mengethui jumlah baris dalam tabel
• distinct() : DISTINCT adalah salah satu operator di database MySQL bahkan hampir di semua database yang
digunakan untuk mencegah adanya duplikasi data atau record.
• group_by() : GROUP BY digunakan untuk mengelompokkan beberapa baris data berdasarkan nilai dari kolom
tertentu, dengan mengevaluasi kolom lain untuk operasi lain. Operasi yang dimaksud adalah fungsi aggregate
seperti AVG, MAX, MIN, SUM, dan COUNT.
• join() : Perintah JOIN dalam SQL digunakan untuk menampilkan data pada table yang saling berelasi atau tanpa
berelasi tapi berhubungan.
• subquery() : Subquery atau Inner query atau Nested query adalah query dalam query SQL lain dan tertanam
dalam klausa WHERE. Sebuah subquery digunakan untuk mengembalikan data yang akan digunakan dalam query
utama sebagai syarat untuk lebih membatasi data yang akan diambil
• union() : Operator UNION digunakan untuk menggabungkan hasil-set dari dua atau lebih SELECT pernyataan.
Perhatikan bahwa setiap pernyataan SELECT dalam UNION harus memiliki jumlah kolom yang sama

Samsu Arif
Update Data

Samsu Arif
Outline

• JSON
• Geojson
• Konversi Shape file ke GeoJSON
• GeoJSON ke Shapefile

Samsu Arif
Apa itu JSON

• JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah
dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate)
oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman
JavaScript.
https://www.json.org/json-id.html
• JSON merupakan format teks yang tidak bergantung pada bahasa
pemprograman apapun karena menggunakan gaya bahasa yang umum
digunakan oleh programmer.
• Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa
pertukaran-data
'{"name":"John", "age":30, "car":null}‘

Samsu Arif
Apa itu GeoJSON

• GeoJSON adalah format untuk mengkodekan berbagai struktur data geografis.


• GeoJSON mendukung jenis geometri berikut: Point, LineString, Polygon, MultiPoint,
MultiLineString, dan MultiPolygon.
hthttps://geojson.org/tps://www.json.org/json-id.html

point line polygon


{ { {
"type": "Feature", "type": "Feature", "type": "Feature",
"geometry": { "geometry": { "geometry": {
"type": "Point", "type": "LineString", "type": "Polygon",
"coordinates": [125.6, 10.1] "coordinates": [ "coordinates": [
}, [8816056.117179131,2807009.212192692], [
"properties": { [8829495.514106864,2610747.6742997607], [9816056.117179131,2807009.212192692],
"name": "Dinagat Islands" [8942180.802355455,2644853.040425635] [9829495.514106864,2610747.6742997607],
} ] [9942180.802355455,2644853.040425635],
} }, [9816056.117179131,2807009.212192692]
"properties": { ]
"Street_name": "Wall street" ]
} },
} "properties": {
"City": "Pasadena"
}
}

https://medium.com/random-gis-talks/everything-about-geojson-67ddc6eda11e Samsu Arif


GeoJSON - Multipoint

Background maps in EPSG:32750 for your application

Id feature

format data

Koordinat

Id Label

Label

Samsu Arif
GeoJSON - Multiline

https://jsoneditor
online.org/#right=
local.suduli&left=l
ocal.fukozi

Samsu Arif
GeoJSON - Multipolygon

https://jsoneditoronline.
org/#right=local.suduli&l
eft=local.fukozi

Samsu Arif
Konversi Shp ke GeoJSON dengan ArcMap

Samsu Arif
Menampilkan Peta GeoJSON di Flask

Samsu Arif

Anda mungkin juga menyukai