14 KiB
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:
- User clicks "Add Point on Map"
- User clicks a location on the map
- Modal opens with coordinates pre-filled
- User selects category = SPBU, subtype = 24 Hours / Not 24 Hours
- User enters name and optionally description
- User clicks "Add Point"
- 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:
- User clicks "Draw Road on Map"
- User draws polyline by clicking multiple points; double-clicks to finish
- Modal opens with length auto-filled (read-only)
- User enters road name and type
- 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)
- Field officers collect data on paper forms
- Data is manually entered into Excel spreadsheets
- Reports are produced monthly; no spatial context
- Decision-makers have no map-based view of poverty distribution
- Infrastructure gaps (missing roads, no SPBU access) are not correlated with poverty
Improved Process (With WebGIS-SPD)
- Field officers directly enter poor population locations on the web map
- Data is instantly visible to supervisors and planners
- GIS admin overlays road network + poverty zones to identify accessibility gaps
- Land parcel ownership data helps identify available land for social housing
- 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:
- Display all "Poor Population" points
- Toggle on "District Roads" layer
- Visually identify poor zones more than 500m from any road
- Overlay land parcel layer → identify HGU/HP parcels near these zones
- 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