satupeta-main/README.md

2.8 KiB
Executable File
Raw Blame History

🛰️ FastAPI Backend — Sistem Referensi & Validasi Data Geospasial

Proyek ini adalah backend berbasis FastAPI yang menangani proses pembacaan data spasial (Shapefile, GeoJSON), ekstraksi PDF, serta validasi dan sinkronisasi data terhadap referensi basis data menggunakan PostgreSQL/PostGIS dan RapidFuzz untuk pencocokan string.


⚙️ Fitur Utama

Upload dan ekstrak file .zip berisi .shp atau .gdb
Parsing PDF menggunakan pdfplumber
Konversi dan validasi geometri (Shapely + GeoPandas)
Pencocokan fuzzy string terhadap referensi DB (RapidFuzz)
Integrasi PostgreSQL / PostGIS melalui SQLAlchemy
Middleware CORS untuk komunikasi dengan frontend
Dukungan konfigurasi .env (via python-dotenv)


🔧 Instalasi dan Setup

1 Clone Repository

git clone https://git.labmu.ac.id/username/nama-proyek.git
cd nama-proyek

2 Buat Virtual Environment

python -m venv venv
source venv/bin/activate   # (Linux/Mac)
venv\Scripts\activate      # (Windows)

3 Instal Dependensi

pip install -r requirements.txt

4 Konfigurasi File .env

Buat file .env di root proyek:

REFERENCE_DB_URL=postgresql+psycopg2://user:password@localhost:5432/nama_db
REFERENCE_SCHEMA=public

🚀 Menjalankan Server

Jalankan server FastAPI menggunakan Uvicorn:

uvicorn main:app --reload

Server akan berjalan di:
👉 http://127.0.0.1:8000


🧠 Contoh Endpoint

Method Endpoint Deskripsi
POST /upload/shapefile Upload file .zip berisi .shp
POST /upload/pdf Ekstrak tabel dari file PDF
GET /reference/check Validasi data terhadap referensi DB

🧩 Teknologi yang Digunakan

Kategori Library
Framework FastAPI, Starlette
Database SQLAlchemy, psycopg2, PostgreSQL/PostGIS
Data & Geo Pandas, GeoPandas, Shapely, Fiona, PyProj
Parsing pdfplumber
Matching RapidFuzz
Utilitas python-dotenv, pathlib, zipfile
Server Uvicorn

🧪 Testing

Jalankan server dan uji dengan Swagger UI:

http://127.0.0.1:8000/docs

Atau gunakan cURL / Postman untuk pengujian manual.


🧰 Tips Penggunaan

  • Pastikan GDAL, GEOS, dan PROJ sudah terinstal di sistem jika menggunakan GeoPandas / Fiona.
  • Gunakan pip freeze > requirements.txt untuk memperbarui dependensi.
  • Gunakan .gitignore agar file sensitif seperti .env tidak ikut ter-push.

👨‍💻 Pengembang

Nama: Dimas Anhar


📄 Lisensi

Proyek ini dikembangkan untuk keperluan penelitian dan pengembangan internal.
Lisensi dapat disesuaikan sesuai kebijakan lab atau institusi.