9.0 KiB
WebGIS Poverty Mapping - API Documentation
Version: 1.0
Last Updated: May 2026
Table of Contents
Overview
The WebGIS Poverty Mapping API provides RESTful endpoints to manage geographical data related to poverty mapping, including:
- Points of Interest (Rumah Ibadah, Rumah Miskin, etc.)
- Linear Features (Jalan)
- Polygonal Features (Parsil)
All responses are in JSON format with GeoJSON support for spatial data.
Base URL & Authentication
Base URL: http://localhost/webgis/
Content-Type: application/json
Response Format: application/json
Authentication is not currently implemented. For production, implement JWT or OAuth2.
Endpoints
1. GET /get_improved.php - Retrieve Data
Get all features or filtered by type and status.
Method: GET or POST
Query Parameters:
- tipe (optional): point | worship | poor_house | jalan | parsil
- status (optional): aktif | nonaktif | draf (default: aktif)
- limit (optional): max records to return (default: 1000, max: 5000)
- offset (optional): pagination offset (default: 0)
- format (optional): geojson | json (default: geojson)
Request Example:
GET /get_improved.php?tipe=worship&status=aktif&limit=100
Response (GeoJSON Format):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [109.3494, -0.0554]
},
"properties": {
"id": 1,
"tipe": "worship",
"nama": "Masjid Al-Hidayah",
"jenis": "Masjid",
"alamat": "Jln Imam Bonjol",
"status": "aktif",
"radius_meter": 200,
"kapasitas": 500,
"kegiatan": "Shalat Jum'at, Pengajian",
"created_at": "2026-05-20 10:00:00"
}
}
],
"pagination": {
"total": 150,
"count": 100,
"limit": 100,
"offset": 0
}
}
Status Codes:
200 OK- Success400 Bad Request- Invalid parameters500 Internal Server Error- Server error
2. POST /save_improved.php - Create New Data
Create a new feature in the database.
Method: POST
Request Body:
{
"tipe": "worship",
"nama": "Masjid Baitussalam",
"jenis": "Masjid",
"alamat": "Jln Dipanegara No 45",
"kontak": "Imam Haji Syaiful",
"no_wa": "+62812345678",
"kegiatan": "Shalat Jum'at, Pengajian",
"kapasitas": 500,
"radius_meter": 200,
"latitude": -0.0554,
"longitude": 109.3494,
"status": "aktif"
}
Response (Success):
{
"success": true,
"message": "Data saved successfully",
"data": {
"id": 123
},
"timestamp": "2026-05-20 10:15:00"
}
Response (Error):
{
"success": false,
"message": "Validation failed",
"errors": {
"tipe": "Field 'tipe' is required",
"radius_meter": "Field 'radius_meter' must be >= 1"
},
"timestamp": "2026-05-20 10:15:00"
}
Status Codes:
200 OK- Success400 Bad Request- Validation error500 Internal Server Error- Server error
Required Fields by Type:
Type: worship
- nama
- tipe
- radius_meter (1-500)
Type: poor_house
- nama_kepala_keluarga
- latitude
- longitude
Type: jalan
- geom (LineString GeoJSON)
- panjang
Type: parsil
- geom (Polygon GeoJSON)
- luas
3. POST /update_improved.php - Update Data
Update an existing feature.
Method: POST
Request Body:
{
"id": 123,
"nama": "Masjid Baitussalam (Updated)",
"kapasitas": 600,
"status": "aktif"
}
Response (Success):
{
"success": true,
"message": "Data updated successfully",
"data": {
"id": 123
},
"timestamp": "2026-05-20 10:20:00"
}
Status Codes:
200 OK- Success400 Bad Request- Validation error404 Not Found- Record not found500 Internal Server Error- Server error
4. POST /delete_improved.php - Delete Data
Delete or soft-delete a feature.
Method: POST
Request Body:
{
"id": 123,
"method": "soft"
}
Parameters:
id(required): Record ID to deletemethod(optional): "soft" (mark as nonaktif) or "hard" (actually remove)
Response (Success):
{
"success": true,
"message": "Data deleted successfully",
"data": {
"id": 123
},
"timestamp": "2026-05-20 10:25:00"
}
Status Codes:
200 OK- Success404 Not Found- Record not found405 Method Not Allowed- Wrong HTTP method500 Internal Server Error- Server error
Error Handling
All errors follow this structure:
{
"success": false,
"message": "Error description",
"errors": {
"field_name": "Specific error message"
},
"timestamp": "2026-05-20 10:30:00"
}
Common Error Codes
| Code | Message | Solution |
|---|---|---|
| 400 | Bad Request | Check request format and parameters |
| 400 | Invalid JSON input | Ensure JSON is properly formatted |
| 400 | Validation failed | Check required fields and data types |
| 404 | Record not found | Verify the ID exists |
| 405 | Method not allowed | Use correct HTTP method (GET/POST) |
| 500 | Server error | Check server logs |
Examples
Example 1: Add Rumah Ibadah
curl -X POST http://localhost/webgis/save_improved.php \
-H "Content-Type: application/json" \
-d '{
"tipe": "worship",
"nama": "Gereja Pentekosta",
"jenis": "Gereja",
"alamat": "Jln Achmad Yani",
"kontak": "Pdt. Markus",
"kegiatan": "Ibadah Minggu, Doa Malam",
"kapasitas": 300,
"radius_meter": 150,
"latitude": -0.0500,
"longitude": 109.3500,
"status": "aktif"
}'
Example 2: Add Poor Household
curl -X POST http://localhost/webgis/save_improved.php \
-H "Content-Type: application/json" \
-d '{
"tipe": "poor_house",
"nama_kepala_keluarga": "Budi Santoso",
"alamat": "Jln Cendana RT 05 RW 02",
"jumlah_anggota": 5,
"kondisi_rumah": "BURUK",
"sumber_penghasilan": "Buruh",
"kebutuhan_prioritas": "Perbaikan Atap",
"status_bantuan": "BELUM",
"latitude": -0.0600,
"longitude": 109.3400,
"status": "aktif"
}'
Example 3: Retrieve All Worship Places
curl "http://localhost/webgis/get_improved.php?tipe=worship&limit=50"
Example 4: Update Feature
curl -X POST http://localhost/webgis/update_improved.php \
-H "Content-Type: application/json" \
-d '{
"id": 1,
"nama": "Masjid Al-Hidayah (Updated)",
"status": "aktif"
}'
Example 5: Delete Feature (Soft Delete)
curl -X POST http://localhost/webgis/delete_improved.php \
-H "Content-Type: application/json" \
-d '{
"id": 1,
"method": "soft"
}'
Data Types
Feature Types
| Type | Description | Key Fields |
|---|---|---|
| worship | Rumah Ibadah (Masjid, Gereja, dll) | nama, jenis, radius_meter, kapasitas |
| poor_house | Rumah Penduduk Miskin | nama_kepala_keluarga, jumlah_anggota, kondisi_rumah |
| point | Data Umum | nama, alamat |
| jalan | Ruas Jalan | geom (LineString), panjang |
| parsil | Bidang/Parsil | geom (Polygon), luas |
House Conditions
| Code | Description |
|---|---|
| SANGAT_BURUK | Rumah dalam kondisi sangat buruk/rawan roboh |
| BURUK | Rumah banyak kerusakan |
| SEDANG | Rumah dengan kerusakan ringan |
| BAIK | Rumah dalam kondisi baik |
Assistance Status
| Code | Description |
|---|---|
| BELUM | Belum menerima bantuan apapun |
| PENERIMA_PKH | Penerima Program Keluarga Harapan |
| PENERIMA_BLT | Penerima Bantuan Langsung Tunai |
| PENERIMA_BANTSOS | Penerima bantuan sosial lainnya |
Income Sources
| Code | Description |
|---|---|
| PETANI | Petani |
| BURUH | Buruh |
| PEDAGANG | Pedagang |
| PNS | PNS |
| SWASTA | Pegawai Swasta |
| USAHA_KECIL | Usaha Kecil |
| PENSIUN | Pensiun |
| TIDAK_BEKERJA | Tidak Bekerja |
GeoJSON Reference
Point Geometry
{
"type": "Point",
"coordinates": [109.3494, -0.0554]
}
LineString Geometry (Jalan)
{
"type": "LineString",
"coordinates": [
[109.3494, -0.0554],
[109.3500, -0.0560],
[109.3510, -0.0570]
]
}
Polygon Geometry (Parsil)
{
"type": "Polygon",
"coordinates": [
[
[109.3494, -0.0554],
[109.3500, -0.0554],
[109.3500, -0.0560],
[109.3494, -0.0560],
[109.3494, -0.0554]
]
]
}
Rate Limiting & Performance Tips
- Maximum 1000 records per request (configurable via
limitparameter, max 5000) - Use pagination with
offsetfor large datasets - Index on commonly filtered fields:
tipe,status,latitude,longitude - Cache results when possible
- Use GeoJSON format for map applications
Changelog
| Version | Date | Changes |
|---|---|---|
| 1.0 | May 2026 | Initial API documentation |
For support, contact the development team.