# ๐Ÿ›ฐ๏ธ 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 ```bash git clone https://git.labmu.ac.id/username/nama-proyek.git cd nama-proyek ``` ### 2๏ธโƒฃ Buat Virtual Environment ```bash python -m venv venv source venv/bin/activate # (Linux/Mac) venv\Scripts\activate # (Windows) ``` ### 3๏ธโƒฃ Instal Dependensi ```bash pip install -r requirements.txt ``` ### 4๏ธโƒฃ Konfigurasi File `.env` Buat file `.env` di root proyek: ```env REFERENCE_DB_URL=postgresql+psycopg2://user:password@localhost:5432/nama_db REFERENCE_SCHEMA=public ``` --- ## ๐Ÿš€ Menjalankan Server Jalankan server FastAPI menggunakan **Uvicorn**: ```bash 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. ---