Sistem Informasi Geografis berbasis web untuk analisis aksesibilitas fasilitas pendidikan dan kesehatan di Kecamatan Gunung Puyuh, Sukabumi, Jawa Barat.
- Tentang Proyek
- Tim Pengembang
- Case Problem
- Fitur Utama
- Teknologi
- Struktur Project
- Instalasi & Cara Menjalankan
- Penggunaan
- Arsitektur
- Best Practices
- Kontribusi
- Lisensi
WebGIS Kecamatan Gunung Puyuh adalah aplikasi peta interaktif berbasis web yang dirancang untuk memvisualisasikan dan menganalisis distribusi fasilitas pendidikan dan kesehatan di Kecamatan Gunung Puyuh, Kota Sukabumi.
Kecamatan Gunung Puyuh mengalami transformasi urban yang sangat cepat dalam 5 tahun terakhir akibat:
- Pembangunan perumahan masif yang menggantikan lahan pertanian
- Lokasi strategis sebagai jalur lintas Jakarta yang ramai
- Pertumbuhan penduduk tinggi dari urbanisasi dan migrasi
Dampak yang terjadi menciptakan kesenjangan aksesibilitas terhadap fasilitas pendidikan dan kesehatan, terutama di kelurahan-kelurahan pinggiran yang baru berkembang.
| Nama | NIM | Role | GitHub |
|---|---|---|---|
| M. Sechan Alfarisi | 20230040094 | π§ Lead Developer & Repository Owner | @VXerys |
| M. Akbar Rizky Saputra | 20230040236 | π¨βπ» Developer | - |
| M. Fathir Bagas | 20230040126 | π¨βπ» Developer | - |
| M. Sinar Agusta | 20230040188 | π¨βπ» Developer | - |
| M. Ghibran Muslih | 20230040105 | π¨βπ» Developer | - |
Repository: github.com/VXerys/accessibility-gap-analysis-webgis
"Analisis Kesenjangan Aksesibilitas Fasilitas Pendidikan dan Kesehatan di Kecamatan Gunung Puyuh: Dampak Urbanisasi Cepat terhadap Pemerataan Layanan Publik"
Kecamatan Gunung Puyuh mengalami ketimpangan distribusi fasilitas layanan publik dengan dampak sebagai berikut:
-
Distribusi Tidak Merata
- Fasilitas pendidikan dan kesehatan terkonsentrasi di pusat kecamatan
- Kelurahan dengan pemukiman baru mengalami kekurangan akses
- Kesenjangan antara supply dan demand fasilitas
-
Kesenjangan Aksesibilitas
- Masyarakat di kelurahan pinggiran harus menempuh waktu >15 menit ke fasilitas terdekat
- Meningkatkan risiko keterlambatan penanganan kesehatan darurat
- Beban biaya transportasi keluarga meningkat
-
Overcapacity vs Under-served
- Fasilitas di pusat kecamatan mengalami overcrowding (antrian panjang, kelas penuh)
- Area baru tidak memiliki fasilitas memadai
- Ketimpangan kualitas layanan antar kelurahan
-
Kesenjangan Sosial
- Masyarakat miskin di area under-served mengalami kesulitan akses lebih besar
- Menciptakan kesenjangan kesehatan dan pendidikan antar kelurahan
- Mempengaruhi kualitas SDM generasi mendatang
- Bagaimana pola distribusi spasial fasilitas pendidikan dan kesehatan di Kecamatan Gunung Puyuh?
- Seberapa merata aksesibilitas masyarakat terhadap fasilitas berdasarkan waktu tempuh (5, 10, 15 menit)?
- Kelurahan mana yang mengalami kesenjangan akses paling parah (under-served areas)?
- Apakah rasio ketersediaan fasilitas per penduduk sudah memenuhi standar WHO dan Kemenkes/Kemdikbud?
- Di mana lokasi optimal untuk pembangunan fasilitas baru guna mengurangi kesenjangan?
Mengidentifikasi dan menganalisis kesenjangan aksesibilitas fasilitas pendidikan dan kesehatan menggunakan analisis spasial berbasis SIG untuk memberikan rekomendasi perencanaan pembangunan infrastruktur yang merata.
- β Memetakan distribusi spasial fasilitas pendidikan dan kesehatan di seluruh kelurahan
- β Menganalisis zona jangkauan layanan (isochrone 5-10-15 menit) dari setiap fasilitas
- β Mengidentifikasi kelurahan yang under-served berdasarkan gap analysis
- β Menghitung rasio ketersediaan fasilitas dan membandingkan dengan standar nasional/internasional
- β Memberikan rekomendasi lokasi optimal untuk fasilitas baru berbasis data spasial
- β Mengembangkan WebGIS interaktif untuk memudahkan akses informasi fasilitas
- π Data objektif untuk perencanaan infrastruktur
- π Identifikasi lokasi optimal fasilitas baru
- π° Justifikasi alokasi anggaran berbasis data
- π Mudah mencari fasilitas terdekat via WebGIS
- π± Transparansi informasi layanan publik
- π£οΈ Advokasi untuk perbaikan infrastruktur di area mereka
- ποΈ Panduan lokasi fasilitas yang harus dibangun dalam kawasan perumahan baru
- π Compliance dengan standar perencanaan kota
Aplikasi menyediakan 2 pilihan base map yang dapat di-toggle:
- OpenStreetMap - Peta standar dengan detail jalan dan bangunan
- Satelit (Esri World Imagery) - Citra satelit resolusi tinggi
Semua layer dapat diaktifkan/dinonaktifkan sesuai kebutuhan:
| Layer | Deskripsi | Sumber Data | Icon | Warna |
|---|---|---|---|---|
| Batas Kecamatan | Batas wilayah administratif Kecamatan Gunung Puyuh | map.geojson | π | Oranye |
| SDN/SD/SDIT | Sekolah Dasar Negeri, SD, dan SDIT | map.geojson + sd-smp-sma.geojson | π« | Biru |
| SMP/SMPN/SMPIT | Sekolah Menengah Pertama | sd-smp-sma.geojson | π« | Hijau |
| SMA/SMAN/SMK | Sekolah Menengah Atas dan SMK | sd-smp-sma.geojson | π« | Merah |
| Universitas | Perguruan Tinggi | sd-smp-sma.geojson | π | Ungu |
| Lainnya | Madrasah dan institusi pendidikan lainnya | sd-smp-sma.geojson | π« | Oranye |
- Real-time Counter: Menampilkan jumlah total institusi pendidikan
- Breakdown per Kategori: Statistik SD, SMP, SMA, dan Universitas
- Animated Numbers: Counter dengan animasi smooth counting
- Info Panel: Panel informasi yang dapat di-toggle dengan panduan penggunaan
- β Responsive Design: Optimal di desktop, tablet, dan mobile
- β Modern Gradient: Header dengan gradient purple dan pattern overlay
- β Glass Morphism: Backdrop blur pada card elements
- β Smooth Animations: Fade-in, slide, dan floating animations
- β Interactive Elements: Hover effects dan transitions
- β Custom Markers: Icon emoji dengan warna kategori
- β Styled Popups: Popup informatif dengan design modern
- Toggle base maps (radio button)
- Toggle overlay layers (checkbox)
- Scrollable untuk banyak layer
- Zoom in (+) / Zoom out (-)
- Custom styling dengan hover effect
- Skala dalam meter/kilometer
- Auto-adjust berdasarkan zoom level
- Toggle button dengan icon βΉοΈ
- Statistik per kategori
- Panduan penggunaan
- Smooth slide animation
- HTML5 - Semantic markup
- CSS3 - Modern styling dengan CSS Variables
- JavaScript (ES6+) - Modular architecture
- Leaflet.js v1.9.4 - Interactive map library
- GeoJSON - Format data geografis standar
- OpenStreetMap - Base map tiles
- Esri World Imagery - Satellite imagery
- Google Fonts (Poppins) - Modern, clean typography
- Emoji Icons - Native emoji untuk markers
- Python HTTP Server - Local development server
- Git - Version control
- VS Code - Development environment
kecamatan-gunungpuyuh-gis/
β
βββ π index.html # File HTML utama
βββ π¨ style.css # Styling modern dengan CSS Variables
β
βββ π Data Files
β βββ map.geojson # Data SDN dan batas kecamatan
β βββ sd-smp-sma.geojson # Data sekolah (SD, SMP, SMA, Universitas)
β
βββ π js/ # Modular JavaScript Architecture
β βββ config.js # βοΈ Konfigurasi aplikasi (center, zoom, layers)
β βββ ui-utils.js # π UI utilities (loading, error, statistics)
β βββ marker-utils.js # π Custom marker creation & styling
β βββ popup-utils.js # π¬ Popup content generation
β βββ geojson-loader.js # π₯ GeoJSON data loader & processor
β βββ map-initializer.js # πΊοΈ Map initialization & setup
β βββ app.js # π Application entry point
β βββ README.md # π Dokumentasi struktur JavaScript
β
βββ π Documentation
β βββ README.md # Dokumentasi utama (file ini)
β βββ ARCHITECTURE.md # Diagram arsitektur & data flow
β βββ UI-IMPROVEMENTS.md # Dokumentasi UI/UX improvements
β
βββ π Backup
βββ map.js.backup # Backup file monolithic lama
- index.html: Entry point aplikasi dengan semantic HTML5
- style.css: Modern CSS dengan variables, animations, dan responsive design
- map.geojson: Data utama (batas kecamatan + lokasi SDN)
- sd-smp-sma.geojson: Data tambahan (SMP, SMA, SMK, Universitas, Madrasah)
Aplikasi menggunakan modular architecture dengan 7 module terpisah:
-
config.js (60 lines)
- Konfigurasi global (center coordinates, zoom, base maps)
- Data source paths
- Layer names & control positions
-
ui-utils.js (145 lines)
- Loading indicator (show/hide)
- Error notifications
- Statistics system (counter, animations)
- Info panel toggle
-
marker-utils.js (90 lines)
- Icon configuration per kategori
- Custom marker creation
- Color & symbol mapping
-
popup-utils.js (75 lines)
- Popup content generation
- HTML formatting
- Category-based styling
-
geojson-loader.js (115 lines)
- Fetch multiple GeoJSON files
- Process & add to map
- Feature styling
- Statistics tracking
-
map-initializer.js (120 lines)
- Create Leaflet map instance
- Setup base layers & overlays
- Add controls (zoom, layers, scale)
- Orchestrate initialization
-
app.js (30 lines)
- Application entry point
- DOM ready handler
- Initialize info panel & map
- Error handling
- README.md: Dokumentasi lengkap proyek (file ini)
- ARCHITECTURE.md: Diagram dependency, data flow, execution timeline
- UI-IMPROVEMENTS.md: Dokumentasi design system & UI enhancements
- Browser modern (Chrome, Firefox, Safari, Edge)
- Python 3.x (untuk HTTP server) ATAU
- VS Code dengan Live Server extension
# Clone atau download project
cd kecamatan-gunungpuyuh-gis
# Jalankan HTTP server
python -m http.server 8000
# Buka browser
# http://localhost:8000# 1. Install "Live Server" extension di VS Code
# 2. Buka folder project di VS Code
# 3. Klik kanan pada index.html
# 4. Pilih "Open with Live Server"# Double-click index.html
# Note: Mungkin ada CORS issue untuk loading GeoJSON files- Drag: Geser peta
- Scroll: Zoom in/out
- Click marker: Tampilkan info detail
- Click layer control: Toggle layers
- Drag: Geser peta
- Pinch: Zoom in/out
- Tap marker: Tampilkan info detail
- Tap βΉοΈ: Toggle info panel
Lokasi: Kiri atas (Layer Control)
Pilihan:
β OpenStreetMap (default)
β Satelit
Lokasi: Kiri atas (Layer Control)
Pilihan:
β Batas Kecamatan
β SDN/SD/SDIT
β SMP/SMPN/SMPIT
β SMA/SMAN/SMK
β Universitas
β Lainnya (Madrasah, dll)
Lokasi: Kanan atas
Aksi: Click button βΉοΈ
Konten:
- Statistik per kategori
- Panduan navigasi
- Panduan layer control
Aksi: Click pada marker
Konten:
- Nama institusi
- Jenis institusi
- Icon kategori
| Key | Action |
|---|---|
+ / = |
Zoom in |
- / _ |
Zoom out |
β β β β |
Pan map |
Shift + Drag |
Zoom to box |
User (Browser)
β
βββββββββββββββββββ
β index.html β β Load HTML structure
ββββββββββ¬βββββββββ
β
βββββββββββββββββββ
β style.css β β Modern styling & animations
βββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β JavaScript Modules β
β (Loaded in dependency order) β
β β
β 1. config.js β
β 2. ui-utils.js β
β 3. marker-utils.js β
β 4. popup-utils.js β
β 5. geojson-loader.js β
β 6. map-initializer.js β
β 7. app.js β
ββββββββββββ¬βββββββββββββββββββββββββββ
β
[Initialize Map]
β
ββββββββββ΄βββββββββ
β β
[Base Layers] [Overlays]
β β
[Leaflet.js Map Instance]
β
ββββββββββ΄βββββββββ
β β
[GeoJSON Data] [Controls]
- User opens
index.html - Browser loads CSS and JavaScript modules
- app.js waits for DOM ready
- MapInitializer creates Leaflet map instance
- GeoJSONLoader fetches data files (map.geojson + sd-smp-sma.geojson)
- MarkerUtils creates custom markers
- PopupUtils generates popup content
- UIUtils updates statistics counter
- Map ready for user interaction
config.js (Independent)
β
ui-utils.js
β
marker-utils.js
β
popup-utils.js
β
geojson-loader.js (Uses all above)
β
map-initializer.js (Orchestrator)
β
app.js (Entry point)
π Detail: Lihat ARCHITECTURE.md untuk diagram lengkap
Proyek ini mengimplementasikan best practices modern web development:
- Separation of Concerns: Setiap module punya tanggung jawab spesifik
- Single Responsibility Principle: Satu fungsi = satu tugas
- DRY (Don't Repeat Yourself): Reusable components
- Small Files: Setiap module < 150 lines
- Meaningful Names: Variable dan function names yang descriptive
- JSDoc Comments: Dokumentasi inline untuk setiap function
- Consistent Formatting: Indentation dan spacing konsisten
- Error Handling: Try-catch blocks dan user feedback
- Lazy Loading: Data loaded on demand
- Hardware Acceleration: CSS transforms untuk animations
- Efficient DOM Manipulation: Minimal reflows
- RequestAnimationFrame: Smooth 60fps animations
- CSS Variables: Centralized theming
- Mobile-First: Responsive breakpoints
- Flexbox & Grid Ready: Modern layout
- BEM-like Naming: Organized class names
- Smooth Transitions: cubic-bezier easing
- 60fps Performance: Hardware-accelerated
- Meaningful Animations: Enhance UX, not distract
- Proper Tags:
<header>,<main>,<footer>,<nav> - ARIA Labels: Accessibility support
- Meta Tags: SEO optimized
- Structured Data: Clear hierarchy
- Keyboard Navigation: Tab order, focus states
- Screen Reader Support: ARIA labels
- Color Contrast: WCAG AA compliant
- Scalable Text: Responsive font sizes
- No Inline Scripts: External JS files
- CSP Ready: Content Security Policy compatible
- Safe Data Handling: Input validation
- HTTPS Ready: Secure protocol support
Penelitian ini menggunakan metode kuantitatif dengan pendekatan analisis spasial:
-
Survey Lapangan
- Pengambilan koordinat GPS fasilitas
- Wawancara dengan pengelola fasilitas
- Dokumentasi foto
-
Analisis Spasial
- Distribution mapping
- Service area analysis (isochrone)
- Gap analysis
- Ratio compliance check
-
WebGIS Development
- Data processing (GeoJSON format)
- Interactive map development
- Statistics dashboard
- User testing
Metode: Point Pattern Analysis
Output: Peta sebaran fasilitas
Tools: Leaflet.js, GeoJSON
Metode: Isochrone (5, 10, 15 menit)
Output: Zona jangkauan layanan
Tools: OpenRouteService API / Mapbox
Metode: Overlay Analysis
Output: Area under-served identification
Tools: Turf.js / QGIS
Metode: Comparison dengan standar WHO/Kemenkes
Output: Compliance report
Tools: Statistical analysis
- Peta Distribusi Spasial: Visualisasi sebaran fasilitas
- Peta Aksesibilitas: Zona jangkauan berdasarkan waktu tempuh
- Identifikasi Gap: Kelurahan yang under-served
- Rekomendasi Lokasi: Titik optimal untuk fasilitas baru
- WebGIS Aplikasi: Platform informasi untuk publik
- Koordinat GPS: Survey lapangan dengan smartphone/GPS receiver
- Wawancara: Informasi dari pengelola fasilitas
- Observasi: Kondisi fisik fasilitas
- Peta Administratif: Batas kecamatan dari BPS
- Data Populasi: Sensus penduduk per kelurahan
- Standar Pelayanan: WHO, Kemenkes, Kemdikbud
- GeoJSON: Untuk data spasial (koordinat, geometri)
- JSON: Untuk data atribut (nama, kategori)
- CSV: Untuk data tabular (backup)
| Browser | Version | Status |
|---|---|---|
| Chrome | 90+ | β Fully Supported |
| Firefox | 88+ | β Fully Supported |
| Safari | 14+ | β Fully Supported |
| Edge | 90+ | β Fully Supported |
| Opera | 76+ | β Fully Supported |
| IE 11 | - | β Not Supported |
- β Basic map with layers
- β Custom markers
- β Statistics dashboard
- β Info panel
- β Responsive design
- β Modern UI/UX
- π Isochrone analysis (service area)
- π Search functionality
- π Routing/directions
- π Gap analysis visualization
- π Data export (CSV/PDF)
- π Dark mode toggle
- π User accounts (save preferences)
- π Marker clustering
- π Heatmap visualization
- π Compare scenarios
- π Admin dashboard
- π‘ Real-time data update
- π‘ Mobile app (PWA)
- π‘ Backend API
- π‘ Database integration
- π‘ Advanced analytics
Kontribusi sangat diterima! Berikut cara berkontribusi:
- Fork repository ini
- Create branch untuk fitur baru (
git checkout -b feature/AmazingFeature) - Commit perubahan (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - Open Pull Request
- β Follow existing code style
- β Write meaningful commit messages
- β Add comments untuk code yang complex
- β Test di multiple browsers
- β Update documentation
Laporkan bug melalui Issues dengan informasi:
- Browser & version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (jika ada)
MIT License
Copyright (c) 2025 Kecamatan Gunung Puyuh GIS Project
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Project: WebGIS Kecamatan Gunung Puyuh
- Location: Sukabumi, Jawa Barat, Indonesia
- οΏ½ Repository: github.com/VXerys/accessibility-gap-analysis-webgis
- π Website: kecamatan-gunungpuyuh.go.id
- π Documentation: GitHub Wiki
- π Issues: GitHub Issues
Lead Developer:
- M. Sechan Alfarisi (@VXerys) - NIM: 20230040094
Development Team:
- M. Akbar Rizky Saputra - NIM: 20230040236
- M. Fathir Bagas - NIM: 20230040126
- M. Sinar Agusta - NIM: 20230040188
- M. Ghibran Muslih - NIM: 20230040105
Terima kasih kepada:
- ποΈ Pemerintah Kecamatan Gunung Puyuh - Data dan dukungan
- πΊοΈ OpenStreetMap Contributors - Base map data
- π°οΈ Esri - Satellite imagery
- π Leaflet.js Team - Amazing mapping library
- π₯ Open Source Community - Inspiration dan tools
- Urban sprawl impact on public services
- GIS for urban planning
- Accessibility analysis methodology
- Service area analysis