# ๐Ÿ›ฐ๏ธ 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`) --- ## ๐Ÿงฑ Struktur Proyek ``` project-root/ โ”‚ โ”œโ”€โ”€ core/ โ”‚ โ”œโ”€โ”€ config.py # Konfigurasi environment & DB URL โ”‚ โ””โ”€โ”€ utils/ # Fungsi tambahan (opsional) โ”‚ โ”œโ”€โ”€ routes/ โ”‚ โ””โ”€โ”€ upload_routes.py # Endpoint untuk upload & validasi โ”‚ โ”œโ”€โ”€ services/ โ”‚ โ””โ”€โ”€ pdf_service.py # Parser PDF โ”‚ โ””โ”€โ”€ shapefile_service.py # Pembaca dan validator shapefile โ”‚ โ”œโ”€โ”€ main.py # Entry point FastAPI โ”œโ”€โ”€ requirements.txt # Daftar dependensi โ”œโ”€โ”€ .env # File konfigurasi (DB_URL, schema, dll) โ””โ”€โ”€ README.md # Dokumentasi proyek ini ``` --- ## ๐Ÿ”ง 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.