GeoPandas & Python untuk Analisis Otomasi
Pendahuluan
Modul ini mengajarkan cara menggunakan GeoPandas & Python untuk mengotomatiskan analisis geospasial yang biasanya dilakukan secara manual di GIS desktop. Pendekatan ini sangat ideal untuk perusahaan perbankan yang membutuhkan proses cepat, replikatif, dokumentatif, dan dapat dijalankan ulang (repeatable workflow) untuk ribuan titik cabang, ATM, dan kompetitor.
Dengan GeoPandas, Anda bisa:
- Membuat pipeline otomatis untuk data cleaning, join, buffer, spatial query, dan feature engineering.
- Menghemat jam kerja analis karena script dapat dijalankan berkali-kali.
- Mengurangi risiko human error dalam analisis jaringan perbankan.
- Mengintegrasikan analisis dengan machine learning (Scikit-Learn) untuk pemodelan prediktif lokasi cabang.
Prasyarat & Alat:
- Python 3.10 atau terbaru
- GeoPandas, Pandas, Shapely, PyProj, Fiona
- Jupyter Notebook atau VS Code
- Dataset: titik cabang, titik kompetitor, batas administrasi, demografi
- Pengetahuan dasar Python & GIS
Langkah-langkah Utama
1. Menyiapkan Lingkungan Kerja GeoPandas
Anda akan menyiapkan environment khusus agar proyek stabil dan dependency tidak konflik.
Instruksi Detail
- Buat environment baru (disarankan conda):
conda create -n geobank python=3.10 conda activate geobank(Visual Hint: Terminal menampilkan environment baru aktif) - Instal GeoPandas dan library pendukung:
conda install geopandas shapely fiona pyproj rtree(Visual Hint: daftar library terpasang) - Buat folder proyek:
data_raw/data_clean/output/scripts/
Tip Penting:
Instal GeoPandas via conda untuk menghindari error GDAL/Fiona yang sering membuat pemula frustasi.
2. Memuat & Mengecek Data Geospasial
Anda akan memuat data dan memastikan CRS seragam sebelum dianalisis.
Instruksi Detail
- Muat dataset menggunakan GeoPandas:
import geopandas as gpd cabang = gpd.read_file("data_raw/cabang.shp") kompetitor = gpd.read_file("data_raw/kompetitor.shp") admin = gpd.read_file("data_raw/administrasi.shp")(Visual Hint: Output Jupyter memperlihatkan GeoDataFrame dengan kolom geometry) - Cek CRS setiap layer:
print(cabang.crs) print(kompetitor.crs) print(admin.crs)(Visual Hint: Menampilkan EPSG bersamaan) - Jika CRS tidak sama → convert:
cabang = cabang.to_crs(4326)
Peringatan:
CRS tidak seragam = analisis spatial join & buffer salah total. Ini kesalahan paling umum pemula.
3. Membersihkan & Menstandarkan Data
Anda akan menyiapkan dataset agar siap digunakan untuk analisis lanjutan.
Instruksi Detail
- Hapus baris kosong/geometry invalid:
cabang = cabang.dropna(subset=["geometry"]) cabang = cabang[cabang.is_valid](Visual Hint: Jupyter menampilkan jumlah baris berkurang) - Normalisasi nama kolom:
cabang.columns = cabang.columns.str.lower().str.replace(" ", "_")(Visual Hint: Kolom terlihat rapi dan konsisten) - Tambahkan field standar:
cabang["status"] = "active"
Tip Profesional:
Gunakan snake_case pada kolom untuk memudahkan analisis dan integrasi ke machine learning.
4. Melakukan Analisis Spasial Inti (Buffer, Join, Scoring)
Anda akan meniru analisis GIS desktop namun dengan automasi penuh.
Instruksi Detail
- Analisis Buffer Kompetitor
kompetitor["buffer_500m"] = kompetitor.geometry.buffer(500)(Visual Hint: Peta menampilkan lingkaran buffer di sekitar titik) - Spatial Join: Cabang vs Kompetitor
merged = gpd.sjoin(cabang, kompetitor[["buffer_500m"]], how="left", predicate="intersects") merged["kompetitor_near"] = merged["index_right"].notna().astype(int)(Visual Hint: Tabel menunjukkan kolom kompetitor_near = 0/1) - Join Demografi
cabang_demo = gpd.sjoin(cabang, admin, how="left", predicate="within") - Hitung Potensi Cabang
cabang_demo["potential_score"] = ( cabang_demo["pop_density"] * 0.5 + cabang_demo["income_index"] * 0.3 - cabang_demo["kompetitor_near"] * 0.2 )
Peringatan:
Jangan pakai buffer terlalu besar. GeoPandas buffer sangat berat untuk layer ratusan ribu titik.
5. Membuat Peta Otomatis (Plot) untuk Laporan
Anda akan menghasilkan peta cepat tanpa harus membuka software GIS.
Instruksi Detail
- Plot peta potensi:
cabang_demo.plot(column="potential_score", legend=True)(Visual Hint: Heatmap sederhana muncul) - Tambahkan penanda cabang:
ax = admin.plot(figsize=(10,10), color="white", edgecolor="black") cabang_demo.plot(ax=ax, column="potential_score", legend=True)(Visual Hint: Peta dengan base admin + titik cabang) - Simpan peta otomatis:
import matplotlib.pyplot as plt plt.savefig("output/peta_potensi.png", dpi=300)
Tip Desain:
Gunakan warna sequential untuk skor potensi (biru → merah atau hijau → merah).
6. Mengotomatiskan Workflow dengan Script Python
Setelah langkah-langkah stabil, Anda akan membuat script otomatis.
Instruksi Detail
- Buat file
scripts/analisis_potensi.py - Isi dengan pipeline lengkap:
def pipeline(): cabang = gpd.read_file(...) admin = gpd.read_file(...) # cleaning # join # scoring # export return result - Jalankan:
python scripts/analisis_potensi.py
Tip Profesional:
Tambahkan logging agar manajer bisa melihat status proses tanpa error manual.
Ringkasan Modul
- GeoPandas memberi kemampuan automated spatial analysis yang sangat kuat untuk skala perusahaan.
- Workflow Python membuat analisis cabang bank lebih cepat, konsisten, dan siap dikembangkan untuk prediktif.
- Integrasi plotting dan script automation mempercepat produksi laporan tanpa GIS desktop.
Tugas Praktis (Untuk Siswa)
Buat pipeline otomatis sederhana berikut menggunakan GeoPandas:
- Muat dataset cabang, kompetitor, dan bata administrasi.
- Bersihkan data, seragamkan CRS, dan normalisasi kolom.
- Hitung:
- Buffer kompetitor 300 m
- Spatial join cabang vs demografi
- Field branch_score berdasarkan 3 variabel
- Buat peta otomatis dan simpan sebagai PNG.
- Buat script
.pyyang dapat dijalankan ulang kapan pun.