Files
SIG_WEBGIS_Nur_Ichsanul_Alif/docs/SRS.md
T
2026-06-10 22:46:10 +07:00

14 KiB
Raw Blame History

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 (15)

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