# WebGIS — Software Requirements Specification (SRS) ## Spatial Data Management System for Poverty Reduction Support --- ## 1. INTRODUCTION ### 1.1 Purpose This document defines the functional and non-functional requirements for a **WebGIS (Web-based Geographic Information System)** application designed to manage spatial data — including point features, road networks, and land parcels — in support of local government decision-making with a focus on poverty reduction programs. ### 1.2 Scope The system is named **WebGIS-SPD** (Spatial Poverty Data). It allows government officers, planners, and community stakeholders to: - Register, visualize, update, and delete spatial features (points, lines, polygons) - Identify the spatial distribution of poor population areas - Overlay infrastructure data (roads, SPBU) with poverty indicators - Support location-based decision-making for resource allocation ### 1.3 Intended Audience - Academic reviewers and instructors - Local government (dinas/pemda) administrators - GIS officers and data entry staff - NGO field coordinators ### 1.4 Definitions | Term | Meaning | |------|---------| | GIS | Geographic Information System | | SPBU | Stasiun Pengisian Bahan Bakar Umum (Gas Station) | | SHM | Sertifikat Hak Milik (Freehold Title) | | HGB | Hak Guna Bangunan (Building Rights) | | HGU | Hak Guna Usaha (Business Rights) | | HP | Hak Pakai (Usage Rights) | | CRUD | Create, Read, Update, Delete | | GeoJSON | Geographic JSON — standard geospatial format | --- ## 2. SYSTEM OVERVIEW WebGIS-SPD is a web application built with: - **Frontend**: HTML5, CSS3, Vanilla JavaScript, Leaflet.js - **Backend**: PHP (procedural, no framework) - **Database**: MySQL 8+ - **Map Tiles**: OpenStreetMap (free, community-maintained) - **Drawing Tools**: Leaflet.draw plugin The system follows a **client-server architecture**. All spatial data is stored in MySQL as GeoJSON text and served via RESTful PHP endpoints. --- ## 3. FUNCTIONAL REQUIREMENTS ### FR-01: Point Data Management (SPBU, Mosque, Poor Population) | ID | Requirement | |----|-------------| | FR-01.1 | User can add a point by clicking on the map | | FR-01.2 | Coordinates are captured automatically from click event | | FR-01.3 | Each point has: name, category, optional subtype | | FR-01.4 | SPBU points have a subtype: "24 Hours" or "Not 24 Hours" | | FR-01.5 | User can edit point attributes | | FR-01.6 | User can delete a point | | FR-01.7 | Points display custom icons by category | | FR-01.8 | Clicking a marker shows a popup with attributes and action buttons | ### FR-02: Road Polyline Management | ID | Requirement | |----|-------------| | FR-02.1 | User draws roads using Leaflet.draw polyline tool | | FR-02.2 | Road length is calculated automatically in meters | | FR-02.3 | Length is NOT manually editable | | FR-02.4 | Road types: National (red), Provincial (orange), District (blue) | | FR-02.5 | Each road stores: name, type, length, GeoJSON geometry | | FR-02.6 | Roads are styled by type using distinct colors | | FR-02.7 | User can edit road name/type | | FR-02.8 | User can delete a road | ### FR-03: Land Parcel Polygon Management | ID | Requirement | |----|-------------| | FR-03.1 | User draws parcels using Leaflet.draw polygon tool | | FR-03.2 | Parcel area is calculated automatically in m² using geodesic formula | | FR-03.3 | Area is NOT manually editable | | FR-03.4 | Ownership types: SHM, HGB, HGU, HP | | FR-03.5 | Each parcel stores: owner name, ownership type, area, GeoJSON geometry | | FR-03.6 | Parcels are styled by ownership type | | FR-03.7 | User can edit parcel attributes | | FR-03.8 | User can delete a parcel | ### FR-04: Layer Control | ID | Requirement | |----|-------------| | FR-04.1 | Each feature category has an independent toggle checkbox | | FR-04.2 | SPBU is split into two toggleable sub-layers | | FR-04.3 | Roads are split by type into three sub-layers | | FR-04.4 | Parcels are split by ownership into four sub-layers | | FR-04.5 | Layer counts are displayed next to each toggle | ### FR-05: Data Listing and Navigation | ID | Requirement | |----|-------------| | FR-05.1 | Sidebar shows a scrollable list of all features per type | | FR-05.2 | Clicking a list item zooms the map to that feature | | FR-05.3 | List items have inline Edit and Delete actions | --- ## 4. NON-FUNCTIONAL REQUIREMENTS | ID | Category | Requirement | |----|----------|-------------| | NFR-01 | Performance | Map renders within 2 seconds on standard broadband | | NFR-02 | Usability | All map interactions require no more than 3 clicks | | NFR-03 | Reliability | API returns structured JSON for all success/error states | | NFR-04 | Security | All inputs are sanitized via PDO prepared statements | | NFR-05 | Scalability | Database schema supports >10,000 features per table | | NFR-06 | Compatibility | Works in modern browsers (Chrome, Firefox, Edge) | | NFR-07 | Maintainability | Code is modular, commented, and follows single responsibility | | NFR-08 | Openness | Uses open-source libraries (Leaflet, OSM) — no licensing cost | --- ## 5. USER ROLES | Role | Permissions | |------|-------------| | **GIS Admin** | Full CRUD on all layers; manage system configuration | | **Data Entry Officer** | Add and edit features; cannot delete | | **Viewer** | Read-only; can pan/zoom map and view popups | | **Community Supervisor** | Add poor population points; view mosques and infrastructure | --- ## 6. USE CASE DESCRIPTIONS ### UC-01: Add Gas Station (SPBU) - **Actor**: GIS Admin / Data Entry Officer - **Precondition**: User is on the Points tab - **Flow**: 1. User clicks "Add Point on Map" 2. User clicks a location on the map 3. Modal opens with coordinates pre-filled 4. User selects category = SPBU, subtype = 24 Hours / Not 24 Hours 5. User enters name and optionally description 6. User clicks "Add Point" 7. Marker appears on map; entry added to list - **Postcondition**: Point stored in database; shown on correct sub-layer ### UC-02: Draw and Save a Road - **Actor**: GIS Admin - **Precondition**: User is on the Roads tab - **Flow**: 1. User clicks "Draw Road on Map" 2. User draws polyline by clicking multiple points; double-clicks to finish 3. Modal opens with length auto-filled (read-only) 4. User enters road name and type 5. User saves; road appears on map with correct color - **Postcondition**: Road stored with GeoJSON + calculated length ### UC-03: Draw and Save a Land Parcel - **Actor**: GIS Admin - **Flow**: Similar to UC-02 but with polygon; area auto-calculated ### UC-04: Toggle Layer Visibility - **Actor**: Any user - **Flow**: User clicks checkbox next to a layer name; features appear/disappear ### UC-05: Edit a Feature - **Actor**: GIS Admin / Data Entry - **Flow**: User clicks "✏️" on a list item or in popup → modal opens pre-filled → saves updated data ### UC-06: Delete a Feature - **Actor**: GIS Admin - **Flow**: User clicks "🗑️" → confirmation dialog → feature removed from map and database --- ## 7. BUSINESS PROCESS ANALYSIS ### Current Process (Without System) 1. Field officers collect data on paper forms 2. Data is manually entered into Excel spreadsheets 3. Reports are produced monthly; no spatial context 4. Decision-makers have no map-based view of poverty distribution 5. Infrastructure gaps (missing roads, no SPBU access) are not correlated with poverty ### Improved Process (With WebGIS-SPD) 1. Field officers directly enter poor population locations on the web map 2. Data is instantly visible to supervisors and planners 3. GIS admin overlays road network + poverty zones to identify accessibility gaps 4. Land parcel ownership data helps identify available land for social housing 5. Mosque locations help identify community focal points for program delivery --- ## 8. POVERTY REDUCTION SYSTEM DESIGN ### 8.1 Actors Involved | Actor | Role | Data They Contribute | |-------|------|----------------------| | **Local Government (Dinas Sosial)** | Decision makers, program funders | Program areas, budget allocation zones | | **GIS Officers (BPS/Bappeda)** | Data managers, analysts | Road networks, land parcels, administrative boundaries | | **Community (RW/RT Leaders)** | Ground truth validators | Poor household locations, family counts | | **Mosques / Religious Institutions** | Community focal points | Zakat distribution data, beneficiary lists | | **NGOs / Social Organizations** | Program implementors | Intervention areas, beneficiary tracking | | **Health Centers (Puskesmas)** | Health services data | Malnourishment points, access to healthcare | ### 8.2 Required Data Attributes Per Actor **Poor Population Points** (contributed by Community + Dinas Sosial): - Head of household name - Number of family members - Monthly income (IDR) - Access to clean water: yes/no - Distance to nearest road (m) — calculated from road layer - Distance to nearest SPBU — calculated from point layer - Receiving social assistance: yes/no - Assistance program type (PKH, BPNT, etc.) **Road Network** (contributed by GIS Officers): - Road name, type, surface condition - Last maintained date - Accessibility rating (1–5) **Land Parcels** (contributed by BPN / GIS Officers): - Ownership type (SHM/HGB/HGU/HP) - Current usage (residential, agricultural, vacant) - Available for social housing: yes/no **Mosque Data** (contributed by Religious Affairs): - Name, capacity - Zakat collection amount (IDR/year) - Zakat distribution radius (m) ### 8.3 Example Use Case: Targeting Poverty Aid **Scenario**: Government wants to identify poor households with the worst infrastructure access. **System Query**: 1. Display all "Poor Population" points 2. Toggle on "District Roads" layer 3. Visually identify poor zones more than 500m from any road 4. Overlay land parcel layer → identify HGU/HP parcels near these zones 5. Overlay mosque layer → find nearest mosque to use as aid distribution point **Result**: Decision maker can now select 50 priority households based on spatial proximity to infrastructure gaps, identify community delivery channels (mosques), and plan land use for social housing — all from a single map interface. ### 8.4 How the System Contributes to Poverty Reduction | Contribution | Mechanism | |-------------|-----------| | **Targeted Aid Delivery** | Spatial query identifies worst-off zones first | | **Infrastructure Planning** | Road gaps near poor zones inform public works budgets | | **Land Use Planning** | Vacant HP/HGU parcels near poor zones identified for social housing | | **Community Empowerment** | Mosques mapped as distribution hubs for zakat + government aid | | **Evidence-Based Policy** | Spatial statistics replace anecdotal reports | | **Monitoring** | Change detection over time shows if interventions are working | | **Transparency** | Web-based, shareable map increases government accountability | --- ## 9. SYSTEM ARCHITECTURE DIAGRAM ``` ┌──────────────────────────────────────────────────────────────┐ │ CLIENT (Browser) │ │ ┌────────────┐ ┌─────────────┐ ┌────────────────────┐ │ │ │ Leaflet.js │ │ Leaflet │ │ Vanilla JS App │ │ │ │ Base Map │ │ Draw Tools │ │ (app.js) │ │ │ └─────┬──────┘ └──────┬──────┘ └────────┬───────────┘ │ │ └────────────────┴──────────────────┘ │ │ │ fetch() HTTP │ └───────────────────────────┼──────────────────────────────────┘ │ ┌───────────────────────────┼──────────────────────────────────┐ │ SERVER (PHP) │ │ │ ┌──────────────────────────────────┐ │ │ │ │ api/points.php │ │ │ │ │ api/roads.php │◄──┘ │ │ │ api/parcels.php │ │ │ └───────────────┬──────────────────┘ │ │ │ PDO │ │ ┌───────────────▼──────────────────┐ │ │ │ MySQL Database │ │ │ │ tables: points, roads, parcels │ │ │ └──────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘ ``` --- ## 10. DATABASE ENTITY RELATIONSHIP ``` POINTS ├── id (PK) ├── name ├── category [spbu|mosque|poor] ├── subtype [24hours|not24hours|null] ├── latitude, longitude ├── description └── timestamps ROADS ├── id (PK) ├── name ├── road_type [national|provincial|district] ├── length_m (auto-calculated) ├── geojson (LineString) ├── description └── timestamps PARCELS ├── id (PK) ├── owner_name ├── ownership_type [SHM|HGB|HGU|HP] ├── area_m2 (auto-calculated) ├── geojson (Polygon) ├── description └── timestamps ``` --- *Document Version: 1.0 | Prepared for Academic Submission | WebGIS-SPD*