diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d1094da --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM php:8.2-apache + +RUN docker-php-ext-install mysqli pdo pdo_mysql \ + && a2enmod rewrite + +COPY . /var/www/html/ + +RUN mkdir -p \ + /var/www/html/webgis02/uploads/jalan \ + /var/www/html/webgis02/uploads/parsil \ + /var/www/html/webgis02/uploads/jalan_rusak \ + /var/www/html/webgis-v3/uploads/bukti_bantuan \ + /var/www/html/webgis-v3/uploads/foto_laporan \ + && chown -R www-data:www-data /var/www/html diff --git a/index.html b/index.html new file mode 100644 index 0000000..258e4b4 --- /dev/null +++ b/index.html @@ -0,0 +1,1158 @@ + + + + + + Portal Combine WebGIS Pontianak + + + + + +
+ + + + + + +
+
+ + WebGIS Portal +
+

Pilih WebGIS yang ingin dibuka.

+

Akses cepat ke 5 project WebGIS dalam satu portal.

+ +
+
+ 04 + Publik +
+
+ 01 + Login +
+
+ 05 + Project +
+
+
+
+ +
+
+
+

Daftar Project

+

webgis01 - webgis04 publik, webgis-v3 login.

+
+ +
+ +
+
+
+
+ +
+ Tanpa login +
+

WebGIS 01

+

SPBU Interaktif

+
+ Leaflet + CRUD SPBU + PHP +
+
+ Buka Project + webgis01 +
+
+ +
+
+
+ +
+ Tanpa login +
+

WebGIS 02

+

Jalan, Parsil, Rusak

+
+ Leaflet Draw + Upload Foto + Multi layer +
+
+ Buka Project + webgis02 +
+
+ +
+
+
+ +
+ Tanpa login +
+

WebGIS 03

+

Kepadatan Penduduk

+
+ GeoJSON + Choropleth + Pontianak +
+
+ Buka Project + webgis03 +
+
+ +
+
+
+ +
+ Tanpa login +
+

WebGIS 04

+

SPBU Layer Control

+
+ Layer Control + SPBU + Filter status +
+
+ Buka Project + webgis04 +
+
+ + +
+ +
+ + + + + diff --git a/setup_databases.sql b/setup_databases.sql new file mode 100644 index 0000000..4575c95 --- /dev/null +++ b/setup_databases.sql @@ -0,0 +1,90 @@ +-- Setup database untuk CombineWebgis. +-- Import file ini lewat phpMyAdmin atau MySQL CLI setelah MySQL XAMPP berjalan normal. +-- Catatan: tabel project akan dibuat ulang agar schema bersih dan cocok dengan kode PHP. + +CREATE DATABASE IF NOT EXISTS db_spbu + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE db_spbu; + +DROP TABLE IF EXISTS spbu; + +CREATE TABLE spbu ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_spbu VARCHAR(100) NOT NULL, + no_wa VARCHAR(20) NOT NULL, + status ENUM('yes','no') NOT NULL DEFAULT 'no', + latitude DOUBLE NOT NULL, + longitude DOUBLE NOT NULL, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO spbu (nama_spbu, no_wa, status, latitude, longitude) VALUES +('SPBU Gajah Mada', '08115700101', 'yes', -0.0227, 109.3294), +('SPBU Ahmad Yani', '08115700102', 'no', -0.0350, 109.3350), +('SPBU Tanjungpura', '08115700103', 'yes', -0.0180, 109.3410); + +CREATE DATABASE IF NOT EXISTS webgis_db + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE webgis_db; + +DROP TABLE IF EXISTS tb_jalan_rusak; +DROP TABLE IF EXISTS tb_parsil; +DROP TABLE IF EXISTS tb_jalan; + +CREATE TABLE tb_jalan ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_jalan VARCHAR(200) NOT NULL, + status_jalan ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten', + panjang_meter DECIMAL(15,2) NOT NULL DEFAULT 0, + geojson LONGTEXT NOT NULL, + keterangan TEXT, + foto VARCHAR(255) NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE tb_parsil ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_pemilik VARCHAR(200) NOT NULL, + no_sertifikat VARCHAR(100) NOT NULL, + status_kepemilikan ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM', + luas_m2 DECIMAL(20,4) NOT NULL DEFAULT 0, + geojson LONGTEXT NOT NULL, + alamat TEXT, + foto VARCHAR(255) NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE tb_jalan_rusak ( + id INT(11) NOT NULL AUTO_INCREMENT, + lokasi VARCHAR(200) NOT NULL, + tingkat ENUM('Ringan','Sedang','Berat') NOT NULL DEFAULT 'Sedang', + jenis VARCHAR(100) NOT NULL DEFAULT '', + geojson LONGTEXT NOT NULL, + keterangan TEXT, + foto VARCHAR(255) NULL, + tanggal_lapor DATE NOT NULL DEFAULT (CURRENT_DATE), + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO tb_jalan (nama_jalan, status_jalan, panjang_meter, geojson, keterangan) VALUES +('Jl. Ahmad Yani','Nasional',1240.50,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3272,-0.0207],[109.3290,-0.0215],[109.3310,-0.0225],[109.3335,-0.0238]]},"properties":{}}','Jalan Nasional utama kota Pontianak'), +('Jl. Gajah Mada','Provinsi',870.00,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3250,-0.0260],[109.3265,-0.0270],[109.3280,-0.0285]]},"properties":{}}','Jalan Provinsi pusat kota'), +('Jl. Pahlawan','Kabupaten',540.75,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3300,-0.0300],[109.3315,-0.0310],[109.3325,-0.0322]]},"properties":{}}','Jalan Kabupaten lingkungan'); + +INSERT INTO tb_parsil (nama_pemilik, no_sertifikat, status_kepemilikan, luas_m2, geojson, alamat) VALUES +('Budi Santoso','SHM-001/PTK/2023','SHM',4500.00,'{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.3280,-0.0240],[109.3295,-0.0240],[109.3295,-0.0255],[109.3280,-0.0255],[109.3280,-0.0240]]]},"properties":{}}','Jl. Ahmad Yani No. 10, Pontianak'), +('PT. Maju Jaya','HGB-005/PTK/2022','HGB',12000.00,'{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.3310,-0.0220],[109.3330,-0.0220],[109.3330,-0.0240],[109.3310,-0.0240],[109.3310,-0.0220]]]},"properties":{}}','Kawasan Industri Pontianak'); + +INSERT INTO tb_jalan_rusak (lokasi, tingkat, jenis, geojson, keterangan, tanggal_lapor) VALUES +('Depan SPBU Jl. Ahmad Yani','Berat','Berlubang','{"type":"Feature","geometry":{"type":"Point","coordinates":[109.3285,-0.0212]},"properties":{}}','Lubang besar diameter sekitar 50cm, berbahaya bagi pengendara','2024-10-15'), +('Pertigaan Jl. Gajah Mada','Sedang','Retak','{"type":"Feature","geometry":{"type":"Point","coordinates":[109.3260,-0.0268]},"properties":{}}','Retak memanjang sepanjang 3 meter','2024-11-02'); diff --git a/webgis-v3/.htaccess b/webgis-v3/.htaccess new file mode 100644 index 0000000..dbc1b32 --- /dev/null +++ b/webgis-v3/.htaccess @@ -0,0 +1,13 @@ +Options -Indexes +RewriteEngine On + +# Route semua /api/* ke api/index.php +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^api/(.*)$ api/index.php [QSA,L] + +# Security + + Header set X-Content-Type-Options nosniff + Header set X-Frame-Options SAMEORIGIN + diff --git a/webgis-v3/README.md b/webgis-v3/README.md new file mode 100644 index 0000000..82fde6b --- /dev/null +++ b/webgis-v3/README.md @@ -0,0 +1,182 @@ +# WebGIS Pengentasan Kemiskinan — Pontianak v2.0 +### Sistem Informasi Geografis berbasis Masyarakat & Rumah Ibadah + +--- + +## 🏗️ Struktur Proyek + +``` +webgis-kemiskinan/ +├── index.html # Frontend utama +├── .htaccess # URL rewriting Apache +├── config/ +│ ├── app.php # Konstanta aplikasi +│ └── database.php # Koneksi PDO MySQL +├── includes/ +│ └── helpers.php # Auth, sanitasi, log, utils +├── api/ +│ ├── index.php # Router RESTful +│ └── controllers/ +│ ├── AuthController.php +│ ├── PendudukController.php +│ ├── KeluargaController.php +│ ├── BantuanController.php +│ ├── HistoriController.php +│ ├── LaporanController.php +│ ├── RumahIbadahController.php +│ ├── DashboardController.php +│ ├── PetaController.php +│ ├── PrioritasController.php +│ ├── ChatController.php +│ ├── LogController.php +│ ├── PeristiwaController.php +│ └── UserController.php +├── assets/ +│ ├── css/style.css +│ └── js/ +│ ├── api.js # HTTP helper +│ ├── app.js # Bootstrap & routing +│ ├── map.js # Leaflet engine +│ ├── dashboard.js +│ ├── penduduk.js +│ ├── keluarga.js +│ ├── bantuan.js +│ ├── laporan.js +│ └── ri.js # RI + Prioritas + Chat + Log +├── uploads/ +│ ├── foto_laporan/ +│ └── bukti_bantuan/ +└── sql/ + └── schema.sql # Database lengkap + seed data +``` + +--- + +## 🚀 Cara Instalasi + +### 1. Persyaratan +- PHP 8.0+ +- MySQL 5.7+ / MariaDB 10.3+ +- Apache/Nginx dengan mod_rewrite aktif + +### 2. Setup Database +```sql +mysql -u root -p < sql/schema.sql +``` +Atau import via phpMyAdmin. + +### 3. Konfigurasi +Edit `config/database.php`: +```php +define('DB_HOST', 'localhost'); +define('DB_NAME', 'webgis_kemiskinan'); +define('DB_USER', 'root'); +define('DB_PASS', 'password_anda'); +``` + +### 4. Web Server +Letakkan folder di `htdocs/` (XAMPP) atau `/var/www/html/`. + +``` +http://localhost/webgis-kemiskinan/ +``` + +### 5. Akun Demo +| Username | Password | Role | +|----------------|----------|------------| +| admin | admin123 | Admin | +| pengurus_jami | admin123 | Pengurus RI| +| pimpinan | admin123 | Pimpinan | +| warga1 | admin123 | Masyarakat | + +--- + +## 📡 API Endpoints + +| Method | Endpoint | Keterangan | +|--------|------------------------------|-------------------------------| +| POST | /api/auth | Login | +| DELETE | /api/auth/logout | Logout | +| GET | /api/auth/me | Info user saat ini | +| GET | /api/penduduk | List penduduk | +| POST | /api/penduduk | Tambah penduduk | +| PUT | /api/penduduk/:nik | Update penduduk | +| DELETE | /api/penduduk/:nik | Hapus penduduk | +| GET | /api/keluarga | List keluarga | +| POST | /api/keluarga | Tambah KK | +| GET | /api/bantuan | Jenis bantuan | +| POST | /api/histori | Catat penyaluran | +| GET | /api/histori/:nik/cek | Cek riwayat penerima | +| POST | /api/laporan | Kirim laporan (publik) | +| PUT | /api/laporan/:id | Update status laporan | +| GET | /api/rumah-ibadah | List rumah ibadah | +| GET | /api/dashboard | Statistik dashboard | +| GET | /api/peta?layer=penduduk | GeoJSON peta penduduk | +| GET | /api/peta?layer=rumah_ibadah | GeoJSON rumah ibadah | +| GET | /api/peta?layer=laporan | GeoJSON laporan | +| GET | /api/prioritas | Daftar prioritas bantuan | +| POST | /api/chat | Kirim pesan | +| POST | /api/peristiwa | Catat peristiwa kependudukan | +| GET | /api/log | Log aktivitas | + +--- + +## 🗄️ Struktur Database (ERD Ringkas) + +``` +role ──────────────────── user + │ + rumah_ibadah ┘ + │ + keluarga ─────── penduduk ──── histori_bantuan ─── bantuan + │ + laporan (opsional nik_terdampak) + riwayat_pendidikan + peristiwa_kependudukan + log_aktivitas +``` + +--- + +## 🎯 Fitur Sistem + +| # | Fitur | Status | +|---|-------|--------| +| 1 | CRUD Penduduk + validasi NIK 16 digit | ✅ | +| 2 | Umur otomatis dari tanggal lahir | ✅ | +| 3 | Validasi logika umur vs pendidikan | ✅ | +| 4 | Relasi Keluarga (KK → Anggota) | ✅ | +| 5 | Sistem peristiwa kependudukan | ✅ | +| 6 | Laporan masyarakat + status tracking | ✅ | +| 7 | Histori bantuan per NIK | ✅ | +| 8 | Cek penerima bantuan sebelumnya | ✅ | +| 9 | Multi-role (Admin/Pengurus/Pimpinan/Masyarakat) | ✅ | +| 10| WebGIS Leaflet + cluster + radius RI | ✅ | +| 11| Layer filter (miskin/rentan/mampu) | ✅ | +| 12| Prioritas bantuan otomatis (miskin+sakit) | ✅ | +| 13| Dashboard statistik real-time | ✅ | +| 14| Chat koordinasi antar pengurus | ✅ | +| 15| Log aktivitas sistem | ✅ | +| 16| Export CSV prioritas | ✅ | +| 17| Deteksi warga belum pernah dibantu | ✅ | +| 18| GeoJSON API untuk Leaflet | ✅ | + +--- + +## 🔒 Hak Akses per Role + +| Fitur | Admin | Pengurus | Pimpinan | Masyarakat | +|-----------------------|-------|----------|----------|------------| +| CRUD Penduduk | ✅ | ✅ | 👁 | ❌ | +| CRUD Keluarga | ✅ | ✅ | 👁 | ❌ | +| Salurkan Bantuan | ✅ | ✅ | ❌ | ❌ | +| Verifikasi Laporan | ✅ | ✅ | ❌ | ❌ | +| Kirim Laporan | ✅ | ✅ | ✅ | ✅ | +| Dashboard | ✅ | ✅ | ✅ | ❌ | +| Manajemen User | ✅ | ❌ | ❌ | ❌ | +| Chat Koordinasi | ✅ | ✅ | ❌ | ❌ | +| Log Aktivitas | ✅ | ❌ | ✅ | ❌ | + +--- + +*WebGIS Kemiskinan Pontianak v2.0 — Dikembangkan untuk mendukung intervensi bantuan sosial tepat sasaran berbasis data spasial.* diff --git a/webgis-v3/api/controllers/AuthController.php b/webgis-v3/api/controllers/AuthController.php new file mode 100644 index 0000000..73e9299 --- /dev/null +++ b/webgis-v3/api/controllers/AuthController.php @@ -0,0 +1,40 @@ +query("SELECT * FROM bantuan ORDER BY kategori, nama_bantuan")->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS, ROLE_PIMPINAN]); + $db = getDB(); + $stmt = $db->prepare("SELECT * FROM bantuan WHERE id = ?"); + $stmt->execute([$id]); + $row = $stmt->fetch(); + if (!$row) jsonError('Jenis bantuan tidak ditemukan', 404); + jsonSuccess($row); + } + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $errs = required($body, ['nama_bantuan', 'kategori']); + if ($errs) jsonError(implode('; ', $errs)); + $db = getDB(); + $db->prepare( + "INSERT INTO bantuan (nama_bantuan, kategori, sumber, deskripsi, satuan) + VALUES (?,?,?,?,?)" + )->execute([ + sanitize($body['nama_bantuan']), + $body['kategori'], + sanitize($body['sumber'] ?? ''), + sanitize($body['deskripsi'] ?? ''), + sanitize($body['satuan'] ?? ''), + ]); + jsonSuccess(['id' => getDB()->lastInsertId()], 'Jenis bantuan ditambahkan', 201); + } + public function update(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $db = getDB(); + $db->prepare( + "UPDATE bantuan SET nama_bantuan=?, kategori=?, sumber=?, deskripsi=?, satuan=?, aktif=? + WHERE id=?" + )->execute([ + sanitize($body['nama_bantuan'] ?? ''), + $body['kategori'] ?? 'lainnya', + sanitize($body['sumber'] ?? ''), + sanitize($body['deskripsi'] ?? ''), + sanitize($body['satuan'] ?? ''), + (int)($body['aktif'] ?? 1), + $id, + ]); + jsonSuccess([], 'Jenis bantuan diperbarui'); + } + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + $db = getDB(); + $db->prepare("DELETE FROM bantuan WHERE id = ?")->execute([$id]); + jsonSuccess([], 'Jenis bantuan dihapus'); + } +} diff --git a/webgis-v3/api/controllers/ChatController.php b/webgis-v3/api/controllers/ChatController.php new file mode 100644 index 0000000..3f3726b --- /dev/null +++ b/webgis-v3/api/controllers/ChatController.php @@ -0,0 +1,44 @@ +prepare($sql); + $roomId ? $stmt->execute([$roomId]) : $stmt->execute(); + jsonSuccess(array_reverse($stmt->fetchAll())); + } + public function show(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $db = getDB(); + $rows = $db->query("SELECT id, nama, deskripsi FROM chat_room ORDER BY nama")->fetchAll(); + jsonSuccess($rows); + } + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $user = currentUser(); + $body = getBody(); + $errs = required($body, ['pesan']); + if ($errs) jsonError(implode('; ',$errs)); + $db = getDB(); + $db->prepare("INSERT INTO chat (id_user, id_room, pesan) VALUES (?,?,?)")->execute([ + $user['id'], + $body['id_room'] ?? null, + sanitize($body['pesan']), + ]); + jsonSuccess(['id' => $db->lastInsertId()], 'Pesan terkirim', 201); + } + public function update(string $id): void { jsonError('N/A',405); } + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + getDB()->prepare("DELETE FROM chat WHERE id=?")->execute([$id]); + jsonSuccess([],'Pesan dihapus'); + } +} diff --git a/webgis-v3/api/controllers/DashboardController.php b/webgis-v3/api/controllers/DashboardController.php new file mode 100644 index 0000000..f6e5aa1 --- /dev/null +++ b/webgis-v3/api/controllers/DashboardController.php @@ -0,0 +1,80 @@ +query( + "SELECT + (SELECT COUNT(*) FROM penduduk WHERE status_hidup='hidup') AS total_penduduk, + (SELECT COUNT(*) FROM penduduk WHERE status_hidup='hidup' AND status_ekonomi='miskin') AS total_miskin, + (SELECT COUNT(*) FROM penduduk WHERE status_hidup='hidup' AND status_ekonomi='rentan') AS total_rentan, + (SELECT COUNT(*) FROM penduduk WHERE status_hidup='hidup' AND status_ekonomi='mampu') AS total_mampu, + (SELECT COUNT(*) FROM keluarga) AS total_kk, + (SELECT COUNT(*) FROM rumah_ibadah WHERE aktif=1) AS total_ri, + (SELECT COUNT(*) FROM laporan WHERE status='pending') AS laporan_pending, + (SELECT COUNT(*) FROM laporan WHERE urgensi='darurat' AND status NOT IN('selesai')) AS laporan_darurat, + (SELECT COUNT(DISTINCT nik) FROM histori_bantuan WHERE status_penyaluran='disalurkan') AS sudah_dibantu, + (SELECT COUNT(*) FROM histori_bantuan WHERE MONTH(tanggal)=MONTH(CURDATE()) AND YEAR(tanggal)=YEAR(CURDATE())) AS bantuan_bulan_ini" + )->fetch(); + + // Sebaran per kecamatan + $kec = $db->query( + "SELECT k.kecamatan, + COUNT(DISTINCT k.id) AS jumlah_kk, + SUM(CASE WHEN k.status_ekonomi='miskin' THEN 1 ELSE 0 END) AS miskin, + SUM(CASE WHEN k.status_ekonomi='rentan' THEN 1 ELSE 0 END) AS rentan + FROM keluarga k GROUP BY k.kecamatan ORDER BY miskin DESC" + )->fetchAll(); + + // Trend bantuan 6 bulan + $trend = $db->query( + "SELECT DATE_FORMAT(tanggal,'%Y-%m') AS bulan, COUNT(*) AS jumlah + FROM histori_bantuan + WHERE tanggal >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) + GROUP BY bulan ORDER BY bulan" + )->fetchAll(); + + // Belum pernah dibantu (miskin) + $belum = $db->query( + "SELECT COUNT(*) AS c FROM penduduk p + WHERE p.status_ekonomi IN ('miskin','rentan') + AND p.status_hidup='hidup' + AND NOT EXISTS (SELECT 1 FROM histori_bantuan hb WHERE hb.nik=p.nik AND hb.status_penyaluran='disalurkan')" + )->fetch()['c']; + + // Prioritas darurat + $prioritas = $db->query( + "SELECT * FROM v_prioritas_bantuan + WHERE level_prioritas IN ('SANGAT TINGGI','TINGGI') + LIMIT 10" + )->fetchAll(); + + // Beban per RI + $bebanRI = $db->query( + "SELECT ri.nama, ri.jenis, + COUNT(DISTINCT k.id) AS jumlah_kk, + SUM(CASE WHEN k.status_ekonomi='miskin' THEN 1 ELSE 0 END) AS kk_miskin + FROM rumah_ibadah ri + LEFT JOIN keluarga k ON k.id_rumah_ibadah=ri.id + WHERE ri.aktif=1 + GROUP BY ri.id ORDER BY kk_miskin DESC" + )->fetchAll(); + + jsonSuccess([ + 'statistik' => $stat, + 'sebaran_kecamatan' => $kec, + 'trend_bantuan' => $trend, + 'belum_dibantu' => (int)$belum, + 'prioritas_darurat' => $prioritas, + 'beban_per_ri' => $bebanRI, + ]); + } + + public function show(string $id): void { jsonError('Not implemented', 501); } + public function store(): void { jsonError('Not implemented', 501); } + public function update(string $id): void { jsonError('Not implemented', 501); } + public function destroy(string $id): void { jsonError('Not implemented', 501); } +} diff --git a/webgis-v3/api/controllers/HistoriController.php b/webgis-v3/api/controllers/HistoriController.php new file mode 100644 index 0000000..b613e80 --- /dev/null +++ b/webgis-v3/api/controllers/HistoriController.php @@ -0,0 +1,121 @@ +prepare($sql); + $stmt->execute($params); + jsonSuccess($stmt->fetchAll()); + } + + public function show(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS, ROLE_PIMPINAN]); + $db = getDB(); + $stmt = $db->prepare( + "SELECT hb.*, b.nama_bantuan, b.kategori, p.nama_lengkap, ri.nama AS nama_ri + FROM histori_bantuan hb + JOIN bantuan b ON hb.id_bantuan=b.id + JOIN penduduk p ON hb.nik=p.nik + LEFT JOIN rumah_ibadah ri ON hb.id_rumah_ibadah=ri.id + WHERE hb.id=?" + ); + $stmt->execute([$id]); + $row = $stmt->fetch(); + if (!$row) jsonError('Histori tidak ditemukan', 404); + jsonSuccess($row); + } + + /** POST /api/histori — catat penyaluran bantuan */ + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $errs = required($body, ['nik', 'id_bantuan', 'tanggal']); + if ($errs) jsonError(implode('; ', $errs)); + + $user = currentUser(); + $db = getDB(); + + // Cek penduduk ada + $chk = $db->prepare("SELECT nik FROM penduduk WHERE nik = ?"); + $chk->execute([$body['nik']]); + if (!$chk->fetch()) jsonError('NIK penduduk tidak ditemukan', 404); + + $db->prepare( + "INSERT INTO histori_bantuan + (nik, id_bantuan, id_rumah_ibadah, id_user, tanggal, jumlah, keterangan, status_penyaluran) + VALUES (?,?,?,?,?,?,?,?)" + )->execute([ + $body['nik'], + (int)$body['id_bantuan'], + $body['id_rumah_ibadah'] ?? null, + $user['id'], + $body['tanggal'], + (float)($body['jumlah'] ?? 1), + sanitize($body['keterangan'] ?? ''), + $body['status_penyaluran'] ?? 'disalurkan', + ]); + $newId = $db->lastInsertId(); + logActivity('create_histori_bantuan', 'histori_bantuan', $newId, [], $body); + jsonSuccess(['id' => $newId], 'Histori bantuan dicatat', 201); + } + + public function update(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $db = getDB(); + $db->prepare( + "UPDATE histori_bantuan SET status_penyaluran=?, keterangan=?, jumlah=? WHERE id=?" + )->execute([ + $body['status_penyaluran'] ?? 'disalurkan', + sanitize($body['keterangan'] ?? ''), + (float)($body['jumlah'] ?? 1), + $id, + ]); + logActivity('update_histori_bantuan', 'histori_bantuan', $id, [], $body); + jsonSuccess([], 'Histori bantuan diperbarui'); + } + + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + $db = getDB(); + $db->prepare("DELETE FROM histori_bantuan WHERE id=?")->execute([$id]); + jsonSuccess([], 'Histori bantuan dihapus'); + } + + /** GET /api/histori/:nik/cek */ + public function cek(string $nik): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $db = getDB(); + $stmt = $db->prepare( + "SELECT COUNT(*) AS total, + GROUP_CONCAT(DISTINCT b.nama_bantuan ORDER BY b.nama_bantuan SEPARATOR ', ') AS jenis_bantuan, + MAX(hb.tanggal) AS terakhir_dibantu + FROM histori_bantuan hb + JOIN bantuan b ON hb.id_bantuan=b.id + WHERE hb.nik=? AND hb.status_penyaluran='disalurkan'" + ); + $stmt->execute([$nik]); + jsonSuccess($stmt->fetch()); + } +} diff --git a/webgis-v3/api/controllers/KeluargaController.php b/webgis-v3/api/controllers/KeluargaController.php new file mode 100644 index 0000000..ec07b52 --- /dev/null +++ b/webgis-v3/api/controllers/KeluargaController.php @@ -0,0 +1,123 @@ +prepare($sql); + $stmt->execute($params); + jsonSuccess($stmt->fetchAll()); + } + + public function show(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS, ROLE_PIMPINAN]); + $db = getDB(); + $stmt = $db->prepare( + "SELECT k.*, ri.nama AS nama_ri FROM keluarga k + LEFT JOIN rumah_ibadah ri ON k.id_rumah_ibadah = ri.id + WHERE k.id = ?" + ); + $stmt->execute([$id]); + $kk = $stmt->fetch(); + if (!$kk) jsonError('Keluarga tidak ditemukan', 404); + + $anggota = $db->prepare( + "SELECT nik, nama_lengkap, jenis_kelamin, status_keluarga, + TIMESTAMPDIFF(YEAR, tanggal_lahir, CURDATE()) AS umur, + pekerjaan, penghasilan, status_ekonomi, kondisi_kesehatan, + pendidikan_terakhir, status_pendidikan, status_hidup + FROM penduduk WHERE id_keluarga = ? ORDER BY status_keluarga" + ); + $anggota->execute([$id]); + $kk['anggota'] = $anggota->fetchAll(); + jsonSuccess($kk); + } + + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $errs = required($body, ['no_kk', 'nama_kepala']); + if ($errs) jsonError(implode('; ', $errs)); + if (!preg_match('/^\d{16}$/', $body['no_kk'])) jsonError('No KK harus 16 digit'); + + $db = getDB(); + $chk = $db->prepare("SELECT id FROM keluarga WHERE no_kk = ?"); + $chk->execute([$body['no_kk']]); + if ($chk->fetch()) jsonError('No KK sudah terdaftar', 409); + + $db->prepare( + "INSERT INTO keluarga (no_kk, id_rumah_ibadah, nama_kepala, alamat, rt, rw, + kelurahan, kecamatan, lat, lng, status_ekonomi) + VALUES (?,?,?,?,?,?,?,?,?,?,?)" + )->execute([ + $body['no_kk'], + $body['id_rumah_ibadah'] ?? null, + sanitize($body['nama_kepala']), + sanitize($body['alamat'] ?? ''), + sanitize($body['rt'] ?? ''), + sanitize($body['rw'] ?? ''), + sanitize($body['kelurahan'] ?? ''), + sanitize($body['kecamatan'] ?? ''), + $body['lat'] ?? null, + $body['lng'] ?? null, + $body['status_ekonomi'] ?? 'rentan', + ]); + $newId = $db->lastInsertId(); + logActivity('create_keluarga', 'keluarga', $newId, [], $body); + jsonSuccess(['id' => $newId], 'Data keluarga berhasil disimpan', 201); + } + + public function update(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $db = getDB(); + $body = getBody(); + $db->prepare( + "UPDATE keluarga SET id_rumah_ibadah=?, nama_kepala=?, alamat=?, + rt=?, rw=?, kelurahan=?, kecamatan=?, lat=?, lng=?, status_ekonomi=? + WHERE id=?" + )->execute([ + $body['id_rumah_ibadah'] ?? null, + sanitize($body['nama_kepala'] ?? ''), + sanitize($body['alamat'] ?? ''), + sanitize($body['rt'] ?? ''), + sanitize($body['rw'] ?? ''), + sanitize($body['kelurahan'] ?? ''), + sanitize($body['kecamatan'] ?? ''), + $body['lat'] ?? null, + $body['lng'] ?? null, + $body['status_ekonomi'] ?? 'rentan', + $id, + ]); + logActivity('update_keluarga', 'keluarga', $id, [], $body); + jsonSuccess([], 'Data keluarga diperbarui'); + } + + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + $db = getDB(); + $chk = $db->prepare("SELECT COUNT(*) AS c FROM penduduk WHERE id_keluarga = ?"); + $chk->execute([$id]); + if ($chk->fetch()['c'] > 0) jsonError('Tidak bisa hapus — masih ada anggota keluarga', 409); + $db->prepare("DELETE FROM keluarga WHERE id = ?")->execute([$id]); + logActivity('delete_keluarga', 'keluarga', $id); + jsonSuccess([], 'Data keluarga dihapus'); + } +} diff --git a/webgis-v3/api/controllers/LaporanController.php b/webgis-v3/api/controllers/LaporanController.php new file mode 100644 index 0000000..d178431 --- /dev/null +++ b/webgis-v3/api/controllers/LaporanController.php @@ -0,0 +1,91 @@ +prepare($sql); + $stmt->execute($params); + jsonSuccess($stmt->fetchAll()); + } + + public function show(string $id): void { + $db = getDB(); + $stmt = $db->prepare( + "SELECT l.*, ri.nama AS nama_ri, p.nama_lengkap AS nama_terdampak + FROM laporan l + LEFT JOIN rumah_ibadah ri ON l.id_rumah_ibadah=ri.id + LEFT JOIN penduduk p ON l.nik_terdampak=p.nik + WHERE l.id=?" + ); + $stmt->execute([$id]); + $row = $stmt->fetch(); + if (!$row) jsonError('Laporan tidak ditemukan', 404); + jsonSuccess($row); + } + + /** POST /api/laporan — siapa saja bisa lapor */ + public function store(): void { + $body = getBody(); + $errs = required($body, ['deskripsi']); + if ($errs) jsonError(implode('; ', $errs)); + + $db = getDB(); + $db->prepare( + "INSERT INTO laporan + (nama_pelapor, no_hp_pelapor, nik_terdampak, id_rumah_ibadah, + deskripsi, lat, lng, alamat_laporan, urgensi) + VALUES (?,?,?,?,?,?,?,?,?)" + )->execute([ + sanitize($body['nama_pelapor'] ?? ''), + sanitize($body['no_hp_pelapor'] ?? ''), + $body['nik_terdampak'] ?? null, + $body['id_rumah_ibadah'] ?? null, + sanitize($body['deskripsi']), + $body['lat'] ?? null, + $body['lng'] ?? null, + sanitize($body['alamat_laporan'] ?? ''), + $body['urgensi'] ?? 'sedang', + ]); + $newId = $db->lastInsertId(); + jsonSuccess(['id' => $newId], 'Laporan berhasil dikirim. Terima kasih!', 201); + } + + /** PUT /api/laporan/:id — verifikasi / update status */ + public function update(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $user = currentUser(); + $body = getBody(); + $db = getDB(); + + $db->prepare( + "UPDATE laporan SET status=?, catatan_verifikasi=?, + id_verifikator=?, tgl_verifikasi=NOW() + WHERE id=?" + )->execute([ + $body['status'] ?? 'diverifikasi', + sanitize($body['catatan_verifikasi'] ?? ''), + $user['id'], + $id, + ]); + logActivity('update_laporan', 'laporan', $id, [], $body); + jsonSuccess([], 'Status laporan diperbarui'); + } + + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + getDB()->prepare("DELETE FROM laporan WHERE id=?")->execute([$id]); + jsonSuccess([], 'Laporan dihapus'); + } +} diff --git a/webgis-v3/api/controllers/LogController.php b/webgis-v3/api/controllers/LogController.php new file mode 100644 index 0000000..589bfe3 --- /dev/null +++ b/webgis-v3/api/controllers/LogController.php @@ -0,0 +1,18 @@ +query( + "SELECT l.*, u.nama_lengkap FROM log_aktivitas l + LEFT JOIN user u ON l.id_user=u.id + ORDER BY l.created_at DESC LIMIT 100" + )->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { jsonError('N/A',501); } + public function store(): void { jsonError('N/A',405); } + public function update(string $id): void { jsonError('N/A',405); } + public function destroy(string $id): void { jsonError('N/A',405); } +} diff --git a/webgis-v3/api/controllers/PendudukController.php b/webgis-v3/api/controllers/PendudukController.php new file mode 100644 index 0000000..20db0f8 --- /dev/null +++ b/webgis-v3/api/controllers/PendudukController.php @@ -0,0 +1,239 @@ +prepare($sql); + $stmt->execute($params); + $rows = $stmt->fetchAll(); + jsonSuccess($rows); + } + + /** GET /api/penduduk/:nik */ + public function show(string $nik): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS, ROLE_PIMPINAN]); + $db = getDB(); + + $stmt = $db->prepare( + "SELECT p.*, TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur, + k.no_kk, k.nama_kepala, k.alamat, k.rt, k.rw, k.kelurahan, k.kecamatan, + ri.nama AS nama_ri, ri.jenis AS jenis_ri + FROM penduduk p + JOIN keluarga k ON p.id_keluarga = k.id + LEFT JOIN rumah_ibadah ri ON k.id_rumah_ibadah = ri.id + WHERE p.nik = ?" + ); + $stmt->execute([$nik]); + $row = $stmt->fetch(); + if (!$row) jsonError('Penduduk tidak ditemukan', 404); + + // Histori bantuan + $stmt2 = $db->prepare( + "SELECT hb.*, b.nama_bantuan, b.kategori, ri.nama AS nama_ri + FROM histori_bantuan hb + JOIN bantuan b ON hb.id_bantuan = b.id + LEFT JOIN rumah_ibadah ri ON hb.id_rumah_ibadah = ri.id + WHERE hb.nik = ? ORDER BY hb.tanggal DESC" + ); + $stmt2->execute([$nik]); + $row['histori_bantuan'] = $stmt2->fetchAll(); + + // Riwayat pendidikan + $stmt3 = $db->prepare("SELECT * FROM riwayat_pendidikan WHERE nik = ? ORDER BY tahun_masuk DESC"); + $stmt3->execute([$nik]); + $row['riwayat_pendidikan'] = $stmt3->fetchAll(); + + // Peristiwa + $stmt4 = $db->prepare("SELECT * FROM peristiwa_kependudukan WHERE nik = ? ORDER BY tanggal DESC"); + $stmt4->execute([$nik]); + $row['peristiwa'] = $stmt4->fetchAll(); + + jsonSuccess($row); + } + + /** POST /api/penduduk */ + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + + $errs = required($body, ['nik','id_keluarga','nama_lengkap','jenis_kelamin','tanggal_lahir']); + if ($errs) jsonError(implode('; ', $errs)); + + // Validasi NIK 16 digit + if (!preg_match('/^\d{16}$/', $body['nik'])) jsonError('NIK harus 16 digit angka'); + + $db = getDB(); + + // Cek duplikat + $chk = $db->prepare("SELECT nik FROM penduduk WHERE nik = ?"); + $chk->execute([$body['nik']]); + if ($chk->fetch()) jsonError('NIK sudah terdaftar', 409); + + // Hitung umur + $tgl = new DateTime($body['tanggal_lahir']); + $umur = (new DateTime())->diff($tgl)->y; + + // Validasi pendidikan + $warnings = validasiPendidikan( + $umur, + $body['pendidikan_terakhir'] ?? 'tidak_sekolah', + $body['status_pendidikan'] ?? 'tidak_sekolah' + ); + + $db->prepare( + "INSERT INTO penduduk + (nik, id_keluarga, nama_lengkap, jenis_kelamin, tanggal_lahir, tempat_lahir, + status_keluarga, status_perkawinan, status_hidup, agama, pekerjaan, penghasilan, + status_ekonomi, pendidikan_terakhir, status_pendidikan, kondisi_kesehatan, + keterangan_kesehatan, lat, lng) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" + )->execute([ + $body['nik'], + (int)$body['id_keluarga'], + sanitize($body['nama_lengkap']), + $body['jenis_kelamin'], + $body['tanggal_lahir'], + sanitize($body['tempat_lahir'] ?? ''), + $body['status_keluarga'] ?? 'anak', + $body['status_perkawinan'] ?? 'belum_kawin', + $body['status_hidup'] ?? 'hidup', + $body['agama'] ?? null, + sanitize($body['pekerjaan'] ?? ''), + (int)($body['penghasilan'] ?? 0), + $body['status_ekonomi'] ?? 'rentan', + $body['pendidikan_terakhir'] ?? 'tidak_sekolah', + $body['status_pendidikan'] ?? 'tidak_sekolah', + $body['kondisi_kesehatan'] ?? 'sehat', + sanitize($body['keterangan_kesehatan'] ?? ''), + $body['lat'] ?? null, + $body['lng'] ?? null, + ]); + + logActivity('create_penduduk', 'penduduk', $body['nik'], [], $body); + jsonSuccess(['nik' => $body['nik'], 'warnings' => $warnings], 'Data penduduk berhasil disimpan', 201); + } + + /** PUT /api/penduduk/:nik */ + public function update(string $nik): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $db = getDB(); + + $old = $db->prepare("SELECT * FROM penduduk WHERE nik = ?"); + $old->execute([$nik]); + $existing = $old->fetch(); + if (!$existing) jsonError('Penduduk tidak ditemukan', 404); + + $body = getBody(); + + $tgl = new DateTime($body['tanggal_lahir'] ?? $existing['tanggal_lahir']); + $umur = (new DateTime())->diff($tgl)->y; + $warnings = validasiPendidikan( + $umur, + $body['pendidikan_terakhir'] ?? $existing['pendidikan_terakhir'], + $body['status_pendidikan'] ?? $existing['status_pendidikan'] + ); + + $db->prepare( + "UPDATE penduduk SET + nama_lengkap=?, jenis_kelamin=?, tanggal_lahir=?, tempat_lahir=?, + status_keluarga=?, status_perkawinan=?, status_hidup=?, agama=?, + pekerjaan=?, penghasilan=?, status_ekonomi=?, + pendidikan_terakhir=?, status_pendidikan=?, + kondisi_kesehatan=?, keterangan_kesehatan=?, lat=?, lng=? + WHERE nik=?" + )->execute([ + sanitize($body['nama_lengkap'] ?? $existing['nama_lengkap']), + $body['jenis_kelamin'] ?? $existing['jenis_kelamin'], + $body['tanggal_lahir'] ?? $existing['tanggal_lahir'], + sanitize($body['tempat_lahir'] ?? $existing['tempat_lahir']), + $body['status_keluarga'] ?? $existing['status_keluarga'], + $body['status_perkawinan'] ?? $existing['status_perkawinan'], + $body['status_hidup'] ?? $existing['status_hidup'], + $body['agama'] ?? $existing['agama'], + sanitize($body['pekerjaan'] ?? $existing['pekerjaan']), + (int)($body['penghasilan'] ?? $existing['penghasilan']), + $body['status_ekonomi'] ?? $existing['status_ekonomi'], + $body['pendidikan_terakhir'] ?? $existing['pendidikan_terakhir'], + $body['status_pendidikan'] ?? $existing['status_pendidikan'], + $body['kondisi_kesehatan'] ?? $existing['kondisi_kesehatan'], + sanitize($body['keterangan_kesehatan'] ?? $existing['keterangan_kesehatan']), + $body['lat'] ?? $existing['lat'], + $body['lng'] ?? $existing['lng'], + $nik, + ]); + + logActivity('update_penduduk', 'penduduk', $nik, $existing, $body); + jsonSuccess(['nik' => $nik, 'warnings' => $warnings], 'Data penduduk berhasil diperbarui'); + } + + /** DELETE /api/penduduk/:nik */ + public function destroy(string $nik): void { + requireAuth([ROLE_ADMIN]); + $db = getDB(); + $stmt = $db->prepare("SELECT nik FROM penduduk WHERE nik = ?"); + $stmt->execute([$nik]); + if (!$stmt->fetch()) jsonError('Penduduk tidak ditemukan', 404); + + $db->prepare("DELETE FROM penduduk WHERE nik = ?")->execute([$nik]); + logActivity('delete_penduduk', 'penduduk', $nik); + jsonSuccess([], 'Data penduduk dihapus'); + } + + /** GET /api/penduduk/:nik/validasi-pendidikan */ + public function validasiPendidikan(string $nik): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $db = getDB(); + $stmt = $db->prepare( + "SELECT nik, nama_lengkap, + TIMESTAMPDIFF(YEAR, tanggal_lahir, CURDATE()) AS umur, + pendidikan_terakhir, status_pendidikan + FROM penduduk WHERE nik = ?" + ); + $stmt->execute([$nik]); + $row = $stmt->fetch(); + if (!$row) jsonError('Penduduk tidak ditemukan', 404); + + $warnings = validasiPendidikan($row['umur'], $row['pendidikan_terakhir'], $row['status_pendidikan']); + jsonSuccess(['penduduk' => $row, 'warnings' => $warnings]); + } +} diff --git a/webgis-v3/api/controllers/PeristiwaController.php b/webgis-v3/api/controllers/PeristiwaController.php new file mode 100644 index 0000000..2c94a97 --- /dev/null +++ b/webgis-v3/api/controllers/PeristiwaController.php @@ -0,0 +1,53 @@ +query( + "SELECT pk.*, p.nama_lengkap FROM peristiwa_kependudukan pk + JOIN penduduk p ON pk.nik=p.nik + ORDER BY pk.tanggal DESC LIMIT 100" + )->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { jsonError('N/A',501); } + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $user = currentUser(); + $body = getBody(); + $errs = required($body, ['nik','jenis','tanggal']); + if ($errs) jsonError(implode('; ',$errs)); + $db = getDB(); + + $db->prepare( + "INSERT INTO peristiwa_kependudukan (nik,jenis,tanggal,keterangan,id_user) + VALUES (?,?,?,?,?)" + )->execute([ + $body['nik'], $body['jenis'], $body['tanggal'], + sanitize($body['keterangan'] ?? ''), $user['id'], + ]); + + // Otomatis update status penduduk + switch ($body['jenis']) { + case 'kematian': + $db->prepare("UPDATE penduduk SET status_hidup='meninggal' WHERE nik=?")->execute([$body['nik']]); + break; + case 'pernikahan': + $db->prepare("UPDATE penduduk SET status_perkawinan='kawin' WHERE nik=?")->execute([$body['nik']]); + break; + case 'perceraian': + $db->prepare("UPDATE penduduk SET status_perkawinan='cerai_hidup' WHERE nik=?")->execute([$body['nik']]); + break; + } + + logActivity('peristiwa_'.$body['jenis'], 'penduduk', $body['nik'], [], $body); + jsonSuccess(['id' => $db->lastInsertId()], 'Peristiwa dicatat', 201); + } + public function update(string $id): void { jsonError('N/A',405); } + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + getDB()->prepare("DELETE FROM peristiwa_kependudukan WHERE id=?")->execute([$id]); + jsonSuccess([],'Peristiwa dihapus'); + } +} diff --git a/webgis-v3/api/controllers/PetaController.php b/webgis-v3/api/controllers/PetaController.php new file mode 100644 index 0000000..430f32c --- /dev/null +++ b/webgis-v3/api/controllers/PetaController.php @@ -0,0 +1,80 @@ +query("SELECT id,nama,jenis,lat,lng,radius_meter,alamat FROM rumah_ibadah WHERE aktif=1 AND lat IS NOT NULL")->fetchAll(); + $features = []; + foreach ($rows as $r) { + $features[] = [ + 'type' => 'Feature', + 'geometry' => ['type'=>'Point','coordinates'=>[(float)$r['lng'],(float)$r['lat']]], + 'properties' => $r, + ]; + } + jsonSuccess(['type'=>'FeatureCollection','features'=>$features]); + return; + } + + if ($layer === 'laporan') { + $rows = $db->query( + "SELECT id,nama_pelapor,deskripsi,lat,lng,urgensi,status,alamat_laporan FROM laporan + WHERE lat IS NOT NULL ORDER BY FIELD(urgensi,'darurat','tinggi','sedang','rendah')" + )->fetchAll(); + $features = []; + foreach ($rows as $r) { + $features[] = [ + 'type' => 'Feature', + 'geometry' => ['type'=>'Point','coordinates'=>[(float)$r['lng'],(float)$r['lat']]], + 'properties' => $r, + ]; + } + jsonSuccess(['type'=>'FeatureCollection','features'=>$features]); + return; + } + + // Default: penduduk (keluarga sebagai titik) + $sql = "SELECT k.id, k.no_kk, k.nama_kepala, k.alamat, k.kecamatan, + k.lat, k.lng, k.status_ekonomi, + ri.nama AS nama_ri, + COUNT(p.nik) AS jumlah_anggota, + COUNT(DISTINCT hb.id) AS total_bantuan + FROM keluarga k + LEFT JOIN rumah_ibadah ri ON k.id_rumah_ibadah=ri.id + LEFT JOIN penduduk p ON p.id_keluarga=k.id AND p.status_hidup='hidup' + LEFT JOIN histori_bantuan hb ON hb.nik=p.nik + WHERE k.lat IS NOT NULL"; + $params = []; + if (!empty($_GET['status_ekonomi'])) { + $sql .= " AND k.status_ekonomi=?"; $params[] = $_GET['status_ekonomi']; + } + $sql .= " GROUP BY k.id"; + $stmt = $db->prepare($sql); + $stmt->execute($params); + $rows = $stmt->fetchAll(); + + $features = []; + foreach ($rows as $r) { + $color = match($r['status_ekonomi']) { + 'miskin' => '#ef4444', + 'rentan' => '#f59e0b', + default => '#22c55e', + }; + $r['color'] = $color; + $features[] = [ + 'type' => 'Feature', + 'geometry' => ['type'=>'Point','coordinates'=>[(float)$r['lng'],(float)$r['lat']]], + 'properties' => $r, + ]; + } + jsonSuccess(['type'=>'FeatureCollection','features'=>$features]); + } + public function show(string $id): void { jsonError('Not implemented', 501); } + public function store(): void { jsonError('Not implemented', 501); } + public function update(string $id): void { jsonError('Not implemented', 501); } + public function destroy(string $id): void { jsonError('Not implemented', 501); } +} diff --git a/webgis-v3/api/controllers/PrioritasController.php b/webgis-v3/api/controllers/PrioritasController.php new file mode 100644 index 0000000..3f4994e --- /dev/null +++ b/webgis-v3/api/controllers/PrioritasController.php @@ -0,0 +1,19 @@ +query("SELECT * FROM v_prioritas_bantuan ORDER BY FIELD(level_prioritas,'SANGAT TINGGI','TINGGI','SEDANG','RENDAH'), jumlah_dibantu ASC")->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { jsonError('N/A',501); } + public function store(): void { jsonError('N/A',501); } + public function update(string $id): void { jsonError('N/A',501); } + public function destroy(string $id): void { jsonError('N/A',501); } +} + +// ---------------------------------------------------------------- +// api/controllers/ChatController.php (in same file for brevity) +// ---------------------------------------------------------------- +// Normally in its own file — included separately below diff --git a/webgis-v3/api/controllers/RumahIbadahController.php b/webgis-v3/api/controllers/RumahIbadahController.php new file mode 100644 index 0000000..9f53522 --- /dev/null +++ b/webgis-v3/api/controllers/RumahIbadahController.php @@ -0,0 +1,73 @@ +query( + "SELECT ri.*, u.nama_lengkap AS nama_pengurus, + COUNT(DISTINCT k.id) AS jumlah_kk, + COUNT(DISTINCT p.nik) AS jumlah_penduduk + FROM rumah_ibadah ri + LEFT JOIN user u ON ri.id_user=u.id + LEFT JOIN keluarga k ON k.id_rumah_ibadah=ri.id + LEFT JOIN penduduk p ON p.id_keluarga=k.id AND p.status_hidup='hidup' + WHERE ri.aktif=1 + GROUP BY ri.id ORDER BY ri.jenis, ri.nama" + )->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { + $db = getDB(); + $stmt = $db->prepare("SELECT ri.*, u.nama_lengkap AS nama_pengurus FROM rumah_ibadah ri LEFT JOIN user u ON ri.id_user=u.id WHERE ri.id=?"); + $stmt->execute([$id]); + $row = $stmt->fetch(); + if (!$row) jsonError('Rumah ibadah tidak ditemukan', 404); + jsonSuccess($row); + } + public function store(): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $errs = required($body, ['nama','jenis','lat','lng']); + if ($errs) jsonError(implode('; ',$errs)); + $db = getDB(); + $db->prepare( + "INSERT INTO rumah_ibadah (id_user,nama,jenis,alamat,lat,lng,radius_meter,kontak,kecamatan,kelurahan) + VALUES (?,?,?,?,?,?,?,?,?,?)" + )->execute([ + $body['id_user'] ?? null, + sanitize($body['nama']), + $body['jenis'], + sanitize($body['alamat'] ?? ''), + $body['lat'], $body['lng'], + (int)($body['radius_meter'] ?? 300), + sanitize($body['kontak'] ?? ''), + sanitize($body['kecamatan'] ?? ''), + sanitize($body['kelurahan'] ?? ''), + ]); + jsonSuccess(['id' => $db->lastInsertId()], 'Rumah ibadah ditambahkan', 201); + } + public function update(string $id): void { + requireAuth([ROLE_ADMIN, ROLE_PENGURUS]); + $body = getBody(); + $db = getDB(); + $db->prepare( + "UPDATE rumah_ibadah SET nama=?,jenis=?,alamat=?,lat=?,lng=?,radius_meter=?,kontak=?,kecamatan=?,kelurahan=? WHERE id=?" + )->execute([ + sanitize($body['nama'] ?? ''), + $body['jenis'] ?? 'Masjid', + sanitize($body['alamat'] ?? ''), + $body['lat'] ?? 0, $body['lng'] ?? 0, + (int)($body['radius_meter'] ?? 300), + sanitize($body['kontak'] ?? ''), + sanitize($body['kecamatan'] ?? ''), + sanitize($body['kelurahan'] ?? ''), + $id, + ]); + jsonSuccess([], 'Rumah ibadah diperbarui'); + } + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + getDB()->prepare("UPDATE rumah_ibadah SET aktif=0 WHERE id=?")->execute([$id]); + jsonSuccess([], 'Rumah ibadah dinonaktifkan'); + } +} diff --git a/webgis-v3/api/controllers/UserController.php b/webgis-v3/api/controllers/UserController.php new file mode 100644 index 0000000..1e3e83c --- /dev/null +++ b/webgis-v3/api/controllers/UserController.php @@ -0,0 +1,74 @@ +query( + "SELECT u.id, u.username, u.nama_lengkap, u.email, u.no_hp, + u.aktif, u.last_login, u.created_at, r.nama_role + FROM user u JOIN role r ON u.id_role=r.id ORDER BY r.id, u.nama_lengkap" + )->fetchAll(); + jsonSuccess($rows); + } + public function show(string $id): void { + requireAuth([ROLE_ADMIN]); + $db = getDB(); + $stmt = $db->prepare( + "SELECT u.id, u.username, u.nama_lengkap, u.email, u.no_hp, u.aktif, r.nama_role + FROM user u JOIN role r ON u.id_role=r.id WHERE u.id=?" + ); + $stmt->execute([$id]); + $row = $stmt->fetch(); + if (!$row) jsonError('User tidak ditemukan',404); + jsonSuccess($row); + } + public function store(): void { + requireAuth([ROLE_ADMIN]); + $body = getBody(); + $errs = required($body, ['username','password','nama_lengkap','id_role']); + if ($errs) jsonError(implode('; ',$errs)); + if (strlen($body['password']) < 6) jsonError('Password minimal 6 karakter'); + $db = getDB(); + $chk = $db->prepare("SELECT id FROM user WHERE username=?"); + $chk->execute([$body['username']]); + if ($chk->fetch()) jsonError('Username sudah dipakai',409); + $db->prepare( + "INSERT INTO user (id_role,username,password_hash,nama_lengkap,email,no_hp) + VALUES (?,?,?,?,?,?)" + )->execute([ + (int)$body['id_role'], + sanitize($body['username']), + password_hash($body['password'], PASSWORD_BCRYPT), + sanitize($body['nama_lengkap']), + sanitize($body['email'] ?? ''), + sanitize($body['no_hp'] ?? ''), + ]); + jsonSuccess(['id' => $db->lastInsertId()], 'User dibuat',201); + } + public function update(string $id): void { + requireAuth([ROLE_ADMIN]); + $body = getBody(); + $db = getDB(); + $sets = ["nama_lengkap=?","email=?","no_hp=?","id_role=?","aktif=?"]; + $vals = [ + sanitize($body['nama_lengkap'] ?? ''), + sanitize($body['email'] ?? ''), + sanitize($body['no_hp'] ?? ''), + (int)($body['id_role'] ?? 4), + (int)($body['aktif'] ?? 1), + ]; + if (!empty($body['password'])) { + $sets[] = "password_hash=?"; + $vals[] = password_hash($body['password'], PASSWORD_BCRYPT); + } + $vals[] = $id; + $db->prepare("UPDATE user SET " . implode(',',$sets) . " WHERE id=?")->execute($vals); + jsonSuccess([],'User diperbarui'); + } + public function destroy(string $id): void { + requireAuth([ROLE_ADMIN]); + getDB()->prepare("UPDATE user SET aktif=0 WHERE id=?")->execute([$id]); + jsonSuccess([],'User dinonaktifkan'); + } +} diff --git a/webgis-v3/api/index.php b/webgis-v3/api/index.php new file mode 100644 index 0000000..3bd625d --- /dev/null +++ b/webgis-v3/api/index.php @@ -0,0 +1,417 @@ +query("SELECT 1"); + $dbOk = true; + require_once __DIR__ . '/../includes/helpers.php'; +} catch (Throwable $e) { + // DB tidak tersedia — pakai demo mode + $dbOk = false; +} + +// ── DEMO MODE (tanpa database) ────────────────────────────── +if (!$dbOk) { + demoRouter($resource, $id, $action, $method); + exit; +} + +// ── LIVE MODE ─────────────────────────────────────────────── +$routes = [ + 'auth' => 'AuthController', + 'penduduk' => 'PendudukController', + 'keluarga' => 'KeluargaController', + 'bantuan' => 'BantuanController', + 'histori' => 'HistoriController', + 'laporan' => 'LaporanController', + 'rumah-ibadah' => 'RumahIbadahController', + 'user' => 'UserController', + 'dashboard' => 'DashboardController', + 'chat' => 'ChatController', + 'log' => 'LogController', + 'peta' => 'PetaController', + 'prioritas' => 'PrioritasController', + 'peristiwa' => 'PeristiwaController', +]; + +if (!isset($routes[$resource])) { + http_response_code(404); + echo json_encode(['success'=>false,'message'=>"Endpoint '$resource' tidak ditemukan"]); + exit; +} + +$cls = $routes[$resource]; +$file = __DIR__ . "/controllers/{$cls}.php"; +if (!file_exists($file)) { + http_response_code(500); + echo json_encode(['success'=>false,'message'=>"Controller $cls tidak ada"]); + exit; +} +require_once $file; +$ctrl = new $cls(); + +switch ($method) { + case 'GET': + if ($id && $action) method_exists($ctrl,$action) ? $ctrl->$action($id) : jsonError("Aksi tidak ada",404); + elseif ($id) $ctrl->show($id); + else $ctrl->index(); + break; + case 'POST': + if ($id && $action) method_exists($ctrl,$action) ? $ctrl->$action($id) : jsonError("Aksi tidak ada",404); + else $ctrl->store(); + break; + case 'PUT': $id ? $ctrl->update($id) : jsonError('ID diperlukan',400); break; + case 'DELETE': $id ? $ctrl->destroy($id): jsonError('ID diperlukan',400); break; + default: jsonError('Method tidak diizinkan',405); +} + +function jsonError($msg,$code=400){ + http_response_code($code); + echo json_encode(['success'=>false,'message'=>$msg]); + exit; +} + +// ═══════════════════════════════════════════════════════════════ +// DEMO ROUTER — berjalan tanpa database sama sekali +// ═══════════════════════════════════════════════════════════════ +function demoRouter($resource, $id, $action, $method) { + $body = json_decode(file_get_contents('php://input'), true) ?? []; + + // Session sederhana + if (session_status() === PHP_SESSION_NONE) { session_name('webgis_demo'); session_start(); } + + // ── AUTH ── + if ($resource === 'auth') { + if ($method === 'GET' && $id === 'me') { + $u = $_SESSION['demo_user'] ?? null; + if ($u) ok($u); else err('Belum login',401); + } + if ($method === 'POST') { + $users = demoUsers(); + $un = $body['username'] ?? ''; $pw = $body['password'] ?? ''; + foreach ($users as $u) { + if ($u['username'] === $un && $pw === 'admin123') { + $_SESSION['demo_user'] = $u; + ok($u, 'Login berhasil'); return; + } + } + err('Username atau password salah', 401); + } + if ($method === 'DELETE') { + session_destroy(); ok([], 'Logout berhasil'); + } + err('Not found',404); + } + + // ── DASHBOARD ── + if ($resource === 'dashboard') { + ok([ + 'statistik' => ['total_penduduk'=>14,'total_miskin'=>6,'total_rentan'=>4,'total_mampu'=>2,'total_kk'=>8,'total_ri'=>6,'laporan_pending'=>2,'laporan_darurat'=>1,'sudah_dibantu'=>5,'bantuan_bulan_ini'=>3], + 'sebaran_kecamatan' => [ + ['kecamatan'=>'Pontianak Timur','jumlah_kk'=>2,'miskin'=>2,'rentan'=>1], + ['kecamatan'=>'Pontianak Selatan','jumlah_kk'=>3,'miskin'=>2,'rentan'=>2], + ['kecamatan'=>'Pontianak Kota','jumlah_kk'=>3,'miskin'=>2,'rentan'=>1], + ], + 'trend_bantuan' => [ + ['bulan'=>'2025-01','jumlah'=>2],['bulan'=>'2025-02','jumlah'=>1], + ['bulan'=>'2025-03','jumlah'=>3],['bulan'=>'2025-04','jumlah'=>1],['bulan'=>'2025-05','jumlah'=>2], + ], + 'belum_dibantu' => 4, + 'prioritas_darurat' => [ + ['nik'=>'6171010101010006','nama_lengkap'=>'Maria Magdalena','umur'=>54,'kondisi_kesehatan'=>'sakit_berat','status_ekonomi'=>'miskin','kecamatan'=>'Pontianak Selatan','jumlah_dibantu'=>1,'level_prioritas'=>'SANGAT TINGGI'], + ['nik'=>'6171010101010014','nama_lengkap'=>'Tan Eng Huat','umur'=>65,'kondisi_kesehatan'=>'disabilitas','status_ekonomi'=>'miskin','kecamatan'=>'Pontianak Kota','jumlah_dibantu'=>1,'level_prioritas'=>'SANGAT TINGGI'], + ['nik'=>'6171010101010010','nama_lengkap'=>'Lim Ah Kow','umur'=>59,'kondisi_kesehatan'=>'sakit_berat','status_ekonomi'=>'miskin','kecamatan'=>'Pontianak Kota','jumlah_dibantu'=>1,'level_prioritas'=>'TINGGI'], + ], + 'beban_per_ri' => [ + ["nama"=>"Masjid Jami'",'jumlah_kk'=>3,'kk_miskin'=>2], + ['nama'=>'Katedral','jumlah_kk'=>2,'kk_miskin'=>2], + ['nama'=>'Mujahidin','jumlah_kk'=>1,'kk_miskin'=>1], + ['nama'=>'Vihara','jumlah_kk'=>2,'kk_miskin'=>2], + ], + ]); + } + + // ── PENDUDUK ── + if ($resource === 'penduduk') { + if ($method === 'GET') { + if ($id) ok(demoPendudukDetail($id)); + else ok(demoPenduduk()); + } + if ($method === 'POST') ok(['nik'=>$body['nik']??''], 'Penduduk ditambahkan (demo)', 201); + if ($method === 'PUT') ok([], 'Penduduk diperbarui (demo)'); + if ($method === 'DELETE') ok([], 'Penduduk dihapus (demo)'); + } + + // ── KELUARGA ── + if ($resource === 'keluarga') { + if ($method === 'GET') { + if ($id) ok(['id'=>$id,'no_kk'=>'6171010101010001','nama_kepala'=>'Ahmad Suryana','anggota'=>[]]); + else ok(demoKeluarga()); + } + if ($method === 'POST') ok(['id'=>99], 'KK ditambahkan (demo)', 201); + if ($method === 'PUT') ok([], 'KK diperbarui (demo)'); + if ($method === 'DELETE') ok([], 'KK dihapus (demo)'); + } + + // ── BANTUAN ── + if ($resource === 'bantuan') { + if ($method === 'GET') ok(demoBantuan()); + if ($method === 'POST') ok(['id'=>99], 'Bantuan ditambahkan (demo)', 201); + if ($method === 'DELETE') ok([], 'Bantuan dihapus (demo)'); + } + + // ── HISTORI ── + if ($resource === 'histori') { + if ($method === 'GET') { + if ($action === 'cek') ok(['total'=>1,'jenis_bantuan'=>'Sembako Ramadan','terakhir_dibantu'=>'2025-03-15']); + else ok(demoHistori()); + } + if ($method === 'POST') ok(['id'=>99], 'Bantuan dicatat (demo)', 201); + } + + // ── LAPORAN ── + if ($resource === 'laporan') { + if ($method === 'GET') ok(demoLaporan()); + if ($method === 'POST') ok(['id'=>99], 'Laporan dikirim (demo)', 201); + if ($method === 'PUT') ok([], 'Status diperbarui (demo)'); + if ($method === 'DELETE') ok([], 'Dihapus (demo)'); + } + + // ── RUMAH IBADAH ── + if ($resource === 'rumah-ibadah') { + if ($method === 'GET') ok(demoRI()); + if ($method === 'POST') ok(['id'=>99], 'RI ditambahkan (demo)', 201); + if ($method === 'PUT') ok([], 'RI diperbarui (demo)'); + if ($method === 'DELETE') ok([], 'RI dihapus (demo)'); + } + + // ── PETA ── + if ($resource === 'peta') { + $layer = $_GET['layer'] ?? 'penduduk'; + if ($layer === 'penduduk') { + $features = array_map(fn($p) => [ + 'type'=>'Feature', + 'geometry'=>['type'=>'Point','coordinates'=>[$p['lng'],$p['lat']]], + 'properties'=>$p + ], demoPetaPenduduk()); + ok(['type'=>'FeatureCollection','features'=>$features]); + } + if ($layer === 'rumah_ibadah') { + $features = array_map(fn($r) => [ + 'type'=>'Feature', + 'geometry'=>['type'=>'Point','coordinates'=>[$r['lng'],$r['lat']]], + 'properties'=>$r + ], demoPetaRI()); + ok(['type'=>'FeatureCollection','features'=>$features]); + } + if ($layer === 'laporan') { + ok(['type'=>'FeatureCollection','features'=>[ + ['type'=>'Feature','geometry'=>['type'=>'Point','coordinates'=>[109.3311,-0.0330]],'properties'=>['deskripsi'=>'Ibu Maria sakit keras','urgensi'=>'darurat','status'=>'diverifikasi','alamat_laporan'=>'Jl. Kemuning No.3']], + ['type'=>'Feature','geometry'=>['type'=>'Point','coordinates'=>[109.3415,-0.0200]],'properties'=>['deskripsi'=>'Pak Tan penyandang disabilitas','urgensi'=>'tinggi','status'=>'diproses','alamat_laporan'=>'Jl. Gusti Situt No.7']], + ]]); + } + ok(['type'=>'FeatureCollection','features'=>[]]); + } + + // ── PRIORITAS ── + if ($resource === 'prioritas') { + ok([ + ['nik'=>'6171010101010006','nama_lengkap'=>'Maria Magdalena','umur'=>54,'status_ekonomi'=>'miskin','kondisi_kesehatan'=>'sakit_berat','kecamatan'=>'Pontianak Selatan','nama_ri'=>'Katedral','jumlah_dibantu'=>1,'level_prioritas'=>'SANGAT TINGGI'], + ['nik'=>'6171010101010014','nama_lengkap'=>'Tan Eng Huat','umur'=>65,'status_ekonomi'=>'miskin','kondisi_kesehatan'=>'disabilitas','kecamatan'=>'Pontianak Kota','nama_ri'=>'Klenteng','jumlah_dibantu'=>1,'level_prioritas'=>'SANGAT TINGGI'], + ['nik'=>'6171010101010010','nama_lengkap'=>'Lim Ah Kow','umur'=>59,'status_ekonomi'=>'miskin','kondisi_kesehatan'=>'sakit_berat','kecamatan'=>'Pontianak Kota','nama_ri'=>'Vihara','jumlah_dibantu'=>1,'level_prioritas'=>'SANGAT TINGGI'], + ['nik'=>'6171010101010002','nama_lengkap'=>'Siti Rahma','umur'=>39,'status_ekonomi'=>'miskin','kondisi_kesehatan'=>'sakit_ringan','kecamatan'=>'Pontianak Timur','nama_ri'=>"Masjid Jami'",'jumlah_dibantu'=>2,'level_prioritas'=>'TINGGI'], + ['nik'=>'6171010101010001','nama_lengkap'=>'Ahmad Suryana','umur'=>44,'status_ekonomi'=>'miskin','kondisi_kesehatan'=>'sehat','kecamatan'=>'Pontianak Timur','nama_ri'=>"Masjid Jami'",'jumlah_dibantu'=>2,'level_prioritas'=>'SEDANG'], + ['nik'=>'6171010101010005','nama_lengkap'=>'Dewi Kartika','umur'=>46,'status_ekonomi'=>'rentan','kondisi_kesehatan'=>'sehat','kecamatan'=>'Pontianak Kota','nama_ri'=>"Masjid Jami'",'jumlah_dibantu'=>0,'level_prioritas'=>'SEDANG'], + ]); + } + + // ── CHAT ── + if ($resource === 'chat') { + if ($method === 'GET') { + if ($id === 'rooms') ok([['id'=>1,'nama'=>'# Koordinasi Umum'],['id'=>2,'nama'=>'# Bantuan Darurat'],['id'=>3,'nama'=>'# Distribusi Sembako']]); + else ok([ + ['id'=>1,'id_user'=>2,'nama_lengkap'=>'Ahmad Fauzi','pesan'=>'Salam. Ada keluarga di Gg. Mawar yang butuh bantuan sembako segera.','created_at'=>date('Y-m-d').' 08:00:00'], + ['id'=>2,'id_user'=>3,'nama_lengkap'=>'Romo Benediktus','pesan'=>'Baik. Ibu Maria juga perlu bantuan medis darurat. Mari koordinasikan.','created_at'=>date('Y-m-d').' 08:05:00'], + ['id'=>3,'id_user'=>2,'nama_lengkap'=>'Ahmad Fauzi','pesan'=>'Distribusi Jumat pagi. Tolong update data ke sistem ya.','created_at'=>date('Y-m-d').' 08:10:00'], + ]); + } + if ($method === 'POST') ok(['id'=>99], 'Pesan terkirim (demo)', 201); + } + + // ── LOG ── + if ($resource === 'log') { + ok([ + ['created_at'=>date('Y-m-d').' 10:32:00','nama_lengkap'=>'Ahmad Fauzi','aksi'=>'create_histori_bantuan','tabel'=>'histori_bantuan','id_record'=>'5','ip_address'=>'192.168.1.10'], + ['created_at'=>date('Y-m-d').' 09:15:00','nama_lengkap'=>'Romo Benediktus','aksi'=>'update_laporan','tabel'=>'laporan','id_record'=>'1','ip_address'=>'192.168.1.20'], + ['created_at'=>date('Y-m-d').' 08:00:00','nama_lengkap'=>'Ahmad Fauzi','aksi'=>'login','tabel'=>'user','id_record'=>'2','ip_address'=>'192.168.1.10'], + ]); + } + + // ── USER ── + if ($resource === 'user') { + ok(demoUsers()); + } + + err("Endpoint '$resource' tidak ditemukan", 404); +} + +function ok($data, $msg='OK', $code=200) { + http_response_code($code); + echo json_encode(['success'=>true,'message'=>$msg,'data'=>$data], JSON_UNESCAPED_UNICODE); + exit; +} +function err($msg, $code=400) { + http_response_code($code); + echo json_encode(['success'=>false,'message'=>$msg,'data'=>null], JSON_UNESCAPED_UNICODE); + exit; +} + +// ═══ DEMO DATA FUNCTIONS ═══════════════════════════════════════ + +function demoUsers() { + return [ + ['id'=>1,'id_role'=>1,'username'=>'admin', 'nama_lengkap'=>'Administrator Sistem', 'email'=>'admin@webgis.id', 'nama_role'=>'admin'], + ['id'=>2,'id_role'=>2,'username'=>'pengurus_jami', 'nama_lengkap'=>'Ahmad Fauzi (Masjid Jami)', 'email'=>'fauzi@webgis.id', 'nama_role'=>'pengurus'], + ['id'=>3,'id_role'=>2,'username'=>'pengurus_ktdr', 'nama_lengkap'=>'Romo Benediktus (Katedral)','email'=>'romo@webgis.id', 'nama_role'=>'pengurus'], + ['id'=>4,'id_role'=>3,'username'=>'pimpinan', 'nama_lengkap'=>'Camat Pontianak Kota', 'email'=>'camat@webgis.id', 'nama_role'=>'pimpinan'], + ['id'=>5,'id_role'=>4,'username'=>'warga1', 'nama_lengkap'=>'Budi Santoso', 'email'=>'budi@gmail.com', 'nama_role'=>'masyarakat'], + ]; +} + +function demoPenduduk() { + return [ + ['nik'=>'6171010101010001','id_keluarga'=>1,'nama_lengkap'=>'Ahmad Suryana', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1980-05-15','umur'=>44,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'Buruh Harian','penghasilan'=>900000,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SMP','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.027,'lng'=>109.344,'no_kk'=>'6171010101010001','kecamatan'=>'Pontianak Timur','kelurahan'=>'Dalam Bugis','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010002','id_keluarga'=>1,'nama_lengkap'=>'Siti Rahma', 'jenis_kelamin'=>'P','tanggal_lahir'=>'1985-08-20','umur'=>39,'tempat_lahir'=>'Pontianak','status_keluarga'=>'istri', 'status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'Ibu Rumah Tangga','penghasilan'=>0,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sakit_ringan','lat'=>-0.027,'lng'=>109.344,'no_kk'=>'6171010101010001','kecamatan'=>'Pontianak Timur','kelurahan'=>'Dalam Bugis','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010003','id_keluarga'=>1,'nama_lengkap'=>'Budi Suryana', 'jenis_kelamin'=>'L','tanggal_lahir'=>'2012-03-10','umur'=>12,'tempat_lahir'=>'Pontianak','status_keluarga'=>'anak', 'status_perkawinan'=>'belum_kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'Pelajar','penghasilan'=>0,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SMP','status_pendidikan'=>'sekolah','kondisi_kesehatan'=>'sehat','lat'=>-0.027,'lng'=>109.344,'no_kk'=>'6171010101010001','kecamatan'=>'Pontianak Timur','kelurahan'=>'Dalam Bugis','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010004','id_keluarga'=>2,'nama_lengkap'=>'Samsul Bahri', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1975-11-22','umur'=>49,'tempat_lahir'=>'Sambas','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'Pedagang Kaki Lima','penghasilan'=>1200000,'status_ekonomi'=>'rentan','pendidikan_terakhir'=>'SMA_SMK','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.0315,'lng'=>109.339,'no_kk'=>'6171010101010002','kecamatan'=>'Pontianak Kota','kelurahan'=>'Sungai Bangkong','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010005','id_keluarga'=>2,'nama_lengkap'=>'Dewi Kartika', 'jenis_kelamin'=>'P','tanggal_lahir'=>'1978-06-14','umur'=>46,'tempat_lahir'=>'Pontianak','status_keluarga'=>'istri', 'status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'Buruh Cuci','penghasilan'=>500000,'status_ekonomi'=>'rentan','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.0315,'lng'=>109.339,'no_kk'=>'6171010101010002','kecamatan'=>'Pontianak Kota','kelurahan'=>'Sungai Bangkong','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010006','id_keluarga'=>3,'nama_lengkap'=>'Maria Magdalena', 'jenis_kelamin'=>'P','tanggal_lahir'=>'1970-12-03','umur'=>54,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'cerai_mati','status_hidup'=>'hidup','agama'=>'Kristen','pekerjaan'=>'Penjual Gorengan','penghasilan'=>800000,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sakit_berat','lat'=>-0.033,'lng'=>109.331,'no_kk'=>'6171010101010003','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Akcaya','nama_ri'=>'Katedral'], + ['nik'=>'6171010101010007','id_keluarga'=>3,'nama_lengkap'=>'Petrus Yulius', 'jenis_kelamin'=>'L','tanggal_lahir'=>'2005-04-17','umur'=>19,'tempat_lahir'=>'Pontianak','status_keluarga'=>'anak', 'status_perkawinan'=>'belum_kawin','status_hidup'=>'hidup','agama'=>'Kristen','pekerjaan'=>'Pelajar','penghasilan'=>0,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SMA_SMK','status_pendidikan'=>'sekolah','kondisi_kesehatan'=>'sehat','lat'=>-0.033,'lng'=>109.331,'no_kk'=>'6171010101010003','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Akcaya','nama_ri'=>'Katedral'], + ['nik'=>'6171010101010009','id_keluarga'=>4,'nama_lengkap'=>'Hendra Wijaya', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1988-02-11','umur'=>36,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Buddha','pekerjaan'=>'Ojek Online','penghasilan'=>1500000,'status_ekonomi'=>'rentan','pendidikan_terakhir'=>'SMA_SMK','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.049,'lng'=>109.326,'no_kk'=>'6171010101010004','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Parit Tokaya','nama_ri'=>'Mujahidin'], + ['nik'=>'6171010101010010','id_keluarga'=>5,'nama_lengkap'=>'Lim Ah Kow', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1965-07-30','umur'=>59,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Buddha','pekerjaan'=>'Tidak Bekerja','penghasilan'=>0,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sakit_berat','lat'=>-0.022,'lng'=>109.337,'no_kk'=>'6171010101010005','kecamatan'=>'Pontianak Kota','kelurahan'=>'Darat Sekip','nama_ri'=>'Vihara'], + ['nik'=>'6171010101010011','id_keluarga'=>5,'nama_lengkap'=>'Tan Siu Lan', 'jenis_kelamin'=>'P','tanggal_lahir'=>'1968-03-19','umur'=>56,'tempat_lahir'=>'Pontianak','status_keluarga'=>'istri', 'status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Buddha','pekerjaan'=>'Penjual Sayur','penghasilan'=>700000,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.022,'lng'=>109.337,'no_kk'=>'6171010101010005','kecamatan'=>'Pontianak Kota','kelurahan'=>'Darat Sekip','nama_ri'=>'Vihara'], + ['nik'=>'6171010101010012','id_keluarga'=>6,'nama_lengkap'=>'Mulyadi', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1979-10-05','umur'=>45,'tempat_lahir'=>'Singkawang','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Islam','pekerjaan'=>'PNS Golongan III','penghasilan'=>4500000,'status_ekonomi'=>'mampu','pendidikan_terakhir'=>'S1','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.0265,'lng'=>109.346,'no_kk'=>'6171010101010006','kecamatan'=>'Pontianak Timur','kelurahan'=>'Dalam Bugis','nama_ri'=>"Masjid Jami'"], + ['nik'=>'6171010101010013','id_keluarga'=>7,'nama_lengkap'=>'Yohanes Kristian', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1982-01-25','umur'=>43,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Katolik','pekerjaan'=>'Sopir Angkot','penghasilan'=>1100000,'status_ekonomi'=>'rentan','pendidikan_terakhir'=>'SMA_SMK','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'sehat','lat'=>-0.034,'lng'=>109.330,'no_kk'=>'6171010101010007','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Akcaya','nama_ri'=>'Katedral'], + ['nik'=>'6171010101010014','id_keluarga'=>8,'nama_lengkap'=>'Tan Eng Huat', 'jenis_kelamin'=>'L','tanggal_lahir'=>'1960-08-08','umur'=>64,'tempat_lahir'=>'Pontianak','status_keluarga'=>'kepala','status_perkawinan'=>'kawin','status_hidup'=>'hidup','agama'=>'Konghucu','pekerjaan'=>'Pemulung','penghasilan'=>600000,'status_ekonomi'=>'miskin','pendidikan_terakhir'=>'SD','status_pendidikan'=>'lulus','kondisi_kesehatan'=>'disabilitas','lat'=>-0.020,'lng'=>109.4415,'no_kk'=>'6171010101010008','kecamatan'=>'Pontianak Kota','kelurahan'=>'Pontianak Kota','nama_ri'=>'Klenteng'], + ]; +} + +function demoPendudukDetail($nik) { + $list = demoPenduduk(); + foreach ($list as $p) { if ($p['nik'] === $nik) { + $p['histori_bantuan'] = [['nama_bantuan'=>'Sembako Ramadan','tanggal'=>'2025-03-15','jumlah'=>1,'satuan'=>'paket','nama_ri'=>"Masjid Jami'",'status_penyaluran'=>'disalurkan']]; + $p['riwayat_pendidikan'] = []; + $p['peristiwa'] = []; + return $p; + }} + return []; +} + +function demoKeluarga() { + return [ + ['id'=>1,'no_kk'=>'6171010101010001','id_rumah_ibadah'=>1,'nama_kepala'=>'Ahmad Suryana', 'alamat'=>'Gg. Mawar No.5','rt'=>'002','rw'=>'004','kelurahan'=>'Dalam Bugis', 'kecamatan'=>'Pontianak Timur', 'lat'=>-0.027, 'lng'=>109.344, 'status_ekonomi'=>'miskin','nama_ri'=>"Masjid Jami'",'jumlah_anggota'=>3,'total_penghasilan'=>900000, 'total_bantuan'=>2], + ['id'=>2,'no_kk'=>'6171010101010002','id_rumah_ibadah'=>1,'nama_kepala'=>'Samsul Bahri', 'alamat'=>'Jl. Veteran No.12','rt'=>'003','rw'=>'002','kelurahan'=>'Sungai Bangkong','kecamatan'=>'Pontianak Kota', 'lat'=>-0.0315,'lng'=>109.339,'status_ekonomi'=>'rentan','nama_ri'=>"Masjid Jami'",'jumlah_anggota'=>2,'total_penghasilan'=>1700000,'total_bantuan'=>0], + ['id'=>3,'no_kk'=>'6171010101010003','id_rumah_ibadah'=>2,'nama_kepala'=>'Maria Magdalena', 'alamat'=>'Jl. Kemuning No.3','rt'=>'001','rw'=>'001','kelurahan'=>'Akcaya', 'kecamatan'=>'Pontianak Selatan','lat'=>-0.033, 'lng'=>109.331,'status_ekonomi'=>'miskin','nama_ri'=>'Katedral', 'jumlah_anggota'=>3,'total_penghasilan'=>800000, 'total_bantuan'=>1], + ['id'=>4,'no_kk'=>'6171010101010004','id_rumah_ibadah'=>5,'nama_kepala'=>'Hendra Wijaya', 'alamat'=>'Jl. Ahmad Yani Gg.7','rt'=>'005','rw'=>'003','kelurahan'=>'Parit Tokaya','kecamatan'=>'Pontianak Selatan','lat'=>-0.049, 'lng'=>109.326,'status_ekonomi'=>'rentan','nama_ri'=>'Mujahidin', 'jumlah_anggota'=>2,'total_penghasilan'=>1500000,'total_bantuan'=>0], + ['id'=>5,'no_kk'=>'6171010101010005','id_rumah_ibadah'=>3,'nama_kepala'=>'Lim Ah Kow', 'alamat'=>'Jl. Diponegoro Gg.2','rt'=>'001','rw'=>'002','kelurahan'=>'Darat Sekip', 'kecamatan'=>'Pontianak Kota', 'lat'=>-0.022, 'lng'=>109.337,'status_ekonomi'=>'miskin','nama_ri'=>'Vihara', 'jumlah_anggota'=>2,'total_penghasilan'=>700000, 'total_bantuan'=>1], + ['id'=>6,'no_kk'=>'6171010101010006','id_rumah_ibadah'=>1,'nama_kepala'=>'Mulyadi', 'alamat'=>'Gg. Teratai No.8','rt'=>'004','rw'=>'003','kelurahan'=>'Dalam Bugis', 'kecamatan'=>'Pontianak Timur', 'lat'=>-0.0265,'lng'=>109.346,'status_ekonomi'=>'mampu', 'nama_ri'=>"Masjid Jami'",'jumlah_anggota'=>2,'total_penghasilan'=>4500000,'total_bantuan'=>0], + ['id'=>7,'no_kk'=>'6171010101010007','id_rumah_ibadah'=>2,'nama_kepala'=>'Yohanes Kristian','alamat'=>'Jl. HOS Cokro No.4','rt'=>'002','rw'=>'001','kelurahan'=>'Akcaya', 'kecamatan'=>'Pontianak Selatan','lat'=>-0.034, 'lng'=>109.330,'status_ekonomi'=>'rentan','nama_ri'=>'Katedral', 'jumlah_anggota'=>2,'total_penghasilan'=>1100000,'total_bantuan'=>0], + ['id'=>8,'no_kk'=>'6171010101010008','id_rumah_ibadah'=>4,'nama_kepala'=>'Tan Eng Huat', 'alamat'=>'Jl. Gusti Situt No.7','rt'=>'003','rw'=>'001','kelurahan'=>'Pontianak Kota','kecamatan'=>'Pontianak Kota','lat'=>-0.020, 'lng'=>109.4415,'status_ekonomi'=>'miskin','nama_ri'=>'Klenteng', 'jumlah_anggota'=>1,'total_penghasilan'=>600000, 'total_bantuan'=>1], + ]; +} + +function demoBantuan() { + return [ + ['id'=>1,'nama_bantuan'=>'Sembako Ramadan', 'kategori'=>'sembako', 'sumber'=>'Zakat Masjid', 'satuan'=>'paket', 'aktif'=>1], + ['id'=>2,'nama_bantuan'=>'PKH (Prog. Keluarga Harapan)', 'kategori'=>'ekonomi', 'sumber'=>'APBN', 'satuan'=>'Rp', 'aktif'=>1], + ['id'=>3,'nama_bantuan'=>'BPNT / Kartu Sembako', 'kategori'=>'sembako', 'sumber'=>'APBN', 'satuan'=>'bulan', 'aktif'=>1], + ['id'=>4,'nama_bantuan'=>'Beasiswa Pendidikan', 'kategori'=>'pendidikan', 'sumber'=>'CSR Perusahaan', 'satuan'=>'paket/tahun','aktif'=>1], + ['id'=>5,'nama_bantuan'=>'BPJS Kesehatan PBI', 'kategori'=>'kesehatan', 'sumber'=>'APBD', 'satuan'=>'bulan', 'aktif'=>1], + ['id'=>6,'nama_bantuan'=>'Bantuan Sembako Gereja', 'kategori'=>'sembako', 'sumber'=>'Kolekte Gereja', 'satuan'=>'paket', 'aktif'=>1], + ['id'=>7,'nama_bantuan'=>'Bantuan Vihara (Kwan Im)', 'kategori'=>'sembako', 'sumber'=>'Dana Sosial Vihara','satuan'=>'paket', 'aktif'=>1], + ['id'=>8,'nama_bantuan'=>'Raskin / Beras Miskin', 'kategori'=>'sembako', 'sumber'=>'Bulog', 'satuan'=>'kg', 'aktif'=>1], + ]; +} + +function demoHistori() { + return [ + ['id'=>1,'nik'=>'6171010101010001','id_bantuan'=>1,'nama_lengkap'=>'Ahmad Suryana', 'nama_bantuan'=>'Sembako Ramadan', 'kategori'=>'sembako','tanggal'=>'2025-03-15','jumlah'=>1,'satuan'=>'paket','nama_ri'=>"Masjid Jami'",'status_penyaluran'=>'disalurkan'], + ['id'=>2,'nik'=>'6171010101010001','id_bantuan'=>3,'nama_lengkap'=>'Ahmad Suryana', 'nama_bantuan'=>'BPNT', 'kategori'=>'sembako','tanggal'=>'2025-01-10','jumlah'=>1,'satuan'=>'bulan','nama_ri'=>"Masjid Jami'",'status_penyaluran'=>'disalurkan'], + ['id'=>3,'nik'=>'6171010101010006','id_bantuan'=>6,'nama_lengkap'=>'Maria Magdalena', 'nama_bantuan'=>'Bantuan Sembako Gereja','kategori'=>'sembako','tanggal'=>'2025-02-20','jumlah'=>1,'satuan'=>'paket','nama_ri'=>'Katedral', 'status_penyaluran'=>'disalurkan'], + ['id'=>4,'nik'=>'6171010101010010','id_bantuan'=>7,'nama_lengkap'=>'Lim Ah Kow', 'nama_bantuan'=>'Bantuan Vihara', 'kategori'=>'sembako','tanggal'=>'2025-04-01','jumlah'=>1,'satuan'=>'paket','nama_ri'=>'Vihara', 'status_penyaluran'=>'disalurkan'], + ['id'=>5,'nik'=>'6171010101010014','id_bantuan'=>8,'nama_lengkap'=>'Tan Eng Huat', 'nama_bantuan'=>'Raskin', 'kategori'=>'sembako','tanggal'=>'2025-03-05','jumlah'=>10,'satuan'=>'kg', 'nama_ri'=>'Klenteng', 'status_penyaluran'=>'disalurkan'], + ]; +} + +function demoLaporan() { + return [ + ['id'=>1,'nama_pelapor'=>'Anonim', 'nik_terdampak'=>'6171010101010006','id_rumah_ibadah'=>2,'deskripsi'=>'Ibu Maria sakit keras sudah seminggu, tidak bisa berobat karena tidak ada biaya. Butuh bantuan medis segera.','lat'=>-0.0330,'lng'=>109.3311,'alamat_laporan'=>'Jl. Kemuning No.3, Akcaya','urgensi'=>'darurat','foto'=>null,'status'=>'diverifikasi','nama_ri'=>'Katedral','nama_terdampak'=>'Maria Magdalena','created_at'=>date('Y-m-d').' 08:00:00'], + ['id'=>2,'nama_pelapor'=>'Eko Prasetyo', 'nik_terdampak'=>null,'id_rumah_ibadah'=>1,'deskripsi'=>'Ada keluarga baru pindah ke Gg. Melati yang sepertinya sangat membutuhkan bantuan. Anak-anak tidak sekolah.','lat'=>-0.0268,'lng'=>109.3448,'alamat_laporan'=>'Gg. Melati, Dalam Bugis','urgensi'=>'sedang','foto'=>null,'status'=>'pending','nama_ri'=>"Masjid Jami'",'nama_terdampak'=>null,'created_at'=>date('Y-m-d').' 10:00:00'], + ['id'=>3,'nama_pelapor'=>'Anonim', 'nik_terdampak'=>'6171010101010014','id_rumah_ibadah'=>4,'deskripsi'=>'Pak Tan penyandang disabilitas, hidup sebatang kara dan sangat sulit mendapat penghasilan.','lat'=>-0.0200,'lng'=>109.3415,'alamat_laporan'=>'Jl. Gusti Situt No.7','urgensi'=>'tinggi','foto'=>null,'status'=>'diproses','nama_ri'=>'Klenteng Kwan Ti Miau','nama_terdampak'=>'Tan Eng Huat','created_at'=>date('Y-m-d').' 14:00:00'], + ['id'=>4,'nama_pelapor'=>'Hendra', 'nik_terdampak'=>null,'id_rumah_ibadah'=>5,'deskripsi'=>'Balita 2 tahun kondisi gizi buruk. Orang tua tidak mampu memenuhi kebutuhan gizi anak.','lat'=>-0.0490,'lng'=>109.3260,'alamat_laporan'=>'Gg. Teratai, Parit Tokaya','urgensi'=>'darurat','foto'=>null,'status'=>'pending','nama_ri'=>'Masjid Mujahidin','nama_terdampak'=>null,'created_at'=>date('Y-m-d').' 09:00:00'], + ]; +} + +function demoRI() { + return [ + ['id'=>1,'id_user'=>2,'nama'=>"Masjid Jami' Pontianak", 'jenis'=>'Masjid', 'alamat'=>'Jl. Tanjungpura, Dalam Bugis', 'lat'=>-0.02596,'lng'=>109.34307,'radius_meter'=>350,'kontak'=>'0561-732001','kecamatan'=>'Pontianak Timur', 'kelurahan'=>'Dalam Bugis', 'aktif'=>1,'nama_pengurus'=>'Ahmad Fauzi','jumlah_kk'=>3,'jumlah_penduduk'=>8], + ['id'=>2,'id_user'=>3,'nama'=>'Gereja Katedral Pontianak', 'jenis'=>'Gereja', 'alamat'=>'Jl. Patimura No.9, Akcaya', 'lat'=>-0.03200,'lng'=>109.33200,'radius_meter'=>300,'kontak'=>'0561-766000','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Akcaya', 'aktif'=>1,'nama_pengurus'=>'Romo Benediktus','jumlah_kk'=>2,'jumlah_penduduk'=>5], + ['id'=>3,'id_user'=>null,'nama'=>'Vihara Bodhisattva Karaniya Metta','jenis'=>'Vihara', 'alamat'=>'Jl. Diponegoro, Pontianak Kota','lat'=>-0.02100,'lng'=>109.33800,'radius_meter'=>300,'kontak'=>'0561-733456','kecamatan'=>'Pontianak Kota', 'kelurahan'=>'Darat Sekip', 'aktif'=>1,'nama_pengurus'=>null,'jumlah_kk'=>2,'jumlah_penduduk'=>4], + ['id'=>4,'id_user'=>null,'nama'=>'Klenteng Kwan Ti Miau', 'jenis'=>'Klenteng','alamat'=>'Jl. Gusti Situt Mahmud', 'lat'=>-0.01900,'lng'=>109.34100,'radius_meter'=>280,'kontak'=>'0561-740123','kecamatan'=>'Pontianak Kota', 'kelurahan'=>'Pontianak Kota', 'aktif'=>1,'nama_pengurus'=>null,'jumlah_kk'=>1,'jumlah_penduduk'=>2], + ['id'=>5,'id_user'=>2, 'nama'=>'Masjid Mujahidin Pontianak', 'jenis'=>'Masjid', 'alamat'=>'Jl. Ahmad Yani, Parit Tokaya', 'lat'=>-0.04800,'lng'=>109.32500,'radius_meter'=>400,'kontak'=>'0561-764567','kecamatan'=>'Pontianak Selatan','kelurahan'=>'Parit Tokaya', 'aktif'=>1,'nama_pengurus'=>'Ahmad Fauzi','jumlah_kk'=>1,'jumlah_penduduk'=>2], + ['id'=>6,'id_user'=>3, 'nama'=>'Gereja GPIB Immanuel', 'jenis'=>'Gereja', 'alamat'=>'Jl. Rahadi Usman, Darat Sekip', 'lat'=>-0.02800,'lng'=>109.34500,'radius_meter'=>300,'kontak'=>'0561-735890','kecamatan'=>'Pontianak Kota', 'kelurahan'=>'Darat Sekip', 'aktif'=>1,'nama_pengurus'=>'Romo Benediktus','jumlah_kk'=>1,'jumlah_penduduk'=>1], + ]; +} + +function demoPetaPenduduk() { + return [ + ['nama_kepala'=>'Ahmad Suryana', 'alamat'=>'Gg. Mawar No.5', 'lat'=>-0.0270,'lng'=>109.3440,'status_ekonomi'=>'miskin','jumlah_anggota'=>3,'no_kk'=>'6171010101010001',"nama_ri"=>"Masjid Jami'",'total_bantuan'=>2,'kecamatan'=>'Pontianak Timur'], + ['nama_kepala'=>'Samsul Bahri', 'alamat'=>'Jl. Veteran No.12', 'lat'=>-0.0315,'lng'=>109.3390,'status_ekonomi'=>'rentan','jumlah_anggota'=>2,'no_kk'=>'6171010101010002',"nama_ri"=>"Masjid Jami'",'total_bantuan'=>0,'kecamatan'=>'Pontianak Kota'], + ['nama_kepala'=>'Maria Magdalena', 'alamat'=>'Jl. Kemuning No.3', 'lat'=>-0.0330,'lng'=>109.3310,'status_ekonomi'=>'miskin','jumlah_anggota'=>3,'no_kk'=>'6171010101010003','nama_ri'=>'Katedral','total_bantuan'=>1,'kecamatan'=>'Pontianak Selatan'], + ['nama_kepala'=>'Hendra Wijaya', 'alamat'=>'Jl. Ahmad Yani Gg.7', 'lat'=>-0.0490,'lng'=>109.3260,'status_ekonomi'=>'rentan','jumlah_anggota'=>2,'no_kk'=>'6171010101010004','nama_ri'=>'Mujahidin','total_bantuan'=>0,'kecamatan'=>'Pontianak Selatan'], + ['nama_kepala'=>'Lim Ah Kow', 'alamat'=>'Jl. Diponegoro Gg.2', 'lat'=>-0.0220,'lng'=>109.3370,'status_ekonomi'=>'miskin','jumlah_anggota'=>2,'no_kk'=>'6171010101010005','nama_ri'=>'Vihara','total_bantuan'=>1,'kecamatan'=>'Pontianak Kota'], + ['nama_kepala'=>'Mulyadi', 'alamat'=>'Gg. Teratai No.8', 'lat'=>-0.0265,'lng'=>109.3460,'status_ekonomi'=>'mampu', 'jumlah_anggota'=>2,'no_kk'=>'6171010101010006',"nama_ri"=>"Masjid Jami'",'total_bantuan'=>0,'kecamatan'=>'Pontianak Timur'], + ['nama_kepala'=>'Yohanes Kristian', 'alamat'=>'Jl. HOS Cokro No.4', 'lat'=>-0.0340,'lng'=>109.3300,'status_ekonomi'=>'rentan','jumlah_anggota'=>2,'no_kk'=>'6171010101010007','nama_ri'=>'Katedral','total_bantuan'=>0,'kecamatan'=>'Pontianak Selatan'], + ['nama_kepala'=>'Tan Eng Huat', 'alamat'=>'Jl. Gusti Situt No.7', 'lat'=>-0.0200,'lng'=>109.3415,'status_ekonomi'=>'miskin','jumlah_anggota'=>1,'no_kk'=>'6171010101010008','nama_ri'=>'Klenteng','total_bantuan'=>1,'kecamatan'=>'Pontianak Kota'], + ]; +} + +function demoPetaRI() { + return [ + ["nama"=>"Masjid Jami' Pontianak", 'jenis'=>'Masjid', 'lat'=>-0.02596,'lng'=>109.34307,'radius_meter'=>350,'alamat'=>'Jl. Tanjungpura','kontak'=>'0561-732001'], + ['nama'=>'Gereja Katedral Pontianak', 'jenis'=>'Gereja', 'lat'=>-0.03200,'lng'=>109.33200,'radius_meter'=>300,'alamat'=>'Jl. Patimura No.9','kontak'=>'0561-766000'], + ['nama'=>'Vihara Bodhisattva Karaniya Metta', 'jenis'=>'Vihara', 'lat'=>-0.02100,'lng'=>109.33800,'radius_meter'=>300,'alamat'=>'Jl. Diponegoro','kontak'=>'0561-733456'], + ['nama'=>'Klenteng Kwan Ti Miau', 'jenis'=>'Klenteng','lat'=>-0.01900,'lng'=>109.34100,'radius_meter'=>280,'alamat'=>'Jl. Gusti Situt','kontak'=>'0561-740123'], + ['nama'=>'Masjid Mujahidin Pontianak', 'jenis'=>'Masjid', 'lat'=>-0.04800,'lng'=>109.32500,'radius_meter'=>400,'alamat'=>'Jl. Ahmad Yani','kontak'=>'0561-764567'], + ['nama'=>'Gereja GPIB Immanuel', 'jenis'=>'Gereja', 'lat'=>-0.02800,'lng'=>109.34500,'radius_meter'=>300,'alamat'=>'Jl. Rahadi Usman','kontak'=>'0561-735890'], + ]; +} diff --git a/webgis-v3/assets/css/style.css b/webgis-v3/assets/css/style.css new file mode 100644 index 0000000..48df945 --- /dev/null +++ b/webgis-v3/assets/css/style.css @@ -0,0 +1,494 @@ +@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap'); + +:root { + --bg: #080c14; + --bg2: #0d1220; + --bg3: #111827; + --bg4: #1a2236; + --bg5: #1e2a40; + --border: rgba(99,120,180,.15); + --border2: rgba(99,120,180,.25); + --text: #e8edf5; + --muted: #6b7a99; + --muted2: #8892aa; + + --red: #ff4d6d; --red-bg: rgba(255,77,109,.1); + --orange: #ff8c42; --org-bg: rgba(255,140,66,.1); + --yellow: #ffd166; --yel-bg: rgba(255,209,102,.1); + --green: #06d6a0; --grn-bg: rgba(6,214,160,.1); + --blue: #4cc9f0; --blu-bg: rgba(76,201,240,.1); + --purple: #b48eff; --pur-bg: rgba(180,142,255,.1); + --pink: #ff6eb4; --pnk-bg: rgba(255,110,180,.1); + --accent: #4361ee; --acc-bg: rgba(67,97,238,.15); + --accent2: #7b5ea7; + + --r4: 4px; --r8: 8px; --r12: 12px; --r16: 16px; --r24: 24px; + --sh: 0 4px 24px rgba(0,0,0,.4); + --sh2: 0 8px 40px rgba(0,0,0,.6); + --hdr: 56px; + --sb: 230px; + --trs: all .2s cubic-bezier(.4,0,.2,1); +} + +*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} +html,body{height:100%;overflow:hidden;font-family:'Plus Jakarta Sans',sans-serif;font-size:13px;background:var(--bg);color:var(--text);line-height:1.5} +::-webkit-scrollbar{width:5px;height:5px} +::-webkit-scrollbar-track{background:transparent} +::-webkit-scrollbar-thumb{background:var(--bg5);border-radius:3px} + +/* ═══ HEADER ═══ */ +#app-header{ + position:fixed;top:0;left:0;right:0;height:var(--hdr); + background:rgba(8,12,20,.92);backdrop-filter:blur(20px); + border-bottom:1px solid var(--border); + display:flex;align-items:center;justify-content:space-between; + padding:0 16px;z-index:1000;gap:12px; +} +.header-left,.header-right{display:flex;align-items:center;gap:10px} +.brand{display:flex;align-items:center;gap:10px} +.brand-logo{ + width:36px;height:36px;background:linear-gradient(135deg,var(--accent),var(--accent2)); + border-radius:10px;display:flex;align-items:center;justify-content:center; + font-size:18px;box-shadow:0 0 20px rgba(67,97,238,.3);flex-shrink:0; +} +.brand-title{font-size:14px;font-weight:800;letter-spacing:-.3px;color:var(--text)} +.brand-sub{font-size:10px;color:var(--muted);letter-spacing:.3px} + +.stat-pills{display:flex;gap:6px;flex-wrap:wrap} +.spill{ + display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px; + font-size:11px;font-weight:700;border:1px solid transparent;cursor:default; + transition:var(--trs); +} +.spill.red{background:var(--red-bg);color:var(--red);border-color:rgba(255,77,109,.2)} +.spill.yellow{background:var(--yel-bg);color:var(--yellow);border-color:rgba(255,209,102,.2)} +.spill.green{background:var(--grn-bg);color:var(--green);border-color:rgba(6,214,160,.2)} +.spill.blue{background:var(--blu-bg);color:var(--blue);border-color:rgba(76,201,240,.2)} +.spill-dot{width:6px;height:6px;border-radius:50%;background:currentColor;animation:pulse 2s infinite} +@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}} + +.user-chip{ + display:flex;align-items:center;gap:8px;padding:5px 12px; + background:var(--bg4);border:1px solid var(--border2); + border-radius:24px;cursor:pointer;transition:var(--trs); +} +.user-chip:hover{background:var(--bg5)} +.user-avatar{ + width:26px;height:26px;border-radius:50%; + background:linear-gradient(135deg,var(--accent),var(--purple)); + display:flex;align-items:center;justify-content:center;font-size:12px; +} +.user-name{font-size:12px;font-weight:600} +.role-badge{ + font-size:9px;font-weight:700;padding:2px 6px;border-radius:8px;letter-spacing:.5px; + background:var(--acc-bg);color:var(--blue);border:1px solid rgba(76,201,240,.2); +} +.icon-btn{ + width:36px;height:36px;background:var(--bg4);border:1px solid var(--border); + border-radius:10px;color:var(--muted);font-size:16px;cursor:pointer; + display:flex;align-items:center;justify-content:center;transition:var(--trs); +} +.icon-btn:hover{background:var(--bg5);color:var(--text);border-color:var(--border2)} + +/* ═══ LAYOUT ═══ */ +#app-layout{display:flex;height:calc(100vh - var(--hdr));margin-top:var(--hdr)} + +/* ═══ SIDEBAR ═══ */ +#sidebar{ + width:var(--sb);background:var(--bg2);border-right:1px solid var(--border); + overflow-y:auto;flex-shrink:0;transition:width .25s cubic-bezier(.4,0,.2,1); + display:flex;flex-direction:column; +} +#sidebar.collapsed{width:0;overflow:hidden} +.sb-section{padding:8px 0} +.sb-label{ + font-size:10px;font-weight:700;letter-spacing:1px;color:var(--muted); + padding:6px 16px 4px;text-transform:uppercase; +} +.nav-btn{ + width:100%;display:flex;align-items:center;gap:10px;padding:9px 16px; + background:none;border:none;border-left:2px solid transparent; + color:var(--muted2);font-size:12.5px;font-weight:500;cursor:pointer; + text-align:left;transition:var(--trs);border-radius:0;position:relative;white-space:nowrap; +} +.nav-btn:hover{background:rgba(255,255,255,.04);color:var(--text);border-left-color:rgba(67,97,238,.4)} +.nav-btn.active{background:var(--acc-bg);color:var(--blue);border-left-color:var(--accent);font-weight:600} +.nav-icon{width:20px;text-align:center;font-size:15px;flex-shrink:0} +.nav-badge{ + margin-left:auto;background:var(--red);color:#fff;border-radius:10px; + padding:1px 6px;font-size:10px;font-weight:700; +} +.nav-divider{border:none;border-top:1px solid var(--border);margin:4px 0} +.nav-kirim{color:var(--orange)!important} +.nav-kirim:hover{color:var(--orange)!important;background:var(--org-bg)!important} + +/* ═══ MAIN ═══ */ +#main-content{flex:1;overflow:hidden;display:flex;flex-direction:column} +.panel{display:none;height:100%;overflow-y:auto;padding:20px} +.panel.active{display:flex;flex-direction:column} +.panel-map.active{display:flex;flex-direction:column;padding:0;overflow:hidden} + +/* ═══ PAGE HEADER ═══ */ +.page-hdr{ + display:flex;align-items:center;justify-content:space-between; + flex-wrap:wrap;gap:10px;margin-bottom:20px;padding-bottom:16px; + border-bottom:1px solid var(--border);flex-shrink:0; +} +.page-hdr h2{font-size:18px;font-weight:800;letter-spacing:-.4px;display:flex;align-items:center;gap:8px} +.page-hdr h2 .ph-icon{font-size:20px} +.page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap} + +/* ═══ BUTTONS ═══ */ +.btn{ + display:inline-flex;align-items:center;gap:6px;padding:8px 16px; + border-radius:var(--r8);font-size:12.5px;font-weight:600;cursor:pointer; + border:none;transition:var(--trs);letter-spacing:-.1px;white-space:nowrap; +} +.btn-primary{background:var(--accent);color:#fff} +.btn-primary:hover{background:#3451d1;box-shadow:0 0 20px rgba(67,97,238,.3)} +.btn-secondary{background:var(--bg4);color:var(--text);border:1px solid var(--border2)} +.btn-secondary:hover{background:var(--bg5)} +.btn-success{background:var(--grn-bg);color:var(--green);border:1px solid rgba(6,214,160,.2)} +.btn-success:hover{background:rgba(6,214,160,.2)} +.btn-danger{background:var(--red-bg);color:var(--red);border:1px solid rgba(255,77,109,.2)} +.btn-danger:hover{background:rgba(255,77,109,.2)} +.btn-warning{background:var(--org-bg);color:var(--orange);border:1px solid rgba(255,140,66,.2)} +.btn-warning:hover{background:rgba(255,140,66,.2)} +.btn-sm{padding:5px 10px;font-size:11px;border-radius:var(--r4)} +.btn-xs{padding:3px 8px;font-size:10px;border-radius:var(--r4)} +.btn-icon{width:32px;height:32px;padding:0;justify-content:center;border-radius:var(--r8)} + +/* ═══ CARDS ═══ */ +.card{ + background:var(--bg3);border:1px solid var(--border); + border-radius:var(--r12);padding:16px; +} +.card-title{font-size:13px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:6px} + +/* ═══ DASHBOARD STATS ═══ */ +.stats-grid{ + display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); + gap:12px;margin-bottom:20px;flex-shrink:0; +} +.stat-card{ + background:var(--bg3);border:1px solid var(--border);border-radius:var(--r12); + padding:16px;cursor:pointer;transition:var(--trs);position:relative;overflow:hidden; +} +.stat-card::before{ + content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--r12) var(--r12) 0 0; +} +.stat-card:hover{transform:translateY(-2px);box-shadow:var(--sh)} +.stat-card.red::before{background:var(--red)} +.stat-card.yellow::before{background:var(--yellow)} +.stat-card.green::before{background:var(--green)} +.stat-card.blue::before{background:var(--blue)} +.stat-card.orange::before{background:var(--orange)} +.stat-card.purple::before{background:var(--purple)} +.stat-num{font-size:30px;font-weight:800;line-height:1.1;font-family:'JetBrains Mono',monospace;margin-bottom:4px} +.stat-card.red .stat-num{color:var(--red)} +.stat-card.yellow .stat-num{color:var(--yellow)} +.stat-card.green .stat-num{color:var(--green)} +.stat-card.blue .stat-num{color:var(--blue)} +.stat-card.orange .stat-num{color:var(--orange)} +.stat-card.purple .stat-num{color:var(--purple)} +.stat-label{font-size:11px;color:var(--muted);font-weight:500} +.stat-trend{font-size:10px;margin-top:6px;display:flex;align-items:center;gap:3px} +.stat-card .stat-bg-icon{ + position:absolute;right:-4px;bottom:-8px;font-size:54px;opacity:.05; + pointer-events:none;line-height:1; +} + +.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;flex:1;min-height:0} +@media(max-width:900px){.dash-grid{grid-template-columns:1fr}} + +/* ═══ PRIORITY LIST ═══ */ +.prio-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:240px} +.prio-item{ + display:flex;align-items:center;gap:10px;padding:10px 12px; + background:var(--bg4);border:1px solid var(--border);border-radius:var(--r8); + cursor:pointer;transition:var(--trs); +} +.prio-item:hover{background:var(--bg5);border-color:var(--border2)} +.prio-badge{ + font-size:9px;font-weight:800;padding:3px 8px;border-radius:20px; + letter-spacing:.5px;white-space:nowrap;flex-shrink:0; +} +.pb-sangat-tinggi{background:rgba(255,77,109,.2);color:var(--red);border:1px solid rgba(255,77,109,.3)} +.pb-tinggi{background:var(--org-bg);color:var(--orange);border:1px solid rgba(255,140,66,.3)} +.pb-sedang{background:var(--yel-bg);color:var(--yellow);border:1px solid rgba(255,209,102,.3)} +.pb-rendah{background:var(--grn-bg);color:var(--green);border:1px solid rgba(6,214,160,.3)} + +/* ═══ BAR CHART ═══ */ +.bar-list{display:flex;flex-direction:column;gap:8px;overflow-y:auto} +.bar-row{display:grid;grid-template-columns:120px 1fr 48px;align-items:center;gap:8px;font-size:11px} +.bar-lbl{color:var(--muted2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px} +.bar-track{height:14px;background:var(--bg4);border-radius:7px;overflow:hidden;position:relative} +.bar-fill{height:100%;border-radius:7px;transition:width .6s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:flex-end;padding-right:6px;font-size:9px;font-weight:700;color:rgba(255,255,255,.8);min-width:4px} +.bar-val{font-weight:700;font-family:'JetBrains Mono',monospace;color:var(--text);text-align:right;font-size:11px} + +/* ═══ MAP ═══ */ +.map-toolbar{ + display:flex;align-items:center;flex-wrap:wrap;gap:8px; + padding:10px 14px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0; +} +.map-toolbar h2{font-size:14px;font-weight:700;margin-right:4px} +.layer-toggles{display:flex;gap:4px;flex-wrap:wrap} +.layer-btn{ + display:flex;align-items:center;gap:5px;padding:5px 10px;border-radius:20px; + border:1px solid var(--border2);background:var(--bg3);color:var(--muted2); + font-size:11px;font-weight:600;cursor:pointer;transition:var(--trs); +} +.layer-btn.active-red{background:var(--red-bg);color:var(--red);border-color:rgba(255,77,109,.3)} +.layer-btn.active-yellow{background:var(--yel-bg);color:var(--yellow);border-color:rgba(255,209,102,.3)} +.layer-btn.active-green{background:var(--grn-bg);color:var(--green);border-color:rgba(6,214,160,.3)} +.layer-btn.active-blue{background:var(--blu-bg);color:var(--blue);border-color:rgba(76,201,240,.3)} +.layer-btn.active-purple{background:var(--pur-bg);color:var(--purple);border-color:rgba(180,142,255,.3)} +.layer-btn.active-orange{background:var(--org-bg);color:var(--orange);border-color:rgba(255,140,66,.3)} +.legend{display:flex;align-items:center;gap:12px;margin-left:auto;font-size:11px;color:var(--muted)} +.legend-item{display:flex;align-items:center;gap:4px} +.legend-dot{width:8px;height:8px;border-radius:50%} +.map-filter-sel{ + padding:5px 10px;background:var(--bg4);border:1px solid var(--border2); + border-radius:var(--r8);color:var(--text);font-size:12px;cursor:pointer; +} +#map{flex:1;min-height:0} +.leaflet-popup-content-wrapper{background:var(--bg3)!important;color:var(--text)!important;border:1px solid var(--border2)!important;border-radius:var(--r12)!important;box-shadow:var(--sh2)!important;padding:0!important} +.leaflet-popup-content{margin:0!important;padding:0!important} +.leaflet-popup-tip{background:var(--bg3)!important} +.leaflet-popup-close-button{color:var(--muted)!important;font-size:18px!important;top:8px!important;right:10px!important} +.map-popup{padding:14px;min-width:220px} +.mp-title{font-weight:800;font-size:13px;margin-bottom:8px;display:flex;align-items:center;gap:6px} +.mp-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0;font-size:11px;color:var(--muted2)} +.mp-row strong{color:var(--text);font-weight:600} +.mp-divider{border:none;border-top:1px solid var(--border);margin:8px 0} +.mp-actions{display:flex;gap:6px;margin-top:8px} + +/* ═══ DATA TABLE ═══ */ +.table-wrap{overflow-x:auto;border-radius:var(--r12);border:1px solid var(--border);flex:1;min-height:0} +.data-tbl{width:100%;border-collapse:collapse;font-size:12px} +.data-tbl th{ + background:var(--bg4);color:var(--muted);font-weight:700;font-size:10.5px; + letter-spacing:.5px;text-transform:uppercase;padding:10px 14px; + border-bottom:1px solid var(--border);white-space:nowrap;text-align:left; + position:sticky;top:0; +} +.data-tbl td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle} +.data-tbl tr:last-child td{border-bottom:none} +.data-tbl tbody tr{transition:background .12s} +.data-tbl tbody tr:hover td{background:rgba(255,255,255,.03)} +.data-tbl tbody tr.row-miskin td:first-child{border-left:3px solid var(--red)} +.data-tbl tbody tr.row-rentan td:first-child{border-left:3px solid var(--yellow)} +.data-tbl tbody tr.row-mampu td:first-child{border-left:3px solid var(--green)} +.mono{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted2)} + +/* ═══ BADGES ═══ */ +.bdg{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:.3px;white-space:nowrap} +.bdg-miskin{background:var(--red-bg);color:var(--red)} +.bdg-rentan{background:var(--yel-bg);color:var(--yellow)} +.bdg-mampu{background:var(--grn-bg);color:var(--green)} +.bdg-sehat{background:var(--grn-bg);color:var(--green)} +.bdg-sakit-berat,.bdg-sakit_berat{background:var(--red-bg);color:var(--red)} +.bdg-sakit-ringan,.bdg-sakit_ringan{background:var(--yel-bg);color:var(--yellow)} +.bdg-disabilitas{background:var(--pur-bg);color:var(--purple)} +.bdg-pending{background:var(--yel-bg);color:var(--yellow)} +.bdg-diverifikasi{background:var(--blu-bg);color:var(--blue)} +.bdg-diproses{background:var(--org-bg);color:var(--orange)} +.bdg-selesai{background:var(--grn-bg);color:var(--green)} +.bdg-darurat{background:var(--red-bg);color:var(--red)} +.bdg-tinggi{background:var(--org-bg);color:var(--orange)} +.bdg-sedang{background:var(--yel-bg);color:var(--yellow)} +.bdg-rendah{background:var(--grn-bg);color:var(--green)} + +/* ═══ SEARCH & FILTER BAR ═══ */ +.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex-shrink:0;margin-bottom:14px} +.search-wrap{position:relative;flex:1;min-width:180px;max-width:300px} +.search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none} +.search-input{ + width:100%;padding:8px 10px 8px 34px;background:var(--bg4);border:1px solid var(--border2); + border-radius:var(--r8);color:var(--text);font-size:12px;outline:none;transition:var(--trs); + font-family:'Plus Jakarta Sans',sans-serif; +} +.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--acc-bg)} +.filter-sel{ + padding:8px 12px;background:var(--bg4);border:1px solid var(--border2); + border-radius:var(--r8);color:var(--text);font-size:12px;cursor:pointer;outline:none; + font-family:'Plus Jakarta Sans',sans-serif;transition:var(--trs); +} +.filter-sel:focus{border-color:var(--accent)} + +/* ═══ MODALS ═══ */ +.modal-overlay{ + position:fixed;inset:0;background:rgba(0,0,0,.75);backdrop-filter:blur(8px); + display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px; +} +.modal-overlay.hidden{display:none} +.modal{ + background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r16); + width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column; + box-shadow:var(--sh2);animation:modalIn .2s cubic-bezier(.34,1.56,.64,1); +} +.modal.modal-lg{max-width:820px} +.modal.modal-xl{max-width:980px} +@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}} +.modal-hdr{ + padding:16px 20px;border-bottom:1px solid var(--border); + display:flex;align-items:center;justify-content:space-between;flex-shrink:0; +} +.modal-hdr h3{font-size:15px;font-weight:800;display:flex;align-items:center;gap:8px} +.modal-body{padding:20px;overflow-y:auto;flex:1} +.modal-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0} +.btn-close-modal{ + width:30px;height:30px;background:var(--bg5);border:none;border-radius:var(--r8); + color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center; + font-size:16px;transition:var(--trs); +} +.btn-close-modal:hover{background:var(--red-bg);color:var(--red)} + +/* ═══ FORMS ═══ */ +.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px} +.form-grid.cols3{grid-template-columns:1fr 1fr 1fr} +@media(max-width:640px){.form-grid,.form-grid.cols3{grid-template-columns:1fr}} +.form-group{margin-bottom:14px} +.form-label{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:5px;letter-spacing:.3px;text-transform:uppercase} +.form-input,.form-select,.form-textarea{ + width:100%;padding:9px 12px;background:var(--bg4);border:1px solid var(--border2); + border-radius:var(--r8);color:var(--text);font-size:12.5px;outline:none; + transition:var(--trs);font-family:'Plus Jakarta Sans',sans-serif; +} +.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--acc-bg)} +.form-input.readonly{background:var(--bg5);color:var(--muted);cursor:not-allowed} +.form-textarea{resize:vertical;min-height:80px} +.form-hint{font-size:10.5px;color:var(--muted);margin-top:3px} +.form-divider{grid-column:1/-1;border:none;border-top:1px solid var(--border);margin:6px 0;padding-top:6px} +.form-section-title{grid-column:1/-1;font-size:11px;font-weight:700;color:var(--blue);text-transform:uppercase;letter-spacing:.5px;margin-bottom:-6px} +.alert-warn{ + background:var(--yel-bg);border:1px solid rgba(255,209,102,.3);color:var(--yellow); + border-radius:var(--r8);padding:10px 12px;font-size:12px;margin-bottom:12px; + grid-column:1/-1; +} +.alert-err{background:var(--red-bg);border:1px solid rgba(255,77,109,.3);color:var(--red);border-radius:var(--r8);padding:10px 12px;font-size:12px} +.alert-ok{background:var(--grn-bg);border:1px solid rgba(6,214,160,.3);color:var(--green);border-radius:var(--r8);padding:10px 12px;font-size:12px} + +/* ═══ LAPORAN CARDS ═══ */ +.laporan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px} +.laporan-card{ + background:var(--bg3);border:1px solid var(--border);border-radius:var(--r12); + padding:14px;transition:var(--trs);position:relative;overflow:hidden; +} +.laporan-card:hover{border-color:var(--border2);transform:translateY(-1px);box-shadow:var(--sh)} +.laporan-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px} +.laporan-card.darurat::before{background:var(--red)} +.laporan-card.tinggi::before{background:var(--orange)} +.laporan-card.sedang::before{background:var(--yellow)} +.laporan-card.rendah::before{background:var(--green)} +.lc-hdr{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px} +.lc-title{font-weight:700;font-size:13px} +.lc-desc{font-size:12px;color:var(--muted2);margin-bottom:8px;line-height:1.5} +.lc-meta{font-size:11px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap;margin-bottom:10px} +.lc-actions{display:flex;gap:6px;flex-wrap:wrap} + +/* ═══ RI CARDS ═══ */ +.ri-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px} +.ri-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r12);padding:16px;transition:var(--trs)} +.ri-card:hover{border-color:var(--border2);box-shadow:var(--sh)} +.ri-icon-big{font-size:36px;margin-bottom:10px;line-height:1} +.ri-name{font-weight:800;font-size:14px;margin-bottom:4px} +.ri-type{font-size:11px;color:var(--muted);margin-bottom:10px} +.ri-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px} +.ri-stat{background:var(--bg4);border-radius:var(--r8);padding:8px;text-align:center} +.ri-stat-num{font-size:20px;font-weight:800;font-family:'JetBrains Mono',monospace} +.ri-stat-lbl{font-size:10px;color:var(--muted)} + +/* ═══ DETAIL PANEL (slide-in) ═══ */ +.detail-panel{ + position:fixed;right:0;top:var(--hdr);bottom:0;width:400px; + background:var(--bg2);border-left:1px solid var(--border2); + z-index:900;overflow-y:auto;transform:translateX(100%); + transition:transform .3s cubic-bezier(.4,0,.2,1);box-shadow:var(--sh2); +} +.detail-panel.open{transform:translateX(0)} +.dp-hdr{ + display:flex;align-items:center;justify-content:space-between; + padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0; + background:var(--bg2);backdrop-filter:blur(10px);z-index:1; +} +.dp-body{padding:20px} +.dp-section{margin-bottom:20px} +.dp-section-title{font-size:10px;font-weight:700;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px} +.dp-field{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px} +.dp-field:last-child{border-bottom:none} +.dp-field-lbl{color:var(--muted2)} +.dp-field-val{font-weight:600;text-align:right;max-width:60%} + +/* ═══ CHAT ═══ */ +.chat-layout{display:flex;flex-direction:column;flex:1;min-height:0} +.chat-rooms{display:flex;gap:6px;padding-bottom:12px;flex-shrink:0;overflow-x:auto} +.room-btn{ + padding:6px 14px;border-radius:20px;border:1px solid var(--border2); + background:var(--bg4);color:var(--muted2);font-size:12px;font-weight:600; + cursor:pointer;transition:var(--trs);white-space:nowrap; +} +.room-btn.active{background:var(--acc-bg);color:var(--blue);border-color:rgba(67,97,238,.3)} +.chat-messages{ + flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px; + padding:16px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r12);margin-bottom:12px; +} +.chat-bubble{max-width:72%;display:flex;flex-direction:column} +.chat-bubble.mine{align-self:flex-end;align-items:flex-end} +.chat-bubble.other{align-self:flex-start} +.chat-sender{font-size:10px;font-weight:700;color:var(--muted);margin-bottom:3px;padding:0 4px} +.chat-text{ + padding:10px 14px;border-radius:var(--r12);font-size:12.5px;line-height:1.5; + word-break:break-word; +} +.chat-bubble.mine .chat-text{background:var(--accent);color:#fff;border-bottom-right-radius:4px} +.chat-bubble.other .chat-text{background:var(--bg4);border-bottom-left-radius:4px} +.chat-time{font-size:10px;color:var(--muted);margin-top:3px;padding:0 4px} +.chat-input-row{display:flex;gap:8px;flex-shrink:0} +.chat-input-row input{flex:1} +.chat-empty{text-align:center;color:var(--muted);padding:32px;font-size:13px} + +/* ═══ LOG TABLE ═══ */ +.log-badge{ + font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px; + background:var(--bg5);color:var(--muted2);font-family:'JetBrains Mono',monospace; +} +.log-badge.create{background:var(--grn-bg);color:var(--green)} +.log-badge.update{background:var(--blu-bg);color:var(--blue)} +.log-badge.delete{background:var(--red-bg);color:var(--red)} +.log-badge.login{background:var(--pur-bg);color:var(--purple)} + +/* ═══ TOAST ═══ */ +#toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none} +.toast-item{ + display:flex;align-items:center;gap:10px;padding:12px 16px; + background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r12); + min-width:240px;max-width:380px;box-shadow:var(--sh2);pointer-events:auto; + animation:toastIn .3s cubic-bezier(.34,1.56,.64,1);font-size:12.5px; +} +.toast-item.out{animation:toastOut .3s ease forwards} +@keyframes toastIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}} +@keyframes toastOut{to{opacity:0;transform:translateX(40px)}} +.toast-icon{font-size:18px;flex-shrink:0} +.toast-item.success{border-left:3px solid var(--green)} +.toast-item.error{border-left:3px solid var(--red)} +.toast-item.info{border-left:3px solid var(--blue)} +.toast-item.warning{border-left:3px solid var(--yellow)} + +/* ═══ EMPTY STATE ═══ */ +.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;color:var(--muted);text-align:center;flex:1} +.empty-state .es-icon{font-size:48px;margin-bottom:12px;opacity:.5} +.empty-state h3{font-size:15px;font-weight:700;margin-bottom:6px;color:var(--muted2)} +.empty-state p{font-size:12px} + +/* ═══ LOADING ═══ */ +.skeleton{background:linear-gradient(90deg,var(--bg4) 25%,var(--bg5) 50%,var(--bg4) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--r4)} +@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}} +.loading-row td{padding:10px 14px}.loading-cell{height:14px;border-radius:4px} + +/* ═══ MISC ═══ */ +.hidden{display:none!important} +.info-box{background:var(--bg4);border:1px solid var(--border2);border-left:3px solid var(--blue);border-radius:var(--r8);padding:10px 14px;font-size:12px;color:var(--muted2);margin-bottom:12px} +.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px} +@media(max-width:800px){.two-col{grid-template-columns:1fr}} +.scrollable{overflow-y:auto;flex:1;min-height:0} diff --git a/webgis-v3/assets/js/api.js b/webgis-v3/assets/js/api.js new file mode 100644 index 0000000..9c0cdb4 --- /dev/null +++ b/webgis-v3/assets/js/api.js @@ -0,0 +1,40 @@ +const Api = (() => { + // Deteksi path API secara otomatis + const BASE = (() => { + const path = window.location.pathname; + const dir = path.substring(0, path.lastIndexOf('/') + 1); + return dir + 'api/index.php'; + })(); + + async function req(method, path, body=null) { + // path contoh: '/penduduk' → '?r=penduduk' | '/penduduk/123' → '?r=penduduk/123' + const cleanPath = path.replace(/^\//, ''); + const url = `${BASE}?r=${cleanPath}`; + const opts = { + method, + headers: { 'Content-Type': 'application/json' }, + credentials: 'same-origin', + }; + if (body) opts.body = JSON.stringify(body); + + const res = await fetch(url, opts); + const text = await res.text(); + let json; + try { + json = JSON.parse(text); + } catch { + // PHP mengembalikan HTML/teks error bukan JSON + const preview = text.substring(0, 200); + throw new Error(`Server error ${res.status} — bukan JSON: ${preview}`); + } + if (!json.success) throw new Error(json.message || 'Terjadi kesalahan'); + return json.data; + } + + return { + get: path => req('GET', path), + post: (path, b) => req('POST', path, b), + put: (path, b) => req('PUT', path, b), + delete: path => req('DELETE', path), + }; +})(); diff --git a/webgis-v3/assets/js/app.js b/webgis-v3/assets/js/app.js new file mode 100644 index 0000000..ade8563 --- /dev/null +++ b/webgis-v3/assets/js/app.js @@ -0,0 +1,278 @@ +/* ════════════════════════════════════════ + GLOBAL HELPERS + ════════════════════════════════════════ */ +const ge = id => document.getElementById(id); +const gv = id => (document.getElementById(id)?.value ?? '').trim(); +const sv = (id, val) => { const el = document.getElementById(id); if (el) el.value = val ?? ''; }; +const rp = n => n > 0 ? 'Rp ' + parseInt(n).toLocaleString('id-ID') : '—'; +const cap = s => s ? s.charAt(0).toUpperCase() + s.slice(1).replace(/_/g, ' ') : '—'; +const bdg = (val, _cls) => { + const v = val || ''; + const css = v.replace(/_/g,'-').toLowerCase(); + return `${v.replace(/_/g,' ').toUpperCase()}`; +}; + +/* ════════════════════════════════════════ + ROLE CONFIG + 1 = Admin, 2 = Pengurus RI, 3 = Pimpinan, 4 = Masyarakat + ════════════════════════════════════════ */ +const ROLE_MENUS = { + 1: ['dashboard','peta','penduduk','keluarga','ri','bantuan','prioritas','laporan','chat','log'], + 2: ['dashboard','peta','penduduk','keluarga','ri','bantuan','prioritas','laporan','chat'], + 3: ['dashboard','peta','penduduk','keluarga','laporan'], + 4: ['dashboard','peta'], + 99: ['dashboard','peta'], +}; + +const ROLE_LABELS = { + 1: { icon:'⚙️', label:'Administrator', color:'#e74c3c' }, + 2: { icon:'🕌', label:'Pengurus Rumah Ibadah', color:'#27ae60' }, + 3: { icon:'🏛️', label:'Pimpinan Daerah', color:'#2980b9' }, + 4: { icon:'👤', label:'Masyarakat', color:'#8e44ad' }, +}; + +/* ════════════════════════════════════════ + APP CONTROLLER + ════════════════════════════════════════ */ +const App = (() => { + let _user = null, _autoTimer = null; + + const currentUser = () => _user; + const userRole = () => _user?.id_role ?? 99; + const canEdit = () => [1,2].includes(userRole()); + + /* ── Login ── */ + async function doLogin() { + const username = gv('login-user'), password = gv('login-pass'); + const errEl = ge('login-err'); + const btnMasuk = ge('btn-masuk-submit'); + errEl.classList.add('hidden'); + if (btnMasuk) { btnMasuk.disabled = true; btnMasuk.textContent = 'Memproses...'; } + + try { + const res = await fetch('api/index.php?r=auth', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username, password }), + credentials: 'same-origin', + }); + + let json; + const text = await res.text(); + try { json = JSON.parse(text); } + catch { throw new Error(`Respons server tidak valid (bukan JSON). Cek error PHP di server.`); } + + if (!json.success) throw new Error(json.message || 'Login gagal'); + + _user = json.data; + setUserUI(_user); + closeModal('modal-login'); + ge('login-pass').value = ''; + toast(`Selamat datang, ${_user.nama_lengkap}! 👋`, 'success'); + + // Arahkan ke panel default sesuai role + const defaultPanel = { 1:'dashboard', 2:'dashboard', 3:'dashboard', 4:'dashboard' }; + switchPanel(defaultPanel[_user.id_role] || 'dashboard'); + startAutoRefresh(); + + } catch(e) { + errEl.textContent = e.message || 'Username atau password salah'; + errEl.classList.remove('hidden'); + } finally { + if (btnMasuk) { btnMasuk.disabled = false; btnMasuk.textContent = 'Masuk →'; } + } + } + + async function logout() { + try { + await fetch('api/index.php?r=auth/logout', { method:'DELETE', credentials:'same-origin' }); + } catch {} + stopAutoRefresh(); + _user = null; + setUserUI(null); + toast('Anda telah logout', 'info'); + switchPanel('dashboard'); + } + + /* ── Apply UI per role ── */ + function setUserUI(u) { + if (u) { + const info = ROLE_LABELS[u.id_role] || { icon:'👤', label: u.nama_role, color:'#555' }; + ge('user-name-el').textContent = u.nama_lengkap; + ge('user-avatar-el').textContent = info.icon; + ge('user-role-el').textContent = info.label.toUpperCase(); + ge('user-info').classList.remove('hidden'); + ge('btn-login').classList.add('hidden'); + applyRoleUI(u.id_role); + + // Tampilkan role banner + showRoleBanner(u.id_role, u.nama_lengkap, info); + } else { + ge('user-info').classList.add('hidden'); + ge('btn-login').classList.remove('hidden'); + applyRoleUI(99); + hideRoleBanner(); + } + } + + function showRoleBanner(role, nama, info) { + let banner = ge('role-banner'); + if (!banner) { + banner = document.createElement('div'); + banner.id = 'role-banner'; + banner.style.cssText = ` + position:fixed; top:0; left:0; right:0; z-index:9999; + padding:6px 16px; font-size:12px; font-weight:600; + display:flex; align-items:center; gap:8px; + transition: all 0.3s; + `; + document.body.prepend(banner); + } + banner.style.background = info.color; + banner.style.color = '#fff'; + banner.innerHTML = ` + ${info.icon} Login sebagai: ${nama} +  |  Role: ${info.label} +  |  ${roleDescription(role)} + `; + // Geser konten ke bawah sedikit + document.body.style.paddingTop = '30px'; + } + + function hideRoleBanner() { + const banner = ge('role-banner'); + if (banner) banner.remove(); + document.body.style.paddingTop = ''; + } + + function roleDescription(role) { + return { + 1: 'Akses penuh — kelola semua data & pengguna', + 2: 'Kelola penduduk, bantuan & verifikasi laporan', + 3: 'Read-only — monitoring & dashboard', + 4: 'Hanya bisa melihat peta & kirim laporan', + }[role] || ''; + } + + function applyRoleUI(role) { + const allowed = ROLE_MENUS[role] || ROLE_MENUS[99]; + + // Sembunyikan/tampilkan nav menu + document.querySelectorAll('.nav-btn[data-panel]').forEach(btn => { + const panel = btn.dataset.panel; + btn.style.display = allowed.includes(panel) ? '' : 'none'; + }); + + // Sembunyikan tombol aksi edit/tambah/salur untuk non-editor + const canEditRole = [1,2].includes(role); + document.querySelectorAll('[id^="btn-tambah"],[id^="btn-salur"],[id^="btn-edit"]') + .forEach(el => el.style.display = canEditRole ? '' : 'none'); + + // Khusus Admin: tampilkan menu log + const logBtn = document.querySelector('[data-panel="log"]'); + if (logBtn) logBtn.style.display = role === 1 ? '' : 'none'; + + // Kirim Laporan hanya untuk masyarakat & umum + const kirimBtn = ge('nav-kirim-laporan'); + if (kirimBtn) kirimBtn.style.display = [4,99].includes(role) ? '' : 'none'; + } + + /* ── Panel routing ── */ + let _cur = 'dashboard'; + + function switchPanel(name) { + const role = userRole(); + const allowed = ROLE_MENUS[role] || ROLE_MENUS[99]; + + // Jika panel tidak boleh diakses role ini, redirect ke dashboard + if (!allowed.includes(name)) { + toast('Anda tidak punya akses ke halaman ini', 'error'); + name = 'dashboard'; + } + + document.querySelectorAll('.panel').forEach(p => p.classList.remove('active')); + document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); + ge(`panel-${name}`)?.classList.add('active'); + document.querySelector(`[data-panel="${name}"]`)?.classList.add('active'); + _cur = name; + + if (name === 'peta') setTimeout(() => MapApp.init(), 80); + else loadPanel(name); + } + + function loadCurrentPanel() { loadPanel(_cur); } + + function loadPanel(n) { + ({ dashboard: Dashboard.load, penduduk: Penduduk.load, keluarga: Keluarga.load, + bantuan: Bantuan.load, laporan: LaporanPanel.load, ri: RI.load, + prioritas: PrioritasPanel.load, chat: Chat.init, log: LogPanel.load })[n]?.(); + } + + /* ── Auto refresh ── */ + function startAutoRefresh() { + stopAutoRefresh(); + _autoTimer = setInterval(() => { + if (_cur === 'dashboard') Dashboard.load(); + if (_cur === 'laporan') LaporanPanel.load(); + updateHeaderStats(); + }, 30000); + } + function stopAutoRefresh() { clearInterval(_autoTimer); } + + /* ── Modals ── */ + function showModal(id) { ge(id)?.classList.remove('hidden'); } + function closeModal(id) { ge(id)?.classList.add('hidden'); } + + /* ── Toast ── */ + function toast(msg, type='info', dur=3800) { + const icons = { success:'✅', error:'❌', info:'ℹ️', warning:'⚠️' }; + const el = document.createElement('div'); + el.className = `toast-item ${type}`; + el.innerHTML = `${icons[type]||'ℹ️'}${msg}`; + ge('toast-container').appendChild(el); + setTimeout(() => { el.classList.add('out'); setTimeout(() => el.remove(), 300); }, dur); + } + + /* ── Header stats ── */ + async function updateHeaderStats() { + try { + const d = await Api.get('/dashboard'); + const s = d.statistik; + ge('hp-miskin-n').textContent = s.total_miskin; + ge('hp-rentan-n').textContent = s.total_rentan; + ge('hp-mampu-n').textContent = s.total_mampu; + ge('hp-lap-n').textContent = s.laporan_pending; + const nb = ge('nb-laporan'); + s.laporan_pending > 0 + ? (nb.textContent = s.laporan_pending, nb.classList.remove('hidden')) + : nb.classList.add('hidden'); + } catch {} + } + + /* ── Events ── */ + ge('btn-toggle-sidebar').addEventListener('click', () => { + ge('sidebar').classList.toggle('collapsed'); + }); + document.addEventListener('click', e => { + if (e.target.classList.contains('modal-overlay')) e.target.classList.add('hidden'); + }); + document.addEventListener('keydown', e => { + if (e.key === 'Escape') + document.querySelectorAll('.modal-overlay:not(.hidden)').forEach(m => m.classList.add('hidden')); + }); + + /* ── Init ── */ + (async function init() { + try { + const res = await fetch('api/index.php?r=auth/me', { credentials:'same-origin' }); + const text = await res.text(); + const json = JSON.parse(text); + if (json.success) { _user = json.data; setUserUI(_user); startAutoRefresh(); } + } catch {} + Dashboard.load(); + updateHeaderStats(); + })(); + + return { currentUser, userRole, canEdit, doLogin, logout, switchPanel, + showModal, closeModal, toast, updateHeaderStats }; +})(); diff --git a/webgis-v3/assets/js/bantuan.js b/webgis-v3/assets/js/bantuan.js new file mode 100644 index 0000000..4936115 --- /dev/null +++ b/webgis-v3/assets/js/bantuan.js @@ -0,0 +1,132 @@ +const Bantuan = (() => { + let jenisList = []; + + const DEMO_JENIS = [ + { id:1, nama_bantuan:'Sembako Ramadan', kategori:'sembako', sumber:'Zakat Masjid', satuan:'paket', aktif:1 }, + { id:2, nama_bantuan:'PKH (Prog. Keluarga Harapan)', kategori:'ekonomi', sumber:'APBN', satuan:'Rp', aktif:1 }, + { id:3, nama_bantuan:'BPNT / Kartu Sembako', kategori:'sembako', sumber:'APBN', satuan:'bulan', aktif:1 }, + { id:4, nama_bantuan:'Beasiswa Pendidikan', kategori:'pendidikan', sumber:'CSR Perusahaan', satuan:'paket/tahun',aktif:1 }, + { id:5, nama_bantuan:'BPJS Kesehatan PBI', kategori:'kesehatan', sumber:'APBD', satuan:'bulan', aktif:1 }, + { id:6, nama_bantuan:'Bantuan Sembako Gereja', kategori:'sembako', sumber:'Kolekte Gereja', satuan:'paket', aktif:1 }, + { id:7, nama_bantuan:'Bantuan Vihara (Kwan Im)',kategori:'sembako', sumber:'Dana Sosial Vihara',satuan:'paket', aktif:1 }, + { id:8, nama_bantuan:'Raskin / Beras Miskin', kategori:'sembako', sumber:'Bulog', satuan:'kg', aktif:1 }, + ]; + + const DEMO_HISTORI = [ + { id:1, nama_lengkap:'Ahmad Suryana', nama_bantuan:'Sembako Ramadan', tanggal:'2025-03-15', jumlah:1, satuan:'paket', nama_ri:"Masjid Jami'", status_penyaluran:'disalurkan' }, + { id:2, nama_lengkap:'Ahmad Suryana', nama_bantuan:'BPNT', tanggal:'2025-01-10', jumlah:1, satuan:'bulan', nama_ri:"Masjid Jami'", status_penyaluran:'disalurkan' }, + { id:3, nama_lengkap:'Maria Magdalena', nama_bantuan:'Bantuan Sembako Gereja', tanggal:'2025-02-20', jumlah:1, satuan:'paket', nama_ri:'Katedral', status_penyaluran:'disalurkan' }, + { id:4, nama_lengkap:'Lim Ah Kow', nama_bantuan:'Bantuan Vihara', tanggal:'2025-04-01', jumlah:1, satuan:'paket', nama_ri:'Vihara', status_penyaluran:'disalurkan' }, + { id:5, nama_lengkap:'Tan Eng Huat', nama_bantuan:'Raskin', tanggal:'2025-03-05', jumlah:10, satuan:'kg', nama_ri:'Klenteng', status_penyaluran:'disalurkan' }, + ]; + + const KAT_COLOR = { sembako:'#06d6a0', ekonomi:'#4361ee', pendidikan:'#4cc9f0', kesehatan:'#ffd166', lainnya:'#6b7a99' }; + const KAT_ICON = { sembako:'🛒', ekonomi:'💰', pendidikan:'📚', kesehatan:'🏥', lainnya:'📦' }; + + async function load() { + try { jenisList = await Api.get('/bantuan'); } catch { jenisList = DEMO_JENIS; } + renderJenis(); + loadHistori(); + } + + function renderJenis() { + const el = ge('bantuan-jenis-list'); + el.innerHTML = jenisList.map(b => ` +
+ ${KAT_ICON[b.kategori]||'📦'} +
+
${b.nama_bantuan}
+
${b.kategori} · ${b.sumber||'—'} · per ${b.satuan||'unit'}
+
+ ${App.canEdit() ? `` : ''} +
`).join('') || '

Belum ada data bantuan

'; + } + + async function loadHistori() { + let data; + try { data = await Api.get('/histori?status=disalurkan'); } catch { data = DEMO_HISTORI; } + ge('bantuan-histori-list').innerHTML = data.map(h => ` +
+
+ ${h.nama_lengkap} + ${h.status_penyaluran} +
+
${h.nama_bantuan} · ${h.jumlah} ${h.satuan||''}
+
🕌 ${h.nama_ri||'—'}  ·  📅 ${h.tanggal?.substring(0,10)||'—'}
+
`).join('') || '

Belum ada riwayat

'; + } + + function showFormJenis() { + ['fjb-nama','fjb-satuan','fjb-sumber','fjb-deskripsi'].forEach(id => sv(id,'')); + sv('fjb-kategori','sembako'); + App.showModal('modal-jenis-bantuan'); + } + + async function saveJenis() { + const nama = gv('fjb-nama'); + if (!nama) { App.toast('Nama bantuan wajib diisi','error'); return; } + const body = { nama_bantuan: nama, kategori: gv('fjb-kategori'), sumber: gv('fjb-sumber'), satuan: gv('fjb-satuan'), deskripsi: gv('fjb-deskripsi') }; + try { + await Api.post('/bantuan', body); + App.toast('Jenis bantuan ditambahkan ✅','success'); + App.closeModal('modal-jenis-bantuan'); + load(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function hapusJenis(id) { + if (!confirm('Hapus jenis bantuan ini?')) return; + try { await Api.delete(`/bantuan/${id}`); App.toast('Dihapus','success'); load(); } + catch(e) { App.toast(e.message,'error'); } + } + + async function showFormSalur(nikPrefill = '', namaPrefill = '') { + sv('fs-bantuan', ''); + sv('fs-nik', nikPrefill); + sv('fs-jumlah', '1'); + sv('fs-ket', ''); + ge('fs-nik-info').classList.add('hidden'); + ge('fs-tgl').value = new Date().toISOString().substring(0,10); + // Isi dropdown jenis bantuan + if (!jenisList.length) { try { jenisList = await Api.get('/bantuan'); } catch { jenisList = DEMO_JENIS; } } + ge('fs-bantuan').innerHTML = jenisList.map(b => ``).join(''); + App.showModal('modal-salur'); + if (nikPrefill) { setTimeout(() => cekPenerima(nikPrefill), 200); } + } + + function quickSalur(nik, nama) { showFormSalur(nik, nama); } + + async function cekPenerima(nik) { + if (nik.length < 16) { ge('fs-nik-info').classList.add('hidden'); return; } + try { + const info = await Api.get(`/histori/${nik}/cek`); + const box = ge('fs-nik-info'); + if (info.total > 0) { + box.innerHTML = `✅ Sudah dibantu ${info.total}x · ${info.jenis_bantuan||'—'} · Terakhir: ${info.terakhir_dibantu?.substring(0,10)||'—'}`; + box.className = 'alert-ok'; + } else { + box.innerHTML = `⚠️ Belum pernah menerima bantuan`; + box.className = 'alert-warn'; + } + box.classList.remove('hidden'); + } catch { + ge('fs-nik-info').classList.add('hidden'); + } + } + + async function salurkan() { + const nik = gv('fs-nik'); + if (!nik || nik.length !== 16) { App.toast('NIK penerima harus 16 digit','error'); return; } + if (!gv('fs-bantuan')) { App.toast('Pilih jenis bantuan','error'); return; } + if (!gv('fs-tgl')) { App.toast('Tanggal wajib diisi','error'); return; } + const body = { nik, id_bantuan: gv('fs-bantuan'), tanggal: gv('fs-tgl'), jumlah: gv('fs-jumlah'), keterangan: gv('fs-ket') }; + try { + await Api.post('/histori', body); + App.toast('Bantuan berhasil dicatat ✅','success'); + App.closeModal('modal-salur'); + load(); + } catch(e) { App.toast(e.message,'error'); } + } + + return { load, showFormJenis, saveJenis, hapusJenis, showFormSalur, quickSalur, cekPenerima, salurkan }; +})(); diff --git a/webgis-v3/assets/js/chat.js b/webgis-v3/assets/js/chat.js new file mode 100644 index 0000000..0d95a0d --- /dev/null +++ b/webgis-v3/assets/js/chat.js @@ -0,0 +1,99 @@ +const Chat = (() => { + let currentRoom = null, pollTimer = null; + + const DEMO_ROOMS = [ + { id:1, nama:'# Koordinasi Umum' }, + { id:2, nama:'# Bantuan Darurat' }, + { id:3, nama:'# Distribusi Sembako' }, + ]; + + const DEMO_MSGS = { + null: [ + { id:1, id_user:2, nama_lengkap:'Ahmad Fauzi', pesan:'Salam rekan-rekan semua. Ada keluarga di Gg. Mawar yang sangat butuh bantuan sembako segera.', created_at:'2025-05-13 08:00:00' }, + { id:2, id_user:3, nama_lengkap:'Romo Benediktus',pesan:'Baik. Kami di Katedral juga sedang tangani kasus Ibu Maria yang sakit keras. Mohon dikoordinasikan.', created_at:'2025-05-13 08:05:00' }, + { id:3, id_user:2, nama_lengkap:'Ahmad Fauzi', pesan:'Insya Allah kita distribusi bersama hari Jumat. Tolong daftarkan semua ke sistem ya.', created_at:'2025-05-13 08:10:00' }, + { id:4, id_user:3, nama_lengkap:'Romo Benediktus',pesan:'Setuju. Saya sudah verifikasi laporan Ibu Maria. Status diproses.', created_at:'2025-05-13 08:15:00' }, + ], + 1: [{ id:5, id_user:2, nama_lengkap:'Ahmad Fauzi', pesan:'Koordinasi umum aktif. Silakan gunakan channel ini untuk diskusi lintas RI.', created_at:'2025-05-13 09:00:00' }], + 2: [{ id:6, id_user:3, nama_lengkap:'Romo Benediktus', pesan:'Ada kasus darurat di Akcaya — balita gizi buruk. Butuh respons cepat.', created_at:'2025-05-14 07:00:00' }], + 3: [{ id:7, id_user:2, nama_lengkap:'Ahmad Fauzi', pesan:'Jadwal distribusi sembako Ramadan: 15 Maret 2025, mulai pukul 08.00 di halaman masjid.', created_at:'2025-05-12 16:00:00' }], + }; + + async function init() { + // Load rooms + let rooms = []; + try { const d = await Api.get('/chat/rooms'); rooms = d?.length ? d : DEMO_ROOMS; } + catch { rooms = DEMO_ROOMS; } + + const container = ge('chat-rooms'); + container.innerHTML = ``; + rooms.forEach(r => { + const btn = document.createElement('button'); + btn.className = 'room-btn'; + btn.dataset.room = r.id; + btn.textContent = r.nama; + btn.onclick = function() { Chat.loadRoom(r.id, this); }; + container.appendChild(btn); + }); + + await loadRoom(null, container.firstChild); + } + + async function loadRoom(roomId, btn) { + currentRoom = roomId || null; + clearInterval(pollTimer); + document.querySelectorAll('.room-btn').forEach(b => b.classList.remove('active')); + if (btn) btn.classList.add('active'); + await fetchMessages(); + pollTimer = setInterval(fetchMessages, 5000); // poll tiap 5 detik + } + + async function fetchMessages() { + let msgs = []; + try { + const url = currentRoom ? `/chat?room=${currentRoom}` : '/chat'; + msgs = await Api.get(url); + } catch { + msgs = DEMO_MSGS[currentRoom] || DEMO_MSGS[null]; + } + renderMessages(msgs); + } + + function renderMessages(msgs) { + const box = ge('chat-messages'); + const user = App.currentUser(); + if (!msgs?.length) { + box.innerHTML = '
💬 Belum ada pesan di channel ini
'; + return; + } + const prevScroll = box.scrollHeight - box.scrollTop; + box.innerHTML = msgs.map(m => { + const mine = user && m.id_user == user.id; + return `
+ ${!mine ? `
${m.nama_lengkap || 'User'}
` : ''} +
${escHtml(m.pesan)}
+
${(m.created_at||'').substring(11,16)}
+
`; + }).join(''); + // Scroll ke bawah jika sudah di bawah + if (prevScroll < 200) box.scrollTop = box.scrollHeight; + } + + async function send() { + const inp = ge('chat-input'); + const pesan = inp.value.trim(); + if (!pesan) return; + if (!App.currentUser()) { App.toast('Harus login untuk mengirim pesan','warning'); App.showModal('modal-login'); return; } + inp.value = ''; + try { + await Api.post('/chat', { pesan, id_room: currentRoom }); + await fetchMessages(); + } catch(e) { App.toast(e.message,'error'); } + } + + function escHtml(s) { + return (s||'').replace(/&/g,'&').replace(//g,'>').replace(/\n/g,'
'); + } + + return { init, loadRoom, send }; +})(); diff --git a/webgis-v3/assets/js/dashboard.js b/webgis-v3/assets/js/dashboard.js new file mode 100644 index 0000000..d4775bc --- /dev/null +++ b/webgis-v3/assets/js/dashboard.js @@ -0,0 +1,69 @@ +const Dashboard = (() => { + async function load() { + try { + const d = await Api.get('/dashboard'); + const s = d.statistik; + sv2('d-miskin', s.total_miskin); sv2('d-rentan', s.total_rentan); + sv2('d-mampu', s.total_mampu); sv2('d-kk', s.total_kk); + sv2('d-belum', d.belum_dibantu); sv2('d-darurat', s.laporan_pending); + sv2('hp-miskin-n', s.total_miskin); sv2('hp-rentan-n', s.total_rentan); + sv2('hp-mampu-n', s.total_mampu); sv2('hp-lap-n', s.laporan_pending); + ge('dash-updated').textContent = 'Update: ' + new Date().toLocaleTimeString('id-ID'); + renderPrio(d.prioritas_darurat); + renderBar('d-kec-chart', d.sebaran_kecamatan, r => ({ label: r.kecamatan||'?', val: +r.miskin+ +r.rentan, color:'#ff4d6d', sub:`${r.miskin} miskin` })); + renderBar('d-ri-chart', d.beban_per_ri, r => ({ label: r.nama, val: +r.kk_miskin, color:'#4361ee', sub:`${r.jumlah_kk} KK` })); + renderBar('d-trend-chart', d.trend_bantuan, r => ({ label: r.bulan, val: +r.jumlah, color:'#06d6a0', sub:`${r.jumlah}x` })); + } catch { loadDemo(); } + } + + function loadDemo() { + sv2('d-miskin',6); sv2('d-rentan',4); sv2('d-mampu',2); + sv2('d-kk',8); sv2('d-belum',4); sv2('d-darurat',2); + sv2('hp-miskin-n',6); sv2('hp-rentan-n',4); sv2('hp-mampu-n',2); sv2('hp-lap-n',2); + ge('dash-updated').textContent = 'Data demo (offline)'; + renderPrio([ + { nama_lengkap:'Maria Magdalena', umur:54, kondisi_kesehatan:'sakit_berat', kecamatan:'Pontianak Selatan', jumlah_dibantu:1, level_prioritas:'SANGAT TINGGI', nik:'6171010101010006' }, + { nama_lengkap:'Tan Eng Huat', umur:65, kondisi_kesehatan:'disabilitas', kecamatan:'Pontianak Kota', jumlah_dibantu:1, level_prioritas:'SANGAT TINGGI', nik:'6171010101010014' }, + { nama_lengkap:'Lim Ah Kow', umur:59, kondisi_kesehatan:'sakit_berat', kecamatan:'Pontianak Kota', jumlah_dibantu:1, level_prioritas:'TINGGI', nik:'6171010101010010' }, + ]); + renderBar('d-kec-chart',[{kecamatan:'Pontianak Timur',miskin:2,rentan:1},{kecamatan:'Pontianak Selatan',miskin:2,rentan:2},{kecamatan:'Pontianak Kota',miskin:2,rentan:1}], + r=>({label:r.kecamatan,val:+r.miskin+ +r.rentan,color:'#ff4d6d',sub:`${r.miskin} miskin`})); + renderBar('d-ri-chart',[{nama:"Masjid Jami'",jumlah_kk:3,kk_miskin:2},{nama:'Katedral',jumlah_kk:2,kk_miskin:2},{nama:'Mujahidin',jumlah_kk:1,kk_miskin:1}], + r=>({label:r.nama,val:+r.kk_miskin,color:'#4361ee',sub:`${r.jumlah_kk} KK`})); + renderBar('d-trend-chart',[{bulan:'2025-01',jumlah:2},{bulan:'2025-02',jumlah:1},{bulan:'2025-03',jumlah:3},{bulan:'2025-04',jumlah:1}], + r=>({label:r.bulan,val:+r.jumlah,color:'#06d6a0',sub:`${r.jumlah}x`})); + } + + function renderPrio(list) { + const el = ge('d-prio-list'); + if (!list?.length) { el.innerHTML = '

Tidak ada kasus darurat

'; return; } + const cls = { 'SANGAT TINGGI':'pb-sangat-tinggi','TINGGI':'pb-tinggi','SEDANG':'pb-sedang','RENDAH':'pb-rendah' }; + el.innerHTML = list.map(p => ` +
+ ${p.level_prioritas} +
+
${p.nama_lengkap}
+
${cap(p.kondisi_kesehatan)} · ${p.kecamatan} · dibantu ${p.jumlah_dibantu}x
+
+ +
`).join(''); + } + + function renderBar(elId, data, mapper) { + const el = ge(elId); + if (!data?.length) { el.innerHTML = '

Tidak ada data

'; return; } + const mapped = data.map(mapper); + const max = Math.max(...mapped.map(m => m.val), 1); + el.innerHTML = mapped.map(m => { + const pct = Math.round(m.val / max * 100); + return `
+
${m.label.slice(0,16)}${m.label.length>16?'…':''}
+
+
${m.val}${m.sub?.replace(/^\d+ /,'')}
+
`; + }).join(''); + } + + function sv2(id, val) { const el = ge(id); if (el) el.textContent = val ?? '—'; } + return { load }; +})(); diff --git a/webgis-v3/assets/js/keluarga.js b/webgis-v3/assets/js/keluarga.js new file mode 100644 index 0000000..ce87cc7 --- /dev/null +++ b/webgis-v3/assets/js/keluarga.js @@ -0,0 +1,127 @@ +const Keluarga = (() => { + let all = [], editId = null; + + const DEMO = [ + { id:1, no_kk:'6171010101010001', nama_kepala:'Ahmad Suryana', kecamatan:'Pontianak Timur', kelurahan:'Dalam Bugis', jumlah_anggota:3, total_penghasilan:900000, nama_ri:"Masjid Jami'", status_ekonomi:'miskin', total_bantuan:2 }, + { id:2, no_kk:'6171010101010002', nama_kepala:'Samsul Bahri', kecamatan:'Pontianak Kota', kelurahan:'Sungai Bangkong',jumlah_anggota:2,total_penghasilan:1700000, nama_ri:"Masjid Jami'", status_ekonomi:'rentan', total_bantuan:0 }, + { id:3, no_kk:'6171010101010003', nama_kepala:'Maria Magdalena', kecamatan:'Pontianak Selatan', kelurahan:'Akcaya', jumlah_anggota:3, total_penghasilan:800000, nama_ri:'Katedral', status_ekonomi:'miskin', total_bantuan:1 }, + { id:4, no_kk:'6171010101010004', nama_kepala:'Hendra Wijaya', kecamatan:'Pontianak Selatan', kelurahan:'Parit Tokaya', jumlah_anggota:2, total_penghasilan:1500000, nama_ri:'Mujahidin', status_ekonomi:'rentan', total_bantuan:0 }, + { id:5, no_kk:'6171010101010005', nama_kepala:'Lim Ah Kow', kecamatan:'Pontianak Kota', kelurahan:'Darat Sekip', jumlah_anggota:2, total_penghasilan:700000, nama_ri:'Vihara', status_ekonomi:'miskin', total_bantuan:1 }, + { id:6, no_kk:'6171010101010006', nama_kepala:'Mulyadi', kecamatan:'Pontianak Timur', kelurahan:'Dalam Bugis', jumlah_anggota:2, total_penghasilan:4500000, nama_ri:"Masjid Jami'", status_ekonomi:'mampu', total_bantuan:0 }, + { id:7, no_kk:'6171010101010007', nama_kepala:'Yohanes Kristian',kecamatan:'Pontianak Selatan', kelurahan:'Akcaya', jumlah_anggota:2, total_penghasilan:1100000, nama_ri:'Katedral', status_ekonomi:'rentan', total_bantuan:0 }, + { id:8, no_kk:'6171010101010008', nama_kepala:'Tan Eng Huat', kecamatan:'Pontianak Kota', kelurahan:'Pontianak Kota',jumlah_anggota:1,total_penghasilan:600000, nama_ri:'Klenteng', status_ekonomi:'miskin', total_bantuan:1 }, + ]; + + async function load() { + try { all = await Api.get('/keluarga'); } catch { all = DEMO; } + applyFilter(); + } + + function search(q) { applyFilter(); } + + function applyFilter() { + const q = gv('kf-search'); + const ek = gv('kf-ekonomi'); + const data = all.filter(k => + (!q || k.nama_kepala?.toLowerCase().includes(q.toLowerCase()) || k.no_kk?.includes(q)) && + (!ek || k.status_ekonomi === ek) + ); + render(data); + } + + function render(data) { + const tb = ge('tbody-keluarga'); + if (!data.length) { tb.innerHTML = '
🏠

Tidak ada data

'; return; } + tb.innerHTML = data.map(k => ` + + ${k.no_kk} + ${k.nama_kepala}
${k.kelurahan||''}
+ ${k.kecamatan||'—'} + ${k.jumlah_anggota||0} + ${rp(k.total_penghasilan)} + ${k.nama_ri||'—'} + ${bdg(k.status_ekonomi,'')} + + ${k.total_bantuan > 0 + ? `✅ ${k.total_bantuan}x` + : `❌ Belum`} + + +
+ + ${App.canEdit() ? ` + + ` : ''} +
+ + `).join(''); + } + + async function showForm(id = null) { + editId = id; + ge('mk-title').textContent = id ? '✏️ Edit Data Keluarga' : '🏠 Tambah Kartu Keluarga'; + ge('fk-nokk').readOnly = !!id; + // Load RI dropdown + try { + const riList = await Api.get('/rumah-ibadah'); + ge('fk-ri').innerHTML = '' + + riList.map(r => ``).join(''); + } catch { + ge('fk-ri').innerHTML = ''; + } + if (id) { + const k = all.find(x => x.id == id) || {}; + sv('fk-nokk', k.no_kk); sv('fk-kepala', k.nama_kepala); + sv('fk-alamat', k.alamat); sv('fk-kecamatan', k.kecamatan); + sv('fk-kelurahan', k.kelurahan); sv('fk-ekonomi', k.status_ekonomi || 'rentan'); + sv('fk-lat', k.lat); sv('fk-lng', k.lng); + if (k.id_rumah_ibadah) sv('fk-ri', k.id_rumah_ibadah); + } else { + ['fk-nokk','fk-kepala','fk-alamat','fk-kecamatan','fk-kelurahan','fk-lat','fk-lng'].forEach(i => sv(i,'')); + sv('fk-ekonomi','rentan'); + } + App.showModal('modal-keluarga'); + } + + async function save() { + const nokk = gv('fk-nokk'); + if (!nokk || nokk.length !== 16) { App.toast('No. KK harus 16 digit','error'); return; } + if (!gv('fk-kepala')) { App.toast('Nama kepala wajib diisi','error'); return; } + const body = { + no_kk: nokk, nama_kepala: gv('fk-kepala'), + id_rumah_ibadah: gv('fk-ri') || null, + alamat: gv('fk-alamat'), kecamatan: gv('fk-kecamatan'), + kelurahan: gv('fk-kelurahan'), status_ekonomi: gv('fk-ekonomi'), + lat: gv('fk-lat') || null, lng: gv('fk-lng') || null, + }; + try { + if (editId) { await Api.put(`/keluarga/${editId}`, body); App.toast('Data KK diperbarui ✅','success'); } + else { await Api.post('/keluarga', body); App.toast('KK ditambahkan ✅','success'); } + App.closeModal('modal-keluarga'); + load(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function hapus(id) { + if (!confirm('Hapus data keluarga ini?\nPastikan semua anggota sudah dipindah atau dihapus.')) return; + try { await Api.delete(`/keluarga/${id}`); App.toast('Data KK dihapus','success'); load(); } + catch(e) { App.toast(e.message,'error'); } + } + + async function showAnggota(id) { + const k = all.find(x => x.id == id); + let anggota = []; + try { + const detail = await Api.get(`/keluarga/${id}`); + anggota = detail.anggota || []; + } catch { + anggota = []; + } + if (!anggota.length) { App.toast('Tidak ada data anggota (atau belum terhubung ke API)','info'); return; } + // Tampilkan dalam alert atau panel detail + const info = anggota.map(a => `• ${a.nama_lengkap} (${a.umur}th) — ${cap(a.status_keluarga)} — ${a.status_ekonomi}`).join('\n'); + alert(`Anggota KK: ${k?.nama_kepala}\n\n${info}`); + } + + return { load, search, applyFilter, showForm, save, hapus, showAnggota }; +})(); diff --git a/webgis-v3/assets/js/laporan.js b/webgis-v3/assets/js/laporan.js new file mode 100644 index 0000000..12b0576 --- /dev/null +++ b/webgis-v3/assets/js/laporan.js @@ -0,0 +1,96 @@ +const LaporanPanel = (() => { + const DEMO = [ + { id:1, nama_pelapor:'Anonim', deskripsi:'Ibu Maria sakit keras sudah seminggu, tidak bisa berobat karena tidak ada biaya. Butuh bantuan medis segera.', urgensi:'darurat', status:'diverifikasi', alamat_laporan:'Jl. Kemuning No.3, Akcaya', created_at:'2025-05-01T08:00:00', nama_ri:'Gereja Katedral' }, + { id:2, nama_pelapor:'Eko Prasetyo', deskripsi:'Ada keluarga baru pindah ke Gg. Melati yang sepertinya sangat membutuhkan bantuan. Anak-anak tidak sekolah.', urgensi:'sedang', status:'pending', alamat_laporan:'Gg. Melati, Dalam Bugis', created_at:'2025-05-10T10:00:00', nama_ri:"Masjid Jami'" }, + { id:3, nama_pelapor:'Anonim', deskripsi:'Pak Tan penyandang disabilitas, hidup sebatang kara dan sangat sulit mendapat penghasilan. Perlu perhatian.', urgensi:'tinggi', status:'diproses', alamat_laporan:'Jl. Gusti Situt No.7', created_at:'2025-05-12T14:00:00', nama_ri:'Klenteng Kwan Ti Miau' }, + { id:4, nama_pelapor:'Hendra', deskripsi:'Balita 2 tahun kondisi gizi buruk. Orang tua tidak mampu memenuhi kebutuhan gizi anak.', urgensi:'darurat', status:'pending', alamat_laporan:'Gg. Teratai, Parit Tokaya', created_at:'2025-05-15T09:00:00', nama_ri:'Masjid Mujahidin' }, + ]; + + const URG = { darurat:'🔴', tinggi:'🟠', sedang:'🟡', rendah:'🟢' }; + const URG_COLOR = { darurat:'var(--red)', tinggi:'var(--orange)', sedang:'var(--yellow)', rendah:'var(--green)' }; + const STATUS_LABEL = { pending:'⏳ Pending', diverifikasi:'✅ Diverifikasi', diproses:'🔄 Diproses', selesai:'🏁 Selesai' }; + + async function load() { + const st = gv('lf-status'); + const ur = gv('lf-urgensi'); + let url = '/laporan'; + const p = []; if(st) p.push(`status=${st}`); if(ur) p.push(`urgensi=${ur}`); + if(p.length) url += '?' + p.join('&'); + let data; + try { data = await Api.get(url); } catch { data = DEMO; } + if(st) data = data.filter(l => l.status === st); + if(ur) data = data.filter(l => l.urgensi === ur); + render(data); + } + + function render(data) { + const el = ge('laporan-grid'); + if (!data.length) { + el.innerHTML = '

Tidak ada laporan

Semua laporan sudah ditangani

'; + return; + } + el.innerHTML = data.map(l => ` +
+
+
+ ${URG[l.urgensi]||'📋'} ${(l.urgensi||'').toUpperCase()} +
#${l.id} — ${l.nama_pelapor||'Anonim'}
+
+ ${STATUS_LABEL[l.status]||l.status} +
+
${l.deskripsi}
+
+ 📍 ${l.alamat_laporan||'—'} + 🕌 ${l.nama_ri||'—'} + 📅 ${(l.created_at||'').substring(0,10)} +
+ ${App.canEdit() && l.status !== 'selesai' ? ` +
+ ${l.status === 'pending' ? `` : ''} + ${l.status === 'diverifikasi' ? `` : ''} + ${l.status !== 'selesai' ? `` : ''} + +
` : ''} +
`).join(''); + } + + async function updateStatus(id, status) { + try { + await Api.put(`/laporan/${id}`, { status }); + App.toast(`Status laporan diubah: ${STATUS_LABEL[status]||status}`, 'success'); + load(); App.updateHeaderStats(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function hapus(id) { + if (!confirm('Hapus laporan ini?')) return; + try { await Api.delete(`/laporan/${id}`); App.toast('Laporan dihapus','success'); load(); } + catch(e) { App.toast(e.message,'error'); } + } + + function showKirimModal() { + ['fl-nama','fl-hp','fl-nik','fl-alamat','fl-deskripsi'].forEach(id => sv(id,'')); + sv('fl-urgensi','sedang'); + App.showModal('modal-laporan'); + } + + async function kirim() { + if (!gv('fl-deskripsi')) { App.toast('Deskripsi kondisi wajib diisi','error'); return; } + const body = { + nama_pelapor: gv('fl-nama') || null, + no_hp_pelapor: gv('fl-hp') || null, + nik_terdampak: gv('fl-nik') || null, + urgensi: gv('fl-urgensi'), + alamat_laporan:gv('fl-alamat'), + deskripsi: gv('fl-deskripsi'), + }; + try { + await Api.post('/laporan', body); + App.closeModal('modal-laporan'); + App.toast('Laporan berhasil dikirim! Terima kasih 🙏','success'); + load(); App.updateHeaderStats(); + } catch(e) { App.toast(e.message,'error'); } + } + + return { load, updateStatus, hapus, showKirimModal, kirim }; +})(); diff --git a/webgis-v3/assets/js/log.js b/webgis-v3/assets/js/log.js new file mode 100644 index 0000000..fd97991 --- /dev/null +++ b/webgis-v3/assets/js/log.js @@ -0,0 +1,40 @@ +const LogPanel = (() => { + const DEMO = [ + { created_at:'2025-05-14 10:32:00', nama_lengkap:'Ahmad Fauzi', aksi:'create_histori_bantuan', tabel:'histori_bantuan', id_record:'5', ip_address:'192.168.1.10' }, + { created_at:'2025-05-14 09:15:00', nama_lengkap:'Romo Benediktus', aksi:'update_laporan', tabel:'laporan', id_record:'1', ip_address:'192.168.1.20' }, + { created_at:'2025-05-13 08:10:00', nama_lengkap:'Ahmad Fauzi', aksi:'update_penduduk', tabel:'penduduk', id_record:'6171010101010006', ip_address:'192.168.1.10' }, + { created_at:'2025-05-13 08:00:00', nama_legendkap:'Ahmad Fauzi', aksi:'login', tabel:'user', id_record:'2', ip_address:'192.168.1.10' }, + { created_at:'2025-05-12 16:45:00', nama_lengkap:'Administrator', aksi:'create_penduduk', tabel:'penduduk', id_record:'6171010101010014', ip_address:'127.0.0.1' }, + { created_at:'2025-05-12 14:00:00', nama_lengkap:'Administrator', aksi:'delete_penduduk', tabel:'penduduk', id_record:'6171999999999999', ip_address:'127.0.0.1' }, + ]; + + async function load() { + let data; + try { data = await Api.get('/log'); } catch { data = DEMO; } + render(data); + } + + function getAksiClass(aksi) { + if (aksi?.startsWith('create')) return 'create'; + if (aksi?.startsWith('update')) return 'update'; + if (aksi?.startsWith('delete')) return 'delete'; + if (aksi === 'login' || aksi === 'logout') return 'login'; + return ''; + } + + function render(data) { + const tb = ge('tbody-log'); + if (!data.length) { tb.innerHTML = '
📋

Tidak ada log

'; return; } + tb.innerHTML = data.map(l => ` + + ${(l.created_at||'').substring(0,16)} + ${l.nama_lengkap||'—'} + ${l.aksi} + ${l.tabel||'—'} + ${(l.id_record||'').substring(0,20)} + ${l.ip_address||'—'} + `).join(''); + } + + return { load }; +})(); diff --git a/webgis-v3/assets/js/map.js b/webgis-v3/assets/js/map.js new file mode 100644 index 0000000..6e5d301 --- /dev/null +++ b/webgis-v3/assets/js/map.js @@ -0,0 +1,199 @@ +const MapApp = (() => { + let map, clusterLayer, riLayer, laporanLayer, radiusLayer; + let allPenduduk = [], allRI = [], allLaporan = []; + let layerState = { penduduk:true, ri:true, laporan:false, radius:true }; + let ready = false; + + const COLOR = { miskin:'#ff4d6d', rentan:'#ffd166', mampu:'#06d6a0' }; + const RI_EMOJI = { Masjid:'🕌', Gereja:'⛪', Vihara:'🛕', Pura:'🛕', Klenteng:'🏮', Lainnya:'🏛️' }; + + function mkIcon(color, emoji='') { + return L.divIcon({ + className:'', + html:`
${emoji||'👤'}
`, + iconSize:[30,30],iconAnchor:[15,15],popupAnchor:[0,-16] + }); + } + + function riIcon(emoji) { + return L.divIcon({ + className:'', + html:`
${emoji}
`, + iconSize:[34,34],iconAnchor:[17,17],popupAnchor:[0,-18] + }); + } + + function init() { + if (ready) { setTimeout(()=>map.invalidateSize(),100); return; } + ready = true; + + map = L.map('map',{ center:[-0.028,109.338],zoom:13,zoomControl:true }); + + const tiles = { + 'Dark': L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png',{attribution:'© CARTO',maxZoom:19}), + 'Street': L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{attribution:'© OSM',maxZoom:19}), + 'Satellite': L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',{attribution:'© Esri',maxZoom:19}), + }; + tiles['Dark'].addTo(map); + L.control.layers(tiles,{},{collapsed:false,position:'topright'}).addTo(map); + + clusterLayer = L.markerClusterGroup({ maxClusterRadius:60, showCoverageOnHover:false }); + riLayer = L.layerGroup(); + laporanLayer = L.layerGroup(); + radiusLayer = L.layerGroup(); + + map.addLayer(clusterLayer); + map.addLayer(riLayer); + map.addLayer(radiusLayer); + + // Koordinat kursor + const coordDiv = L.control({position:'bottomleft'}); + coordDiv.onAdd = ()=>{ + const d=L.DomUtil.create('div'); + d.style.cssText='background:rgba(8,12,20,.85);color:#aaa;padding:4px 12px;border-radius:6px;font-size:11px;font-family:JetBrains Mono,monospace;border:1px solid rgba(255,255,255,.1)'; + map.on('mousemove',e=>d.innerHTML=`${e.latlng.lat.toFixed(6)}, ${e.latlng.lng.toFixed(6)}`); + return d; + }; + coordDiv.addTo(map); + + loadAll(); + } + + async function loadAll() { + try { + const [gP, gR, gL] = await Promise.all([ + Api.get('/peta?layer=penduduk'), + Api.get('/peta?layer=rumah_ibadah'), + Api.get('/peta?layer=laporan'), + ]); + allPenduduk = gP.features || []; + allRI = gR.features || []; + allLaporan = gL.features || []; + } catch { + // Demo data + allPenduduk = buildDemoPenduduk(); + allRI = buildDemoRI(); + allLaporan = buildDemoLaporan(); + } + renderAll(); + } + + function renderAll() { + renderPenduduk(allPenduduk); + renderRI(allRI); + renderLaporan(allLaporan); + } + + function renderPenduduk(features) { + clusterLayer.clearLayers(); + features.forEach(f => { + const p = f.properties; + const [lng,lat] = f.geometry.coordinates; + const icon = mkIcon(COLOR[p.status_ekonomi]||COLOR.rentan); + L.marker([lat,lng],{icon}).bindPopup(` +
+
🏠 ${p.nama_kepala||p.nama_lengkap}
+
+
No. KK${p.no_kk||p.nik||'—'}
+
Alamat${p.alamat||'—'}
+
Anggota${p.jumlah_anggota||1} jiwa
+
Status${(p.status_ekonomi||'').toUpperCase()}
+
Bantuan${p.total_bantuan||0}x diterima
+
Rumah Ibadah${p.nama_ri||'—'}
+
`).addTo(clusterLayer); + }); + } + + function renderRI(features) { + riLayer.clearLayers(); radiusLayer.clearLayers(); + features.forEach(f => { + const r = f.properties; + const [lng,lat] = f.geometry.coordinates; + const emoji = RI_EMOJI[r.jenis]||'🏛️'; + L.marker([lat,lng],{icon:riIcon(emoji)}).bindPopup(` +
+
${emoji} ${r.nama}
+
Jenis${r.jenis}
+
Alamat${r.alamat||'—'}
+
Kontak${r.kontak||'—'}
+
Radius${r.radius_meter}m
+
`).addTo(riLayer); + L.circle([lat,lng],{ + radius:r.radius_meter,color:'#4361ee',fillColor:'#4361ee', + fillOpacity:.06,weight:1.5,dashArray:'6 4' + }).addTo(radiusLayer); + }); + } + + function renderLaporan(features) { + laporanLayer.clearLayers(); + const UC = { darurat:'#ff4d6d', tinggi:'#ff8c42', sedang:'#ffd166', rendah:'#06d6a0' }; + const UE = { darurat:'🚨', tinggi:'⚠️', sedang:'📋', rendah:'📝' }; + features.forEach(f => { + const l = f.properties; + const [lng,lat] = f.geometry.coordinates; + const icon = mkIcon(UC[l.urgensi]||'#888', UE[l.urgensi]||'📋'); + L.marker([lat,lng],{icon}).bindPopup(` +
+
${UE[l.urgensi]||'📋'} Laporan ${(l.urgensi||'').toUpperCase()}
+
+
${l.deskripsi||'—'}
+
Alamat${l.alamat_laporan||'—'}
+
Status${l.status||'—'}
+
`).addTo(laporanLayer); + }); + } + + function applyFilter() { + const status = ge('map-status-filter')?.value; + const data = status ? allPenduduk.filter(f => f.properties.status_ekonomi === status) : allPenduduk; + renderPenduduk(data); + } + + function toggleLayer(name, btn) { + layerState[name] = !layerState[name]; + const on = layerState[name]; + const layerMap = { penduduk:clusterLayer, ri:riLayer, laporan:laporanLayer, radius:radiusLayer }; + const activeCls = { penduduk:'active-green', ri:'active-blue', laporan:'active-purple', radius:'active-orange' }; + on ? map.addLayer(layerMap[name]) : map.removeLayer(layerMap[name]); + if (btn) { + btn.classList.toggle(activeCls[name], on); + } + } + + // Demo seed data (offline mode) + function buildDemoPenduduk() { + const seeds = [ + { nama_kepala:'Ahmad Suryana', alamat:'Gg. Mawar No.5', lat:-0.027, lng:109.344, status_ekonomi:'miskin', jumlah_anggota:3, no_kk:'6171010101010001', nama_ri:"Masjid Jami'", total_bantuan:2 }, + { nama_kepala:'Samsul Bahri', alamat:'Jl. Veteran No.12', lat:-0.0315, lng:109.339, status_ekonomi:'rentan', jumlah_anggota:2, no_kk:'6171010101010002', nama_ri:"Masjid Jami'", total_bantuan:0 }, + { nama_kepala:'Maria Magdalena',alamat:'Jl. Kemuning No.3', lat:-0.033, lng:109.331, status_ekonomi:'miskin', jumlah_anggota:3, no_kk:'6171010101010003', nama_ri:'Katedral', total_bantuan:1 }, + { nama_kepala:'Hendra Wijaya', alamat:'Jl. Ahmad Yani', lat:-0.049, lng:109.326, status_ekonomi:'rentan', jumlah_anggota:2, no_kk:'6171010101010004', nama_ri:'Mujahidin', total_bantuan:0 }, + { nama_kepala:'Lim Ah Kow', alamat:'Jl. Diponegoro', lat:-0.022, lng:109.337, status_ekonomi:'miskin', jumlah_anggota:2, no_kk:'6171010101010005', nama_ri:'Vihara', total_bantuan:1 }, + { nama_kepala:'Mulyadi', alamat:'Gg. Teratai No.8', lat:-0.0265, lng:109.346, status_ekonomi:'mampu', jumlah_anggota:2, no_kk:'6171010101010006', nama_ri:"Masjid Jami'", total_bantuan:0 }, + { nama_kepala:'Yohanes Kristian',alamat:'Jl. HOS Cokro', lat:-0.034, lng:109.330, status_ekonomi:'rentan', jumlah_anggota:2, no_kk:'6171010101010007', nama_ri:'Katedral', total_bantuan:0 }, + { nama_kepala:'Tan Eng Huat', alamat:'Jl. Gusti Situt', lat:-0.020, lng:109.4415,status_ekonomi:'miskin', jumlah_anggota:1, no_kk:'6171010101010008', nama_ri:'Klenteng', total_bantuan:1 }, + ]; + return seeds.map(s=>({type:'Feature',geometry:{type:'Point',coordinates:[s.lng,s.lat]},properties:s})); + } + + function buildDemoRI() { + const ri = [ + { nama:"Masjid Jami' Pontianak", jenis:'Masjid', lat:-0.02596, lng:109.34307, radius_meter:350, alamat:'Jl. Tanjungpura', kontak:'0561-732001' }, + { nama:'Gereja Katedral Pontianak', jenis:'Gereja', lat:-0.03200, lng:109.33200, radius_meter:300, alamat:'Jl. Patimura No.9', kontak:'0561-766000' }, + { nama:'Vihara Bodhisattva Karaniya Metta', jenis:'Vihara', lat:-0.02100, lng:109.33800, radius_meter:300, alamat:'Jl. Diponegoro', kontak:'0561-733456' }, + { nama:'Klenteng Kwan Ti Miau', jenis:'Klenteng', lat:-0.01900, lng:109.34100, radius_meter:280, alamat:'Jl. Gusti Situt', kontak:'0561-740123' }, + { nama:'Masjid Mujahidin Pontianak', jenis:'Masjid', lat:-0.04800, lng:109.32500, radius_meter:400, alamat:'Jl. Ahmad Yani', kontak:'0561-764567' }, + { nama:'Gereja GPIB Immanuel', jenis:'Gereja', lat:-0.02800, lng:109.34500, radius_meter:300, alamat:'Jl. Rahadi Usman', kontak:'0561-735890' }, + ]; + return ri.map(r=>({type:'Feature',geometry:{type:'Point',coordinates:[r.lng,r.lat]},properties:r})); + } + + function buildDemoLaporan() { + return [ + { type:'Feature',geometry:{type:'Point',coordinates:[109.3311,-0.0330]},properties:{ deskripsi:'Ibu Maria sakit keras, tidak bisa berobat', urgensi:'darurat', status:'diverifikasi', alamat_laporan:'Jl. Kemuning No.3' }}, + { type:'Feature',geometry:{type:'Point',coordinates:[109.3415,-0.0200]},properties:{ deskripsi:'Pak Tan penyandang disabilitas butuh bantuan', urgensi:'tinggi', status:'diproses', alamat_laporan:'Jl. Gusti Situt No.7' }}, + ]; + } + + return { init, applyFilter, toggleLayer, loadAll }; +})(); diff --git a/webgis-v3/assets/js/penduduk.js b/webgis-v3/assets/js/penduduk.js new file mode 100644 index 0000000..3b60028 --- /dev/null +++ b/webgis-v3/assets/js/penduduk.js @@ -0,0 +1,217 @@ +const Penduduk = (() => { + let all = [], filtered = [], editNIK = null; + + const DEMO = [ + { nik:'6171010101010001', nama_lengkap:'Ahmad Suryana', umur:44, status_keluarga:'kepala', pekerjaan:'Buruh Harian', penghasilan:900000, status_ekonomi:'miskin', kondisi_kesehatan:'sehat', pendidikan_terakhir:'SMP', no_kk:'6171010101010001', kecamatan:'Pontianak Timur' }, + { nik:'6171010101010002', nama_lengkap:'Siti Rahma', umur:39, status_keluarga:'istri', pekerjaan:'Ibu RT', penghasilan:0, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_ringan',pendidikan_terakhir:'SD', no_kk:'6171010101010001', kecamatan:'Pontianak Timur' }, + { nik:'6171010101010003', nama_lengkap:'Budi Suryana', umur:12, status_keluarga:'anak', pekerjaan:'Pelajar', penghasilan:0, status_ekonomi:'miskin', kondisi_kesehatan:'sehat', pendidikan_terakhir:'SMP', no_kk:'6171010101010001', kecamatan:'Pontianak Timur' }, + { nik:'6171010101010004', nama_lengkap:'Samsul Bahri', umur:49, status_keluarga:'kepala', pekerjaan:'Pedagang Kaki Lima',penghasilan:1200000,status_ekonomi:'rentan', kondisi_kesehatan:'sehat', pendidikan_terakhir:'SMA_SMK', no_kk:'6171010101010002', kecamatan:'Pontianak Kota' }, + { nik:'6171010101010005', nama_lengkap:'Dewi Kartika', umur:46, status_keluarga:'istri', pekerjaan:'Buruh Cuci', penghasilan:500000, status_ekonomi:'rentan', kondisi_kesehatan:'sehat', pendidikan_terakhir:'SD', no_kk:'6171010101010002', kecamatan:'Pontianak Kota' }, + { nik:'6171010101010006', nama_lengkap:'Maria Magdalena', umur:54, status_keluarga:'kepala', pekerjaan:'Penjual Gorengan',penghasilan:800000, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_berat', pendidikan_terakhir:'SD', no_kk:'6171010101010003', kecamatan:'Pontianak Selatan' }, + { nik:'6171010101010007', nama_lengkap:'Petrus Yulius', umur:19, status_keluarga:'anak', pekerjaan:'Pelajar', penghasilan:0, status_ekonomi:'miskin', kondisi_kesehatan:'sehat', pendidikan_terakhir:'SMA_SMK', no_kk:'6171010101010003', kecamatan:'Pontianak Selatan' }, + { nik:'6171010101010010', nama_lengkap:'Lim Ah Kow', umur:59, status_keluarga:'kepala', pekerjaan:'Tidak Bekerja', penghasilan:0, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_berat', pendidikan_terakhir:'SD', no_kk:'6171010101010005', kecamatan:'Pontianak Kota' }, + { nik:'6171010101010012', nama_lengkap:'Mulyadi', umur:45, status_keluarga:'kepala', pekerjaan:'PNS Gol. III', penghasilan:4500000, status_ekonomi:'mampu', kondisi_kesehatan:'sehat', pendidikan_terakhir:'S1', no_kk:'6171010101010006', kecamatan:'Pontianak Timur' }, + { nik:'6171010101010014', nama_lengkap:'Tan Eng Huat', umur:65, status_keluarga:'kepala', pekerjaan:'Pemulung', penghasilan:600000, status_ekonomi:'miskin', kondisi_kesehatan:'disabilitas', pendidikan_terakhir:'SD', no_kk:'6171010101010008', kecamatan:'Pontianak Kota' }, + ]; + + async function load() { + try { all = await Api.get('/penduduk'); } catch { all = DEMO; } + filtered = [...all]; + render(filtered); + ge('pf-count').textContent = `${all.length} total`; + } + + function search(q) { applyFilter(q); } + function applyFilter(qOverride) { + const q = qOverride ?? gv('pf-search'); + const ek = gv('pf-ekonomi'); + const ke = gv('pf-kesehatan'); + filtered = all.filter(p => + (!q || p.nama_lengkap?.toLowerCase().includes(q.toLowerCase()) || p.nik?.includes(q)) && + (!ek || p.status_ekonomi === ek) && + (!ke || p.kondisi_kesehatan === ke) + ); + render(filtered); + ge('pf-count').textContent = `${filtered.length} / ${all.length}`; + } + + const pendidikanLabel = { tidak_sekolah:'Tdk Sekolah', SD:'SD', SMP:'SMP', SMA_SMK:'SMA/SMK', D1_D3:'D3', S1:'S1', S2_S3:'S2/S3' }; + + function render(data) { + const tb = ge('tbody-penduduk'); + if (!data.length) { tb.innerHTML = '
🔍

Tidak ada data

Coba ubah filter pencarian

'; return; } + tb.innerHTML = data.map(p => ` + + ${p.nik} + ${p.nama_lengkap}
${p.kecamatan||''}
+ ${p.umur||'?'} th + ${cap(p.status_keluarga)} + ${p.pekerjaan||'—'} + ${rp(p.penghasilan)} + ${bdg(p.status_ekonomi,'')} + ${bdg(p.kondisi_kesehatan,'')} + ${pendidikanLabel[p.pendidikan_terakhir]||p.pendidikan_terakhir||'—'} + +
+ + + +
+ + `).join(''); + } + + async function showForm(nik = null) { + editNIK = nik; + ge('mp-title').textContent = nik ? `✏️ Edit — ${nik}` : '➕ Tambah Penduduk Baru'; + ge('fp-nik').readOnly = !!nik; + await loadKKDropdown(); + if (nik) { + try { + const p = await Api.get(`/penduduk/${nik}`); + fillForm(p); + } catch { + const p = all.find(x => x.nik === nik); + if (p) fillForm(p); + } + } else { + ['fp-nik','fp-nama','fp-tempat','fp-pekerjaan','fp-ket-sehat'].forEach(id => sv(id,'')); + sv('fp-penghasilan','0'); sv('fp-umur',''); + ge('fp-warn').classList.add('hidden'); + } + App.showModal('modal-penduduk'); + } + + function fillForm(p) { + sv('fp-nik', p.nik); sv('fp-nama', p.nama_lengkap); + sv('fp-jkel', p.jenis_kelamin); sv('fp-tgl', p.tanggal_lahir?.substring(0,10)); + sv('fp-umur', p.umur ? `${p.umur} tahun` : ''); + sv('fp-tempat', p.tempat_lahir); sv('fp-agama', p.agama); + sv('fp-status-kk', p.status_keluarga); sv('fp-kawin', p.status_perkawinan); + sv('fp-hidup', p.status_hidup); sv('fp-ekonomi', p.status_ekonomi); + sv('fp-pekerjaan', p.pekerjaan); sv('fp-penghasilan', p.penghasilan || 0); + sv('fp-pendidikan', p.pendidikan_terakhir); sv('fp-stat-pend', p.status_pendidikan); + sv('fp-kesehatan', p.kondisi_kesehatan); sv('fp-ket-sehat', p.keterangan_kesehatan); + if (p.id_keluarga) sv('fp-kk', p.id_keluarga); + } + + async function loadKKDropdown() { + const sel = ge('fp-kk'); + try { + const list = await Api.get('/keluarga'); + sel.innerHTML = list.map(k => ``).join(''); + } catch { + sel.innerHTML = ''; + } + } + + function hitungUmur() { + const tgl = gv('fp-tgl'); + if (!tgl) return; + const umur = Math.floor((Date.now() - new Date(tgl)) / (365.25*24*3600*1000)); + sv('fp-umur', `${umur} tahun`); + // Validasi + const pend = gv('fp-pendidikan'), stat = gv('fp-stat-pend'); + const warns = []; + if (umur >= 7 && umur <= 15 && stat === 'tidak_sekolah') + warns.push(`⚠️ Usia ${umur} tahun — seharusnya masih wajib belajar (SD/SMP)`); + if (umur >= 16 && umur <= 18 && stat === 'tidak_sekolah' && ['tidak_sekolah','SD'].includes(pend)) + warns.push(`⚠️ Usia ${umur} tahun — disarankan melanjutkan ke SMA/SMK`); + const wEl = ge('fp-warn'); + if (warns.length) { wEl.innerHTML = warns.join('
'); wEl.classList.remove('hidden'); } + else wEl.classList.add('hidden'); + } + + async function save() { + const nik = gv('fp-nik'); + if (!nik || nik.length !== 16 || !/^\d+$/.test(nik)) { App.toast('NIK harus 16 digit angka','error'); return; } + if (!gv('fp-nama')) { App.toast('Nama lengkap wajib diisi','error'); return; } + if (!gv('fp-tgl')) { App.toast('Tanggal lahir wajib diisi','error'); return; } + const body = { + nik, id_keluarga: gv('fp-kk'), + nama_lengkap: gv('fp-nama'), jenis_kelamin: gv('fp-jkel'), + tanggal_lahir: gv('fp-tgl'), tempat_lahir: gv('fp-tempat'), + agama: gv('fp-agama'), status_keluarga: gv('fp-status-kk'), + status_perkawinan: gv('fp-kawin'), status_hidup: gv('fp-hidup'), + pekerjaan: gv('fp-pekerjaan'), penghasilan: +gv('fp-penghasilan')||0, + status_ekonomi: gv('fp-ekonomi'), pendidikan_terakhir: gv('fp-pendidikan'), + status_pendidikan: gv('fp-stat-pend'), kondisi_kesehatan: gv('fp-kesehatan'), + keterangan_kesehatan: gv('fp-ket-sehat'), + }; + try { + if (editNIK) { await Api.put(`/penduduk/${editNIK}`, body); App.toast('Data diperbarui ✅','success'); } + else { await Api.post('/penduduk', body); App.toast('Penduduk ditambahkan ✅','success'); } + App.closeModal('modal-penduduk'); + await load(); + App.updateHeaderStats(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function hapus(nik) { + if (!confirm(`Hapus data penduduk NIK ${nik}?\nTindakan ini tidak dapat dibatalkan.`)) return; + try { + await Api.delete(`/penduduk/${nik}`); + App.toast('Data dihapus','success'); + load(); App.updateHeaderStats(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function showDetail(nik) { + ge('dp-title').textContent = 'Memuat…'; + ge('detail-panel').classList.add('open'); + let p; + try { p = await Api.get(`/penduduk/${nik}`); } + catch { p = all.find(x => x.nik === nik); } + if (!p) { App.toast('Gagal memuat detail','error'); return; } + ge('dp-title').textContent = p.nama_lengkap; + const histori = p.histori_bantuan || []; + ge('dp-body').innerHTML = ` +
+
Identitas
+ ${field('NIK', `${p.nik}`)} + ${field('Jenis Kelamin', p.jenis_kelamin === 'L' ? 'Laki-laki' : 'Perempuan')} + ${field('Umur', `${p.umur||'?'} tahun`)} + ${field('Tempat Lahir', p.tempat_lahir||'—')} + ${field('Agama', p.agama||'—')} + ${field('Status KK', cap(p.status_keluarga))} + ${field('Perkawinan', cap(p.status_perkawinan))} +
+
+
Sosial Ekonomi
+ ${field('Pekerjaan', p.pekerjaan||'—')} + ${field('Penghasilan', rp(p.penghasilan))} + ${field('Status Ekonomi', bdg(p.status_ekonomi,''))} + ${field('Pendidikan', p.pendidikan_terakhir?.replace('_','/')||'—')} + ${field('Kesehatan', bdg(p.kondisi_kesehatan,''))} +
+
+
Lokasi
+ ${field('Kelurahan', p.kelurahan||'—')} + ${field('Kecamatan', p.kecamatan||'—')} + ${field('Alamat', p.alamat||'—')} + ${field('Rumah Ibadah', p.nama_ri||'—')} +
+
+
Riwayat Bantuan (${histori.length}x)
+ ${histori.length ? histori.map(h=>` +
+ ${h.nama_bantuan}${h.tanggal?.substring(0,10)} +
${h.nama_ri||''} · ${h.jumlah} ${h.satuan||''}
+
`).join('') : '

Belum pernah menerima bantuan

'} +
+ ${App.canEdit() ? ` +
+ + +
` : ''} + `; + } + + function field(lbl, val) { + return `
${lbl}${val}
`; + } + + function closeDetail() { ge('detail-panel').classList.remove('open'); } + + return { load, search, applyFilter, showForm, hitungUmur, save, hapus, showDetail, closeDetail }; +})(); diff --git a/webgis-v3/assets/js/prioritas.js b/webgis-v3/assets/js/prioritas.js new file mode 100644 index 0000000..fa6cb5e --- /dev/null +++ b/webgis-v3/assets/js/prioritas.js @@ -0,0 +1,59 @@ +const PrioritasPanel = (() => { + let all = []; + + const DEMO = [ + { nik:'6171010101010006', nama_lengkap:'Maria Magdalena', umur:54, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_berat', kecamatan:'Pontianak Selatan', nama_ri:'Katedral', jumlah_dibantu:1, level_prioritas:'SANGAT TINGGI' }, + { nik:'6171010101010014', nama_lengkap:'Tan Eng Huat', umur:65, status_ekonomi:'miskin', kondisi_kesehatan:'disabilitas', kecamatan:'Pontianak Kota', nama_ri:'Klenteng', jumlah_dibantu:1, level_prioritas:'SANGAT TINGGI' }, + { nik:'6171010101010010', nama_lengkap:'Lim Ah Kow', umur:59, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_berat', kecamatan:'Pontianak Kota', nama_ri:'Vihara', jumlah_dibantu:1, level_prioritas:'SANGAT TINGGI' }, + { nik:'6171010101010002', nama_lengkap:'Siti Rahma', umur:39, status_ekonomi:'miskin', kondisi_kesehatan:'sakit_ringan',kecamatan:'Pontianak Timur', nama_ri:"Masjid Jami'", jumlah_dibantu:2, level_prioritas:'TINGGI' }, + { nik:'6171010101010001', nama_lengkap:'Ahmad Suryana', umur:44, status_ekonomi:'miskin', kondisi_kesehatan:'sehat', kecamatan:'Pontianak Timur', nama_ri:"Masjid Jami'", jumlah_dibantu:2, level_prioritas:'SEDANG' }, + { nik:'6171010101010005', nama_lengkap:'Dewi Kartika', umur:46, status_ekonomi:'rentan', kondisi_kesehatan:'sehat', kecamatan:'Pontianak Kota', nama_ri:"Masjid Jami'", jumlah_dibantu:0, level_prioritas:'SEDANG' }, + ]; + + const PRIO_CLS = { 'SANGAT TINGGI':'pb-sangat-tinggi', 'TINGGI':'pb-tinggi', 'SEDANG':'pb-sedang', 'RENDAH':'pb-rendah' }; + + async function load() { + try { all = await Api.get('/prioritas'); } catch { all = DEMO; } + render(all); + } + + function render(data) { + const tb = ge('tbody-prioritas'); + if (!data.length) { tb.innerHTML = '

Tidak ada warga prioritas

'; return; } + tb.innerHTML = data.map(p => ` + + ${p.nik} + ${p.nama_lengkap} + ${p.umur} th + ${bdg(p.status_ekonomi,'')} + ${bdg(p.kondisi_kesehatan,'')} + ${p.kecamatan||'—'} + ${p.nama_ri||'—'} + + ${p.jumlah_dibantu > 0 + ? `${p.jumlah_dibantu}x` + : `Belum`} + + ${p.level_prioritas} + + ${App.canEdit() ? ` + + ` : '—'} + + `).join(''); + } + + function exportCSV() { + if (!all.length) { App.toast('Tidak ada data untuk diekspor','warning'); return; } + const hdr = ['NIK','Nama','Umur','Ekonomi','Kesehatan','Kecamatan','Rumah Ibadah','Dibantu','Prioritas']; + const rows = all.map(p => [p.nik,p.nama_lengkap,p.umur,p.status_ekonomi,p.kondisi_kesehatan,p.kecamatan,p.nama_ri,p.jumlah_dibantu,p.level_prioritas]); + const csv = '\uFEFF' + [hdr,...rows].map(r => r.map(v => `"${v||''}"`).join(',')).join('\n'); + const a = document.createElement('a'); + a.href = URL.createObjectURL(new Blob([csv],{type:'text/csv;charset=utf-8'})); + a.download = `prioritas-bantuan-${new Date().toISOString().substring(0,10)}.csv`; + a.click(); + App.toast('File CSV berhasil diunduh ✅','success'); + } + + return { load, exportCSV }; +})(); diff --git a/webgis-v3/assets/js/ri.js b/webgis-v3/assets/js/ri.js new file mode 100644 index 0000000..fcea83a --- /dev/null +++ b/webgis-v3/assets/js/ri.js @@ -0,0 +1,87 @@ +const RI = (() => { + let all = [], editId = null; + + const DEMO = [ + { id:1, nama:"Masjid Jami' Pontianak", jenis:'Masjid', kecamatan:'Pontianak Timur', kontak:'0561-732001', radius_meter:350, jumlah_kk:3, jumlah_penduduk:8, lat:-0.02596, lng:109.34307 }, + { id:2, nama:'Gereja Katedral Pontianak', jenis:'Gereja', kecamatan:'Pontianak Selatan', kontak:'0561-766000', radius_meter:300, jumlah_kk:2, jumlah_penduduk:5, lat:-0.03200, lng:109.33200 }, + { id:3, nama:'Vihara Bodhisattva Karaniya Metta', jenis:'Vihara', kecamatan:'Pontianak Kota', kontak:'0561-733456', radius_meter:300, jumlah_kk:2, jumlah_penduduk:4, lat:-0.02100, lng:109.33800 }, + { id:4, nama:'Klenteng Kwan Ti Miau', jenis:'Klenteng', kecamatan:'Pontianak Kota', kontak:'0561-740123', radius_meter:280, jumlah_kk:1, jumlah_penduduk:2, lat:-0.01900, lng:109.34100 }, + { id:5, nama:'Masjid Mujahidin Pontianak', jenis:'Masjid', kecamatan:'Pontianak Selatan', kontak:'0561-764567', radius_meter:400, jumlah_kk:1, jumlah_penduduk:2, lat:-0.04800, lng:109.32500 }, + { id:6, nama:'Gereja GPIB Immanuel', jenis:'Gereja', kecamatan:'Pontianak Kota', kontak:'0561-735890', radius_meter:300, jumlah_kk:1, jumlah_penduduk:1, lat:-0.02800, lng:109.34500 }, + ]; + + const JENIS_EMOJI = { Masjid:'🕌', Gereja:'⛪', Vihara:'🛕', Pura:'🛕', Klenteng:'🏮', Lainnya:'🏛️' }; + const JENIS_COLOR = { Masjid:'#06d6a0', Gereja:'#4cc9f0', Vihara:'#ffd166', Pura:'#f97316', Klenteng:'#b48eff', Lainnya:'#6b7a99' }; + + async function load() { + try { all = await Api.get('/rumah-ibadah'); } catch { all = DEMO; } + render(all); + } + + function render(data) { + ge('ri-grid').innerHTML = data.map(r => ` +
+
${JENIS_EMOJI[r.jenis]||'🏛️'}
+
${r.nama}
+
${r.jenis} · ${r.kecamatan||'—'}
+
+
+
${r.jumlah_kk||0}
+
KK Binaan
+
+
+
${r.jumlah_penduduk||0}
+
Jiwa
+
+
+
+ 📞 ${r.kontak||'—'}  ·  ⭕ Radius ${r.radius_meter}m +
+ ${App.canEdit() ? ` +
+ + +
` : ''} +
`).join(''); + } + + async function showForm(id = null) { + editId = id; + ge('mri-title').textContent = id ? '✏️ Edit Rumah Ibadah' : '🕌 Tambah Rumah Ibadah'; + if (id) { + const r = all.find(x => x.id == id) || {}; + sv('fri-nama', r.nama); sv('fri-jenis', r.jenis); + sv('fri-radius', r.radius_meter||300); sv('fri-lat', r.lat); + sv('fri-lng', r.lng); sv('fri-kec', r.kecamatan); + sv('fri-kontak', r.kontak); sv('fri-alamat', r.alamat); + } else { + ['fri-nama','fri-kec','fri-kontak','fri-alamat'].forEach(i => sv(i,'')); + sv('fri-radius','300'); sv('fri-lat',''); sv('fri-lng',''); + } + App.showModal('modal-ri'); + } + + async function save() { + if (!gv('fri-nama')) { App.toast('Nama wajib diisi','error'); return; } + if (!gv('fri-lat') || !gv('fri-lng')) { App.toast('Koordinat (lat/lng) wajib diisi','error'); return; } + const body = { + nama: gv('fri-nama'), jenis: gv('fri-jenis'), + radius_meter: +gv('fri-radius')||300, + lat: +gv('fri-lat'), lng: +gv('fri-lng'), + kecamatan: gv('fri-kec'), kontak: gv('fri-kontak'), alamat: gv('fri-alamat'), + }; + try { + if (editId) { await Api.put(`/rumah-ibadah/${editId}`, body); App.toast('Data diperbarui ✅','success'); } + else { await Api.post('/rumah-ibadah', body); App.toast('Rumah ibadah ditambahkan ✅','success'); } + App.closeModal('modal-ri'); load(); + } catch(e) { App.toast(e.message,'error'); } + } + + async function hapus(id) { + if (!confirm('Nonaktifkan rumah ibadah ini?')) return; + try { await Api.delete(`/rumah-ibadah/${id}`); App.toast('Dinonaktifkan','success'); load(); } + catch(e) { App.toast(e.message,'error'); } + } + + return { load, showForm, save, hapus, getAll: () => all }; +})(); diff --git a/webgis-v3/config/app.php b/webgis-v3/config/app.php new file mode 100644 index 0000000..ef3c19f --- /dev/null +++ b/webgis-v3/config/app.php @@ -0,0 +1,11 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + ]); + } + return $pdo; +} diff --git a/webgis-v3/includes/helpers.php b/webgis-v3/includes/helpers.php new file mode 100644 index 0000000..285f5c1 --- /dev/null +++ b/webgis-v3/includes/helpers.php @@ -0,0 +1,171 @@ + true, 'message' => $message, 'data' => $data], JSON_UNESCAPED_UNICODE); + exit; +} + +function jsonError(string $message = 'Error', int $code = 400, array $errors = []): void { + http_response_code($code); + header('Content-Type: application/json; charset=utf-8'); + echo json_encode(['success' => false, 'message' => $message, 'errors' => $errors], JSON_UNESCAPED_UNICODE); + exit; +} + +/* ============================================================ + Input sanitization + ============================================================ */ +function sanitize(string $val): string { + return htmlspecialchars(strip_tags(trim($val)), ENT_QUOTES, 'UTF-8'); +} + +function getBody(): array { + $raw = file_get_contents('php://input'); + $data = json_decode($raw, true); + return is_array($data) ? $data : []; +} + +function required(array $data, array $fields): array { + $errors = []; + foreach ($fields as $f) { + if (!isset($data[$f]) || trim((string)$data[$f]) === '') { + $errors[] = "Field '$f' wajib diisi"; + } + } + return $errors; +} + +/* ============================================================ + Session / Auth + ============================================================ */ +function startSession(): void { + if (session_status() === PHP_SESSION_NONE) { + session_name(SESSION_NAME); + session_start(); + } +} + +function currentUser(): ?array { + startSession(); + return $_SESSION['user'] ?? null; +} + +function requireAuth(array $allowedRoles = []): array { + $user = currentUser(); + if (!$user) jsonError('Unauthorized - silakan login', 401); + if (!empty($allowedRoles) && !in_array($user['id_role'], $allowedRoles)) { + jsonError('Forbidden - hak akses tidak cukup', 403); + } + return $user; +} + +function login(string $username, string $password): array|false { + $db = getDB(); + $stmt = $db->prepare( + "SELECT u.*, r.nama_role FROM user u JOIN role r ON u.id_role = r.id + WHERE u.username = ? AND u.aktif = 1 LIMIT 1" + ); + $stmt->execute([$username]); + $user = $stmt->fetch(); + if (!$user || !password_verify($password, $user['password_hash'])) return false; + + // Update last_login + $db->prepare("UPDATE user SET last_login = NOW() WHERE id = ?")->execute([$user['id']]); + unset($user['password_hash']); + return $user; +} + +/* ============================================================ + Activity Log + ============================================================ */ +function logActivity(string $aksi, string $tabel = '', string $idRecord = '', + array $dataLama = [], array $dataBaru = []): void { + try { + $user = currentUser(); + $db = getDB(); + $db->prepare( + "INSERT INTO log_aktivitas (id_user, aksi, tabel, id_record, data_lama, data_baru, ip_address) + VALUES (?, ?, ?, ?, ?, ?, ?)" + )->execute([ + $user['id'] ?? null, + $aksi, $tabel, $idRecord, + $dataLama ? json_encode($dataLama, JSON_UNESCAPED_UNICODE) : null, + $dataBaru ? json_encode($dataBaru, JSON_UNESCAPED_UNICODE) : null, + $_SERVER['REMOTE_ADDR'] ?? null, + ]); + } catch (Throwable $e) { /* silent */ } +} + +/* ============================================================ + Haversine distance (km) + ============================================================ */ +function haversine(float $lat1, float $lng1, float $lat2, float $lng2): float { + $R = 6371; + $dLat = deg2rad($lat2 - $lat1); + $dLng = deg2rad($lng2 - $lng1); + $a = sin($dLat/2)**2 + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLng/2)**2; + return $R * 2 * asin(sqrt($a)); +} + +/* ============================================================ + Pagination helper + ============================================================ */ +function paginate(array $data, int $page, int $perPage = 20): array { + $total = count($data); + $pages = (int)ceil($total / $perPage); + $offset = ($page - 1) * $perPage; + return [ + 'items' => array_slice($data, $offset, $perPage), + 'total' => $total, + 'page' => $page, + 'per_page' => $perPage, + 'pages' => $pages, + ]; +} + +/* ============================================================ + Validasi umur vs pendidikan + ============================================================ */ +function validasiPendidikan(int $umur, string $pendidikanTerakhir, string $statusPendidikan): array { + $warnings = []; + if ($umur >= 7 && $umur <= 15) { + if ($statusPendidikan === 'tidak_sekolah') { + $warnings[] = "Anak usia $umur tahun seharusnya masih sekolah (wajib belajar 9 tahun)"; + } + if (!in_array($pendidikanTerakhir, ['SD','SMP','tidak_sekolah'])) { + $warnings[] = "Pendidikan terakhir tidak sesuai untuk usia $umur tahun"; + } + } elseif ($umur >= 16 && $umur <= 18) { + if ($statusPendidikan === 'tidak_sekolah' && in_array($pendidikanTerakhir, ['tidak_sekolah','SD'])) { + $warnings[] = "Remaja usia $umur tahun disarankan melanjutkan ke SMA/SMK"; + } + } + return $warnings; +} + +/* ============================================================ + Upload foto helper + ============================================================ */ +function uploadFoto(array $file, string $subfolder = 'foto_laporan'): string|false { + $allowed = ['image/jpeg','image/png','image/webp']; + if (!in_array($file['type'], $allowed)) return false; + if ($file['size'] > 5 * 1024 * 1024) return false; + + $dir = UPLOAD_DIR . $subfolder . '/'; + if (!is_dir($dir)) mkdir($dir, 0755, true); + + $ext = pathinfo($file['name'], PATHINFO_EXTENSION); + $filename = uniqid('img_', true) . '.' . strtolower($ext); + $dest = $dir . $filename; + + if (!move_uploaded_file($file['tmp_name'], $dest)) return false; + return $subfolder . '/' . $filename; +} diff --git a/webgis-v3/index.html b/webgis-v3/index.html new file mode 100644 index 0000000..02e329a --- /dev/null +++ b/webgis-v3/index.html @@ -0,0 +1,812 @@ + + + + + +WebGIS Kemiskinan — Kota Pontianak + + + + + + + + + + +
+
+ +
+ +
+
WebGIS Kemiskinan Pontianak
+
Sistem Pengentasan Kemiskinan · Berbasis Rumah Ibadah
+
+
+
+
+
+ + Miskin + + Rentan + Mampu + + Laporan + +
+ + +
+
+ + +
+ + + + +
+ + +
+
+

📊Dashboard Kemiskinan Pontianak

+
+ + +
+
+
+
+
+
Penduduk Miskin
+
😔
+
+
+
+
Rentan / Hampir Miskin
+
⚠️
+
+
+
+
Penduduk Mampu
+
+
+
+
+
Kartu Keluarga
+
🏠
+
+
+
+
Belum Pernah Dibantu
+
📦
+
+
+
+
Laporan Aktif
+
🚨
+
+
+
+
+
🔥 Prioritas Darurat klik untuk bantu
+

Memuat data…

+
+
+
🏘️ Sebaran per Kecamatan
+
+
+
+
🕌 Beban per Rumah Ibadah
+
+
+
+
📦 Tren Bantuan 6 Bulan
+
+
+
+
+ + +
+
+

🗺️ Peta Sebaran

+ +
+ + + + +
+
+ Miskin + Rentan + Mampu + Laporan +
+
+
+
+ + +
+
+

👥Data Penduduk

+
+ +
+
+
+
+ + +
+ + + +
+
+ + + + + + + +
NIKNama LengkapUmurStatus KKPekerjaanPenghasilanEkonomiKesehatanPendidikanAksi
Memuat data…
+
+
+ + +
+
+

🏠Data Keluarga (KK)

+
+ +
+
+
+
+ + +
+ +
+
+ + + + + + + +
No. KKKepala KeluargaKecamatanAnggotaTotal PenghasilanRumah IbadahStatusBantuanAksi
Memuat data…
+
+
+ + +
+
+

🎁Manajemen Bantuan

+
+ + +
+
+
+
+
📋 Jenis Bantuan Tersedia
+
+
+
+
📜 Riwayat Penyaluran Terbaru
+
+
+
+
+ + +
+
+

🚨Laporan Masyarakat

+
+ + + +
+
+
+
+ + +
+
+

🕌Rumah Ibadah

+
+ +
+
+
+
+ + +
+
+

🔥Daftar Prioritas Bantuan

+
+ + +
+
+

+ Urutan: SANGAT TINGGI (miskin+sakit) → + TINGGI (miskin+belum dibantu) → + SEDANGRENDAH +

+
+ + + +
NIKNamaUmurEkonomiKesehatanKecamatanRumah IbadahDibantuPrioritasAksi
+
+
+ + +
+

💬Koordinasi Pengurus

+
+ +
+
⏳ Memuat pesan…
+
+ + +
+
+ + +
+
+

📋Log Aktivitas Sistem

+ +
+
+ + + +
WaktuUserAksiTabelID RecordIP
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ Detail Penduduk + +
+
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + diff --git a/webgis-v3/sql/schema.sql b/webgis-v3/sql/schema.sql new file mode 100644 index 0000000..61311b7 --- /dev/null +++ b/webgis-v3/sql/schema.sql @@ -0,0 +1,474 @@ +-- ================================================================ +-- WebGIS Pengentasan Kemiskinan — Schema Database +-- Kota Pontianak, Kalimantan Barat +-- ================================================================ + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+07:00"; +SET NAMES utf8mb4; + +CREATE DATABASE IF NOT EXISTS `webgis_kemiskinan` + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; +USE `webgis_kemiskinan`; + +-- ================================================================ +-- TABEL ROLE +-- ================================================================ +CREATE TABLE `role` ( + `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, + `nama_role` VARCHAR(50) NOT NULL, + `deskripsi` VARCHAR(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uq_role_nama` (`nama_role`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `role` (`id`, `nama_role`, `deskripsi`) VALUES +(1, 'admin', 'Administrator sistem, akses penuh'), +(2, 'pengurus', 'Pengurus rumah ibadah, input & verifikasi data'), +(3, 'pimpinan', 'Pimpinan daerah, read-only & dashboard'), +(4, 'masyarakat', 'Warga umum, laporan & lihat data terbatas'); + +-- ================================================================ +-- TABEL USER +-- ================================================================ +CREATE TABLE `user` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_role` TINYINT UNSIGNED NOT NULL, + `username` VARCHAR(50) NOT NULL, + `password_hash` VARCHAR(255) NOT NULL, + `nama_lengkap` VARCHAR(100) NOT NULL, + `email` VARCHAR(100) DEFAULT NULL, + `no_hp` VARCHAR(20) DEFAULT NULL, + `aktif` TINYINT(1) NOT NULL DEFAULT 1, + `last_login` DATETIME DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uq_username` (`username`), + KEY `fk_user_role` (`id_role`), + CONSTRAINT `fk_user_role` FOREIGN KEY (`id_role`) REFERENCES `role` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL RUMAH IBADAH +-- ================================================================ +CREATE TABLE `rumah_ibadah` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_user` INT UNSIGNED DEFAULT NULL COMMENT 'Pengurus PJ', + `nama` VARCHAR(150) NOT NULL, + `jenis` ENUM('Masjid','Gereja','Vihara','Pura','Klenteng','Lainnya') NOT NULL, + `alamat` TEXT DEFAULT NULL, + `lat` DECIMAL(10,7) NOT NULL, + `lng` DECIMAL(10,7) NOT NULL, + `radius_meter` SMALLINT UNSIGNED NOT NULL DEFAULT 300, + `kontak` VARCHAR(50) DEFAULT NULL, + `kecamatan` VARCHAR(80) DEFAULT NULL, + `kelurahan` VARCHAR(80) DEFAULT NULL, + `aktif` TINYINT(1) NOT NULL DEFAULT 1, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_ri_user` (`id_user`), + CONSTRAINT `fk_ri_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL KELUARGA (KK) +-- ================================================================ +CREATE TABLE `keluarga` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `no_kk` CHAR(16) NOT NULL COMMENT 'Nomor Kartu Keluarga', + `id_rumah_ibadah` INT UNSIGNED DEFAULT NULL COMMENT 'RI terdekat / pengelola', + `nama_kepala` VARCHAR(100) NOT NULL, + `alamat` TEXT DEFAULT NULL, + `rt` VARCHAR(5) DEFAULT NULL, + `rw` VARCHAR(5) DEFAULT NULL, + `kelurahan` VARCHAR(80) DEFAULT NULL, + `kecamatan` VARCHAR(80) DEFAULT NULL, + `lat` DECIMAL(10,7) DEFAULT NULL, + `lng` DECIMAL(10,7) DEFAULT NULL, + `status_ekonomi` ENUM('miskin','rentan','mampu') NOT NULL DEFAULT 'rentan', + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uq_no_kk` (`no_kk`), + KEY `fk_kk_ri` (`id_rumah_ibadah`), + CONSTRAINT `fk_kk_ri` FOREIGN KEY (`id_rumah_ibadah`) REFERENCES `rumah_ibadah` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL PENDUDUK +-- ================================================================ +CREATE TABLE `penduduk` ( + `nik` CHAR(16) NOT NULL, + `id_keluarga` INT UNSIGNED NOT NULL, + `nama_lengkap` VARCHAR(100) NOT NULL, + `jenis_kelamin` ENUM('L','P') NOT NULL, + `tanggal_lahir` DATE NOT NULL, + -- umur dihitung di query: TIMESTAMPDIFF(YEAR, tanggal_lahir, CURDATE()) + `tempat_lahir` VARCHAR(80) DEFAULT NULL, + `status_keluarga` ENUM('kepala','istri','anak','menantu','cucu','orang_tua','lainnya') NOT NULL DEFAULT 'anak', + `status_perkawinan` ENUM('belum_kawin','kawin','cerai_hidup','cerai_mati') NOT NULL DEFAULT 'belum_kawin', + `status_hidup` ENUM('hidup','meninggal') NOT NULL DEFAULT 'hidup', + `agama` ENUM('Islam','Kristen','Katolik','Hindu','Buddha','Konghucu','Lainnya') DEFAULT NULL, + `pekerjaan` VARCHAR(80) DEFAULT NULL, + `penghasilan` INT UNSIGNED DEFAULT 0 COMMENT 'Per bulan, rupiah', + `status_ekonomi` ENUM('miskin','rentan','mampu') NOT NULL DEFAULT 'rentan', + -- Pendidikan + `pendidikan_terakhir` ENUM('tidak_sekolah','SD','SMP','SMA_SMK','D1_D3','S1','S2_S3') DEFAULT 'tidak_sekolah', + `status_pendidikan` ENUM('sekolah','tidak_sekolah','lulus') DEFAULT 'tidak_sekolah', + -- Kesehatan + `kondisi_kesehatan` ENUM('sehat','sakit_ringan','sakit_berat','disabilitas') DEFAULT 'sehat', + `keterangan_kesehatan` VARCHAR(255) DEFAULT NULL, + -- Koordinat individual (bisa beda dari rumah) + `lat` DECIMAL(10,7) DEFAULT NULL, + `lng` DECIMAL(10,7) DEFAULT NULL, + -- Timestamps + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`nik`), + KEY `fk_pddk_kk` (`id_keluarga`), + KEY `idx_status_ekonomi` (`status_ekonomi`), + KEY `idx_status_hidup` (`status_hidup`), + CONSTRAINT `fk_pddk_kk` FOREIGN KEY (`id_keluarga`) REFERENCES `keluarga` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL RIWAYAT PENDIDIKAN / PELATIHAN +-- ================================================================ +CREATE TABLE `riwayat_pendidikan` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nik` CHAR(16) NOT NULL, + `jenis` ENUM('formal','pelatihan','kursus') NOT NULL DEFAULT 'formal', + `nama_institusi` VARCHAR(150) DEFAULT NULL, + `jurusan` VARCHAR(100) DEFAULT NULL, + `tahun_masuk` YEAR DEFAULT NULL, + `tahun_lulus` YEAR DEFAULT NULL, + `ijazah` TINYINT(1) DEFAULT 0, + `keterangan` TEXT DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_riwpend_nik` (`nik`), + CONSTRAINT `fk_riwpend_nik` FOREIGN KEY (`nik`) REFERENCES `penduduk` (`nik`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL JENIS BANTUAN (master) +-- ================================================================ +CREATE TABLE `bantuan` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nama_bantuan` VARCHAR(100) NOT NULL, + `kategori` ENUM('sembako','pendidikan','kesehatan','ekonomi','lainnya') NOT NULL DEFAULT 'lainnya', + `sumber` VARCHAR(100) DEFAULT NULL COMMENT 'APBD, CSR, Zakat, dll', + `deskripsi` TEXT DEFAULT NULL, + `satuan` VARCHAR(50) DEFAULT NULL COMMENT 'karung, paket, Rp, dll', + `aktif` TINYINT(1) NOT NULL DEFAULT 1, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL HISTORI BANTUAN +-- ================================================================ +CREATE TABLE `histori_bantuan` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nik` CHAR(16) NOT NULL, + `id_bantuan` INT UNSIGNED NOT NULL, + `id_rumah_ibadah` INT UNSIGNED DEFAULT NULL, + `id_user` INT UNSIGNED DEFAULT NULL COMMENT 'Petugas penyalur', + `tanggal` DATE NOT NULL, + `jumlah` DECIMAL(10,2) DEFAULT 1, + `keterangan` TEXT DEFAULT NULL, + `status_penyaluran` ENUM('direncanakan','disalurkan','ditolak') NOT NULL DEFAULT 'disalurkan', + `bukti_foto` VARCHAR(255) DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_hb_nik` (`nik`), + KEY `fk_hb_bantuan` (`id_bantuan`), + KEY `fk_hb_ri` (`id_rumah_ibadah`), + KEY `fk_hb_user` (`id_user`), + CONSTRAINT `fk_hb_nik` FOREIGN KEY (`nik`) REFERENCES `penduduk` (`nik`), + CONSTRAINT `fk_hb_bantuan` FOREIGN KEY (`id_bantuan`) REFERENCES `bantuan` (`id`), + CONSTRAINT `fk_hb_ri` FOREIGN KEY (`id_rumah_ibadah`) REFERENCES `rumah_ibadah` (`id`) ON DELETE SET NULL, + CONSTRAINT `fk_hb_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL LAPORAN MASYARAKAT +-- ================================================================ +CREATE TABLE `laporan` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nama_pelapor` VARCHAR(100) DEFAULT NULL, + `no_hp_pelapor` VARCHAR(20) DEFAULT NULL, + `nik_terdampak` CHAR(16) DEFAULT NULL COMMENT 'Penduduk yg dilaporkan (opsional)', + `id_rumah_ibadah` INT UNSIGNED DEFAULT NULL, + `deskripsi` TEXT NOT NULL, + `lat` DECIMAL(10,7) DEFAULT NULL, + `lng` DECIMAL(10,7) DEFAULT NULL, + `alamat_laporan` TEXT DEFAULT NULL, + `urgensi` ENUM('rendah','sedang','tinggi','darurat') NOT NULL DEFAULT 'sedang', + `foto` VARCHAR(255) DEFAULT NULL, + `status` ENUM('pending','diverifikasi','diproses','selesai') NOT NULL DEFAULT 'pending', + `catatan_verifikasi` TEXT DEFAULT NULL, + `id_verifikator` INT UNSIGNED DEFAULT NULL, + `tgl_verifikasi` DATETIME DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_lap_nik` (`nik_terdampak`), + KEY `fk_lap_ri` (`id_rumah_ibadah`), + KEY `fk_lap_verif` (`id_verifikator`), + CONSTRAINT `fk_lap_nik` FOREIGN KEY (`nik_terdampak`) REFERENCES `penduduk` (`nik`) ON DELETE SET NULL, + CONSTRAINT `fk_lap_ri` FOREIGN KEY (`id_rumah_ibadah`) REFERENCES `rumah_ibadah` (`id`) ON DELETE SET NULL, + CONSTRAINT `fk_lap_verif` FOREIGN KEY (`id_verifikator`) REFERENCES `user` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL CHAT / KOMUNIKASI +-- ================================================================ +CREATE TABLE `chat` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_user` INT UNSIGNED NOT NULL, + `id_room` INT UNSIGNED DEFAULT NULL COMMENT 'NULL = channel umum', + `pesan` TEXT NOT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_chat_user` (`id_user`), + CONSTRAINT `fk_chat_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- Chat rooms +CREATE TABLE `chat_room` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nama` VARCHAR(100) NOT NULL, + `deskripsi` VARCHAR(255) DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +ALTER TABLE `chat` ADD CONSTRAINT `fk_chat_room` FOREIGN KEY (`id_room`) REFERENCES `chat_room` (`id`) ON DELETE SET NULL; + +-- ================================================================ +-- TABEL LOG AKTIVITAS +-- ================================================================ +CREATE TABLE `log_aktivitas` ( + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_user` INT UNSIGNED DEFAULT NULL, + `aksi` VARCHAR(100) NOT NULL COMMENT 'create_penduduk, update_bantuan, dll', + `tabel` VARCHAR(50) DEFAULT NULL, + `id_record` VARCHAR(50) DEFAULT NULL COMMENT 'PK record yg diubah', + `data_lama` JSON DEFAULT NULL, + `data_baru` JSON DEFAULT NULL, + `ip_address` VARCHAR(45) DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_log_user` (`id_user`), + KEY `idx_log_aksi` (`aksi`), + KEY `idx_log_created` (`created_at`), + CONSTRAINT `fk_log_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- TABEL PERUBAHAN STATUS (kelahiran, kematian, dll) +-- ================================================================ +CREATE TABLE `peristiwa_kependudukan` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `nik` CHAR(16) NOT NULL, + `jenis` ENUM('kelahiran','kematian','pernikahan','perceraian','pindah_masuk','pindah_keluar') NOT NULL, + `tanggal` DATE NOT NULL, + `keterangan` TEXT DEFAULT NULL, + `id_user` INT UNSIGNED DEFAULT NULL, + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_perk_nik` (`nik`), + KEY `fk_perk_user` (`id_user`), + CONSTRAINT `fk_perk_nik` FOREIGN KEY (`nik`) REFERENCES `penduduk` (`nik`) ON DELETE CASCADE, + CONSTRAINT `fk_perk_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ================================================================ +-- SEED DATA — Users +-- ================================================================ +-- Password: admin123 (bcrypt hash contoh) +INSERT INTO `user` (`id_role`,`username`,`password_hash`,`nama_lengkap`,`email`) VALUES +(1, 'admin', '$2y$10$9JkAyeakwNYcOvjtrxLeb.teP0iJCFQ9Eeru0LOfodabdjDyAXNTC', 'Administrator Sistem', 'admin@webgis-ptk.id'), +(2, 'pengurus_jami','$2y$10$9JkAyeakwNYcOvjtrxLeb.teP0iJCFQ9Eeru0LOfodabdjDyAXNTC', 'Ahmad Fauzi (Masjid Jami)', 'fauzi@webgis-ptk.id'), +(2, 'pengurus_ktdr','$2y$10$9JkAyeakwNYcOvjtrxLeb.teP0iJCFQ9Eeru0LOfodabdjDyAXNTC', 'Romo Benediktus (Katedral)', 'romo@webgis-ptk.id'), +(3, 'pimpinan', '$2y$10$9JkAyeakwNYcOvjtrxLeb.teP0iJCFQ9Eeru0LOfodabdjDyAXNTC', 'Camat Pontianak Kota', 'camat@webgis-ptk.id'), +(4, 'warga1', '$2y$10$9JkAyeakwNYcOvjtrxLeb.teP0iJCFQ9Eeru0LOfodabdjDyAXNTC', 'Budi Santoso', 'budi@gmail.com'); + +-- ================================================================ +-- SEED DATA — Rumah Ibadah +-- ================================================================ +INSERT INTO `rumah_ibadah` (`id_user`,`nama`,`jenis`,`alamat`,`lat`,`lng`,`radius_meter`,`kontak`,`kecamatan`,`kelurahan`) VALUES +(2, 'Masjid Jami\' Pontianak', 'Masjid', 'Jl. Tanjungpura, Dalam Bugis', -0.0259600, 109.3430700, 350, '0561-732001', 'Pontianak Timur', 'Dalam Bugis'), +(3, 'Gereja Katedral Pontianak', 'Gereja', 'Jl. Patimura No.9, Akcaya', -0.0320000, 109.3320000, 300, '0561-766000', 'Pontianak Selatan', 'Akcaya'), +(NULL,'Vihara Bodhisattva Karaniya Metta', 'Vihara', 'Jl. Diponegoro, Pontianak Kota', -0.0210000, 109.3380000, 300, '0561-733456', 'Pontianak Kota', 'Darat Sekip'), +(NULL,'Klenteng Kwan Ti Miau', 'Klenteng','Jl. Gusti Situt Mahmud', -0.0190000, 109.3410000, 280, '0561-740123', 'Pontianak Kota', 'Pontianak Kota'), +(2, 'Masjid Mujahidin Pontianak', 'Masjid', 'Jl. Ahmad Yani, Parit Tokaya', -0.0480000, 109.3250000, 400, '0561-764567', 'Pontianak Selatan', 'Parit Tokaya'), +(3, 'Gereja GPIB Immanuel', 'Gereja', 'Jl. Rahadi Usman, Darat Sekip', -0.0280000, 109.3450000, 300, '0561-735890', 'Pontianak Kota', 'Darat Sekip'); + +-- ================================================================ +-- SEED DATA — Keluarga & Penduduk +-- ================================================================ +INSERT INTO `keluarga` (`no_kk`,`id_rumah_ibadah`,`nama_kepala`,`alamat`,`rt`,`rw`,`kelurahan`,`kecamatan`,`lat`,`lng`,`status_ekonomi`) VALUES +('6171010101010001', 1, 'Ahmad Suryana', 'Gg. Mawar No.5', '002','004','Dalam Bugis', 'Pontianak Timur', -0.0270000, 109.3440000, 'miskin'), +('6171010101010002', 1, 'Samsul Bahri', 'Jl. Veteran No.12', '003','002','Sungai Bangkong','Pontianak Kota', -0.0315000, 109.3390000, 'rentan'), +('6171010101010003', 2, 'Maria Magdalena', 'Jl. Kemuning No.3', '001','001','Akcaya', 'Pontianak Selatan', -0.0330000, 109.3310000, 'miskin'), +('6171010101010004', 5, 'Hendra Wijaya', 'Jl. Ahmad Yani Gg. 7', '005','003','Parit Tokaya', 'Pontianak Selatan', -0.0490000, 109.3260000, 'rentan'), +('6171010101010005', 3, 'Lim Ah Kow', 'Jl. Diponegoro Gg. 2', '001','002','Darat Sekip', 'Pontianak Kota', -0.0220000, 109.3370000, 'miskin'), +('6171010101010006', 1, 'Mulyadi', 'Gg. Teratai No.8', '004','003','Dalam Bugis', 'Pontianak Timur', -0.0265000, 109.3460000, 'mampu'), +('6171010101010007', 2, 'Yohanes Kristian', 'Jl. Hos Cokroaminoto No.4','002','001','Akcaya', 'Pontianak Selatan', -0.0340000, 109.3300000, 'rentan'), +('6171010101010008', 4, 'Tan Eng Huat', 'Jl. Gusti Situt No.7', '003','001','Pontianak Kota', 'Pontianak Kota', -0.0200000, 109.3415000, 'miskin'); + +INSERT INTO `penduduk` (`nik`,`id_keluarga`,`nama_lengkap`,`jenis_kelamin`,`tanggal_lahir`,`tempat_lahir`,`status_keluarga`,`status_perkawinan`,`agama`,`pekerjaan`,`penghasilan`,`status_ekonomi`,`pendidikan_terakhir`,`status_pendidikan`,`kondisi_kesehatan`,`lat`,`lng`) VALUES +('6171010101010001', 1, 'Ahmad Suryana', 'L', '1980-05-15', 'Pontianak', 'kepala', 'kawin', 'Islam', 'Buruh harian', 900000, 'miskin', 'SMP', 'lulus', 'sehat', -0.0270000, 109.3440000), +('6171010101010002', 1, 'Siti Rahma', 'P', '1985-08-20', 'Pontianak', 'istri', 'kawin', 'Islam', 'Ibu rumah tangga', 0, 'miskin', 'SD', 'lulus', 'sakit_ringan',-0.0270000, 109.3440000), +('6171010101010003', 1, 'Budi Suryana', 'L', '2012-03-10', 'Pontianak', 'anak', 'belum_kawin', 'Islam', 'Pelajar', 0, 'miskin', 'SMP', 'sekolah', 'sehat', -0.0270000, 109.3440000), +('6171010101010004', 2, 'Samsul Bahri', 'L', '1975-11-22', 'Sambas', 'kepala', 'kawin', 'Islam', 'Pedagang kaki lima', 1200000, 'rentan', 'SMA_SMK', 'lulus', 'sehat', -0.0315000, 109.3390000), +('6171010101010005', 2, 'Dewi Kartika', 'P', '1978-06-14', 'Pontianak', 'istri', 'kawin', 'Islam', 'Buruh cuci', 500000, 'rentan', 'SD', 'lulus', 'sehat', -0.0315000, 109.3390000), +('6171010101010006', 3, 'Maria Magdalena', 'P', '1970-12-03', 'Pontianak', 'kepala', 'cerai_mati', 'Kristen', 'Penjual gorengan', 800000, 'miskin', 'SD', 'lulus', 'sakit_berat', -0.0330000, 109.3310000), +('6171010101010007', 3, 'Petrus Yulius', 'L', '2005-04-17', 'Pontianak', 'anak', 'belum_kawin', 'Kristen', 'Pelajar', 0, 'miskin', 'SMA_SMK', 'sekolah', 'sehat', -0.0330000, 109.3310000), +('6171010101010008', 3, 'Anastasia Dewi', 'P', '2010-09-28', 'Pontianak', 'anak', 'belum_kawin', 'Kristen', 'Pelajar', 0, 'miskin', 'SMP', 'sekolah', 'sehat', -0.0330000, 109.3310000), +('6171010101010009', 4, 'Hendra Wijaya', 'L', '1988-02-11', 'Pontianak', 'kepala', 'kawin', 'Buddha', 'Tukang ojek', 1500000, 'rentan', 'SMA_SMK', 'lulus', 'sehat', -0.0490000, 109.3260000), +('6171010101010010', 5, 'Lim Ah Kow', 'L', '1965-07-30', 'Pontianak', 'kepala', 'kawin', 'Buddha', 'Tidak bekerja', 0, 'miskin', 'SD', 'lulus', 'sakit_berat', -0.0220000, 109.3370000), +('6171010101010011', 5, 'Tan Siu Lan', 'P', '1968-03-19', 'Pontianak', 'istri', 'kawin', 'Buddha', 'Penjual sayur', 700000, 'miskin', 'SD', 'lulus', 'sehat', -0.0220000, 109.3370000), +('6171010101010012', 6, 'Mulyadi', 'L', '1979-10-05', 'Singkawang','kepala', 'kawin', 'Islam', 'PNS Golongan III', 4500000, 'mampu', 'S1', 'lulus', 'sehat', -0.0265000, 109.3460000), +('6171010101010013', 7, 'Yohanes Kristian', 'L', '1982-01-25', 'Pontianak', 'kepala', 'kawin', 'Katolik', 'Sopir angkot', 1100000, 'rentan', 'SMA_SMK', 'lulus', 'sehat', -0.0340000, 109.3300000), +('6171010101010014', 8, 'Tan Eng Huat', 'L', '1960-08-08', 'Pontianak', 'kepala', 'kawin', 'Konghucu','Pemulung', 600000, 'miskin', 'SD', 'lulus', 'disabilitas', -0.0200000, 109.3415000); + +-- ================================================================ +-- SEED DATA — Bantuan Master +-- ================================================================ +INSERT INTO `bantuan` (`nama_bantuan`,`kategori`,`sumber`,`deskripsi`,`satuan`) VALUES +('Sembako Ramadan', 'sembako', 'Zakat Masjid', 'Paket sembako bulan Ramadan', 'paket'), +('PKH (Program Keluarga Harapan)', 'ekonomi', 'APBN', 'Bantuan tunai conditional', 'Rp'), +('BPNT / Kartu Sembako', 'sembako', 'APBN', 'Bantuan pangan non-tunai Rp200rb/bln', 'bulan'), +('Beasiswa Pendidikan', 'pendidikan', 'CSR Perusahaan', 'Beasiswa untuk anak sekolah', 'paket/tahun'), +('BPJS Kesehatan PBI', 'kesehatan', 'APBD', 'Iuran BPJS ditanggung pemerintah', 'bulan'), +('Bantuan Sembako Gereja', 'sembako', 'Kolekte Gereja', 'Paket bulanan dari gereja', 'paket'), +('Bantuan Vihara (Kwan Im)', 'sembako', 'Dana Sosial Vihara', 'Paket sembako bulanan', 'paket'), +('Raskin / BERAS MISKIN', 'sembako', 'Bulog', '10kg per bulan per KK', 'kg'); + +-- ================================================================ +-- SEED DATA — Histori Bantuan +-- ================================================================ +INSERT INTO `histori_bantuan` (`nik`,`id_bantuan`,`id_rumah_ibadah`,`id_user`,`tanggal`,`jumlah`,`status_penyaluran`) VALUES +('6171010101010001', 1, 1, 2, '2025-03-15', 1, 'disalurkan'), +('6171010101010001', 3, 1, 2, '2025-01-10', 1, 'disalurkan'), +('6171010101010006', 6, 2, 3, '2025-02-20', 1, 'disalurkan'), +('6171010101010010', 7, 3, 2, '2025-04-01', 1, 'disalurkan'), +('6171010101010014', 8, 4, 2, '2025-03-05', 10,'disalurkan'); + +-- ================================================================ +-- SEED DATA — Laporan Masyarakat +-- ================================================================ +INSERT INTO `laporan` (`nama_pelapor`,`nik_terdampak`,`id_rumah_ibadah`,`deskripsi`,`lat`,`lng`,`alamat_laporan`,`urgensi`,`status`) VALUES +('Anonim', '6171010101010006', 2, 'Ibu Maria sakit keras sudah seminggu, tidak bisa berobat karena tidak ada biaya', -0.0330, 109.3311, 'Jl. Kemuning No.3, Akcaya', 'darurat', 'diverifikasi'), +('Eko Prasetyo', NULL, 1, 'Ada keluarga baru pindah ke Gg. Melati yang sepertinya sangat membutuhkan bantuan', -0.0268, 109.3448, 'Gg. Melati, Dalam Bugis', 'sedang', 'pending'), +('Anonim', '6171010101010014', 4, 'Pak Tan penyandang disabilitas, hidup sebatang kara dan sulit mendapat penghasilan', -0.0200, 109.3415, 'Jl. Gusti Situt No.7', 'tinggi', 'diproses'); + +-- ================================================================ +-- SEED DATA — Chat Room +-- ================================================================ +INSERT INTO `chat_room` (`nama`,`deskripsi`) VALUES +('Koordinasi Umum', 'Channel koordinasi semua pengurus rumah ibadah'), +('Bantuan Darurat', 'Koordinasi penanganan kasus darurat & prioritas'), +('Distribusi Sembako', 'Jadwal & koordinasi distribusi sembako bulanan'); + +-- ================================================================ +-- VIEW — Data lengkap penduduk (dengan umur otomatis) +-- ================================================================ +CREATE OR REPLACE VIEW `v_penduduk_lengkap` AS +SELECT + p.nik, + p.nama_lengkap, + p.jenis_kelamin, + p.tanggal_lahir, + TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur, + p.tempat_lahir, + p.status_keluarga, + p.status_perkawinan, + p.status_hidup, + p.agama, + p.pekerjaan, + p.penghasilan, + p.status_ekonomi, + p.pendidikan_terakhir, + p.status_pendidikan, + p.kondisi_kesehatan, + p.lat, + p.lng, + k.no_kk, + k.nama_kepala, + k.alamat, + k.rt, + k.rw, + k.kelurahan, + k.kecamatan, + k.status_ekonomi AS status_ekonomi_kk, + ri.nama AS nama_ri, + ri.jenis AS jenis_ri, + p.created_at, + p.updated_at +FROM `penduduk` p +JOIN `keluarga` k ON p.id_keluarga = k.id +LEFT JOIN `rumah_ibadah` ri ON k.id_rumah_ibadah = ri.id; + +-- ================================================================ +-- VIEW — Statistik keluarga +-- ================================================================ +CREATE OR REPLACE VIEW `v_statistik_keluarga` AS +SELECT + k.id, + k.no_kk, + k.nama_kepala, + k.status_ekonomi, + k.kecamatan, + k.kelurahan, + k.lat, + k.lng, + COUNT(p.nik) AS jumlah_anggota, + SUM(CASE WHEN p.kondisi_kesehatan IN ('sakit_berat','disabilitas') THEN 1 ELSE 0 END) AS anggota_sakit, + SUM(p.penghasilan) AS total_penghasilan, + COUNT(hb.id) AS total_bantuan_diterima, + MAX(hb.tanggal) AS terakhir_dibantu, + ri.nama AS nama_ri +FROM `keluarga` k +LEFT JOIN `penduduk` p ON p.id_keluarga = k.id AND p.status_hidup = 'hidup' +LEFT JOIN `histori_bantuan` hb ON hb.nik = p.nik AND hb.status_penyaluran = 'disalurkan' +LEFT JOIN `rumah_ibadah` ri ON k.id_rumah_ibadah = ri.id +GROUP BY k.id; + +-- ================================================================ +-- VIEW — Prioritas bantuan (miskin + sakit & belum dibantu) +-- ================================================================ +CREATE OR REPLACE VIEW `v_prioritas_bantuan` AS +SELECT + p.nik, + p.nama_lengkap, + TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur, + p.kondisi_kesehatan, + p.status_ekonomi, + k.nama_kepala AS kepala_keluarga, + k.alamat, + k.kecamatan, + k.lat, + k.lng, + ri.nama AS nama_ri, + COUNT(hb.id) AS jumlah_dibantu, + CASE + WHEN p.status_ekonomi = 'miskin' AND p.kondisi_kesehatan IN ('sakit_berat','disabilitas') THEN 'SANGAT TINGGI' + WHEN p.status_ekonomi = 'miskin' AND COUNT(hb.id) = 0 THEN 'TINGGI' + WHEN p.status_ekonomi = 'miskin' THEN 'SEDANG' + WHEN p.status_ekonomi = 'rentan' AND p.kondisi_kesehatan IN ('sakit_berat','disabilitas') THEN 'SEDANG' + ELSE 'RENDAH' + END AS level_prioritas +FROM `penduduk` p +JOIN `keluarga` k ON p.id_keluarga = k.id +LEFT JOIN `rumah_ibadah` ri ON k.id_rumah_ibadah = ri.id +LEFT JOIN `histori_bantuan` hb ON hb.nik = p.nik AND hb.status_penyaluran = 'disalurkan' +WHERE p.status_hidup = 'hidup' + AND p.status_ekonomi IN ('miskin','rentan') +GROUP BY p.nik; diff --git a/webgis-v3/uploads/.gitkeep b/webgis-v3/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/webgis01/ambil_data.php b/webgis01/ambil_data.php new file mode 100644 index 0000000..e815f76 --- /dev/null +++ b/webgis01/ambil_data.php @@ -0,0 +1,9 @@ +query("SELECT * FROM spbu"); +while ($row = $result->fetch_assoc()) { + $data[] = $row; +} +echo json_encode($data); +?> diff --git a/webgis01/db_spbu.sql b/webgis01/db_spbu.sql new file mode 100644 index 0000000..51a58bd --- /dev/null +++ b/webgis01/db_spbu.sql @@ -0,0 +1,17 @@ +CREATE DATABASE IF NOT EXISTS db_spbu; +USE db_spbu; + +CREATE TABLE IF NOT EXISTS `spbu` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `nama_spbu` varchar(100) NOT NULL, + `no_wa` varchar(20) NOT NULL, + `status` enum('yes','no') NOT NULL DEFAULT 'no', + `latitude` double NOT NULL, + `longitude` double NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `spbu` (`nama_spbu`, `no_wa`, `status`, `latitude`, `longitude`) VALUES +('SPBU Gajah Mada', '08115700101', 'yes', -0.0227, 109.3294), +('SPBU Ahmad Yani', '08115700102', 'no', -0.0350, 109.3350), +('SPBU Tanjungpura', '08115700103', 'yes', -0.0180, 109.3410); diff --git a/webgis01/hapus.php b/webgis01/hapus.php new file mode 100644 index 0000000..07f879a --- /dev/null +++ b/webgis01/hapus.php @@ -0,0 +1,11 @@ +real_escape_string($_POST['id']); +$query = "DELETE FROM spbu WHERE id='$id'"; + +if ($conn->query($query)) { + echo "success"; +} else { + echo "error: " . $conn->error; +} +?> diff --git a/webgis01/index.php b/webgis01/index.php new file mode 100644 index 0000000..42eb33a --- /dev/null +++ b/webgis01/index.php @@ -0,0 +1,349 @@ + + + + Peta SPBU + + + + + + + +
+
🖱️ Klik peta untuk tambah SPBU  ·  Klik marker untuk Edit/Hapus  ·  Seret marker untuk pindah lokasi
+
+ + + + + + + + + + diff --git a/webgis01/koneksi.php b/webgis01/koneksi.php new file mode 100644 index 0000000..27cdeff --- /dev/null +++ b/webgis01/koneksi.php @@ -0,0 +1,14 @@ + diff --git a/webgis01/simpan.php b/webgis01/simpan.php new file mode 100644 index 0000000..50c5a76 --- /dev/null +++ b/webgis01/simpan.php @@ -0,0 +1,16 @@ +real_escape_string($_POST['nama']); +$wa = $conn->real_escape_string($_POST['wa']); +$status = $conn->real_escape_string($_POST['status']); +$lat = $conn->real_escape_string($_POST['lat']); +$lng = $conn->real_escape_string($_POST['lng']); + +$query = "INSERT INTO spbu (nama_spbu, no_wa, status, latitude, longitude) VALUES ('$nama','$wa','$status','$lat','$lng')"; + +if ($conn->query($query)) { + echo "success"; +} else { + echo "error: " . $conn->error; +} +?> diff --git a/webgis01/update.php b/webgis01/update.php new file mode 100644 index 0000000..40bc2c8 --- /dev/null +++ b/webgis01/update.php @@ -0,0 +1,17 @@ +real_escape_string($_POST['id']); +$nama = $conn->real_escape_string($_POST['nama']); +$wa = $conn->real_escape_string($_POST['wa']); +$status = $conn->real_escape_string($_POST['status']); +$lat = $conn->real_escape_string($_POST['lat']); +$lng = $conn->real_escape_string($_POST['lng']); + +$query = "UPDATE spbu SET nama_spbu='$nama', no_wa='$wa', status='$status', latitude='$lat', longitude='$lng' WHERE id='$id'"; + +if ($conn->query($query)) { + echo "success"; +} else { + echo "error: " . $conn->error; +} +?> diff --git a/webgis02/config.php b/webgis02/config.php new file mode 100644 index 0000000..52a3eee --- /dev/null +++ b/webgis02/config.php @@ -0,0 +1,21 @@ + 'error', + 'message' => 'Koneksi database gagal: ' . mysqli_connect_error() + ])); +} + +mysqli_set_charset($conn, 'utf8mb4'); + +header('Content-Type: application/json'); +header('Access-Control-Allow-Origin: *'); +header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); +header('Access-Control-Allow-Headers: Content-Type'); diff --git a/webgis02/database.sql b/webgis02/database.sql new file mode 100644 index 0000000..4f5cdfd --- /dev/null +++ b/webgis02/database.sql @@ -0,0 +1,86 @@ +-- ================================================================ +-- FILE : database.sql +-- DATABASE: webgis_db +-- Jalankan file ini di phpMyAdmin > tab SQL > klik Go +-- ================================================================ + +CREATE DATABASE IF NOT EXISTS webgis_db + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE webgis_db; + +-- ---------------------------------------------------------------- +-- TABEL tb_jalan (Polyline) — ditambah kolom foto +-- ---------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS tb_jalan ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_jalan VARCHAR(200) NOT NULL COMMENT 'Nama ruas jalan', + status_jalan ENUM('Nasional','Provinsi','Kabupaten') + NOT NULL DEFAULT 'Kabupaten', + panjang_meter DECIMAL(15,2) NOT NULL DEFAULT 0, + geojson LONGTEXT NOT NULL, + keterangan TEXT, + foto VARCHAR(255) NULL COMMENT 'Path file foto jalan', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ---------------------------------------------------------------- +-- TABEL tb_parsil (Polygon) — ditambah kolom foto +-- ---------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS tb_parsil ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_pemilik VARCHAR(200) NOT NULL, + no_sertifikat VARCHAR(100) NOT NULL, + status_kepemilikan ENUM('SHM','HGB','HGU','HP') + NOT NULL DEFAULT 'SHM', + luas_m2 DECIMAL(20,4) NOT NULL DEFAULT 0, + geojson LONGTEXT NOT NULL, + alamat TEXT, + foto VARCHAR(255) NULL COMMENT 'Path file foto parsil', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ---------------------------------------------------------------- +-- TABEL tb_jalan_rusak (Point) — fitur baru +-- ---------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS tb_jalan_rusak ( + id INT(11) NOT NULL AUTO_INCREMENT, + lokasi VARCHAR(200) NOT NULL COMMENT 'Nama/deskripsi lokasi kerusakan', + tingkat ENUM('Ringan','Sedang','Berat') + NOT NULL DEFAULT 'Sedang' COMMENT 'Tingkat kerusakan', + jenis VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Jenis kerusakan: berlubang, retak, dll', + geojson LONGTEXT NOT NULL COMMENT 'Geometry Point format GeoJSON', + keterangan TEXT, + foto VARCHAR(255) NULL COMMENT 'Path file foto kerusakan', + tanggal_lapor DATE NOT NULL DEFAULT (CURRENT_DATE), + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ---------------------------------------------------------------- +-- CONTOH DATA tb_jalan +-- ---------------------------------------------------------------- +INSERT INTO tb_jalan (nama_jalan, status_jalan, panjang_meter, geojson, keterangan) VALUES +('Jl. Ahmad Yani','Nasional',1240.50,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3272,-0.0207],[109.3290,-0.0215],[109.3310,-0.0225],[109.3335,-0.0238]]},"properties":{}}','Jalan Nasional utama kota Pontianak'), +('Jl. Gajah Mada','Provinsi',870.00,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3250,-0.0260],[109.3265,-0.0270],[109.3280,-0.0285]]},"properties":{}}','Jalan Provinsi pusat kota'), +('Jl. Pahlawan','Kabupaten',540.75,'{"type":"Feature","geometry":{"type":"LineString","coordinates":[[109.3300,-0.0300],[109.3315,-0.0310],[109.3325,-0.0322]]},"properties":{}}','Jalan Kabupaten lingkungan'); + +-- ---------------------------------------------------------------- +-- CONTOH DATA tb_parsil +-- ---------------------------------------------------------------- +INSERT INTO tb_parsil (nama_pemilik, no_sertifikat, status_kepemilikan, luas_m2, geojson, alamat) VALUES +('Budi Santoso','SHM-001/PTK/2023','SHM',4500.00,'{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.3280,-0.0240],[109.3295,-0.0240],[109.3295,-0.0255],[109.3280,-0.0255],[109.3280,-0.0240]]]},"properties":{}}','Jl. Ahmad Yani No. 10, Pontianak'), +('PT. Maju Jaya','HGB-005/PTK/2022','HGB',12000.00,'{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.3310,-0.0220],[109.3330,-0.0220],[109.3330,-0.0240],[109.3310,-0.0240],[109.3310,-0.0220]]]},"properties":{}}','Kawasan Industri Pontianak'); + +-- ---------------------------------------------------------------- +-- CONTOH DATA tb_jalan_rusak +-- ---------------------------------------------------------------- +INSERT INTO tb_jalan_rusak (lokasi, tingkat, jenis, geojson, keterangan, tanggal_lapor) VALUES +('Depan SPBU Jl. Ahmad Yani','Berat','Berlubang','{"type":"Feature","geometry":{"type":"Point","coordinates":[109.3285,-0.0212]},"properties":{}}','Lubang besar diameter ±50cm, berbahaya bagi pengendara','2024-10-15'), +('Pertigaan Jl. Gajah Mada','Sedang','Retak','{"type":"Feature","geometry":{"type":"Point","coordinates":[109.3260,-0.0268]},"properties":{}}','Retak memanjang sepanjang 3 meter','2024-11-02'); diff --git a/webgis02/index.html b/webgis02/index.html new file mode 100644 index 0000000..1b3c6be --- /dev/null +++ b/webgis02/index.html @@ -0,0 +1,886 @@ + + + + + +WebGIS - Jalan, Parsil & Jalan Rusak + + + + + + + + +
+
+ + WebGIS Jalan & Parsil +
+ + +
+ + + +
+ +
+ + + +
+
+ +
+ + + +
+
+ + +
+ + Klik pada peta untuk menggambar. +
+ + +
+ + + + + + + + + + + + + + + + + + diff --git a/webgis02/jalan.php b/webgis02/jalan.php new file mode 100644 index 0000000..87f2339 --- /dev/null +++ b/webgis02/jalan.php @@ -0,0 +1,123 @@ +query("SELECT foto FROM tb_jalan WHERE id=$id")->fetch_assoc(); + if ($row && $row['foto'] && file_exists(__DIR__ . '/' . $row['foto'])) { + unlink(__DIR__ . '/' . $row['foto']); + } + $stmt = $conn->prepare("DELETE FROM tb_jalan WHERE id = ?"); + $stmt->bind_param('i', $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data jalan berhasil dihapus']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- GET ---- +if ($method === 'GET') { + $search = isset($_GET['q']) ? '%' . $conn->real_escape_string($_GET['q']) . '%' : null; + if (isset($_GET['id'])) { + $id = (int)$_GET['id']; + $stmt = $conn->prepare("SELECT * FROM tb_jalan WHERE id = ?"); + $stmt->bind_param('i', $id); + $stmt->execute(); + $data = $stmt->get_result()->fetch_assoc(); + echo json_encode(['status'=>'ok','data'=>$data]); + } elseif ($search) { + $stmt = $conn->prepare("SELECT * FROM tb_jalan WHERE nama_jalan LIKE ? OR status_jalan LIKE ? OR keterangan LIKE ? ORDER BY created_at DESC"); + $stmt->bind_param('sss', $search, $search, $search); + $stmt->execute(); + $rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } else { + $result = $conn->query("SELECT * FROM tb_jalan ORDER BY created_at DESC"); + $rows = $result->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } + $conn->close(); exit; +} + +// ---- POST (multipart/form-data untuk support upload foto) ---- +if ($method === 'POST') { + $nama = $conn->real_escape_string($_POST['nama_jalan'] ?? ''); + $status = $conn->real_escape_string($_POST['status_jalan'] ?? 'Kabupaten'); + $panjang = (float)($_POST['panjang_meter'] ?? 0); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); + $ket = $conn->real_escape_string($_POST['keterangan'] ?? ''); + $foto = ''; + + // Upload foto + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + $allowed = ['jpg','jpeg','png','webp']; + if (in_array($ext, $allowed)) { + $fname = 'jalan_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) { + $foto = 'uploads/jalan/' . $fname; + } + } + } + + $stmt = $conn->prepare("INSERT INTO tb_jalan (nama_jalan,status_jalan,panjang_meter,geojson,keterangan,foto) VALUES (?,?,?,?,?,?)"); + $stmt->bind_param('ssdsss', $nama, $status, $panjang, $geojson, $ket, $foto); + echo $stmt->execute() + ? json_encode(['status'=>'ok','id'=>$conn->insert_id,'message'=>'Data jalan berhasil disimpan']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- PUT (multipart workaround via POST + _method) ---- +if ($method === 'PUT' || ($method === 'POST' && ($_POST['_method'] ?? '') === 'PUT')) { + parse_str(file_get_contents('php://input'), $put); + $id = (int)($_POST['id'] ?? $put['id'] ?? 0); + $nama = $conn->real_escape_string($_POST['nama_jalan'] ?? $put['nama_jalan'] ?? ''); + $status = $conn->real_escape_string($_POST['status_jalan'] ?? $put['status_jalan'] ?? 'Kabupaten'); + $panjang = (float)($_POST['panjang_meter'] ?? $put['panjang_meter'] ?? 0); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? $put['geojson'] ?? ''); + $ket = $conn->real_escape_string($_POST['keterangan'] ?? $put['keterangan'] ?? ''); + + // Ambil foto lama + $row = $conn->query("SELECT foto FROM tb_jalan WHERE id=$id")->fetch_assoc(); + $foto = $row['foto'] ?? ''; + + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + $allowed = ['jpg','jpeg','png','webp']; + if (in_array($ext, $allowed)) { + // Hapus foto lama + if ($foto && file_exists(__DIR__ . '/' . $foto)) unlink(__DIR__ . '/' . $foto); + $fname = 'jalan_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) { + $foto = 'uploads/jalan/' . $fname; + } + } + } + + $stmt = $conn->prepare("UPDATE tb_jalan SET nama_jalan=?,status_jalan=?,panjang_meter=?,geojson=?,keterangan=?,foto=? WHERE id=?"); + $stmt->bind_param('ssdsssi', $nama, $status, $panjang, $geojson, $ket, $foto, $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data jalan berhasil diupdate']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +echo json_encode(['status'=>'error','message'=>'Method not allowed']); +$conn->close(); diff --git a/webgis02/jalan_rusak.php b/webgis02/jalan_rusak.php new file mode 100644 index 0000000..783bcf9 --- /dev/null +++ b/webgis02/jalan_rusak.php @@ -0,0 +1,111 @@ +query("SELECT foto FROM tb_jalan_rusak WHERE id=$id")->fetch_assoc(); + if ($row && $row['foto'] && file_exists(__DIR__ . '/' . $row['foto'])) unlink(__DIR__ . '/' . $row['foto']); + $stmt = $conn->prepare("DELETE FROM tb_jalan_rusak WHERE id = ?"); + $stmt->bind_param('i', $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data jalan rusak berhasil dihapus']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- GET ---- +if ($method === 'GET') { + $search = isset($_GET['q']) ? '%' . $conn->real_escape_string($_GET['q']) . '%' : null; + if (isset($_GET['id'])) { + $id = (int)$_GET['id']; + $stmt = $conn->prepare("SELECT * FROM tb_jalan_rusak WHERE id = ?"); + $stmt->bind_param('i', $id); + $stmt->execute(); + $data = $stmt->get_result()->fetch_assoc(); + echo json_encode(['status'=>'ok','data'=>$data]); + } elseif ($search) { + $stmt = $conn->prepare("SELECT * FROM tb_jalan_rusak WHERE lokasi LIKE ? OR tingkat LIKE ? OR jenis LIKE ? OR keterangan LIKE ? ORDER BY created_at DESC"); + $stmt->bind_param('ssss', $search, $search, $search, $search); + $stmt->execute(); + $rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } else { + $result = $conn->query("SELECT * FROM tb_jalan_rusak ORDER BY created_at DESC"); + $rows = $result->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } + $conn->close(); exit; +} + +// ---- POST ---- +if ($method === 'POST') { + $lokasi = $conn->real_escape_string($_POST['lokasi'] ?? ''); + $tingkat = $conn->real_escape_string($_POST['tingkat'] ?? 'Sedang'); + $jenis = $conn->real_escape_string($_POST['jenis'] ?? ''); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); + $ket = $conn->real_escape_string($_POST['keterangan'] ?? ''); + $tgl = $conn->real_escape_string($_POST['tanggal_lapor'] ?? date('Y-m-d')); + $foto = ''; + + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + if (in_array($ext, ['jpg','jpeg','png','webp'])) { + $fname = 'rusak_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) + $foto = 'uploads/jalan_rusak/' . $fname; + } + } + + $stmt = $conn->prepare("INSERT INTO tb_jalan_rusak (lokasi,tingkat,jenis,geojson,keterangan,foto,tanggal_lapor) VALUES (?,?,?,?,?,?,?)"); + $stmt->bind_param('sssssss', $lokasi, $tingkat, $jenis, $geojson, $ket, $foto, $tgl); + echo $stmt->execute() + ? json_encode(['status'=>'ok','id'=>$conn->insert_id,'message'=>'Data jalan rusak berhasil disimpan']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- PUT ---- +if ($method === 'PUT' || ($method === 'POST' && ($_POST['_method'] ?? '') === 'PUT')) { + $id = (int)($_POST['id'] ?? 0); + $lokasi = $conn->real_escape_string($_POST['lokasi'] ?? ''); + $tingkat = $conn->real_escape_string($_POST['tingkat'] ?? 'Sedang'); + $jenis = $conn->real_escape_string($_POST['jenis'] ?? ''); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); + $ket = $conn->real_escape_string($_POST['keterangan'] ?? ''); + $tgl = $conn->real_escape_string($_POST['tanggal_lapor'] ?? date('Y-m-d')); + $row = $conn->query("SELECT foto FROM tb_jalan_rusak WHERE id=$id")->fetch_assoc(); + $foto = $row['foto'] ?? ''; + + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + if (in_array($ext, ['jpg','jpeg','png','webp'])) { + if ($foto && file_exists(__DIR__ . '/' . $foto)) unlink(__DIR__ . '/' . $foto); + $fname = 'rusak_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) + $foto = 'uploads/jalan_rusak/' . $fname; + } + } + + $stmt = $conn->prepare("UPDATE tb_jalan_rusak SET lokasi=?,tingkat=?,jenis=?,geojson=?,keterangan=?,foto=?,tanggal_lapor=? WHERE id=?"); + $stmt->bind_param('sssssssi', $lokasi, $tingkat, $jenis, $geojson, $ket, $foto, $tgl, $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data jalan rusak berhasil diupdate']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +echo json_encode(['status'=>'error','message'=>'Method not allowed']); +$conn->close(); diff --git a/webgis02/parsil.php b/webgis02/parsil.php new file mode 100644 index 0000000..e5a7b68 --- /dev/null +++ b/webgis02/parsil.php @@ -0,0 +1,111 @@ +query("SELECT foto FROM tb_parsil WHERE id=$id")->fetch_assoc(); + if ($row && $row['foto'] && file_exists(__DIR__ . '/' . $row['foto'])) unlink(__DIR__ . '/' . $row['foto']); + $stmt = $conn->prepare("DELETE FROM tb_parsil WHERE id = ?"); + $stmt->bind_param('i', $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data parsil berhasil dihapus']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- GET ---- +if ($method === 'GET') { + $search = isset($_GET['q']) ? '%' . $conn->real_escape_string($_GET['q']) . '%' : null; + if (isset($_GET['id'])) { + $id = (int)$_GET['id']; + $stmt = $conn->prepare("SELECT * FROM tb_parsil WHERE id = ?"); + $stmt->bind_param('i', $id); + $stmt->execute(); + $data = $stmt->get_result()->fetch_assoc(); + echo json_encode(['status'=>'ok','data'=>$data]); + } elseif ($search) { + $stmt = $conn->prepare("SELECT * FROM tb_parsil WHERE nama_pemilik LIKE ? OR no_sertifikat LIKE ? OR alamat LIKE ? ORDER BY created_at DESC"); + $stmt->bind_param('sss', $search, $search, $search); + $stmt->execute(); + $rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } else { + $result = $conn->query("SELECT * FROM tb_parsil ORDER BY created_at DESC"); + $rows = $result->fetch_all(MYSQLI_ASSOC); + echo json_encode(['status'=>'ok','data'=>$rows]); + } + $conn->close(); exit; +} + +// ---- POST ---- +if ($method === 'POST') { + $nama = $conn->real_escape_string($_POST['nama_pemilik'] ?? ''); + $noSert = $conn->real_escape_string($_POST['no_sertifikat'] ?? ''); + $status = $conn->real_escape_string($_POST['status_kepemilikan'] ?? 'SHM'); + $luas = (float)($_POST['luas_m2'] ?? 0); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); + $alamat = $conn->real_escape_string($_POST['alamat'] ?? ''); + $foto = ''; + + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + if (in_array($ext, ['jpg','jpeg','png','webp'])) { + $fname = 'parsil_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) + $foto = 'uploads/parsil/' . $fname; + } + } + + $stmt = $conn->prepare("INSERT INTO tb_parsil (nama_pemilik,no_sertifikat,status_kepemilikan,luas_m2,geojson,alamat,foto) VALUES (?,?,?,?,?,?,?)"); + $stmt->bind_param('sssdsss', $nama, $noSert, $status, $luas, $geojson, $alamat, $foto); + echo $stmt->execute() + ? json_encode(['status'=>'ok','id'=>$conn->insert_id,'message'=>'Data parsil berhasil disimpan']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +// ---- PUT ---- +if ($method === 'PUT' || ($method === 'POST' && ($_POST['_method'] ?? '') === 'PUT')) { + $id = (int)($_POST['id'] ?? 0); + $nama = $conn->real_escape_string($_POST['nama_pemilik'] ?? ''); + $noSert = $conn->real_escape_string($_POST['no_sertifikat'] ?? ''); + $status = $conn->real_escape_string($_POST['status_kepemilikan'] ?? 'SHM'); + $luas = (float)($_POST['luas_m2'] ?? 0); + $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); + $alamat = $conn->real_escape_string($_POST['alamat'] ?? ''); + $row = $conn->query("SELECT foto FROM tb_parsil WHERE id=$id")->fetch_assoc(); + $foto = $row['foto'] ?? ''; + + if (!empty($_FILES['foto']['name'])) { + $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); + if (in_array($ext, ['jpg','jpeg','png','webp'])) { + if ($foto && file_exists(__DIR__ . '/' . $foto)) unlink(__DIR__ . '/' . $foto); + $fname = 'parsil_' . time() . '_' . rand(1000,9999) . '.' . $ext; + if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) + $foto = 'uploads/parsil/' . $fname; + } + } + + $stmt = $conn->prepare("UPDATE tb_parsil SET nama_pemilik=?,no_sertifikat=?,status_kepemilikan=?,luas_m2=?,geojson=?,alamat=?,foto=? WHERE id=?"); + $stmt->bind_param('sssdsssi', $nama, $noSert, $status, $luas, $geojson, $alamat, $foto, $id); + echo $stmt->execute() + ? json_encode(['status'=>'ok','message'=>'Data parsil berhasil diupdate']) + : json_encode(['status'=>'error','message'=>$conn->error]); + $conn->close(); exit; +} + +echo json_encode(['status'=>'error','message'=>'Method not allowed']); +$conn->close(); diff --git a/webgis03/Pontianak.txt b/webgis03/Pontianak.txt new file mode 100644 index 0000000..b53f9d6 --- /dev/null +++ b/webgis03/Pontianak.txt @@ -0,0 +1,8 @@ +{"type":"FeatureCollection", "features": [ +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[319008.42264758144,9993128.543081284],[319106.59536181216,9993208.586751947],[319138.1674862954,9993234.328599945],[319188.1641255417,9993271.239515305],[319315.3090878625,9993362.86186791],[319341.71774874744,9993381.892290117],[319522.21352586406,9993511.959779745],[319652.5273533965,9993608.073472979],[319652.5447827355,9993608.086324697],[320255.57490359835,9994071.906896597],[320247.14153871604,9994097.035440447],[320069.49918949,9994368.583417894],[319792.97300157824,9994786.274690624],[319666.8574391509,9994939.054296494],[319475.44730579515,9995170.933801662],[319345.25384723616,9995326.413370132],[319135.3538952931,9995559.877687462],[318879.59411441,9995825.817136766],[318875.70697222115,9995826.386659624],[318707.8110486164,9995999.150159838],[318958.9575444403,9996213.827341089],[319117.97433673986,9996372.84413338],[319266.36381298956,9996523.656088335],[319268.5730215709,9996539.832357269],[319274.7879851961,9996541.63402713],[319214.0710775298,9996987.294940963],[319215.82243746833,9997136.66625023],[319232.4763986519,9997202.678236024],[319305.1530334581,9997289.89019675],[319299.00624396454,9997292.485507872],[319295.81390655076,9997295.490060732],[319294.31163011544,9997297.931259934],[319297.128398425,9997297.931259934],[319298.5316200504,9997300.43941939],[319299.9893127835,9997303.714480726],[319297.92368269357,9997305.028972605],[319301.8671583332,9997316.296045847],[319299.6137436654,9997317.610537725],[319300.3648819,9997320.239521477],[319268.0659386029,9997336.576777678],[319263.3713247645,9997326.99976542],[319281.7742110492,9997317.798322275],[319280.08415006206,9997314.605984857],[319271.25827602827,9997318.173891384],[319267.6903694988,9997318.173891384],[319251.540897861,9997326.811980868],[319248.34856044693,9997323.431858895],[319243.8484900829,9997322.750030054],[319235.9547798779,9997321.554013357],[319232.5746579018,9997310.099155566],[319226.9411212957,9997312.728139319],[319233.7278663804,9997326.879224839],[319197.5760311567,9997341.629103294],[319191.19994957384,9997345.16990253],[319185.44073492906,9997336.764562229],[319167.97677140136,9997346.529359037],[319174.3031848877,9997354.553102965],[319175.6759381155,9997356.294155844],[319162.22332146374,9997361.261356397],[319155.0489826094,9997365.245448066],[319150.8883770533,9997364.181107111],[319148.25939331786,9997363.805538],[319145.2548404315,9997358.359785937],[319132.48549077386,9997364.932245327],[319134.3633363108,9997371.692489268],[319130.4198606891,9997375.823749457],[319113.1436817067,9997385.400761714],[319104.6933767757,9997386.339684485],[319089.29504335497,9997378.452733219],[319062.81742123695,9997393.287712982],[319062.25406758545,9997404.93035533],[319046.5636248409,9997410.574324422],[319033.6551755095,9997412.354800193],[319003.38708740415,9997422.147416936],[318998.4907790319,9997418.586465392],[318994.4847085489,9997420.812060108],[318992.2591138267,9997424.818130592],[318990.0335191125,9997431.04979579],[318985.137210742,9997433.72050945],[318978.90554554574,9997439.06193676],[318977.57018871803,9997444.403364073],[318936.61924598645,9997459.982527072],[318928.16198607255,9997446.628958788],[318908.1316336468,9997453.305742929],[318901.45484949904,9997446.183839845],[318887.21104333363,9997458.202051306],[318878.75378341303,9997467.104430156],[318874.30259399605,9997474.22633324],[318871.1867613918,9997479.122641612],[318864.0648583104,9997480.903117387],[318853.82712263137,9997481.348236324],[318847.1503384805,9997484.018949982],[318840.0284354049,9997488.025020467],[318829.34558077046,9997492.921328839],[318813.76641777763,9997497.81763721],[318804.418919974,9997501.823707694],[318798.6323737219,9997505.384659238],[318791.5104706296,9997504.939540295],[318786.61416226183,9997502.268826636],[318777.8230631488,9997511.115565628],[318772.14779663156,9997512.450922452],[318761.79878120444,9997516.790832145],[318754.1204794428,9997521.798420252],[318748.77905212936,9997526.138329944],[318741.76842877606,9997531.479757257],[318732.08709177177,9997535.485827744],[318719.06736270135,9997540.159576647],[318708.718347276,9997543.497968711],[318705.046116002,9997545.501003956],[318699.704688695,9997549.50707444],[318697.0339750252,9997554.180823343],[318692.69406533986,9997558.52073303],[318680.34201467317,9997541.161094261],[318677.3374618124,9997542.162611887],[318682.0112107152,9997554.514662545],[318656.3055917673,9997562.526803516],[318645.95657634246,9997560.85760748],[318625.2585455043,9997569.871266073],[318615.24336929235,9997574.87885418],[318609.23426356836,9997571.540462108],[318603.55899704696,9997566.199034799],[318584.8640014465,9997567.200552415],[318575.8503428614,9997567.868230835],[318569.17355872015,9997570.538944487],[318564.16597061104,9997574.87885418],[318556.1538296718,9997572.541979728],[318549.14320629387,9997574.545014972],[318545.4709750415,9997577.549567835],[318550.14472394204,9997586.22938722],[318542.46642218344,9997590.90313612],[318538.126512499,9997583.224834362],[318530.4482107044,9997582.55715594],[318523.7714265883,9997582.55715594],[318513.08857197233,9997585.561708804],[318503.4072349635,9997584.89403039],[318491.3890235192,9997583.892512769],[318487.38295302156,9997587.23090484],[318482.04152572027,9997592.23849295],[318476.3662591962,9997597.246081058],[318472.0263495066,9997601.919829953],[318463.34653012827,9997605.59206123],[318451.3283186563,9997606.927418059],[318442.31466007687,9997610.93348855],[318440.97930324776,9997616.27491586],[318449.3252834301,9997634.30223304],[318416.94288034464,9997644.317409255],[318404.25699047034,9997645.652766082],[318384.56047724525,9997648.991158154],[318382.5574419954,9997644.317409255],[318374.87914025306,9997644.65124846],[318372.8761050027,9997635.63758987],[318368.8700345267,9997633.300715419],[318360.52405434614,9997632.966876213],[318357.85334069777,9997627.959288105],[318356.8518230547,9997617.610272687],[318353.5134309831,9997613.938041408],[318352.8457525821,9997617.944111895],[318353.17959178274,9997622.617860792],[318351.51039575,9997624.620896038],[318347.1704860685,9997628.293127317],[318340.82754112064,9997630.296162555],[318335.48611381487,9997631.96535859],[318327.1401336292,9997637.640625112],[318324.46941997693,9997638.642142737],[318319.46183186385,9997637.640625112],[318315.45576137525,9997634.969911454],[318309.1128164445,9997637.974464318],[318305.4405851732,9997639.977499561],[318299.431479444,9997638.97598194],[318294.75773054943,9997637.974464318],[318288.0809463986,9997636.305268284],[318282.4056798777,9997636.305268284],[318277.064252558,9997638.308303526],[318269.0521115953,9997637.640625112],[318264.71220189915,9997633.968393834],[318261.373809845,9997635.303750666],[318257.0339001465,9997638.642142737],[318244.3480102776,9997640.979017183],[318237.6712261457,9997644.65124846],[318228.99140674766,9997644.317409255],[318213.96864242834,9997645.652766082],[318206.6241798799,9997648.657318946],[318200.94891335594,9997652.663389433],[318220.9792657712,9997652.663389433],[318222.6484618111,9997663.680083266],[318172.57258075493,9997664.68160089],[318163.892761377,9997638.97598194],[318157.5498164374,9997639.424578374],[318147.033881404,9997639.61236293],[318131.6355479932,9997639.800147483],[318110.9792470366,9997641.11463936],[318109.1014015139,9997642.804700347],[318107.0357714188,9997646.935960533],[318103.8434339983,9997651.25500528],[318102.1533730179,9997654.25955814],[318099.71217382216,9997654.8229118],[318092.5763607668,9997650.128297951],[318090.6985152251,9997649.752728844],[318088.632885129,9997648.25045241],[318087.5061778005,9997645.621468656],[318086.5672550375,9997643.93140767],[318086.1916859319,9997647.874883303],[318087.50617779384,9997649.56494429],[318087.31839324813,9997652.193928046],[318086.3794704806,9997654.8229118],[318085.44054771453,9997658.390818328],[318083.3749176026,9997660.832017532],[318079.6192265304,9997662.522078522],[318075.11239724874,9997665.52663138],[318070.41778338805,9997665.714415936],[318067.4132305207,9997664.024354946],[318062.906401232,9997663.648785843],[318057.2728646065,9997665.902200487],[318051.451543443,9997665.902200487],[318047.3202832587,9997664.963277716],[318043.7523767139,9997664.2121395],[318039.62111653853,9997665.52663138],[318036.0532100131,9997667.780046027],[318033.4242262571,9997667.780046027],[318028.16625875165,9997668.155615134],[318026.2884132081,9997670.596814334],[318023.8472140118,9997672.662444431],[318018.9648155989,9997670.78459889],[318015.96026273747,9997668.531184241],[318010.3267261152,9997667.216692366],[318008.2610960278,9997669.09453791],[318008.6366651313,9997671.160167998],[318007.69774236286,9997672.850228984],[318004.3176203905,9997672.850228984],[318001.87642119627,9997671.347952552],[317997.74516100506,9997670.409029782],[317995.491746351,9997670.409029782],[317993.8016853695,9997673.225798095],[317992.67497805064,9997676.981489178],[317988.7315024078,9997678.29598105],[317983.8491040068,9997675.854781847],[317981.7834739095,9997670.78459889],[317981.7834738985,9997667.216692366],[317983.84910401073,9997664.58770861],[317982.9101812305,9997661.583155746],[317981.59568936494,9997657.639680112],[317980.28119747376,9997655.386265464],[317977.08886006876,9997656.137403678],[317975.77436818305,9997658.390818328],[317974.45987630275,9997659.705310205],[317968.8263396883,9997659.141956545],[317964.9037290071,9997660.446015947],[317961.2314977194,9997661.781372774],[317957.8931056493,9997659.110659117],[317952.88551754894,9997652.767714186],[317944.20569816465,9997648.761643698],[317936.6386761351,9997652.378235107],[317930.40701094293,9997655.494067708],[317925.95582151145,9997661.725732908],[317921.94975102483,9997663.06108974],[317918.8339184294,9997660.390376078],[317917.498561593,9997655.494067708],[317912.6022532251,9997652.82335405],[317912.6022532284,9997639.914904715],[317909.0413016868,9997640.360023659],[317907.7059448599,9997648.817283565],[317903.2547554291,9997653.268472994],[317901.91939860675,9997661.725732908],[317888.56583034084,9997667.957398107],[317869.4257158047,9997670.628111763],[317868.5354778904,9997667.957398107],[317865.41964529,9997667.512279164],[317859.18798009446,9997665.286684448],[317857.85262328037,9997660.835495021],[317853.4014338399,9997660.835495021],[317847.61488757894,9997662.615970792],[317840.4929845002,9997662.170851849],[317830.25524882076,9997658.164781364],[317827.1394162162,9997655.494067708],[317825.8040593928,9997649.262402508],[317822.24310784193,9997649.262402508],[317820.01751312515,9997653.268472994],[317805.32858801656,9997654.603829822],[317800.87739858974,9997652.82335405],[317797.7615659934,9997644.811213084],[317793.0757318934,9997643.422817789],[317785.74335454905,9997641.250261538],[317778.6214514512,9997634.12835846],[317763.9932573003,9997629.89116863],[317754.1581596675,9997632.682271695],[317730.44078118744,9997644.46126018],[317732.8124399245,9997650.743547618],[317738.346349553,9997661.737564888],[317734.3934077248,9997668.019785374],[317714.6289626055,9997674.301840154],[317705.93265998794,9997671.945900267],[317704.35158387356,9997664.878337752],[317690.12132033426,9997656.240075566],[317666.40409373434,9997653.09869264],[317622.1318851876,9997651.527657263],[317609.73097873724,9997654.483812267],[317609.05846770667,9997651.396919379],[317608.68289859395,9997646.514520973],[317612.0630205644,9997639.942061584],[317620.70111004985,9997637.125293273],[317625.20793934783,9997633.369602194],[317626.8980003313,9997628.862772899],[317626.8980003277,9997620.41246797],[317626.14686211094,9997614.027793135],[317624.8323702345,9997610.272102054],[317622.7667401431,9997611.211024825],[317619.949971842,9997613.088870363],[317617.3209880739,9997614.215577688],[317611.6874514612,9997613.652224028],[317603.9882847469,9997610.459886607],[317598.1669635744,9997606.140841868],[317593.1987870368,9997601.871254789],[317590.1942341791,9997599.805624692],[317590.3820187273,9997604.50023854],[317589.4430959624,9997608.06814507],[317589.067526844,9997612.762758916],[317587.75303498155,9997617.269588212],[317584.56069755164,9997620.83749474],[317584.18512844224,9997624.405401263],[317586.43854309013,9997627.034385022],[317584.9746827461,9997665.662362715],[317584.1851284524,9997670.037047883],[317572.3547015466,9997669.47369422],[317564.5226079229,9997662.179541407],[317557.3045825687,9997660.950370638],[317528.84391982935,9997654.667801946],[317528.696229693,9997654.587114127],[317524.0506026071,9997656.546988048],[317518.69874285057,9997656.969503295],[317511.6568220533,9997656.687826468],[317504.6149012761,9997660.772140512],[317522.64221847197,9997667.10986921],[317526.1631788401,9997670.630829597],[317501.09394090547,9997674.292628402],[317479.28485146724,9997665.93099951],[317478.439820972,9997664.381776942],[317478.43982096564,9997661.00165497],[317479.28485145874,9997658.044048242],[317480.97491245274,9997653.959734192],[317486.6084490897,9997653.678057363],[317490.9744399132,9997655.36811835],[317498.43887594657,9997658.889078738],[317500.83312902995,9997658.044048242],[317504.77660465846,9997655.649795178],[317509.0017571073,9997651.565481132],[317511.39601018943,9997647.622005496],[317511.26014006475,9997645.516018905],[317511.11433336325,9997643.256014615],[317510.1284644279,9997640.861761551],[317501.11480585893,9997640.298407894],[317499.34011726966,9997642.062481955],[317497.31216865755,9997643.256014615],[317494.63623874635,9997645.93194451],[317491.53779360175,9997648.467035988],[317488.29851007136,9997650.297935393],[317484.7775496691,9997652.269673206],[317479.9890435494,9997652.83302687],[317476.04556789895,9997652.83302687],[317472.24293069064,9997652.83302687],[317467.7084576302,9997652.484221248],[317463.0884337063,9997652.128834791],[317460.9730393958,9997654.569674386],[317459.4266349046,9997656.353987256],[317458.01825075306,9997656.917340918],[317454.9590535845,9997656.431754073],[317454.8755271629,9997656.418495907],[317449.1454305591,9997655.508956764],[317446.18782385107,9997654.382249443],[317441.2584793139,9997653.255542114],[317439.28674148885,9997650.579612225],[317438.16003416956,9997645.93194451],[317437.90312662383,9997643.427096127],[317437.5966804975,9997640.439246306],[317435.4841042775,9997639.03086215],[317432.52649753366,9997637.481639583],[317429.79605493473,9997637.221597431],[317423.6536773576,9997636.636609087],[317418.72433280764,9997634.38319444],[317411.82325046393,9997634.101517612],[317408.44312847534,9997634.80570969],[317406.7530675027,9997633.679002361],[317406.75306749216,9997629.594688315],[317407.457259592,9997623.538636448],[317405.89350731595,9997618.925567282],[317404.64049128094,9997615.229169937],[317394.5001253577,9997605.511319263],[317387.0356893289,9997605.370480848],[317382.95137528726,9997606.638026591],[317381.4021527191,9997608.891441235],[317380.08186497615,9997612.500227733],[317375.95789799915,9997612.38641732],[317375.7686161689,9997609.736471731],[317375.06442407565,9997607.20138025],[317373.65603993693,9997605.370480848],[317370.41675639275,9997603.962096695],[317364.2198660959,9997603.53958145],[317358.1638142456,9997603.398743032],[317352.24860078504,9997605.229642436],[317346.61506416515,9997608.187249158],[317341.4040428004,9997610.29982539],[317328.1652317261,9997610.440663809],[317323.6697344283,9997611.912887497],[317322.43780291,9997610.32329846],[317316.8042662969,9997606.943176487],[317310.795160556,9997608.633237474],[317303.28377840517,9997609.759944798],[317295.7723962462,9997609.196591139],[317285.06951244175,9997610.938921057],[317279.62292461994,9997611.825574892],[317272.8626806544,9997611.825574892],[317263.84902206867,9997609.572160246],[317227.9821722589,9997610.511083016],[317227.98217225214,9997606.379822832],[317228.5455259257,9997598.49287156],[317230.42337145866,9997596.615026018],[317230.423371454,9997591.45310809],[317230.42337146355,9997587.976936536],[317229.29666413844,9997585.535737336],[317227.41881859885,9997582.906753577],[317224.6020502929,9997581.216692591],[317221.2219283079,9997579.526631605],[317216.52731446153,9997577.461001512],[317215.21282259125,9997573.51752588],[317209.0159323212,9997574.644233203],[317205.07245668105,9997576.334294187],[317200.6299694958,9997578.802342625],[317198.3122127255,9997580.089985268],[317197.35153522395,9997578.342619453],[317194.7443062175,9997575.395371418],[317193.2607949036,9997577.768989494],[317190.98861512815,9997581.404477147],[317188.9229850451,9997584.596814563],[317187.98406226444,9997587.789151981],[317185.9184321802,9997592.108196724],[317183.4772329646,9997593.79825771],[317181.97495654726,9997592.108196724],[317177.84369634325,9997588.164721088],[317174.651358927,9997584.40903001],[317173.52465161355,9997579.338847054],[317173.2820003098,9997576.103496527],[317172.961297948,9997571.827464893],[317169.39339141524,9997570.700757572],[317163.57207024173,9997571.639680337],[317157.5629645248,9997573.141956773],[317156.2266408872,9997576.705486465],[317155.3095498613,9997579.151062498],[317145.8953482133,9997579.553258348],[317139.5356473356,9997577.836570619],[317133.5265416162,9997577.085432403],[317126.57851311355,9997568.635127477],[317124.5128830184,9997564.12829818],[317122.63503748993,9997558.494761558],[317122.44725290773,9997553.049009493],[317121.8838992468,9997547.97882654],[317121.5083301477,9997550.9833794],[317120.0060537121,9997554.175716821],[317117.94042362773,9997556.053562356],[317116.81371629774,9997559.809253437],[317117.0015008545,9997563.189375412],[317117.9404236142,9997566.006143719],[317117.3770699715,9997569.198481137],[317115.4992244233,9997572.390818555],[317113.80916343705,9997575.395371418],[317112.870240676,9997578.587708836],[317111.743533337,9997583.282322684],[317111.1801796787,9997587.601367429],[317109.86400209373,9997590.233722607],[317108.5511959407,9997592.859334938],[317106.29778127815,9997595.67610325],[317100.10089099465,9997598.305087006],[317085.265911237,9997600.558501657],[317080.1957282823,9997603.750839073],[317076.44003720104,9997602.62413175],[317073.62326888705,9997600.18293255],[317069.1164396114,9997597.929517899],[317064.79739484703,9997597.929517899],[317061.6050574342,9997598.86844067],[317058.7882891196,9997598.680656113],[317057.28601268143,9997595.30053414],[317055.7837362563,9997591.732627617],[317055.03259804763,9997588.164721088],[317054.0936752922,9997583.84567635],[317052.2158297372,9997583.282322684],[317050.5257687453,9997584.033460904],[317047.52121589694,9997584.784599122],[317045.0800166819,9997581.02890804],[317042.82660204626,9997575.207586866],[317038.50755730004,9997574.456448654],[317034.56408164476,9997576.522078743],[317032.8740206751,9997579.714416161],[317031.74731336435,9997582.34339992],[317029.8694678071,9997584.596814563],[317030.24503691576,9997588.72807475],[317024.98706941144,9997589.103643859],[317024.98706941423,9997586.662444657],[317024.04814664344,9997581.216692591],[317021.79473199905,9997577.085432403],[317017.66347179736,9997573.141956773],[317010.90322787274,9997572.203034],[317005.08190668083,9997575.207586866],[316997.57052452606,9997574.456448654],[316995.12932533276,9997570.325188462],[316995.50489443145,9997566.569497384],[316995.3224512926,9997564.973119855],[316994.753756211,9997559.997037996],[316989.68357325665,9997555.67799325],[316987.0545894965,9997553.987932263],[316985.552313064,9997550.795594849],[316984.42560575035,9997544.22313546],[316983.48668295954,9997548.542180197],[316982.35997564613,9997553.424578601],[316981.6088374423,9997556.616916023],[316980.36853385996,9997563.677105626],[316979.16763823223,9997570.512973014],[316971.2806869594,9997569.761834798],[316972.04993605963,9997562.92406505],[316972.9707479559,9997554.739070479],[316963.7693048117,9997556.053562356],[316950.7213271417,9997560.95106777],[316944.4176507809,9997560.350826936],[316944.2489845746,9997557.145494763],[316942.55892360245,9997555.831002887],[316939.17880163516,9997555.455433777],[316935.9864642032,9997555.643218331],[316932.60634223546,9997556.582141105],[316931.2587450495,9997559.181078512],[316929.9773584686,9997561.652324064],[316924.719390969,9997561.464539506],[316923.968252756,9997566.534722466],[316923.02932997525,9997567.098076126],[316920.77591534145,9997566.534722466],[316919.27363891096,9997565.595799694],[316917.3957933645,9997563.154600492],[316916.45687059977,9997560.337832185],[316910.259980316,9997560.901185842],[316909.8844112156,9997565.220230587],[316909.5088421019,9997566.534722466],[316907.44321200944,9997568.412568003],[316905.00201279134,9997568.78813711],[316901.99745993235,9997568.78813711],[316897.4906306416,9997568.60035256],[316895.04943143914,9997567.473645233],[316892.6082322451,9997565.03244603],[316892.60823224107,9997559.58669397],[316885.84798830026,9997559.211124863],[316885.725479762,9997555.495032566],[316885.28463463613,9997542.122730449],[316877.2098988029,9997542.122730449],[316875.5198378245,9997539.493746689],[316873.82977683377,9997540.43266946],[316871.0130085247,9997541.371592227],[316869.3229475366,9997540.43266946],[316866.1306101221,9997538.930393027],[316863.87719548657,9997538.930393027],[316862.1871344786,9997538.742608475],[316860.68485805485,9997537.240332043],[316859.93371984054,9997534.986917393],[316858.2436588447,9997534.23577918],[316855.8024596614,9997534.42356373],[316852.9856913472,9997535.3624865],[316849.9811384729,9997537.428116595],[316850.75459017034,9997551.681726279],[316851.2956303543,9997561.652324064],[316818.057764319,9997561.652324064],[316816.64375662175,9997545.771930145],[316815.616565089,9997534.23577918],[316812.7997967871,9997534.047994623],[316809.6074593719,9997533.672425514],[316808.1051829335,9997531.231226314],[316803.22278454807,9997530.66787265],[316799.27930889966,9997530.4800881],[316795.89918693947,9997529.541165328],[316794.7724796096,9997527.475535233],[316793.6457722922,9997525.034336032],[316790.82900398946,9997524.283197818],[316787.448882007,9997520.71529129],[316781.9591179417,9997517.31609745],[316778.0772591082,9997516.365438145],[316772.927854547,9997515.335557232],[316768.64988767554,9997515.652443668],[316767.6992283586,9997517.078432623],[316767.0654555004,9997518.266756754],[316766.35246102244,9997519.851188932],[316765.48102331656,9997521.673285928],[316764.2134775816,9997522.703166844],[316762.23293737916,9997523.099274887],[316760.1731755327,9997522.78238845],[316759.30173783284,9997521.990172364],[316758.8264082008,9997520.32651858],[316758.6679649771,9997518.42519997],[316757.4796408474,9997517.87064871],[316755.57832223456,9997518.029091928],[316752.5679011082,9997518.029091928],[316750.6431094303,9997517.335169319],[316748.57747933385,9997515.269539226],[316748.0141256723,9997512.452770915],[316738.4371134237,9997511.889417255],[316738.4371134109,9997510.762709934],[316736.5592678839,9997505.692526974],[316734.8692068891,9997507.38258796],[316734.86920688616,9997510.574925376],[316734.3707855225,9997513.792273387],[316731.11351579917,9997516.584031101],[316729.0478857107,9997517.71073843],[316725.85554830043,9997518.086307537],[316722.6632108928,9997518.274092088],[316719.84644256765,9997517.71073843],[316717.78081248514,9997514.893970115],[316713.461767745,9997509.823787162],[316712.3166230845,9997505.217853999],[316699.11315413355,9997500.50730384],[316694.2059490606,9997499.391992563],[316693.9801939914,9997494.764013415],[316703.244231993,9997494.012875201],[316701.4915761565,9997488.25414888],[316695.482470423,9997486.000734229],[316675.45211799955,9997485.499975419],[316670.1941505702,9997477.23745505],[316647.4096245932,9997479.490869692],[316636.1425513682,9997483.246560773],[316613.23599788896,9997487.949863276],[316604.2497736151,9997485.63931265],[316596.64818359254,9997486.239438178],[316595.7092608451,9997486.427222729],[316595.3839187344,9997483.359711582],[316594.3947689482,9997474.033442164],[316584.0666184692,9997473.470088508],[316583.7074652348,9997480.53343559],[316583.50326482346,9997484.549377192],[316575.8040981054,9997484.549377192],[316575.80409810203,9997478.636266852],[316575.8040980968,9997474.409011273],[316564.72480940813,9997473.845657615],[316564.72480942344,9997476.287921067],[316563.6031251001,9997476.070085734],[316552.33102894266,9997476.286856815],[316552.3310289349,9997473.881002057],[316552.3310289307,9997468.399905547],[316548.0119841937,9997467.648767333],[316547.8241996317,9997465.019783575],[316545.7585695436,9997464.456429912],[316545.3830004415,9997469.902181977],[316537.7440543376,9997471.453842906],[316533.3647889736,9997472.34338118],[316526.2289759633,9997475.535718596],[316523.7877767393,9997475.535718596],[316523.983352985,9997469.375066854],[316518.47371293337,9997468.599117806],[316508.7650125173,9997469.338828314],[316508.7158507199,9997467.224871246],[316508.3894434091,9997453.189356677],[316500.1308352201,9997454.39495959],[316486.9272337714,9997454.183701966],[316470.554767979,9997451.754239298],[316457.3511665328,9997448.37411733],[316449.7458920975,9997444.254593678],[316443.83067864366,9997438.339380225],[316442.8145793761,9997456.259676442],[316442.66876171675,9997458.831369681],[316435.1691160853,9997459.359513735],[316402.42418449966,9997458.831369681],[316402.0016692394,9997452.916156227],[316399.99472182465,9997447.740344457],[316395.66394055705,9997445.522139413],[316389.95998471277,9997443.092676748],[316386.09866482654,9997443.661898676],[316385.7230957177,9997447.980943419],[316377.46057534136,9997448.54429708],[316364.50344111637,9997447.229805205],[316311.7359814453,9997438.028362056],[316311.92376600095,9997423.756735953],[316304.2245992877,9997423.005597737],[316302.3467537569,9997425.071227832],[316284.3546461788,9997425.76955164],[316280.34075133846,9997418.798050074],[316265.76397532865,9997423.551346596],[316261.3275652421,9997413.094094247],[316258.8981025816,9997413.516609497],[316258.2643297111,9997414.678526424],[316243.1594096518,9997413.19972306],[316242.8190501459,9997416.276651219],[316240.56563549454,9997418.530065868],[316234.55652977305,9997420.282721704],[316230.5504592889,9997420.533101112],[316221.78718008404,9997418.780445272],[316190.99051323684,9997414.77437479],[316190.48975443945,9997413.272098355],[316171.96167844656,9997413.522477765],[316168.2059873644,9997418.530065868],[316149.4275319706,9997416.777410032],[316148.17563493806,9997414.523995383],[316137.9100793199,9997414.273615979],[316136.90856171004,9997409.766786683],[316135.4062852713,9997409.516407276],[316134.40476764605,9997419.281204086],[316123.88883261546,9997421.284239326],[316123.3880738237,9997407.76375144],[316121.1346591754,9997408.014130844],[316120.38352094265,9997413.772857165],[316111.1194829432,9997414.523995383],[316109.61720652535,9997411.769821925],[316107.36379186285,9997410.517924897],[316103.60810080497,9997408.014130844],[316097.34861566406,9997407.26299263],[316092.591406967,9997409.01564847],[316085.33040420944,9997410.267545493],[316080.5731955146,9997413.772857165],[316065.8008106039,9997416.026271818],[316065.5504311938,9997410.768304301],[316074.0633309687,9997408.264510255],[316074.0633309687,9997402.00502512],[316072.0602957293,9997400.75312809],[316052.7810815284,9997396.997437015],[316033.75224672805,9997395.495160578],[315999.0139454253,9997390.00761854],[315985.11267168366,9997388.906872388],[315979.21263200615,9997388.407480832],[315977.51323971595,9997388.207041388],[315977.31320842926,9997388.20703948],[315976.61396870867,9997388.207029937],[315973.4134758143,9997387.906363122],[315968.71362002206,9997387.6074053],[315966.774187875,9997387.647120118],[315963.912873119,9997387.707558278],[315961.11277193605,9997388.116997745],[315963.09485226264,9997374.33557653],[315964.5971287006,9997366.573814968],[315970.1054756079,9997364.821159128],[315974.8626843094,9997360.815088646],[315980.37103123055,9997358.812053403],[315980.8717900469,9997350.799912428],[315982.87482528284,9997340.784736218],[315981.1221694482,9997329.016904168],[315982.1236870576,9997322.006280819],[315982.6244458732,9997314.745278062],[315979.11913420795,9997307.734654713],[315978.36799598386,9997297.969857914],[315978.11761658476,9997292.211131586],[315979.36951360933,9997285.701267049],[315977.86723718,9997271.680020351],[315975.1130637161,9997264.919776406],[315975.1130637174,9997259.41142949],[315972.10851085884,9997253.65270317],[315955.18961545615,9997244.502688307],[315956.00110042497,9997242.699449535],[315959.300828828,9997235.900770193],[315963.0006217038,9997228.799737943],[315968.19980610634,9997219.599500664],[315974.6009405999,9997208.500474935],[315979.90101232746,9997199.200031284],[315981.89962757635,9997195.699623117],[315990.7012022966,9997179.400083542],[315999.60024249135,9997158.499532709],[316007.600032708,9997136.199487694],[316016.1210035018,9997117.164149228],[316010.74112583464,9997114.4742104],[316025.0962117468,9997081.424128897],[316029.1022822292,9997082.425646521],[316033.7760311303,9997071.075113477],[316042.7352407285,9997069.181306478],[316053.13870514074,9997064.398329336],[316061.57448176347,9997058.27858293],[316055.6289944289,9997047.469028592],[316050.8018306944,9997038.69271039],[316073.50289676746,9996995.627452675],[316091.8640531631,9996960.908175137],[316101.0012129536,9996959.700136198],[316150.61975361046,9996989.28450774],[316162.97180426907,9996979.603170736],[316159.6334121955,9996975.597100249],[316148.28287916165,9996977.266296284],[316138.2585851419,9996967.038132327],[316140.6045774,9996961.575853555],[316133.59395405167,9996959.238979103],[316127.5848483151,9996953.229873376],[316127.25100910844,9996941.21166192],[316121.9095817966,9996932.198003331],[316115.23279765464,9996910.832294075],[316113.7294940199,9996897.302561305],[316115.09998116223,9996892.699712766],[316121.90126597707,9996876.199747093],[316130.70110882865,9996860.499761583],[316131.55546469823,9996858.967984838],[316129.99381043506,9996853.005304942],[316136.00291615445,9996844.742784565],[316138.0059514059,9996837.231402406],[316135.0013985386,9996834.226849547],[316134.7510191405,9996830.471158464],[316136.7540543829,9996827.216226196],[316144.51581593987,9996825.21319095],[316161.2912360928,9996800.67600923],[316148.7722658328,9996791.161591832],[316158.03630382416,9996777.891483346],[316154.53099216125,9996774.886930482],[316161.7919949166,9996765.37251308],[316177.76316823356,9996780.545127725],[316179.8003290676,9996777.100015659],[316182.7246032238,9996770.815756487],[316167.80110072176,9996762.618339626],[316175.31248287315,9996750.099369355],[316182.0727268164,9996753.354301622],[316187.83145313757,9996744.841401843],[316181.07120919414,9996740.835331358],[316179.81931217236,9996743.08874601],[316173.3094476278,9996738.081157899],[316188.08183254715,9996709.788285099],[316197.3458705492,9996705.031076401],[316199.59928519547,9996699.02197067],[316211.2139840222,9996706.322638514],[316218.699834669,9996687.200344095],[316228.40083489905,9996662.300094612],[316238.601005408,9996640.00012589],[316245.12916268606,9996628.878570875],[316258.4384455103,9996636.42711934],[316262.4445160007,9996636.176739933],[316265.1986894546,9996634.674463505],[316269.2047599363,9996636.677498749],[316270.20627755974,9996635.175222315],[316268.7040011281,9996632.170669451],[316264.94831006124,9996631.16915183],[316261.19261897326,9996630.418013614],[316258.9392043358,9996626.912701938],[316261.19261897897,9996622.656252049],[316268.45362172194,9996624.15852848],[316273.96196864406,9996624.659287293],[316274.7131068568,9996628.414978374],[316277.7176597271,9996631.920290045],[316282.2244890178,9996630.668393018],[316284.72828307544,9996624.659287293],[316284.47790367145,9996618.399802156],[316279.7206949643,9996616.396766918],[316277.96803912334,9996613.14183465],[316279.4703155578,9996607.383108329],[316276.465762699,9996603.377037838],[316272.710071615,9996600.873243786],[316272.96045102127,9996599.370967355],[316279.2199361585,9996598.870208543],[316282.72524782433,9996594.864138057],[316278.96955675253,9996593.361861626],[316277.46728031104,9996596.616793897],[316272.9604510318,9996596.867173301],[316270.9574157784,9996594.864138057],[316269.95589815325,9996590.858067572],[316266.7381685836,9996589.301101651],[316262.1941365934,9996587.102376493],[316268.70400112943,9996573.832268013],[316273.11950597866,9996576.355413636],[316287.98321533634,9996584.848961845],[316293.49156225997,9996584.097823631],[316297.9983915494,9996579.590994334],[316301.00294441456,9996573.331509203],[316298.24877095764,9996565.820127038],[316294.74345929,9996563.817091798],[316290.48700939305,9996566.070506446],[316283.22600664047,9996564.317850614],[316281.68613671203,9996560.76430462],[316279.97107437206,9996556.80646845],[316286.2305595124,9996544.037118778],[316290.75695720734,9996542.918381747],[316304.0074972764,9996547.542430453],[316305.7601531205,9996545.789774615],[316308.2639471696,9996542.034083536],[316313.27153527737,9996541.032565914],[316316.7768469519,9996540.2814277],[316323.7874703024,9996540.031048292],[316328.79505840776,9996539.029530676],[316332.3003700839,9996538.02801305],[316310.2669824137,9996522.003731113],[316311.5188794347,9996516.245004792],[316317.27760575764,9996517.496901816],[316326.7920231607,9996503.475655116],[316310.91410853725,9996496.023809709],[316287.2320771222,9996541.78370413],[316272.96045102214,9996531.017389702],[316278.2184185407,9996525.25866338],[316280.72221258807,9996526.510560405],[316286.5922186462,9996515.215667233],[316293.85322139924,9996518.971358312],[316297.35853307426,9996519.472117124],[316299.3615683189,9996517.46908188],[316299.1111889129,9996513.713390803],[316296.85777425737,9996510.959217342],[316290.0975303218,9996507.203526262],[316300.61346534314,9996482.16558573],[316314.4785574314,9996487.641714538],[316330.4086145673,9996493.933417782],[316335.9169614909,9996483.667862162],[316319.4769910155,9996476.322343443],[316320.8997496024,9996473.100387577],[316329.0004194592,9996454.699941643],[316337.70117935847,9996436.499927517],[316348.40050299466,9996418.700786598],[316353.99975949724,9996410.20033074],[316359.4007242265,9996401.900293356],[316369.40076047287,9996387.100523],[316379.60080510937,9996373.700237283],[316389.80085547024,9996360.099533085],[316394.5008333367,9996352.300533304],[316421.30021841964,9996322.4004879],[316427.4003961705,9996315.600154886],[316437.6004904063,9996299.300706869],[316448.20067578857,9996281.399641052],[316457.8006933292,9996264.300237656],[316466.6997717067,9996245.099874496],[316477.00080853095,9996225.700847635],[316488.60115414916,9996207.500904094],[316496.6008336322,9996196.099605566],[316500.1005857658,9996191.099550247],[316511.1999509186,9996175.000549316],[316512.0781534569,9996173.528624525],[316532.7507218084,9996181.063485885],[316532.50034239714,9996175.55513897],[316529.7461689386,9996174.553621346],[316526.7416160673,9996172.80096551],[316526.2408572699,9996170.046792049],[316529.74616893707,9996165.539962757],[316519.1008763398,9996161.758082492],[316510.71733412467,9996158.779718813],[316528.2438925147,9996105.94966429],[316540.5124833691,9996110.206114186],[316544.5185538533,9996099.940558562],[316533.2514806129,9996095.934488077],[316537.5079305047,9996086.420070672],[316551.0284183981,9996093.931452837],[316560.5428357794,9996079.659826731],[316556.03600649815,9996078.157550298],[316553.2818330431,9996074.90261803],[316556.0360065041,9996071.146926953],[316550.5276595828,9996067.891994685],[316554.2833506665,9996060.130233116],[316564.2985268767,9996065.888959441],[316569.8068737893,9996054.872265605],[316560.54283578263,9996051.86771274],[316565.3000444936,9996045.1074688],[316570.0572531931,9996049.113539282],[316584.0784998834,9996055.12264501],[316583.577741075,9996051.86771274],[316585.3303969089,9996047.360883445],[316587.83419096,9996046.359365825],[316593.3425378766,9996045.1074688],[316580.8235676135,9996037.846466042],[316586.08153512387,9996031.336601505],[316594.34405550524,9996035.8434308],[316596.8478495465,9996037.095327826],[316599.8524024334,9996035.34267199],[316602.1058170685,9996032.838877937],[316601.85543767083,9996029.083186857],[316593.8432966927,9996024.075598756],[316588.5853291962,9996025.077116372],[316580.0724294061,9996015.813078381],[316590.08760561683,9996000.790314058],[316599.6020230191,9995994.781208329],[316604.8599905346,9996004.54600514],[316596.34709074383,9996010.80549027],[316602.10581706226,9996014.811560752],[316606.6126463688,9996014.310801944],[316617.87971961254,9995998.036140596],[316601.60505827254,9995986.268308546],[316630.39868986816,9995949.21215656],[316648.9267658525,9995960.729609204],[316658.04131121875,9995959.271281952],[316661.445736133,9995958.726573963],[316664.1999095831,9995956.72353872],[316680.9753297496,9995936.442806888],[316672.33404375345,9995930.597231075],[316663.94953018177,9995924.925354244],[316671.46091233566,9995910.15296933],[316679.81719667884,9995914.759638906],[316690.9905059688,9995920.919283763],[316695.2469558457,9995916.66283387],[316706.5140290762,9995927.178768894],[316709.7689613539,9995923.729097083],[316706.5140290854,9995919.723026605],[316708.51706433494,9995916.718473738],[316704.761373246,9995913.713920873],[316707.26516730874,9995911.460506227],[316717.2803435189,9995918.72150898],[316722.0375522164,9995913.46354147],[316708.51706433017,9995901.445330013],[316703.50947622606,9995907.955194551],[316689.37299253675,9995896.9462515],[316675.21660342044,9995885.921806883],[316681.4760885527,9995878.660804128],[316686.48367667047,9995882.666874614],[316691.491264767,9995875.40587186],[316699.9707266819,9995881.649839273],[316719.032999358,9995895.686603691],[316725.5428638813,9995888.425600937],[316723.7902080426,9995886.172186289],[316727.04514032544,9995881.665356992],[316710.96029343194,9995869.434171343],[316703.0087174156,9995863.387660405],[316708.0163055243,9995856.62741646],[316716.9609269093,9995862.88865144],[316723.03906985116,9995867.143351488],[316727.29551972635,9995860.883866351],[316721.92666954966,9995857.46732533],[316710.77047897433,9995850.367931327],[316714.02541125077,9995843.858066788],[316726.4632481335,9995851.71354272],[316728.2970373462,9995852.87172538],[316726.04362269584,9995855.62589884],[316742.0679046423,9995865.891454458],[316750.83118382207,9995856.12665765],[316750.58080441324,9995847.613757871],[316736.31877467746,9995839.179224145],[316727.2955197238,9995833.842890576],[316726.29400210915,9995827.833784854],[316716.27882588323,9995822.575817337],[316705.5125114696,9995835.34516701],[316703.0087174164,9995833.342131766],[316710.26972016564,9995821.32392031],[316702.0071997948,9995816.817091014],[316712.52313481655,9995797.2874974],[316724.0405874542,9995804.298120748],[316725.2924844865,9995814.814055772],[316730.0496931771,9995817.56822923],[316728.29703734664,9995820.32240269],[316737.81145475444,9995828.33454366],[316743.82056047744,9995823.076576147],[316747.1897069919,9995825.214688353],[316756.840289559,9995831.339096524],[316763.60053349065,9995820.32240269],[316755.9841983767,9995813.840415347],[316760.50019039883,9995807.999650959],[316762.652595393,9995805.223004954],[316749.75547978515,9995797.162307698],[316757.4337815461,9995786.813292282],[316765.44592251955,9995792.154719591],[316771.455028255,9995783.474900207],[316764.1105657014,9995775.796598444],[316780.4686868438,9995756.433924433],[316793.1356717105,9995767.962198796],[316786.7178361939,9995775.810967417],[316793.8222551143,9995780.470347343],[316802.16823530156,9995770.121331923],[316795.62056095945,9995764.88413357],[316803.5406985653,9995755.07335417],[316808.84501950315,9995759.104638094],[316818.52635651996,9995748.421783462],[316824.53546225245,9995753.095532361],[316834.88447766134,9995740.7434817],[316823.66091382084,9995728.80352014],[316831.7996498451,9995718.70054245],[316832.44562510564,9995717.829457741],[316815.18796452973,9995700.015098434],[316823.20010550995,9995689.666083014],[316838.8905482222,9995702.351972887],[316841.56126188755,9995700.682776852],[316826.5384975705,9995688.330726188],[316828.54153282405,9995684.658494908],[316826.87233676994,9995681.653942045],[316832.2137640989,9995675.644836316],[316826.2046583623,9995668.634212967],[316839.55822664127,9995654.279127065],[316843.8981363213,9995658.285197547],[316845.90117158013,9995658.95287596],[316845.5673323684,9995653.611448647],[316853.24563413847,9995644.931629263],[316852.5779557212,9995641.927076401],[316857.9193830319,9995634.91645305],[316866.5992024222,9995633.91493543],[316867.6007200373,9995632.245739395],[316872.94214735297,9995626.904312082],[316877.94973546,9995630.57654336],[316878.61741386715,9995634.248774637],[316881.6219667281,9995637.921005914],[316887.6310724539,9995637.253327502],[316889.96794692246,9995633.581096223],[316891.9709821526,9995629.241186531],[316894.6416958114,9995624.901276838],[316893.9740173946,9995618.892171111],[316898.6477662863,9995613.884583004],[316913.2365428501,9995625.496058227],[316931.3640085928,9995639.924041158],[316932.3655262131,9995627.905829702],[316933.3670438238,9995625.90279446],[316940.0438279593,9995620.227527939],[316925.673440874,9995607.331026688],[316914.0043698182,9995596.858783443],[316929.69481255533,9995575.15923498],[316941.4818812281,9995582.940233085],[316950.0590042585,9995591.51735613],[316951.0605218869,9995590.515838508],[316956.40194919857,9995593.520391371],[316963.0787333338,9995592.185034543],[316968.4201606503,9995586.175928816],[316968.753999864,9995581.168340709],[316967.7524822244,9995576.494591814],[316968.7539998642,9995569.81780767],[316979.0155925489,9995556.062906845],[316979.99557157187,9995555.92290984],[316983.37569353334,9995555.547340728],[316985.62910817866,9995556.486263499],[316986.38024640945,9995558.9274627],[316992.38935212226,9995559.30303181],[316996.33282776235,9995558.364109043],[317000.46408793854,9995556.298478946],[317005.5342709061,9995553.481710635],[317007.036547335,9995551.228295986],[317007.0365473325,9995546.909251245],[317006.6609782267,9995542.777991058],[317005.7220554743,9995540.52457641],[317010.0411001975,9995537.332238993],[317013.79679128574,9995536.017747115],[317016.237990485,9995536.205531668],[317019.05475878343,9995533.388763359],[317019.80589701957,9995532.637625145],[317024.31272629736,9995530.759779602],[317026.37835640373,9995527.567442184],[317027.1294945981,9995523.811751105],[317024.3127263123,9995519.492706366],[317023.37380352337,9995518.36599904],[317022.81044986914,9995515.361446181],[317022.81044986274,9995512.732462421],[317023.37380352954,9995509.727909556],[317025.43943362846,9995508.225633124],[317029.57069381594,9995507.0989258],[317032.38746213156,9995506.911141247],[317033.88973854645,9995505.408864817],[317035.01644588204,9995501.653173735],[317038.77213695773,9995499.587543642],[317039.711059721,9995495.644068006],[317028.17048070324,9995484.21889476],[317020.93260433857,9995477.053397162],[317031.0729702524,9995465.786323922],[317033.3263849033,9995468.415307676],[317036.70650686795,9995469.542015001],[317040.2535611137,9995470.669308338],[317041.96447437536,9995473.485490637],[317041.9644743699,9995476.302258944],[317041.9644743807,9995477.992319934],[317040.8377670533,9995480.621303687],[317045.5323809098,9995484.94034843],[317049.2880719814,9995483.813641109],[317053.2315476093,9995483.062502889],[317056.79945414397,9995481.18465735],[317057.7383769207,9995476.302258944],[317056.423885026,9995472.17099876],[317051.1659175131,9995465.974108476],[317051.5414866375,9995463.15734017],[317052.4804094134,9995461.655063735],[317055.6727468077,9995461.091710078],[317063.1841289791,9995469.166445894],[317068.6298810588,9995467.664169462],[317077.6435396299,9995465.410754815],[317080.4603079582,9995464.284047492],[317082.52593803604,9995461.091710078],[317083.8404299214,9995458.274941763],[317084.21599902405,9995455.458173454],[317086.4694136685,9995453.768112468],[317090.78845842363,9995453.204758806],[317098.863194254,9995445.317807538],[317086.46941367176,9995432.548457868],[317079.3336006239,9995440.623193689],[317074.45120221487,9995437.618640823],[317070.3199420384,9995441.937685564],[317068.76259800605,9995440.380341545],[317059.0528687916,9995430.670612326],[317080.2725233937,9995407.009758525],[317088.15947466745,9995415.2722789],[317104.49673087033,9995395.554900732],[317107.881721704,9995398.246580195],[317120.0828488465,9995407.948681291],[317131.9132757442,9995400.437299134],[317131.72549117904,9995386.541242143],[317141.1147188838,9995378.278721765],[317133.97811091307,9995371.287758855],[317122.71183259436,9995360.251404582],[317131.49076049135,9995353.420741431],[317140.6998385878,9995363.622955386],[317145.8562788663,9995369.33548238],[317142.05364165595,9995373.983150093],[317144.8704099675,9995376.7999184],[317147.54633986205,9995374.828180583],[317154.0249069649,9995370.462189704],[317153.32071489166,9995369.476320801],[317150.6447850064,9995369.898836045],[317147.8280166981,9995367.645421393],[317146.9829861919,9995365.251168331],[317146.4196325339,9995361.58936953],[317147.82801668113,9995357.786732312],[317150.92646183143,9995353.984095091],[317153.05468676006,9995353.08951034],[317157.060757264,9995353.08951034],[317156.05923962756,9995350.752635892],[317158.39611408254,9995347.414243821],[317161.7345061574,9995345.745047785],[317166.07441584853,9995341.738977304],[317162.569962473,9995338.14466615],[317153.05468676763,9995328.385409014],[317165.4067374447,9995315.36567994],[317175.5276203607,9995324.221452506],[317181.4310193758,9995329.386926638],[317182.76637619734,9995333.059157917],[317178.7603057305,9995336.397549989],[317182.432536986,9995340.069781268],[317186.1047682703,9995337.065228399],[317190.7785171715,9995339.40210285],[317196.78762290743,9995330.38844426],[317192.44771320664,9995328.385409014],[317193.78307003865,9995317.034875976],[317188.34613941296,9995311.332729226],[317180.095662529,9995302.67979007],[317193.44923082285,9995290.32773941],[317200.85013138567,9995299.393842591],[317206.80279910145,9995306.685860556],[317219.15484976675,9995295.66916672],[317219.15484977124,9995291.663096238],[317214.1528598809,9995285.579595022],[317206.80279910227,9995276.640331918],[317215.1487792861,9995270.297386982],[317221.44199073134,9995277.989089865],[317227.1669907417,9995284.986312095],[317230.50538281456,9995281.981759232],[317241.5220766497,9995280.646402402],[317253.54028810177,9995267.960512532],[317261.2185898763,9995264.288281258],[317253.5402881084,9995260.28221077],[317254.20796651626,9995257.94533632],[317257.5463585872,9995257.27765791],[317260.55091144575,9995256.276140284],[317250.8330667047,9995247.546550948],[317240.85439823935,9995238.58266231],[317250.86957445566,9995226.564450853],[317260.3587180155,9995237.848837808],[317263.22162510036,9995241.253375966],[317265.8923387667,9995238.916501516],[317270.23224845587,9995244.591768036],[317271.2337660679,9995241.92105438],[317275.9075149759,9995242.254893584],[317280.58126388764,9995236.913466275],[317284.2534951427,9995233.241234995],[317275.03262699326,9995223.31106927],[317266.8938563916,9995214.546239397],[317283.58581674105,9995200.5249927],[317289.4187571076,9995209.166385822],[317292.5994753197,9995213.87856099],[317300.2777770851,9995208.203294463],[317296.3481022634,9995201.799379913],[317291.2641185098,9995193.514369356],[317294.93634978693,9995188.506781245],[317301.1093338389,9995196.737426665],[317303.4012027476,9995194.30080223],[317320.6998287062,9995176.00089455],[317330.50627731555,9995165.733337335],[317337.0000899477,9995173.484016927],[317349.6859798101,9995163.135001507],[317342.18433716823,9995154.025864],[317355.10047491296,9995141.999614721],[317359.3952172832,9995138.004736634],[317374.723920425,9995152.785986086],[317387.07597107854,9995143.438488292],[317384.0714182181,9995139.432417803],[317385.7406142653,9995135.760186525],[317385.4067750438,9995129.417241596],[317389.4128455405,9995128.415723966],[317395.7557904682,9995127.414206348],[317390.74820234976,9995120.737422206],[317389.7466847487,9995116.397512514],[317392.41739838704,9995113.392959649],[317395.0881120404,9995110.722245997],[317397.75882571185,9995111.389924407],[317400.4295393841,9995116.397512514],[317399.42802175286,9995121.738939827],[317405.77096668223,9995122.072779033],[317412.1049616044,9995113.32416752],[317410.7785547786,9995105.046979472],[317408.7755195447,9995101.040908987],[317409.30087997776,9995094.499910362],[317415.85555015993,9995089.405903768],[317419.12453503255,9995093.696446434],[317423.7982839355,9995095.031803261],[317428.13819364074,9995094.364124846],[317431.4765856985,9995091.359571982],[317433.8134601711,9995084.348948633],[317428.9680151281,9995079.634461604],[317421.46140948415,9995072.330737177],[317427.804354414,9995066.655470656],[317436.24116560264,9995075.388310319],[317446.8331892265,9995086.351983875],[317457.5160438466,9995079.00752132],[317447.8021795304,9995068.823631315],[317436.81801302277,9995057.307972861],[317447.500867634,9995046.95895744],[317460.5205967118,9995044.62208299],[317469.2004160912,9995054.637259202],[317482.2201451605,9995043.28672616],[317491.56764293625,9995032.603871534],[317498.9121055476,9995026.260926602],[317496.5752310703,9995016.579589592],[317507.2580856823,9995006.230574174],[317517.60710108106,9995012.57351911],[317521.27933237003,9995017.247268008],[317522.5960682387,9995022.075299563],[317524.2838852281,9995028.26396184],[317530.6268301619,9995026.594765805],[317533.6313830041,9995027.26244422],[317535.6344182584,9995019.250303252],[317530.56375773536,9995014.670351801],[317540.8997777685,9995004.699876785],[317544.59473377554,9995000.835803706],[317547.65262979607,9995003.893699724],[317552.9940570871,9995003.893699724],[317554.99709232675,9995000.555307653],[317554.6632531211,9994994.546201926],[317553.033410484,9994992.01089114],[317551.6587002715,9994989.872453028],[317557.33396677935,9994983.195668887],[317559.00316281983,9994978.855759192],[317558.00164520077,9994976.518884744],[317559.3370020243,9994974.5158495],[317566.6814645882,9994974.5158495],[317553.9955747301,9994959.826924387],[317562.34155489266,9994952.816301038],[317577.48125559546,9994968.487219317],[317581.3703897034,9994972.512814263],[317586.37797779473,9994966.50370853],[317583.4231230003,9994962.795655437],[317569.35217823635,9994945.13799928],[317580.0350328691,9994935.122823065],[317594.6639486401,9994951.057892026],[317598.1999791794,9994947.300344476],[317606.23970470484,9994938.076487469],[317602.40225981694,9994933.119787822],[317609.74672237074,9994926.44300368],[317613.8196241963,9994929.610816216],[317615.75582809985,9994931.116752578],[317622.4326122383,9994924.43996844],[317627.10636114795,9994928.112199714],[317637.4553765642,9994918.764701916],[317643.13064306736,9994924.43996844],[317652.811980083,9994923.772290021],[317665.4978699512,9994905.077294424],[317655.8165329419,9994894.060600588],[317660.82412104966,9994887.717655657],[317655.8188908024,9994882.612320812],[317667.9999097331,9994868.401094437],[317679.70111213427,9994853.300891887],[317689.6533830983,9994844.02307333],[317705.55857488303,9994856.33677019],[317712.5691982204,9994851.329182083],[317718.24446475005,9994851.996860499],[317733.601068259,9994837.641774593],[317736.60562113055,9994839.310970629],[317742.61472685856,9994832.634186486],[317736.2717819153,9994824.288206311],[317734.26874667616,9994826.625080757],[317721.6233310582,9994812.662434345],[317726.0011514217,9994808.100767145],[317736.3157684864,9994799.651461145],[317732.37003626185,9994794.545219453],[317739.69363386417,9994787.033837292],[317744.20046316925,9994787.409406401],[317744.76381681673,9994783.465930767],[317745.8905241493,9994779.71023969],[317748.51950790815,9994776.330117714],[317751.8996298898,9994777.26904049],[317755.6147052529,9994782.062686129],[317761.30099807656,9994776.300767904],[317769.50066504604,9994767.700260174],[317774.1279889466,9994763.117198119],[317771.4292235662,9994759.805076966],[317773.11928454926,9994757.176093208],[317767.48574792175,9994749.852495601],[317774.9971300732,9994743.280036217],[317783.44743502024,9994751.730341142],[317785.513065109,9994748.725788284],[317782.8840813519,9994745.721235417],[317779.6917439267,9994741.402190672],[317779.31617483194,9994736.332007715],[317784.57414233364,9994730.322901988],[317796.88000777166,9994741.0785486],[317798.84576851525,9994742.716682551],[317801.4747522578,9994742.528898003],[317803.91595147224,9994744.970097203],[317827.40662699414,9994724.145030232],[317832.7401561864,9994725.298272112],[317838.84387857514,9994719.055828748],[317839.03166312526,9994716.614629546],[317835.46375661175,9994712.48336936],[317827.5768053385,9994720.370320626],[317821.75548418576,9994720.370320626],[317821.37991506874,9994716.990198655],[317824.1966833642,9994712.858938467],[317822.1310532723,9994710.98109293],[317821.00434595114,9994709.478816494],[317821.5676996079,9994706.662048185],[317824.57225247554,9994702.718572555],[317828.515728108,9994701.404080672],[317830.58135820745,9994701.77964978],[317834.9004029522,9994702.15521889],[317845.4163379714,9994701.77964978],[317850.48652091605,9994703.46971077],[317854.61778111185,9994695.958328608],[317851.4254436962,9994692.953775745],[317851.42544369923,9994690.324791992],[317850.2987363708,9994687.320239123],[317844.852984303,9994687.69580823],[317833.58591106255,9994679.433287857],[317828.3279435588,9994674.92645856],[317844.12271103554,9994657.193858802],[317850.31960132753,9994662.686557008],[317854.54475378874,9994663.531587504],[317862.85422029556,9994664.51745641],[317863.1358971407,9994666.2075174],[317871.30452522764,9994669.587639367],[317859.1924214978,9994656.630505143],[317865.1076349462,9994651.13780694],[317875.1071624466,9994660.43314236],[317880.4590222291,9994655.222120985],[317887.50094300427,9994660.43314236],[317889.19100400415,9994660.714819193],[317891.02190340514,9994659.869788697],[317891.303580233,9994656.348828312],[317890.7402265683,9994651.13780694],[317888.5233255948,9994646.477098633],[317893.78129308554,9994639.716854688],[317896.03470773424,9994639.967234094],[317911.8086102755,9994627.949022638],[317920.32151005906,9994634.458887177],[317926.8313745922,9994627.698643234],[317927.0817540012,9994622.94143453],[317921.3230276801,9994615.430052372],[317927.5825128114,9994610.923223075],[317933.0908597277,9994604.162979133],[317922.5749247059,9994592.895905893],[317924.5779599445,9994586.386041356],[317927.5825128037,9994581.628832655],[317930.5870656757,9994578.624279791],[317931.3382038844,9994576.370865142],[317932.8404803225,9994570.61213882],[317936.84655080055,9994563.851894878],[317940.10148307297,9994562.850377256],[317943.1060359355,9994563.10075666],[317945.60982998845,9994564.102274282],[317949.8662798791,9994566.105309526],[317951.86931513064,9994568.108344767],[317953.62197096494,9994570.862518227],[317956.125765014,9994573.115932874],[317958.7547487726,9994571.637129517],[317962.1348707443,9994569.242876448],[317963.4024164764,9994565.862754477],[317962.4165475697,9994559.80670261],[317963.26157806406,9994553.750650743],[317964.6699622144,9994549.948013525],[317966.3600232048,9994548.53962937],[317968.05008419184,9994548.398790954],[317969.8809835969,9994548.398790954],[317972.83859032346,9994548.8213062],[317975.0920049679,9994549.243821448],[317978.0496116879,9994548.398790954],[317981.1480568296,9994545.863699475],[317984.8098556391,9994544.032800075],[317987.2041087038,9994542.62441592],[317990.0208770078,9994541.92022384],[317992.56252759404,9994541.593820168],[317994.19991999643,9994538.800680159],[317998.6145668882,9994532.890528297],[317993.26016063686,9994528.39973596],[317996.2177673596,9994525.44212923],[317996.21776735364,9994523.611229831],[317991.71093806095,9994519.386077363],[317997.20363626245,9994511.63996451],[318000.30208141473,9994511.780802926],[318006.7806485283,9994517.132662717],[318011.99166989565,9994511.07661085],[318000.0204045802,9994500.936244935],[318012.2733467357,9994486.289049722],[318025.6529962061,9994477.862217862],[318031.09874826425,9994482.744616266],[318032.4132401402,9994482.932400823],[318036.1689312207,9994478.988925187],[318039.17348409013,9994474.106526783],[318040.1124068423,9994470.914189367],[318027.1552726302,9994458.332624247],[318036.92006943305,9994446.6899819],[318044.61923615757,9994452.699087627],[318045.7459434699,9994449.882319322],[318046.30929714185,9994447.253335563],[318048.3749272189,9994444.060998147],[318048.56271177984,9994441.432014389],[318047.0604353336,9994438.239676971],[318047.81157357176,9994435.798477773],[318051.00391098286,9994435.235124107],[318054.75960206543,9994436.36183143],[318057.0130166923,9994439.741953403],[318059.82978502,9994439.741953403],[318065.08775252744,9994442.558721714],[318069.970150933,9994445.751059132],[318072.41135012475,9994443.309859931],[318072.5991346857,9994441.056445278],[318072.4113501457,9994437.3007542],[318077.1059639912,9994430.916079365],[318088.93639087846,9994414.391038615],[318075.4159029975,9994404.626241807],[318085.55626891495,9994390.917969367],[318097.1571814261,9994399.326544397],[318096.4060432202,9994396.697560638],[318096.593827776,9994394.256361436],[318098.4716733077,9994391.064024022],[318101.4762261752,9994388.81060937],[318109.550961997,9994393.317438668],[318112.55551486684,9994390.876239466],[318114.99671406695,9994386.744979277],[318119.8791124617,9994377.167967023],[318124.010372655,9994372.848922282],[318133.84129796864,9994363.436924072],[318138.4011300022,9994355.301027307],[318140.90073328867,9994351.000747686],[318142.10095909436,9994348.899847038],[318142.90109946334,9994347.99971582],[318145.89990737214,9994343.60096741],[318153.4004071139,9994332.500432976],[318156.09627390874,9994328.567972012],[318143.1643972242,9994318.766970733],[318147.6712265169,9994309.753312143],[318161.0064709543,9994321.405467471],[318166.70022324554,9994313.099990854],[318167.1902690788,9994312.298424365],[318163.069560022,9994308.063251156],[318162.69399090466,9994305.809836509],[318165.1351901184,9994304.119775523],[318167.7641738727,9994302.054145431],[318170.2053730675,9994297.735100687],[318170.7687267308,9994294.730547823],[318171.51986495056,9994291.350425852],[318174.7122023748,9994288.909226649],[318178.28010889346,9994284.965751015],[318182.7869381857,9994275.76430787],[318176.7778324535,9994271.820832236],[318176.0266942333,9994270.318555804],[318175.2755560279,9994268.065141158],[318175.08777147264,9994265.248372851],[318176.2144787985,9994261.68046632],[318177.90453977697,9994258.863698011],[318182.22358451516,9994257.36142158],[318185.79149105435,9994257.924775241],[318189.3593975747,9994253.417945946],[318198.0746808445,9994261.990355715],[318200.8142553634,9994264.685019184],[318202.5043163623,9994262.9949582],[318204.94551555545,9994258.30034435],[318205.5088692169,9994255.295791486],[318205.1449186794,9994250.346064106],[318204.56994643586,9994242.526441816],[318202.50431635254,9994239.334104396],[318199.68754805566,9994236.141766978],[318198.18527161283,9994230.883799467],[318199.3119789335,9994224.499124631],[318202.1287472383,9994217.551096132],[318209.0767757365,9994209.100791205],[318214.52252779686,9994207.410730219],[318224.4751091738,9994207.97408388],[318227.4796620441,9994206.284022894],[318228.60636936664,9994204.030608252],[318228.2308002631,9994201.589409044],[318227.47966202593,9994199.52377895],[318226.72852381505,9994196.143656984],[318227.10409291554,9994191.261258574],[318227.2918774799,9994187.317782942],[318230.4842148926,9994183.749876415],[318242.3146418026,9994180.557538997],[318242.12685724895,9994176.98963247],[318240.8123653753,9994173.797295056],[318240.8123653707,9994170.980526743],[318241.9390726926,9994168.163758434],[318245.1314101061,9994165.346990125],[318248.8871011867,9994163.844713697],[318253.23952321056,9994167.471732045],[318254.5206378204,9994168.539327543],[318257.1496215514,9994168.539327543],[318259.40303620533,9994165.346990125],[318259.21525165974,9994162.718006369],[318257.7328557855,9994160.85365871],[318263.2000878259,9994152.801162723],[318267.75769772916,9994147.25717141],[318264.3062996424,9994143.355332358],[318275.0100192106,9994125.328015178],[318274.25888099876,9994114.060941936],[318281.5824785929,9994104.296145128],[318295.9376292502,9994112.825934686],[318298.0240596095,9994114.02964451],[318301.7797507036,9994114.280023914],[318306.03620058123,9994116.783817967],[318308.5399946505,9994110.023574024],[318301.00269438024,9994106.318300549],[318294.7660363135,9994102.00061419],[318304.1135341261,9994082.971779387],[318306.45040857396,9994084.307136215],[318312.7933534942,9994075.293477627],[318322.18515246664,9994081.331062667],[318326.8146001996,9994084.307136215],[318334.15906273236,9994072.622763967],[318330.6670634026,9994070.205225956],[318325.47924337233,9994066.613658242],[318332.8237059226,9994051.924733127],[318332.48986672855,9994050.589376299],[318338.16513325076,9994039.238843257],[318342.171203724,9994041.2418785],[318349.1818270791,9994033.897415947],[318366.8753050446,9994008.525636205],[318372.88441076555,9994001.848852064],[318374.55360680877,9993997.842781577],[318372.5505715611,9993993.502871886],[318369.8798579017,9993989.162962196],[318368.21066186996,9993985.490730917],[318368.8783402958,9993981.818499643],[318372.2167323625,9993978.14626836],[318376.890481255,9993973.806358669],[318380.5627125326,9993968.798770562],[318382.23190856224,9993959.117433555],[318384.2349438176,9993946.431543687],[318379.56119491206,9993942.425473202],[318390.11885984335,9993931.982565505],[318393.49898181524,9993935.362687476],[318409.6484534631,9993916.020878416],[318414.71863642405,9993907.75835804],[318414.7186364096,9993900.24697588],[318415.6575591689,9993897.054638462],[318417.53540471714,9993895.740146585],[318420.72774214414,9993895.176792923],[318424.1078640997,9993896.303500248],[318431.61924627516,9993896.4912848],[318433.87266091595,9993894.801223814],[318433.8726609168,9993892.54780917],[318434.81158368546,9993888.41654898],[318437.06499832985,9993884.473073345],[318439.3184129902,9993879.590674942],[318441.57182763447,9993876.398337524],[318444.2008113856,9993875.083845647],[318449.1098795022,9993871.466637561],[318454.9045309563,9993867.19689438],[318456.97016105574,9993864.004556965],[318456.219022842,9993861.938926868],[318454.8789885049,9993861.335911416],[318452.4633317605,9993860.248865884],[318448.14428700757,9993853.11305283],[318447.01757969265,9993850.671853626],[318445.13973414036,9993844.287178792],[318443.0741040646,9993838.653642174],[318441.57182763435,9993835.649089308],[318443.4496731779,9993832.644536445],[318448.51985613914,9993831.893398229],[318451.5244089751,9993832.644536445],[318454.3411773086,9993834.334597431],[318456.78237650247,9993834.522381984],[318459.5991448234,9993833.207890106],[318462.60369768145,9993829.827768134],[318466.7349578604,9993827.949922595],[318471.8051408195,9993825.884292504],[318480.06766120985,9993812.739373721],[318482.5088603985,9993801.84786959],[318483.0722140704,9993794.899841098],[318486.6401205873,9993787.388458934],[318493.7214457541,9993790.71234626],[318495.84156372235,9993791.707503675],[318508.2353442807,9993769.736710858],[318512.1021682718,9993756.213863423],[318509.36205163086,9993754.150592875],[318508.0475597344,9993751.146040013],[318506.9208524084,9993747.953702593],[318506.92085241,9993744.573580625],[318508.0475597101,9993742.32016598],[318510.30097438046,9993740.630104994],[318514.4322345864,9993738.18890579],[318518.3757102074,9993736.874413913],[318521.00469397154,9993735.372137478],[318525.32373869006,9993734.0576456],[318527.2219445895,9993734.107469684],[318543.24467041553,9993742.919968903],[318546.2492233097,9993737.24470238],[318541.5754743905,9993733.572471106],[318544.5800272592,9993727.563365377],[318543.5785096567,9993721.554259649],[318550.25529376464,9993708.868369786],[318549.25377616606,9993706.865334537],[318547.3571872348,9993705.330000646],[318542.2431528422,9993701.190068018],[318541.24163519026,9993698.853193568],[318542.24315286044,9993693.511766259],[318545.9153841194,9993690.507213391],[318553.92752507003,9993689.839534976],[318575.2932342772,9993650.780347746],[318564.27654047357,9993647.441955676],[318571.9548422212,9993632.753030563],[318588.5763817003,9993644.563071782],[318597.32662193436,9993650.780347746],[318599.47803016054,9993646.273518454],[318592.80564754136,9993638.48907206],[318588.79517554294,9993633.810188051],[318597.1040624686,9993620.75336573],[318587.0146997751,9993607.103051485],[318591.76263516175,9993597.013688782],[318609.4352667823,9993612.721763285],[318629.1526263384,9993595.233213011],[318646.36389213597,9993576.834963376],[318647.5508759852,9993567.339092596],[318659.42071446567,9993554.282270275],[318687.90832677984,9993521.640214473],[318733.1336576174,9993461.270109763],[318743.5111014595,9993465.190477435],[318790.5824296614,9993404.76558095],[318794.2546609384,9993400.759510463],[318797.9268922235,9993391.078173459],[318822.63099354994,9993366.040232927],[318831.3108129345,9993351.351307815],[318834.3153657944,9993348.680594161],[318840.9921499355,9993344.340684466],[318840.6583107272,9993338.665417947],[318838.989114685,9993335.327025875],[318838.9891146821,9993330.319437768],[318843.3290243811,9993328.650241733],[318845.3320596323,9993330.987116182],[318850.0058085243,9993330.319437768],[318854.01187900826,9993325.979528079],[318856.6825926696,9993323.976492833],[318861.022502356,9993325.645688869],[318869.7023217376,9993312.625959795],[318870.036160962,9993308.619889308],[318869.0346433205,9993303.278461995],[318869.36848253815,9993299.27239151],[318872.7068746095,9993298.270873887],[318879.0498195373,9993297.937034681],[318883.05589002464,9993290.926411333],[318884.3912468437,9993282.580431154],[318882.05437240214,9993277.572843054],[318891.73570941144,9993266.556149215],[318897.4109759318,9993264.553113973],[318911.76606182655,9993242.519726304],[318914.77061470586,9993227.830801193],[318914.1906217332,9993223.045859262],[318913.435257877,9993216.814107358],[318911.4322226299,9993202.79286066],[318921.4473988374,9993198.786790177],[318930.12721822644,9993199.45446859],[318935.82417806925,9993202.473412124],[318944.8012533663,9993193.400222795],[318961.4998102621,9993175.49969102],[318978.80017376813,9993158.200429926],[318989.6002989357,9993147.100078583],[318995.89877420187,9993140.7232113],[318997.6184912164,9993138.983854296],[318998.04659953516,9993138.566192457],[318998.04424764577,9993138.564432148],[319008.42264758144,9993128.543081284]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Timur"}}, +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[316844.11237153504,9995347.146513999],[316833.6002460886,9995358.799978262],[316814.40211068,9995380.299690256],[316797.00073589105,9995403.401069647],[316778.5991626978,9995428.800338745],[316757.2006775094,9995451.200174335],[316735.200372342,9995473.000474935],[316714.2001854144,9995496.50090601],[316692.99996342417,9995520.300237667],[316672.5999123119,9995541.599534996],[316653.1999832401,9995564.400272371],[316633.900882381,9995590.101909645],[316614.400085086,9995612.199457174],[316593.90088999923,9995633.50049592],[316573.39992680494,9995656.29949952],[316555.0001312429,9995680.200855266],[316538.2006394379,9995701.10113908],[316522.00122039486,9995723.000080112],[316505.50086568855,9995745.999595642],[316491.5618957635,9995761.184701335],[316493.65152544715,9995762.776800131],[316488.3100981051,9995769.453584269],[316489.31161573995,9995773.79349396],[316486.30706288107,9995775.796529204],[316481.2994747963,9995777.799564445],[316479.29643955175,9995780.804117309],[316478.294921916,9995784.810187794],[316475.9580474878,9995789.650856301],[316468.83614441473,9995800.333710926],[316460.8863183176,9995799.314502453],[316445.68995937146,9995797.366251305],[316432.0396451354,9995815.76450094],[316426.6982178129,9995824.073387874],[316430.8526612874,9995830.601799035],[316433.8006543992,9995837.152894836],[316436.19408859033,9995842.47163751],[316414.8283793451,9995876.30067716],[316410.430375088,9995873.661874605],[316405.92600049544,9995870.959249847],[316383.3733073864,9995908.349241044],[316354.8856950486,9995958.796054557],[316335.23554839287,9995991.999145696],[316319.4616458509,9996020.792777307],[316317.4586106064,9996024.798847795],[316317.7089900356,9996027.30264185],[316316.2067135833,9996029.30567709],[316314.2036783369,9996030.056815304],[316311.6998842852,9996032.810988761],[316311.4495048784,9996035.815541627],[316311.4495048914,9996042.07502676],[316309.69684905,9996046.081097243],[316307.1930549983,9996048.084132487],[316303.93812272046,9996048.084132487],[316301.6847080756,9996051.08868535],[316301.6847080868,9996054.84437643],[316307.9441932216,9996058.60006751],[316301.4343286641,9996068.114484912],[316291.4191524675,9996067.86410551],[316285.6604261538,9996076.377005288],[316277.14752635173,9996074.62434945],[316272.89107648283,9996079.882316966],[316262.8759002602,9996079.381558154],[316259.37058859225,9996086.141802095],[316266.8819707399,9996089.64711377],[316263.62703847606,9996096.908116523],[316272.3903176626,9996101.665325224],[316268.88500599936,9996108.175189763],[316249.10503296275,9996097.659254743],[316254.1126210876,9996086.3921815],[316250.3569299951,9996085.140284475],[316240.8425125899,9996104.920257494],[316246.35085950233,9996108.425569171],[316245.655361156,9996114.059105787],[316250.5516695464,9996116.284700505],[316256.7833347395,9996130.083387729],[316246.5455990471,9996137.205290813],[316246.1004801057,9996142.101599183],[316251.44190743286,9996145.217431786],[316239.8688149061,9996163.912427384],[316230.9664360527,9996159.906356895],[316239.4236959638,9996148.778383326],[316219.39334353525,9996139.876004472],[316214.05191623326,9996151.449096985],[316221.6189382579,9996158.125881128],[316217.1677488331,9996169.253854696],[316221.6189382486,9996175.040400952],[316209.6007267907,9996201.302418575],[316214.49703515787,9996207.979202716],[316201.14346690197,9996230.235149857],[316206.0397752542,9996234.686339287],[316197.58251534496,9996245.369193912],[316193.5764448615,9996243.588718139],[316184.6740660118,9996253.826453824],[316168.6497840695,9996279.643352505],[316174.8814492645,9996284.539660877],[316169.98514089454,9996295.222515503],[316166.6996172583,9996307.100416189],[316157.3988646185,9996318.299566273],[316146.4995649988,9996331.800060276],[316143.50076660793,9996336.30081368],[316137.2996290643,9996347.201116564],[316130.300050593,9996361.39969064],[316123.199579115,9996376.299734121],[316120.10522970837,9996383.315093307],[316115.08713803627,9996381.946522856],[316098.46936417185,9996418.149530202],[316087.7865095362,9996431.79984445],[316076.51016300917,9996459.10047294],[316072.35571954306,9996457.319997173],[316068.20127606485,9996465.628884101],[316062.85984875355,9996484.62062566],[316053.9574698927,9996503.018875295],[316042.6811233517,9996507.17331876],[316031.40477681346,9996533.880455332],[316031.4018723164,9996539.819943713],[316023.68938179873,9996543.969818031],[316008.85208370816,9996584.920760768],[316011.22605138645,9996587.88822039],[315987.4863744462,9996643.676461216],[315979.1774875354,9996657.0300295],[315972.8469070159,9996652.282094114],[315967.30764906295,9996662.569287455],[315951.48119776044,9996688.6829321],[315949.8985526236,9996700.552770574],[315957.81177827064,9996704.509383397],[315941.19400441647,9996744.86683421],[315950.18644480966,9996751.361374505],[315955.4378105793,9996755.154027557],[315861.3198831016,9996943.167323222],[315841.7346496191,9996977.441481816],[315827.9359623771,9997006.81933204],[315839.9541738508,9997011.270521468],[315833.72250865586,9997020.172900325],[315827.0457245037,9997018.392424554],[315827.4908434469,9997023.733851867],[315812.82767754793,9997055.236835936],[315802.0613631038,9997079.022879437],[315792.797325097,9997095.798299598],[315798.80643083435,9997099.553990673],[315803.3132601343,9997090.54033208],[315805.0659159608,9997090.79071149],[315811.5603085412,9997093.968818493],[315804.40009682905,9997109.401042953],[315798.86724484246,9997119.506541979],[315794.68663029093,9997117.445349013],[315794.7169006355,9997116.28768093],[315789.37547331955,9997114.618484894],[315789.31163016893,9997114.79528131],[315654.15857171454,9997048.159979532],[315491.8881761376,9996944.624620387],[315339.0356217222,9996854.193527224],[315245.91340217274,9996792.288415588],[315109.47807479557,9996694.191427493],[315046.4192467546,9996645.813648228],[315023.1827240791,9996639.832895283],[314885.72711189743,9996509.767637255],[314587.6517598983,9996224.513288783],[314433.7916527614,9996073.213611608],[314123.4556103572,9995806.862203602],[313786.20826420654,9995517.413693676],[313591.36310395226,9995350.184383398],[313530.5864944523,9995287.25620945],[313445.53052338585,9995199.189155584],[313332.8099315511,9995091.621504825],[313244.28964982554,9995007.147864316],[313133.16059406754,9994901.098993659],[312985.8904209994,9994747.295080187],[312910.85608681757,9994676.82805443],[312800.3384179259,9994573.037548339],[312719.480522451,9994487.888800044],[312632.938568864,9994400.914434949],[312377.7419684185,9994156.134022819],[312144.96875771787,9993919.369174963],[312024.1709385803,9993817.553869251],[311933.5955735147,9993711.485351564],[311831.2455023378,9993609.353713805],[311791.3865605304,9993562.847736362],[311698.8146935431,9993476.70447159],[311583.1240564482,9993361.298415007],[311464.2981626112,9993237.237611568],[311328.0338828182,9993110.43067998],[311332.0771085322,9993106.827806482],[311342.65095343906,9993104.947439192],[311561.8560391879,9992882.947961813],[311931.267927303,9992508.827859893],[312022.7821370447,9992416.147478111],[312239.958475247,9992196.203943253],[312479.6497098403,9991960.660345085],[312680.38231099583,9991787.376867298],[312683.69019141234,9991786.13784981],[312700.3164693378,9991770.168619154],[313266.2247067848,9991281.646821978],[313464.6257165661,9991095.677634751],[313469.70677193534,9991105.99088669],[313547.2465840243,9991219.228366857],[313893.55349308904,9991727.144642543],[314189.58726242837,9992172.885796294],[314415.57445915695,9992459.996366503],[314703.11844932195,9992797.87805563],[315060.59281357285,9993220.49842644],[315454.92703827284,9993663.840604784],[315868.68425186165,9994136.941616064],[316067.6151657868,9994360.088901522],[316212.90348251164,9994585.734216692],[316319.94064720254,9994746.320627218],[316468.2173310099,9994906.148168566],[316586.04398544226,9995037.886461264],[316566.6775685102,9995075.446392063],[316743.4093666822,9995233.596603395],[316844.11237153504,9995347.146513999]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Selatan"}}, +{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[310666.38507430616,10000432.449050926],[310668.8986526893,10000471.556041721],[310661.3582398309,10000503.549707428],[310626.1658550777,10000517.769577034],[310585.9447514035,10000539.101085668],[310550.75235718075,10000553.320964815],[310520.5869538218,10000567.540836347],[310470.31174820126,10000553.321172725],[310450.20198984287,10000539.099700943],[310435.1192109417,10000517.770040534],[310430.09217999433,10000503.550252937],[310440.14613885235,10000489.330430986],[310457.7423397994,10000478.66468048],[310485.39422386367,10000446.670942329],[310530.64237753616,10000439.56095124],[310585.9445225558,10000439.560836798],[310611.08293503226,10000425.340997696],[310643.76185385976,10000421.785123834],[310666.38507430616,10000432.449050926]]],[[[312100.00000214326,10004380.000001915],[312100.93439316296,10004356.326406471],[312097.081472618,10004357.530862805],[310631.0000021517,10003569.000001919],[309816.3947813562,10001286.115869531],[309694.0888159245,10000943.353815088],[309745.833112965,10000938.758604044],[309741.76951379015,10000929.209551169],[309746.2427902445,10000928.15127928],[309752.91957438155,10000930.82199293],[309769.2776955322,10000927.483600859],[309780.9620677759,10000923.811369581],[309792.6464400275,10000922.809851963],[309874.7708849689,10000927.483600859],[309880.85090775974,10000940.512221122],[309886.4552572196,10000952.52154139],[309899.8001323359,10000940.183826657],[309904.1487351924,10000936.163420243],[309902.1456999526,10000932.15734976],[309902.1456999505,10000928.15127928],[309906.4856096464,10000925.814404823],[309917.8361426864,10000931.823510548],[309927.8513188987,10000933.492706584],[309931.18971097167,10000933.492706584],[309936.8649774855,10000931.489671351],[309939.4676733783,10000938.534054363],[309942.2064048024,10000941.838686762],[309947.54783211625,10000941.504847556],[309952.7980642563,10000937.979273783],[309952.88925943075,10000928.485118477],[309961.9029180233,10000926.482083244],[309968.3149356077,10000937.333189933],[309970.5827374029,10000941.17100835],[309975.92416472,10000940.169490727],[309976.7743704559,10000936.981219212],[309978.5948783775,10000930.154314512],[309982.26710965,10000927.149761653],[309987.6085369679,10000927.149761653],[309992.94996427896,10000930.488153724],[310038.6859356511,10000922.142173545],[310046.0694970228,10000934.099009965],[310055.5403289932,10000933.705135347],[310056.7132528348,10000926.482083244],[310053.70869997016,10000917.80226386],[310060.3854841101,10000916.133067824],[310063.7238761863,10000921.474495133],[310066.060750634,10000923.14369117],[310070.0668211157,10000922.476012751],[310075.7420876357,10000920.806816716],[310077.74512287986,10000922.142173545],[310079.74815812556,10000926.148244029],[310081.4173541595,10000920.47297751],[310080.0819973301,10000915.799228614],[310090.7648519605,10000909.456283681],[310099.1108321324,10000920.806816716],[310104.1184202417,10000928.15127928],[310106.4552946908,10000919.471459892],[310111.46288279456,10000914.463871788],[310119.1411845613,10000907.119409228],[310127.15332552814,10000904.114856364],[310140.17305460566,10000903.781017158],[310144.8468035017,10000906.451730812],[310152.1912660636,10000908.454766054],[310161.5387638614,10000913.796193367],[310162.8741206884,10000919.471459892],[310163.87563831144,10000923.811369581],[310168.2155480027,10000924.145208787],[310165.87867355347,10000914.79771099],[310163.5417991036,10000902.445660328],[310191.25045329274,10000896.770393807],[310195.5903629825,10000899.441107463],[310201.9333079177,10000901.110303499],[310213.9515193756,10000900.108785879],[310226.63740924257,10000897.438072225],[310232.9803541762,10000899.441107463],[310241.32633435493,10000900.108785879],[310249.3384753275,10000898.773429051],[310257.35061629716,10000894.433519356],[310266.6981140929,10000888.090574423],[310319.444708813,10000874.737006137],[310325.7876537456,10000885.753699971],[310345.48416696745,10000882.081468698],[310359.4049071659,10000884.10630363],[310375.51862729684,10000874.990474032],[310379.20192697097,10000876.74004138],[310382.54031905,10000877.407719797],[310385.21103270305,10000876.406202173],[310386.54638952785,10000872.066292483],[310386.3107508357,10000868.885170082],[310385.8787111159,10000863.052633889],[310427.2747727932,10000839.01621098],[310434.9530745564,10000820.321215382],[310442.6313763204,10000816.98282331],[310446.3036075983,10000825.996481905],[310468.3369952683,10000814.312109657],[310486.0304732426,10000803.629255028],[310531.0987662006,10000778.591314495],[310529.09573095693,10000771.914530355],[310577.5024159857,10000754.221052384],[310642.5874563389,10000721.487562258],[310659.2941014779,10000708.309413932],[310676.9650800284,10000700.995584501],[310701.5781571571,10000688.410219204],[310702.35827952926,10000683.947899286],[310706.3643500169,10000674.600401489],[310710.370420504,10000669.258974172],[310720.60815618426,10000665.252903687],[310730.40077292925,10000658.1310006],[310734.8519623538,10000653.234692236],[310738.4129139015,10000641.661599727],[310745.9799359217,10000635.875053467],[310756.6627905527,10000630.08850721],[310766.45540728944,10000625.192198839],[310775.3577861475,10000616.289819986],[310778.4736187452,10000609.167916896],[310783.8150460625,10000603.826489586],[310792.7174249158,10000602.9362517],[310811.8575394544,10000602.491132757],[310833.4253357905,10000594.629435914],[310871.6337357946,10000571.337626858],[310908.90708127007,10000553.394330993],[310918.0634972026,10000552.680726998],[310955.46842732886,10000549.76583864],[310982.1365282603,10000552.279823521],[311040.66714995174,10000556.789044255],[311050.9976914665,10000551.135534732],[311053.3345659161,10000549.13249949],[311060.3451892647,10000549.13249949],[311063.68358133896,10000549.466338696],[311069.35884785396,10000553.138569973],[311082.71241613914,10000552.804730767],[311108.41803508636,10000550.134017108],[311108.7385361772,10000557.826043269],[311117.5025153545,10000556.802730558],[311146.80954828754,10000556.802654633],[311186.8702488459,10000549.800177902],[311190.14739239577,10000557.758955125],[311191.54399773583,10000561.150710946],[311213.26819347916,10000558.089064818],[311219.5864911339,10000555.475444423],[311225.59559685853,10000552.804730767],[311230.93702417705,10000551.803213144],[311233.2738986235,10000554.473926803],[311235.44673239836,10000558.40572126],[311237.02633234556,10000558.42827417],[311268.725757896,10000557.543382902],[311273.0007643625,10000561.818389358],[311276.33915642765,10000565.824459843],[311285.3528150213,10000566.49213826],[311291.69575995207,10000562.819906978],[311304.5355450164,10000555.920244357],[311296.7033480619,10000532.774378348],[311310.7245947579,10000529.102147067],[311319.07057493716,10000543.791072177],[311346.44538991596,10000532.106699927],[311352.88686189137,10000548.814267866],[311361.467439155,10000547.553218855],[311395.9839417739,10000537.64328901],[311401.5288591798,10000542.121876141],[311404.53341204056,10000543.457232967],[311417.55314111616,10000540.452680105],[311425.2314428809,10000537.781966446],[311428.5698349511,10000533.775895962],[311432.5759054319,10000533.442056756],[311441.9234032334,10000534.109735169],[311446.5971521321,10000532.106699927],[311446.9309913396,10000526.097594202],[311447.18271538464,10000523.580353793],[311526.0928549207,10000503.551126495],[311552.8183876557,10000494.101734592],[311564.10855312296,10000496.719743976],[311574.4575685386,10000492.713673491],[311593.8202425494,10000488.373763802],[311600.1631874837,10000485.369210936],[311623.1980927753,10000482.36465807],[311646.2329980646,10000477.357069964],[311655.5804958592,10000476.689391552],[311666.9310289053,10000475.020195516],[311663.7794740383,10000469.186466295],[311651.24058616953,10000445.976184497],[311669.2679033511,10000432.956455426],[311689.1904612795,10000466.557187447],[311691.6351302345,10000470.68028582],[311695.97503992205,10000470.346446615],[311739.0641083918,10000462.658306874],[311774.7239996381,10000548.965579888],[311781.84590271756,10000552.526531428],[311789.56129772845,10000550.746055655],[311793.12224927323,10000540.656692952],[311790.1547896535,10000529.973838324],[311757.5637875148,10000455.401206337],[311755.13876615127,10000449.852428624],[311828.1382727676,10000432.641162835],[311864.93477204215,10000424.332275903],[311872.6501670461,10000427.299735522],[311881.4032623763,10000439.02905435],[311887.8551248305,10000438.01524736],[311879.1785782132,10000419.584340516],[311907.66619054816,10000408.307993963],[311917.7555532529,10000415.42989705],[311941.4952301943,10000405.340534346],[311955.1455444354,10000398.812123183],[311968.20236676023,10000392.283712024],[311987.1941083104,10000383.974825092],[312037.04742990696,10000366.17006738],[312031.11251066596,10000347.771817744],[312059.76704260707,10000338.10439071],[312081.29967146384,10000328.339593902],[312086.3072595659,10000337.353252497],[312171.93701618875,10000311.063414933],[312176.9446042952,10000313.066450175],[312185.70788348094,10000314.819106013],[312197.22533612145,10000310.813035524],[312207.49089174287,10000311.814553147],[312225.18436971854,10000305.485518182],[312217.6173476876,10000276.552786898],[312261.6841230254,10000262.75409967],[312270.5865018832,10000289.906355184],[312287.50102170836,10000284.119808927],[312328.0068454987,10000276.552786898],[312494.0362111591,10000224.646972407],[312497.9928239814,10000220.69035958],[312505.9060496328,10000217.52506932],[312515.4019204091,10000217.52506932],[312520.9411783677,10000217.52506932],[312541.5155650598,10000209.611843668],[312542.3068876169,10000200.907295458],[312597.69946716656,10000188.246134415],[312620.64782155066,10000177.958941074],[312763.98848553654,10000117.194023173],[312772.1938982876,10000129.643614931],[312773.6698225407,10000131.882948289],[312781.0142850965,10000130.213752253],[312787.0233908281,10000127.209199391],[312787.4336320859,10000124.255462285],[312788.6925868602,10000115.190987932],[312823.0780251806,10000098.165188368],[312817.73659786524,10000087.48233374],[312822.7441859719,10000084.143941669],[312808.7229392763,10000055.767609067],[312836.43159346085,10000037.74029189],[312846.44676967245,10000059.77367956],[312849.11748333444,10000063.112071628],[312854.4589106462,10000068.453498945],[312857.12962429645,10000071.791891016],[312859.80033796234,10000077.13331832],[312864.80792606063,10000082.140906427],[312875.49078069377,10000080.8055496],[312873.8215846601,10000077.13331832],[312887.50899214967,10000073.127247836],[312893.85193707957,10000067.785820523],[312902.53175645793,10000062.110554004],[312973.9733467855,10000039.743327128],[313012.69869480527,10000017.042261045],[313019.041639745,10000025.054402016],[313031.0598511897,10000019.379135497],[313026.7199415014,10000007.027084835],[313056.76547014207,9999987.99825003],[313062.7745758719,9999996.010391003],[313098.82921023323,9999972.975485709],[313109.84590407147,9999986.996732406],[313117.19036662334,9999988.99976765],[313124.86866838584,9999992.004320513],[313131.8792917337,9999993.005838137],[313140.7286633445,9999992.18645188],[313149.9066089168,9999991.336642101],[313147.0020863834,9999986.839316893],[313129.2085780811,9999959.288078219],[313136.88687984116,9999952.27745487],[313155.78740258963,9999979.351176646],[313161.59098117135,9999987.664410824],[313166.59856927104,9999991.002802895],[313179.95213755965,9999988.332089236],[313184.29204725404,9999981.655305093],[313188.63195694063,9999973.977003332],[313196.3102587077,9999969.303254431],[313207.99463094864,9999960.957274254],[313229.6941794144,9999952.27745487],[313237.70632038056,9999945.266831521],[313242.3800692827,9999938.923886586],[313246.05230056227,9999930.577906413],[313231.3633754449,9999938.256208172],[313222.1738050553,9999917.997382538],[313216.67445033556,9999905.873805083],[313235.65376190096,9999896.19048286],[313249.3906926345,9999889.181844734],[313289.11755827366,9999873.157562789],[313296.1281816234,9999865.145421822],[313295.46050321305,9999856.131763227],[313325.5060318456,9999839.439802876],[313329.84594153834,9999841.776677322],[313336.5227256795,9999842.778194947],[313358.22227414395,9999838.438285252],[313359.8914701787,9999832.095340317],[313361.22682700807,9999825.084716968],[313366.56825431343,9999822.414003313],[313372.9111992534,9999817.740254411],[313380.255661806,9999816.73873679],[313382.5925362555,9999818.741772035],[313391.6061948498,9999823.081681725],[313402.2890494765,9999823.081681725],[313408.0619013532,9999822.460600495],[313410.3011904404,9999816.73873679],[313412.9719041083,9999811.397309477],[313412.9719040991,9999804.052846922],[313411.3027080685,9999797.042223573],[313408.2981552024,9999791.366957054],[313403.2905670934,9999786.02552974],[313473.7306397941,9999733.612774225],[313516.1282190874,9999706.90563766],[313521.9147653504,9999714.973418495],[313545.0609503704,9999699.839374442],[313536.15857151744,9999690.491876641],[313545.7207891005,9999679.920192383],[313544.6158314246,9999674.022475759],[313573.1034437691,9999645.979982363],[313581.90600435727,9999654.955142185],[313595.80450984155,9999669.126167389],[313598.47522350744,9999669.571286332],[313603.37153187796,9999668.681048445],[313614.0543865034,9999658.888431706],[313626.51771690906,9999648.205577081],[313640.621701985,9999642.168335706],[313641.2066420073,9999634.40688985],[313695.0660340894,9999595.681541834],[313705.7488887018,9999578.32190306],[313705.303769763,9999570.30976209],[313728.00483584334,9999554.285480155],[313761.83387549664,9999528.023462525],[313813.02255391225,9999491.061202817],[313840.2513142463,9999470.968255537],[313842.3169443383,9999463.644657932],[313847.0115581794,9999459.513397744],[313854.7107249005,9999453.504292017],[313853.5840175715,9999442.23721878],[313845.5092817602,9999430.031222768],[313880.0616396909,9999399.234555913],[313893.58212757227,9999390.03311277],[313896.9622495478,9999392.662096525],[313895.27218856546,9999393.976588402],[313903.159139824,9999402.80246244],[313908.2293227855,9999397.544494933],[313898.0889568711,9999389.845328214],[313895.0844040084,9999387.028559905],[313890.5775747133,9999387.967482677],[313886.82188362454,9999381.395023288],[313902.0324325004,9999372.193580141],[313919.68418058095,9999367.874535399],[313919.6841805782,9999380.643885069],[313925.12993264024,9999382.333946055],[313936.20922133233,9999384.587360702],[313945.0350953664,9999374.259210235],[313948.03964822955,9999374.07142568],[313955.467570586,9999369.940165492],[313959.2232616592,9999372.569149248],[313964.4812291773,9999376.888193993],[313972.368180446,9999382.897299716],[313968.6124893675,9999371.25465737],[313959.41104622185,9999359.98758413],[313958.65990800824,9999355.856323943],[313957.53320068505,9999349.471649108],[313955.8431396937,9999345.528173473],[313956.0309242434,9999340.270205962],[313959.78661533317,9999336.702299435],[313959.66792496556,9999333.893294113],[313968.48096394417,9999328.4743107],[313971.0536886507,9999330.505409153],[313975.184948839,9999330.880978266],[313979.69177813083,9999329.003132721],[313981.3818391154,9999326.186364412],[313986.07645296725,9999322.055104224],[313985.95462087716,9999317.730064895],[313987.7606645426,9999316.61956025],[313991.2325502009,9999313.252143865],[313993.59563678864,9999310.960457556],[313997.34352629137,9999311.726953756],[314000.53586369846,9999313.229230186],[314003.72820113105,9999313.79258385],[314006.92053854966,9999312.290307421],[314007.6716767624,9999308.910185449],[314008.61059953354,9999304.966709811],[314011.8029369499,9999302.901079718],[314015.93419713015,9999304.403356154],[314037.1538517419,9999286.563823523],[314033.3981606509,9999280.366933241],[314036.9660671863,9999276.423457606],[314033.7576709667,9999272.011912813],[314032.45923789014,9999270.226567324],[314060.8147055337,9999246.190144412],[314068.51387225534,9999240.36882324],[314070.30352679605,9999242.321173651],[314072.6451324444,9999244.875652535],[314075.0863316408,9999245.814575305],[314079.02980727213,9999244.687867982],[314081.2832219261,9999242.62223789],[314084.85112844687,9999245.626790754],[314097.2449090105,9999233.6085793],[314114.3812533035,9999218.116619527],[314117.09932955424,9999216.732444769],[314109.07533599745,9999206.94317263],[314126.72708406614,9999188.352501785],[314131.42169791955,9999192.671546526],[314129.91942148365,9999194.17382296],[314135.9285272168,9999199.43179047],[314147.94673866907,9999186.6624408],[314155.8336899427,9999182.718965169],[314158.4626736858,9999183.470103383],[314161.6550111112,9999187.225794464],[314165.7862712997,9999185.911302583],[314173.2976534605,9999184.596810704],[314177.76693209796,9999185.837565204],[314180.0013261222,9999184.699703218],[314185.1780180639,9999180.616107695],[314185.31586499186,9999178.587704977],[314186.2547877708,9999176.33429033],[314187.94484874833,9999172.203030141],[314186.25478776474,9999164.316078873],[314189.25934063137,9999162.626017887],[314193.57838536624,9999163.001586996],[314194.51730814076,9999160.184818687],[314195.45623091585,9999154.363497512],[314197.5218610097,9999153.049005635],[314198.27299922315,9999148.917745447],[314197.70964556024,9999143.096424272],[314197.52186099795,9999137.838456761],[314199.2119219928,9999130.327074602],[314204.8454586103,9999124.317968873],[314207.0988732613,9999124.13018432],[314211.2301334482,9999120.374493241],[314214.7980399715,9999118.496647704],[314218.3659464893,9999118.684432255],[314220.9949302545,9999120.18670869],[314223.9994831151,9999121.125631457],[314229.82080429664,9999114.553172067],[314222.68499123584,9999104.976159813],[314220.80714570126,9999106.6662208],[314216.11253184394,9999101.408253288],[314226.6284668746,9999091.267887373],[314240.33673931425,9999104.788375262],[314267.75328419567,9999082.442013336],[314269.44334518025,9999078.122968594],[314268.6922069643,9999075.681769392],[314265.49986954883,9999075.306200283],[314262.30753213004,9999076.245123057],[314260.6174711448,9999072.677216528],[314270.7578370567,9999064.79026526],[314274.70131269156,9999065.353618922],[314274.8890972443,9999070.611586433],[314284.84167860943,9999069.297094556],[314288.5973696889,9999066.480326246],[314295.9209672983,9999066.6681108],[314302.49342668266,9999062.724635165],[314310.00480884715,9999054.837683897],[314319.9573901966,9999043.382826105],[314323.7130812876,9999037.749289488],[314324.2764349411,9999033.430244744],[314322.3985894056,9999029.486769114],[314321.835235744,9999024.979939818],[314329.7221870073,9999020.660895072],[314337.0457846181,9999015.966281222],[314343.2426748973,9999015.027358452],[314348.87621151883,9999005.825915309],[314351.5051952723,9998997.938964041],[314354.69753268466,9998994.746626621],[314360.89442296955,9998991.554289205],[314362.3966994005,9998985.545183478],[314367.46688236494,9998982.916199721],[314370.6592197764,9998979.348293196],[314374.22712630616,9998975.21703301],[314379.6728783687,9998973.151402917],[314386.6209068709,9998972.212480143],[314402.5825939531,9998958.87977681],[314396.01013456687,9998949.114980005],[314399.0146874327,9998946.485996246],[314395.4467809029,9998938.974614087],[314405.0237931602,9998928.646463618],[314414.0374517513,9998937.096768549],[314422.1998623597,9998932.877103528],[314416.29086639767,9998924.139634322],[314409.90619155904,9998920.75951235],[314406.1505004831,9998916.628252164],[314420.23434203,9998901.793272398],[314409.15505334374,9998894.281890238],[314422.863325787,9998881.324756017],[314443.51962672296,9998896.72308944],[314449.0011639887,9998901.300052647],[314451.10059406003,9998909.399841312],[314451.1997399245,9998909.399841323],[314452.1999001424,9998909.80068779],[314454.20021106745,9998912.499471674],[314457.0006394458,9998917.599859238],[314460.30027438066,9998923.90104485],[314463.19984102226,9998930.900249483],[314466.3011727494,9998939.200462345],[314469.89996960375,9998948.90017129],[314470.77011233184,9998951.261600653],[314477.32084652304,9998975.21703301],[314482.57881403796,9998999.25345592],[314485.77115145343,9999031.740183758],[314485.95893601165,9999040.753842356],[314487.273427887,9999046.950732637],[314490.090196198,9999049.767500944],[314497.1003365768,9999072.900482187],[314499.9007401477,9999084.701148996],[314502.65280755237,9999093.84606327],[314518.8212330386,9999153.612359298],[314521.63800134795,9999164.87943254],[314524.2669851027,9999178.775489531],[314524.2669851065,9999188.540286338],[314524.07920055283,9999207.318741737],[314526.20015955425,9999210.50003052],[314529.07537317276,9999219.988941196],[314531.1461507609,9999178.329411773],[314527.1400802748,9999168.648074772],[314523.4678490012,9999142.608616615],[314518.1264216874,9999128.921209129],[314506.33076970186,9999086.39380347],[314505.14378585207,9999067.995553833],[314501.23857272835,9999053.376917357],[314496.83489892073,9999030.012070712],[314492.08696353325,9999008.64636146],[314487.3390281435,9998984.906684512],[314485.55855237215,9998967.695418725],[314480.8106169828,9998954.6385964],[314467.8971302847,9998918.220757341],[314467.6467508803,9998916.217722101],[314469.149027313,9998914.465066262],[314474.1566154192,9998913.213169234],[314474.9077536368,9998905.701787075],[314474.9077536333,9998899.943060752],[314478.16268590605,9998896.187369673],[314472.4039595798,9998888.675987514],[314483.420653415,9998879.161570111],[314485.0392669544,9998880.348553378],[314487.1763445001,9998881.915743573],[314509.710490974,9998860.633494118],[314512.71504383715,9998861.635011744],[314535.4995697222,9998840.102382885],[314534.2476726958,9998832.340621317],[314540.0063990223,9998831.83986251],[314549.02005760843,9998826.581894994],[314553.2765075034,9998820.072030457],[314577.81368921953,9998794.783710519],[314577.49114864203,9998786.935223205],[314582.3016419059,9998782.300752651],[314590.9269713085,9998772.73857177],[314597.59366228624,9998780.011325607],[314602.10049158626,9998773.251081662],[314597.84404171153,9998767.49235534],[314601.34935338027,9998763.73666426],[314613.86832363694,9998762.735146638],[314621.37970579474,9998759.730593776],[314628.13994973886,9998752.219211616],[314633.1475378485,9998743.455932429],[314635.6513318983,9998731.938479785],[314637.1536083301,9998717.166094875],[314637.04457584955,9998709.315756261],[314636.90322892263,9998699.138777688],[314651.9470862141,9998686.501937566],[314661.9411694531,9998678.106907642],[314657.6496348931,9998672.340158068],[314653.92902849196,9998667.340593211],[314714.0200857654,9998610.003709394],[314710.0140152783,9998603.744224265],[314722.86682474654,9998592.504970958],[314743.3979359817,9998572.724997936],[314749.6097863777,9998580.244606314],[314752.9123533841,9998584.242450584],[314769.1870147288,9998571.222721504],[314766.26676524343,9998568.148774678],[314759.6725973262,9998561.207545292],[314772.1915675992,9998549.940472052],[314782.4212495545,9998558.917539895],[314784.46015845204,9998560.70678648],[314791.10491129325,9998554.89262775],[314796.47836991097,9998550.190851457],[314801.4859580135,9998545.18326335],[314805.4920284994,9998544.68250454],[314838.041351189,9998518.392666984],[314864.4998304912,9998544.00033188],[314884.11116176913,9998557.451854212],[314876.85015901574,9998546.184780976],[314869.90753321326,9998542.40991424],[314867.33574161096,9998538.673398815],[314865.3327063699,9998535.418466548],[314867.3357416127,9998532.914672494],[314870.3402944755,9998528.157463789],[314873.34484733676,9998518.643046387],[314877.85167663597,9998508.627870174],[314883.3600235503,9998499.864590988],[314886.3645764147,9998476.579306295],[314891.8729233328,9998472.573235808],[314894.37671738584,9998463.058818405],[314892.1233027393,9998456.048195057],[314884.36154117394,9998461.556541974],[314864.5815681543,9998436.017842636],[314883.8607823642,9998420.995078312],[314882.60888533626,9998417.990525449],[314897.13089084404,9998406.723452216],[314905.6437906277,9998407.22421102],[314917.66200208245,9998418.240904858],[314922.6695901959,9998416.738628423],[314926.92604008154,9998415.737110805],[314935.93969866575,9998415.486731395],[314940.44652796374,9998410.9799021],[314944.9533572594,9998402.216622913],[314961.72877741954,9998383.68854692],[314964.23257146677,9998377.429061787],[314968.2386419511,9998369.917679628],[314972.2447124369,9998361.90553866],[314981.7591298468,9998357.899468172],[314988.769753189,9998355.646053527],[314993.77734129736,9998351.890362445],[315001.33731581864,9998348.94097936],[314996.53151483845,9998344.879739096],[314999.2856882941,9998339.87215099],[315006.0459322387,9998338.369874561],[315009.55124390963,9998333.111907046],[315015.05959083047,9998330.357733589],[315021.068696553,9998327.102801321],[315025.07476703916,9998323.09673084],[315031.83501098515,9998322.846351428],[315039.0960137405,9998319.591419159],[315042.10056659963,9998318.339522133],[315052.61650162353,9998315.33496927],[315060.127883784,9998308.82510473],[315073.898751084,9998291.799305169],[315082.7362167623,9998273.057943018],[315088.4949430766,9998262.04124918],[315090.49797832116,9998252.276452374],[315095.0048076109,9998241.25975854],[315110.2779513384,9998226.236994222],[315122.7969216092,9998214.71954158],[315128.85556453065,9998215.40225966],[315133.1747839273,9998209.904603964],[315133.563236036,9998202.951709526],[315155.84700310335,9998179.165666027],[315159.3523147772,9998173.406939698],[315159.6026941855,9998167.397833971],[315152.3416914332,9998159.385693],[315146.83334452205,9998162.390245864],[315138.82120354363,9998152.124690248],[315160.6042118083,9998137.853064142],[315168.11559397134,9998147.868240356],[315171.120146824,9998148.368999168],[315168.8667321774,9998143.111031659],[315187.1444287681,9998124.082196856],[315193.40391389845,9998127.086749714],[315204.42060774064,9998127.83788793],[315210.17933405365,9998124.082196856],[315216.9395779995,9998115.56929707],[315219.1929926474,9998108.55867372],[315221.6967866944,9998103.050326804],[315225.2020983786,9998098.293118104],[315232.4631011279,9998097.54197989],[315235.2172745915,9998099.294635724],[315235.46765398805,9998103.551085614],[315240.2248626917,9998103.050326804],[315245.48283020686,9998098.042738697],[315246.2339684202,9998093.786288809],[315243.7301743617,9998089.529838916],[315244.73169199156,9998088.27794189],[315250.7407977178,9998090.531356541],[315254.7468682039,9998088.528321296],[315262.25825035805,9998077.26124806],[315262.00787095993,9998072.754418766],[315260.7559739348,9998068.497968871],[315270.02001192817,9998058.482792657],[315283.0397409998,9998057.731654443],[315295.0579524586,9998056.479757417],[315303.56110660115,9998052.545462217],[315311.8333726119,9998048.717995854],[315318.8439959679,9998043.96078715],[315323.60120466887,9998036.449404988],[315320.4536650202,9998031.298885575],[315325.90087719035,9998023.20082855],[315337.501148422,9998003.799901966],[315347.81155488524,9997986.015962135],[315334.617898572,9997966.843930312],[315349.39028349135,9997955.326477665],[315355.1490098163,9997954.57533945],[315360.4069773238,9997952.321924802],[315377.68315629096,9997940.053333942],[315383.0115321077,9997940.85259032],[315387.6983325002,9997941.555610374],[315390.45250596834,9997938.0502987],[315387.5715082482,9997935.745500524],[315379.18543271755,9997929.036640111],[315384.19302082603,9997918.520705083],[315387.4479530964,9997917.018428655],[315393.9578176363,9997916.267290436],[315395.7104734748,9997911.009322925],[315422.9894642381,9997895.4502521],[315441.68445983424,9997883.098201439],[315459.37793780374,9997874.418382054],[315465.5350165475,9997874.534553353],[315477.07141578535,9997874.752221262],[315499.1048034491,9997854.72186884],[315496.08410563366,9997849.955881586],[315492.2037411961,9997853.031698706],[315488.08810961386,9997845.04053183],[315481.7451646797,9997849.046602316],[315478.7406118144,9997842.703657383],[315490.4249840694,9997836.360712446],[315482.4128430969,9997815.3288424],[315496.7679289966,9997806.649023017],[315507.11694441916,9997825.344018616],[315533.8240809616,9997810.6550935],[315535.82711623225,9997812.324289536],[315542.87061585626,9997810.530233975],[315537.8301514701,9997800.30607808],[315565.8726448389,9997775.935815962],[315616.61620432034,9997745.556448117],[315615.61468669644,9997737.878146354],[315637.98191356653,9997726.861452525],[315638.9834311885,9997730.199844591],[315635.97887832875,9997734.87359349],[315637.4285558096,9997737.772948464],[315639.3172703944,9997741.550377633],[315696.0699356012,9997717.180115515],[315691.22677846637,9997704.063231625],[315688.0577946376,9997695.480567055],[315735.79680124426,9997675.116375426],[315736.03727243585,9997678.883757392],[315736.79831886967,9997690.806818157],[315734.12760521745,9997695.814406266],[315734.4614444147,9997702.157351196],[315739.46903252066,9997712.840205822],[315746.14581667,9997712.840205822],[315753.4902792198,9997709.835652962],[315758.8317065343,9997704.160386438],[315759.16554574855,9997697.483602302],[315754.5003775809,9997673.800189981],[315754.9014737309,9997672.91720268],[315773.61398976913,9997669.506056422],[315793.31276029046,9997665.406296367],[315815.61368268554,9997660.406405088],[315840.21410076384,9997654.506374951],[315861.913201231,9997648.207205411],[315877.56843365764,9997644.042157432],[315914.796865408,9997642.099544512],[315928.81811210077,9997639.762670057],[315935.8287354478,9997638.76115244],[315941.5040019674,9997639.42883085],[315948.1807861243,9997642.099544512],[315956.19292708195,9997643.768740542],[315964.538907247,9997644.102579752],[315970.88185219356,9997644.770258164],[315972.2172090234,9997647.107132614],[315974.5540834677,9997650.111685477],[315982.5662244406,9997651.447042305],[315983.9015812662,9997649.444007065],[315983.6865543502,9997629.876557942],[316004.0137509367,9997628.806027045],[316004.67806550424,9997628.764353678],[316005.6011296473,9997640.76418768],[316029.63755255647,9997640.430348476],[316029.6375525631,9997636.09043878],[316068.02906137396,9997634.421242744],[316068.36290058447,9997644.102579752],[316070.6997750319,9997646.4394542],[316073.0366494636,9997652.44855993],[316075.03968472546,9997655.786952004],[316079.0457552021,9997658.791504862],[316087.3917353789,9997659.793022484],[316093.4008411125,9997659.793022484],[316094.73619794776,9997657.456148032],[316094.7361979368,9997652.114720719],[316093.734680321,9997648.77632865],[316095.0700371305,9997642.099544512],[316096.73923317704,9997636.758117193],[316106.7544093873,9997637.759634815],[316108.08976622974,9997643.768740542],[316110.76047987974,9997642.76722292],[316117.9866627535,9997643.330951246],[316116.9713784647,9997651.007432243],[316121.7771737047,9997653.11623834],[316124.44788737246,9997655.45311279],[316130.456993093,9997654.451595172],[316133.7953851634,9997651.780881513],[316135.13074198936,9997644.436418958],[316135.46458119736,9997638.76115244],[316138.46913406404,9997637.091956405],[316142.47520454926,9997634.755081952],[316148.8181494812,9997632.752046708],[316205.288718606,9997640.57150307],[316234.9486649224,9997642.099544512],[316279.3492794608,9997651.447042305],[316278.6458940675,9997657.63683369],[316277.68008342106,9997666.135967417],[316303.38570235705,9997666.469806628],[316302.7180239395,9997677.820339665],[316310.0624865036,9997674.815786801],[316314.402396195,9997669.14052028],[316318.07462746854,9997669.8081987],[316319.58141973516,9997667.548010306],[316321.4130195371,9997664.800610593],[316341.1095327607,9997667.805163452],[316344.447924829,9997668.139002664],[316367.48283012316,9997669.14052028],[316399.1975547924,9997685.498641431],[316421.2309424626,9997684.830963014],[316430.57844026445,9997687.83551588],[316446.9365614018,9997686.833998257],[316447.6042398212,9997693.84462161],[316465.96539620915,9997698.852209711],[316466.9669138357,9997694.178460816],[316481.32199973764,9997694.51230002],[316500.016995321,9997705.528993854],[316514.37208121346,9997707.532029096],[316559.77421335585,9997710.53658196],[316559.774213347,9997727.896220729],[316589.48590278486,9997731.2346128],[316593.900142469,9997736.793284992],[316606.61303596187,9997738.307036048],[316608.7142227064,9997738.605959529],[316630.1139839096,9997740.50670492],[316634.8636189519,9997740.902630202],[316639.5617837781,9997726.560863907],[316702.3235547099,9997729.565416764],[316702.32355470234,9997736.711832166],[316702.3235547005,9997739.24675377],[316813.29515341227,9997760.766119925],[316817.3242328506,9997761.547430072],[316817.4980811427,9997769.292282408],[316827.7849745857,9997770.75141623],[316864.56940935063,9997775.969066551],[316865.0256647249,9997791.755502246],[316866.23860539263,9997833.72324938],[316869.88610783056,9997899.19900942],[316877.7993334879,9997932.43455715],[316883.80150935275,9997910.957440097],[316883.0993675062,9997893.078116952],[316877.7993334746,9997889.03546023],[316877.35421454464,9997884.584270798],[316876.9090955937,9997879.242843485],[316874.2383819504,9997874.346535115],[316873.7932630064,9997869.450226743],[316876.463976654,9997860.547847888],[316876.46397664596,9997853.425944807],[316877.79933347635,9997849.864993261],[316882.26933703595,9997842.755705241],[316882.4023769349,9997837.863014432],[316878.68957136385,9997834.730949208],[316878.68957137415,9997829.389521895],[316887.5919502105,9997819.596905151],[316890.64550502994,9997820.236021271],[316891.4867409108,9997824.062004551],[316899.2485024666,9997825.814660383],[316905.00722877646,9997825.814660383],[316909.9077245566,9997824.267648624],[316912.51861093316,9997820.30631347],[316917.52619905816,9997818.052898819],[316922.0330283425,9997817.301760603],[316925.0375811997,9997819.55517525],[316925.0375812094,9997822.30934871],[316929.5444105072,9997824.062004551],[316934.55199861346,9997823.81162514],[316936.0542750272,9997825.814660383],[316936.6158101382,9997829.857713042],[316963.9444216196,9997835.577654982],[316966.3501830051,9997833.07566314],[316969.60511527606,9997833.576421952],[316974.511832408,9997837.414164329],[316976.699707813,9997837.792835072],[316982.6248442858,9997831.823766112],[316988.633950018,9997829.820730872],[316992.8903999019,9997830.571869086],[316997.14684979455,9997834.327560166],[316997.6476085978,9997837.832871838],[316998.7489962481,9997841.609058073],[316999.4002644374,9997843.841977568],[317006.4108877907,9997847.597668648],[317031.44882831525,9997851.10298032],[317041.71438393847,9997845.093874594],[317046.2212132317,9997844.342736382],[317055.98601004016,9997846.846530436],[317060.2424599232,9997845.344253998],[317066.0011862576,9997849.099945078],[317070.7583949622,9997852.104497943],[317075.7659830637,9997851.353359729],[317079.52167414187,9997849.851083294],[317084.27888283395,9997852.855636157],[317087.784194506,9997854.608291997],[317094.2940590553,9997855.109050805],[317098.0497501279,9997854.8586714],[317103.8084764476,9997858.113603668],[317110.3183410013,9997862.870812371],[317113.82365266874,9997858.363983078],[317119.83275839617,9997856.861706642],[317134.39104421623,9997856.201781798],[317140.1134902182,9997860.617397722],[317158.64156622265,9997862.870812371],[317365.2694887741,9997904.178777592],[317385.2998411994,9997909.446018415],[317384.85472225456,9997904.99482899],[317408.89114516467,9997906.330185821],[317409.33626412635,9997900.988758503],[317415.56792931305,9997900.988758503],[317416.903286131,9997909.000899473],[317442.7201848236,9997915.677683614],[317482.3357707192,9997918.793516213],[317502.3661231184,9997920.573991984],[317503.2563610443,9997936.153154982],[317532.18909229,9997939.714106526],[317541.09147114435,9997933.92756027],[317543.76218479924,9997936.153154982],[317560.67670461803,9997933.92756027],[317561.12182355765,9997929.031251902],[317566.4632508742,9997928.141014013],[317566.90836981667,9997923.689824589],[317574.47539185535,9997923.244705645],[317576.2558676136,9997929.921489783],[317586.4936033047,9997929.031251902],[317586.0484843574,9997924.134943526],[317615.8714535254,9997927.250776127],[317616.76169140986,9997933.037322383],[317626.55430815637,9997934.817798156],[317626.9994270913,9997928.586132957],[317660.383347807,9997933.92756027],[317659.9382288607,9997939.268987581],[317672.8466782066,9997940.15922547],[317671.5113213671,9997951.287199037],[317679.9685812835,9997955.738388466],[317699.5538147701,9997955.293269522],[317704.4501231369,9997950.842080094],[317704.4501231343,9997943.72017701],[317717.7015677356,9997940.394662],[317726.19614474685,9997941.858666053],[317778.1248069048,9997945.008480452],[317780.0090635964,9997950.661250524],[317787.77082516125,9997949.910112308],[317792.34823129675,9997945.87122455],[317813.00016657234,9997947.123900054],[317820.4047266423,9997947.573181754],[317821.08083421417,9997947.614171086],[317821.5917097744,9997948.166673984],[317826.7465525231,9997953.123314682],[317830.08494459547,9997960.13393803],[317836.4278895195,9997961.803134065],[317840.7677992191,9997965.475365343],[317846.10922653624,9997974.822863137],[317850.4491362212,9997977.827416003],[317856.1244027438,9997980.83196887],[317854.78904590756,9997975.156702343],[317853.11984988104,9997968.479918202],[317852.11833225365,9997963.472330095],[317857.45975957427,9997952.455636263],[317860.46431242814,9997954.792510718],[317866.13957895664,9997957.463224368],[317872.8163630938,9997959.466259612],[317883.49921771593,9997959.800098818],[317893.84823313967,9997957.129385164],[317897.52046442556,9997953.79099309],[317898.4237576402,9997949.726173587],[317900.1911780746,9997941.772781637],[317914.88010319497,9997940.771264013],[317916.21546001045,9997946.112691328],[317927.8998322622,9997945.445012912],[317927.8998322628,9997940.771264013],[317943.2564357833,9997939.769746395],[317945.51458255976,9997946.133614566],[317951.53526939417,9997945.254038448],[317994.7507518922,9997945.254438963],[317995.00151281164,9997960.80161644],[318005.684367446,9997962.470812475],[318014.698026029,9997965.475365343],[318023.3778454212,9997971.15063186],[318030.7223079741,9997973.153667102],[318036.7314137057,9997976.492059173],[318048.7496251449,9997977.493576799],[318115.8513057784,9997967.812239788],[318122.86192913225,9997969.81527503],[318128.87103485304,9997972.819827896],[318128.2033564409,9997968.813757414],[318128.53719565144,9997964.473847717],[318130.5402308913,9997959.466259612],[318135.88165819703,9997957.463224368],[318143.8937991697,9997956.795545958],[318155.57817142387,9997962.136973271],[318163.2564731884,9997962.136973271],[318167.5963828792,9997957.797063576],[318172.9378101792,9997959.800098818],[318182.28530798707,9997957.797063576],[318188.9620921308,9997956.461706746],[318194.63735864405,9997950.118761815],[318196.9152012003,9997947.23349459],[318199.64494675834,9997943.775816878],[318204.1152696371,9997947.087167164],[318208.65860534814,9997950.45260102],[318211.329318997,9997955.126349922],[318212.6646758297,9997960.13393803],[318218.00610314443,9997961.135455646],[318222.6798520496,9997959.132420404],[318226.35208332667,9997955.460189126],[318230.35815381765,9997951.454118647],[318231.0933423686,9997946.307798712],[318232.0273498387,9997939.769746395],[318240.7071692294,9997939.435907185],[318241.88843508065,9997945.679740993],[318251.7169610559,9997945.107918054],[318252.7879754611,9997949.58670558],[318256.1680974372,9997954.469103983],[318261.05049583974,9997952.027904782],[318266.1206787957,9997951.276766563],[318274.7587682794,9997952.59125844],[318281.51901222696,9997952.027904782],[318290.72045535926,9997951.276766563],[318298.9829757497,9997949.77449013],[318304.8042969241,9997949.77449013],[318315.69580104307,9997955.220242197],[318317.76143114176,9997959.163717829],[318328.46515072044,9997964.985039003],[318333.91090278514,9997969.116299191],[318336.35210198804,9997974.374266706],[318337.85581453517,9997982.64314703],[318330.0090719407,9997984.414991973],[318328.9799169882,9997985.948627481],[318329.34903307527,9997990.74713662],[318335.9499864456,9997994.19819763],[318334.6620408586,9997997.659551397],[318332.59641076985,9998001.03967337],[318331.46970344114,9998006.297640886],[318332.03305710026,9998009.865547407],[318334.474256304,9998010.241116514],[318337.2910246182,9998010.05333196],[318339.1574706827,9998009.935501106],[318343.86348401115,9998011.9311775],[318346.49246776005,9998015.123514919],[318345.17797588604,9998007.424348205],[318343.8634840046,9998003.856441678],[318342.7367766809,9997997.096197737],[318342.5489921355,9997994.091644872],[318343.3001303447,9997990.523738349],[318343.67569946044,9997980.007803323],[318342.9245612463,9997974.937620364],[318343.6756994554,9997969.679652853],[318344.8024067757,9997964.421685344],[318346.1168986588,9997959.914856045],[318347.0558214197,9997956.910303183],[318348.37031330186,9997949.77449013],[318358.41346303315,9997948.339754453],[318369.246761824,9997942.511782292],[318373.1578743591,9997936.254002245],[318377.4769191018,9997930.996034732],[318378.2280573186,9997927.24034365],[318378.9791955336,9997924.048006233],[318385.92722401686,9997922.733514355],[318390.2462687659,9997923.484652577],[318394.56531351537,9997926.489205435],[318398.508789149,9997928.55483553],[318399.9498983463,9997931.34698462],[318448.43017637264,9997925.564159986],[318487.75241338986,9997919.53990995],[318505.18317437836,9997916.868256712],[318506.1026411176,9997919.064760571],[318505.85226171353,9997927.07690154],[318502.3469500361,9997934.337904295],[318504.60036468133,9997938.093595376],[318509.357573384,9997939.095112994],[318517.369714357,9997957.12243018],[318522.8780612607,9997964.383432932],[318525.63223472337,9997971.394056281],[318525.6322347229,9997982.911508925],[318528.13602877245,9997990.17251168],[318532.6428580831,9997996.431996813],[318538.40158439544,9998002.691481948],[318545.4122077372,9998010.45324351],[318550.1694164458,9998014.709693404],[318544.4106901074,9998045.25598085],[318543.9099313172,9998052.516983604],[318537.4000667601,9998058.776468737],[318530.1390640114,9998057.0238129],[318523.62919948716,9998055.271157065],[318518.62161138427,9998056.02229528],[318511.6109880223,9998064.284815654],[318513.6140232863,9998070.794680193],[318517.62009375694,9998076.803785922],[318524.63071710255,9998082.061753431],[318528.1360287692,9998084.064788675],[318531.64134044695,9998090.574653212],[318552.4228310784,9998082.562512243],[318555.67776334926,9998088.321238564],[318544.4106901211,9998098.086035373],[318561.4364896683,9998109.353108611],[318563.43952492834,9998114.360696718],[318562.6883867017,9998122.122458283],[318566.1936983698,9998120.620181851],[318573.45470112655,9998125.377390552],[318584.4713949576,9998135.642946174],[318598.49264165584,9998146.158881193],[318603.2498503628,9998145.908501789],[318609.50933548936,9998143.404707735],[318610.7612325119,9998139.649016656],[318610.0100942976,9998133.639910927],[318593.73543295084,9998117.365249583],[318586.97518901306,9998104.846279316],[318582.7187391382,9998091.325791432],[318576.960012792,9998079.557959378],[318574.95697757206,9998075.301509488],[318577.96153041784,9998072.296956629],[318574.20583934675,9998065.03595387],[318570.45014826814,9998060.028365763],[318566.44407777424,9998049.512430744],[318567.19521599147,9998046.758257281],[318566.69445719355,9998042.752186798],[318563.4395249159,9998036.743081069],[318559.93421323504,9998026.978284262],[318559.9342132412,9998022.471454965],[318561.68686908006,9998020.218040317],[318563.94028372003,9998018.715763886],[318568.196733617,9998015.711211022],[318569.4486306367,9998011.955519943],[318567.94635420386,9998012.957037564],[318563.43952491565,9998012.957037564],[318560.43497205136,9998011.204381727],[318557.4304191892,9998004.69451719],[318554.926625133,9998001.940343734],[318552.67321048374,9997998.935790868],[318553.92510751873,9997994.428961573],[318553.6747281238,9997991.174029306],[318551.1709340641,9997987.418338224],[318547.164863577,9997985.665682385],[318543.90993132145,9997983.412267737],[318542.6580342832,9997979.406197252],[318538.98580300243,9997974.10649984],[318536.3150893466,9997964.425162833],[318535.3135717334,9997959.417574726],[318535.98125014605,9997950.737755341],[318533.64437570336,9997946.397845652],[318531.3075012448,9997941.05641834],[318530.97366203356,9997937.050347852],[318533.97821488744,9997936.382669438],[318536.982767764,9997928.03668926],[318538.98580299946,9997921.02606591],[318541.3226774528,9997917.019995429],[318544.66106952843,9997916.018477805],[318550.33633603586,9997913.681603357],[318556.6792809851,9997915.016960183],[318564.02374352585,9997917.68767384],[318568.6974924221,9997917.68767384],[318573.70508054015,9997916.018477805],[318579.0465078397,9997914.015442563],[318582.38489990716,9997910.343211286],[318585.8520931875,9997904.507182289],[318591.00907935627,9997906.389303176],[318594.2014167732,9997910.520563364],[318600.58609160956,9997912.022839794],[318606.9707664488,9997909.76942515],[318611.2898111919,9997909.76942515],[318612.7920876229,9997913.337331673],[318617.6744860258,9997917.093022753],[318621.8057462118,9997914.839608105],[318632.509465793,9997907.32822595],[318638.70635607414,9997906.764872283],[318647.5322301096,9997907.516010499],[318654.10468950437,9997909.393856043],[318661.42828710587,9997909.76942515],[318668.75188470783,9997908.830502378],[318679.45560429024,9997903.384750312],[318686.7792018921,9997896.436721815],[318691.09824663884,9997888.925339654],[318696.73178325477,9997881.789526602],[318701.4263971037,9997879.723896509],[318705.9332264012,9997879.911681063],[318711.56676301593,9997879.536111958],[318714.9468849946,9997877.658266414],[318719.0781451833,9997876.531559091],[318725.08725090476,9997874.465928998],[318733.3497712816,9997872.96365257],[318736.542108694,9997871.085807025],[318738.4199542352,9997867.89346961],[318742.17564531974,9997867.705685053],[318745.74355184275,9997866.391193176],[318757.1984096446,9997860.945441114],[318761.89302349126,9997862.259932987],[318766.3998527805,9997861.508794772],[318779.5447715622,9997857.001965476],[318791.18741391087,9997854.936335383],[318798.5110115169,9997857.001965476],[318802.2667025924,9997861.32101022],[318806.77353188826,9997863.574424867],[318807.3368855525,9997870.522453368],[318808.2758083216,9997872.96365257],[318808.2758083218,9997867.89346961],[318809.59030019573,9997865.452270407],[318811.46814573667,9997862.823286649],[318812.0314993971,9997858.316457354],[318813.72156038927,9997854.37298172],[318814.4726986033,9997852.119567072],[318817.6650360251,9997847.800522331],[318825.739771844,9997841.04027839],[318832.5000157905,9997837.284587309],[318834.37786132627,9997836.157879988],[318838.6969060695,9997845.734892236],[318845.45715001,9997846.486030452],[318849.4006256468,9997835.218957216],[318850.90290207963,9997831.651050687],[318851.8418248492,9997830.336558815],[318853.71967038495,9997834.655603552],[318857.0997923585,9997835.782310875],[318863.1088980818,9997834.655603552],[318872.6859103432,9997829.209851487],[318879.2583697301,9997826.393083176],[318884.89190635266,9997826.017514069],[318890.14987385785,9997823.576314867],[318893.1544267249,9997818.693916466],[318895.59562592686,9997815.877148159],[318897.8490405823,9997814.18708717],[318899.1635324507,9997816.816070922],[318902.5436544215,9997818.693916466],[318902.7314389787,9997814.18708717],[318904.6092845179,9997810.055826984],[318909.67946747737,9997805.173428575],[318914.7496504282,9997799.915461063],[318918.1297724101,9997795.971985433],[318918.5053415227,9997793.90635534],[318921.35822054127,9997789.078406211],[318923.3877399138,9997785.64383496],[318922.63660170283,9997782.075928435],[318921.8854634841,9997778.320237355],[318921.13432527194,9997774.001192616],[318921.50989438104,9997769.494363323],[318930.52355297026,9997767.053164115],[318938.41050423717,9997766.865379563],[318942.7295489749,9997764.424180362],[318940.28834977956,9997761.607412053],[318941.0394879937,9997759.917351067],[318952.1187766779,9997755.034952667],[318961.32021982066,9997754.847168107],[318956.5004162716,9997747.095839016],[318958.5034515107,9997744.091286153],[318955.83273785014,9997740.085215667],[318981.53835679754,9997726.397808177],[318983.8752312538,9997731.405396283],[318987.54746252706,9997732.740753114],[318998.9152939947,9997754.921887679],[319001.2348700211,9997759.447889678],[319007.24397575506,9997760.783246508],[319003.946251675,9997752.538936334],[319003.12445202714,9997750.424450641],[319012.4197874461,9997746.304926991],[319013.2559670609,9997748.129318882],[319021.71512286447,9997766.585658822],[319023.61644147924,9997764.47308259],[319023.6164414792,9997761.092960617],[319022.87703979143,9997757.290323399],[319024.35584315873,9997751.903254004],[319026.67967702384,9997748.945647283],[319029.53165492497,9997748.100616787],[319033.4399209629,9997748.2062456],[319038.29884629225,9997748.628760844],[319043.36902924906,9997747.572472729],[319044.63657498674,9997745.77678293],[319044.6365749963,9997741.551630469],[319046.0097495445,9997738.805281363],[319049.91801557195,9997736.798333947],[319055.3168214986,9997736.788553497],[319056.8696890956,9997727.471347947],[319073.7508246481,9997719.475469783],[319077.35020910023,9997727.274136096],[319082.357797202,9997726.773377284],[319085.11197066284,9997723.268065613],[319091.3714557913,9997722.016168587],[319096.1286644957,9997721.014650963],[319103.89042606356,9997718.260477506],[319114.4063610815,9997709.747577723],[319129.42912540387,9997697.729366267],[319134.6870929181,9997692.221019354],[319137.6916457764,9997690.969122328],[319148.9587190221,9997691.970639946],[319149.20909842046,9997686.712672435],[319151.21213366475,9997683.457740165],[319154.21668653237,9997680.953946112],[319157.7219982025,9997680.703566706],[319161.7280686879,9997679.702049086],[319166.48527739116,9997678.199772652],[319171.9936243067,9997669.937252278],[319177.0012124168,9997668.184596444],[319181.75842111267,9997666.682320008],[319190.52170030004,9997665.180043576],[319197.28194424504,9997664.428905362],[319203.04067056987,9997666.932699416],[319204.04218818713,9997670.187631683],[319206.54598224245,9997674.193702169],[319211.0528115378,9997678.199772652],[319216.31077905186,9997679.702049086],[319223.0710229947,9997684.208878381],[319211.8039497577,9997662.676249523],[319223.07102299365,9997656.166384988],[319224.8236788221,9997651.909935094],[319229.58088752895,9997647.903864613],[319231.5839227695,9997645.149691151],[319232.585440391,9997641.894758882],[319234.5884756317,9997638.639826613],[319237.09226968064,9997637.387929587],[319240.5975813658,9997634.63375613],[319243.3517548237,9997630.87806505],[319246.8570664944,9997626.871994562],[319250.36237817165,9997624.618579915],[319255.6203456796,9997624.368200509],[319258.3745191401,9997622.114785861],[319259.87679557304,9997620.362130025],[319265.38514248794,9997618.10871538],[319273.3972834534,9997615.354541918],[319278.65525096987,9997612.099609649],[319283.9132184859,9997608.84467738],[319291.424600641,9997607.092021544],[319298.4352239899,9997608.34391857],[319304.19395031116,9997608.34391857],[319309.70229722647,9997607.342400951],[319313.95874712395,9997604.838606898],[319317.4640587976,9997602.334812844],[319322.2028364006,9997599.891380642],[319333.4883407359,9997594.072292468],[319344.0042757573,9997600.081398195],[319346.28360828233,9997608.135039795],[319347.7599668352,9997613.351506677],[319354.01945196907,9997627.372753374],[319356.0224872137,9997631.87958267],[319358.2759018608,9997652.66107331],[319360.2789370999,9997674.944840385],[319362.45410818304,9997702.572642889],[319362.45410818455,9997718.205707012],[319361.74991611263,9997723.135051552],[319361.0457240321,9997765.527414614],[319360.3415319562,9997784.540600708],[319362.22980996635,9997820.55611329],[319368.13370752864,9997840.558039304],[319382.9278408097,9997864.956727833],[319382.57709505764,9997872.14701576],[319382.2601623965,9997878.644135322],[319402.81052227586,9997920.437563863],[319411.9718518237,9997939.069031807],[319419.6501535865,9997954.425635332],[319421.71768046945,9997962.257320385],[319420.31783199345,9997965.442329166],[319420.9855104129,9997965.776168378],[319425.13143491786,9997965.20431672],[319436.08120009815,9997974.656935044],[319437.009792286,9997981.46661111],[319448.3603253275,9997993.15098336],[319453.70175264485,9997997.824732255],[319461.7138936128,9998008.507586882],[319466.05380330543,9998018.188923888],[319468.3906777541,9998026.868743272],[319468.3906777571,9998052.574362218],[319468.7245169618,9998071.93703623],[319470.3937129948,9998077.612302754],[319482.41192445776,9998154.39532038],[319493.4286182866,9998170.753441527],[319510.3588621182,9998184.41145336],[319533.1554839277,9998202.802005408],[319540.12733618217,9998209.169957783],[319547.96959874337,9998216.33292577],[319550.3305902105,9998215.040001871],[319555.8565500106,9998212.01388103],[319569.18925333954,9998229.853413658],[319566.83198965073,9998234.00219776],[319564.49463949865,9998238.115934035],[319561.3023020717,9998241.308271457],[319557.1710418827,9998247.880730843],[319552.1008589314,9998253.514267461],[319549.28409062733,9998255.016543899],[319546.09175320866,9998255.579897555],[319535.95138729323,9998255.767682113],[319528.815574229,9998261.21343418],[319523.5576067242,9998264.593556147],[319516.7973627775,9998269.851523662],[319516.609578233,9998275.10949117],[319515.2950863542,9998277.73847493],[319506.6569968669,9998278.114044037],[319474.17026902793,9998279.804105023],[319469.85122428223,9998279.991889574],[319451.072768889,9998282.245304223],[319442.24689484516,9998286.000995304],[319433.60880536144,9998291.63453192],[319426.47299231647,9998297.26806854],[319423.84400855843,9998303.464958822],[319422.717301231,9998310.788556429],[319423.09287033806,9998316.04652394],[319424.9707158848,9998320.177784126],[319429.28976062464,9998326.374674408],[319433.8414318419,9998330.714639992],[319445.43923227506,9998341.773007836],[319450.6971997871,9998344.965345254],[319455.3918136262,9998345.904268023],[319459.3352892578,9998347.782113563],[319462.7107468612,9998354.191086682],[319466.40945732064,9998355.40236979],[319479.50242295046,9998362.439741254],[319484.00925225695,9998365.444294114],[319484.76039047714,9998368.949605789],[319490.0183579811,9998368.699226383],[319494.5079744145,9998367.416478835],[319498.06562853104,9998369.373890527],[319506.22583455883,9998373.10270452],[319510.54946915666,9998378.964782005],[319517.56009250093,9998380.717437837],[319528.827165743,9998381.71895546],[319532.8332362245,9998383.721990703],[319539.59348016925,9998387.22730238],[319552.8635886535,9998399.746272642],[319563.8802824833,9998419.275866257],[319576.90001156053,9998439.055839283],[319585.41291133885,9998453.07708598],[319585.4129113401,9998460.588468134],[319587.1655671801,9998464.594538622],[319590.1701200404,9998470.603644347],[319587.66632598673,9998471.60516197],[319585.1625319377,9998469.852506131],[319584.9121525282,9998475.110473642],[319586.66480836377,9998480.11806175],[319586.91518777295,9998486.878305692],[319584.66177311924,9998495.891964285],[319582.65873788187,9998501.400311202],[319574.8969763137,9998506.658278713],[319567.1352147558,9998509.662831577],[319557.87117675995,9998508.911693364],[319553.8651062739,9998506.658278713],[319550.1094151882,9998505.156002283],[319543.5995506465,9998504.655243471],[319535.58740968094,9998503.904105255],[319530.5798215762,9998500.649172988],[319527.2435260494,9998500.111060806],[319525.4132829135,9998499.8158603],[319519.6917405761,9998496.064300135],[319517.68856852653,9998491.784796203],[319514.8059190432,9998485.626408666],[319520.06388654944,9998476.36237067],[319517.8104719081,9998476.36237067],[319512.55250438955,9998484.875270452],[319509.0471927174,9998484.124132238],[319483.4228227871,9998469.001101617],[319473.2310316006,9998448.893312462],[319464.24889735074,9998447.546707783],[319463.7199265551,9998447.051864132],[319459.7224498715,9998443.312289167],[319450.70879128296,9998444.814565599],[319442.1958914932,9998448.069497872],[319436.9379239875,9998453.828224193],[319427.924265401,9998470.102885537],[319425.9212301575,9998478.866164723],[319426.67236837116,9998487.128685098],[319429.9273006428,9998498.896517148],[319433.4326123113,9998508.661313955],[319443.94854733365,9998522.68256066],[319457.96979403705,9998532.948116275],[319472.9925583569,9998541.461016051],[319483.75887278246,9998549.473157024],[319500.2839135324,9998564.495921342],[319519.06236893276,9998597.420813141],[319523.0684394168,9998611.219500372],[319521.73308259033,9998626.798663365],[319516.83677421766,9998637.03639905],[319509.2697521931,9998640.152231652],[319492.80035130394,9998637.03639905],[319468.31880945305,9998634.365685396],[319450.5140517404,9998629.914495964],[319434.0446508619,9998623.682830771],[319414.90453631734,9998625.018187594],[319404.6668006412,9998637.481517991],[319398.4351354386,9998651.28020522],[319399.77049227024,9998665.07889245],[319402.88632486126,9998685.10924487],[319415.349655265,9998714.487095093],[319419.8008446942,9998724.724830778],[319422.9166772893,9998738.968636947],[319430.0385803797,9998758.553870434],[319443.8372676023,9998771.46231977],[319458.52619271225,9998776.803747088],[319468.3188094593,9998780.80981757],[319471.87976099784,9998786.596363826],[319469.209047341,9998793.718266912],[319463.8676200311,9998799.949932111],[319447.8433380902,9998808.852310965],[319434.48976980173,9998815.974214049],[319429.1483424891,9998818.644927712],[319417.5752499786,9998825.32171185],[319401.1058490926,9998823.096117137],[319388.1973997556,9998811.077905681],[319377.0694261879,9998804.401121538],[319372.1731178127,9998800.395051057],[319361.49026318686,9998803.510883652],[319357.03907375725,9998805.291359425],[319350.80740856036,9998803.065764708],[319347.2464570168,9998803.510883652],[319341.4599107672,9998807.96207308],[319336.56360239245,9998812.858381456],[319333.00265085406,9998821.760760305],[319332.5575319078,9998826.657068677],[319327.21610459354,9998824.431473967],[319322.76491516794,9998823.096117137],[319317.42348785105,9998824.876592912],[319317.42348785256,9998837.785042247],[319315.19789313857,9998848.022777935],[319304.06991957023,9998861.376346214],[319297.393135429,9998875.620152384],[319290.27123234945,9998888.97372067],[319282.91852684226,9998899.483473485],[319264.52027720923,9998901.263949255],[319250.8699629629,9998904.231408874],[319243.1545679496,9998916.101247348],[319239.0001244906,9998931.532037364],[319243.15456795786,9998941.621400071],[319253.24393065413,9998946.962827383],[319257.3983741239,9998955.271714313],[319263.3332933604,9998960.613141626],[319275.2031318339,9998968.922028558],[319287.66646223085,9998979.604883185],[319297.1623330123,9998992.661705507],[319305.47121994337,9999004.531543981],[319298.3493168603,9998983.759326655],[319293.60138146847,9998973.076472024],[319281.1380510739,9998957.645682007],[319272.2356722178,9998953.491238546],[319271.6421802916,9998947.556319308],[319272.8291641434,9998942.214891996],[319271.64218029566,9998933.906005058],[319276.39011568343,9998928.564577747],[319286.4794783862,9998921.442674661],[319301.31677647773,9998916.101247348],[319310.812647255,9998908.979344262],[319321.4955018828,9998885.239667313],[319337.5197838254,9998859.126022674],[319343.45470306516,9998842.508248806],[319343.45470305905,9998828.26444264],[319345.23517883196,9998819.36206378],[319347.60914652527,9998816.98809609],[319355.32454153185,9998816.394604165],[319379.064218482,9998838.947297264],[319395.6819923492,9998850.817135738],[319408.7388146694,9998852.004119588],[319434.8524593153,9998852.022666208],[319448.5398668024,9998841.339811582],[319461.2257566736,9998830.990796162],[319466.23334477795,9998830.656956954],[319469.1658814399,9998837.438791312],[319471.5747720933,9998831.992313785],[319473.91164654656,9998825.983208055],[319476.58236020105,9998820.97561995],[319481.92378751375,9998817.637227878],[319483.8656222314,9998816.782820603],[319468.68807047466,9999012.062112814],[319370.78284662106,9999308.858018877],[319321.9428121441,9999358.778902063],[319311.5551282688,9999410.441465378],[319280.24275416567,9999473.197736744],[319239.91692942736,9999546.645208372],[319261.1041814731,9999582.772096636],[319265.0855543052,9999614.477689743],[319243.550302683,9999646.737840652],[319241.7186948577,9999678.061597832],[319274.9146405973,9999691.349622725],[319277.42974679807,9999714.345720291],[319236.62919061224,9999750.92172814],[319168.716882888,9999768.84687615],[319067.6313802497,9999838.728345873],[318970.13231866976,9999927.395524988],[318948.7605840585,9999963.323728565],[318938.98448771983,10000031.324438097],[318892.9947492451,10000116.890085224],[318852.92374628596,10000218.583574302],[318827.68623560993,10000334.00904275],[318792.4265729737,10000452.561037075],[318758.52600305394,10000638.280511864],[318736.11075419065,10000761.079286592],[318683.2918340663,10000845.217733398],[318654.0060712681,10001005.175745014],[318580.29472941905,10001025.713674555],[318559.4331266253,10001132.857595447],[318587.0152303489,10001272.39113426],[318582.1490384799,10001372.26811791],[318621.32765787095,10001447.2132702],[318664.13420313806,10001561.333684923],[318645.2699529517,10001671.349454883],[318616.66641061904,10001776.908777243],[318680.8816625521,10001903.985876078],[318680.0252668184,10002007.455526358],[318656.36501139484,10002064.350061424],[318696.2635442535,10002133.775270471],[318709.4179288703,10002290.498567577],[318687.857706254,10002297.238225954],[316773.33658809436,10002933.958509443],[316551.2138616497,10003002.993131645],[315025.82006665575,10003409.371725094],[314917.12015363807,10003438.330480574],[314759.4256422251,10003480.341924673],[314539.15112135187,10003539.326540003],[314374.06186888274,10003596.22554971],[314373.6688597009,10003596.66179849],[314368.0266782909,10003598.305616386],[313495.7777464144,10003898.93235588],[313489.1809942452,10003901.205980303],[313197.0064832967,10004001.90630914],[313031.541891317,10004058.93510246],[312853.5408384539,10004121.056116115],[312697.58611129166,10004174.035993582],[312606.0806295652,10004205.574224465],[312100.00000214326,10004380.000001915]]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Utara"}}, +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[309261.9546023365,9995595.604697736],[309254.1512043867,9995604.086003423],[309255.6083813431,9995605.470000228],[309284.88352463115,9995635.173525538],[309380.0924232146,9995724.771427764],[309398.215099914,9995744.712203054],[309482.4160317639,9995828.075850781],[309510.8547771219,9995855.217509108],[309614.2936857622,9995956.860126182],[309655.8365171198,9995998.680337261],[309713.5504088644,9996055.456118442],[309745.3347990755,9996090.629318522],[309800.81823907327,9996143.25076567],[309858.5321316458,9996200.026467957],[309888.0861104792,9996228.82974403],[309902.8317923788,9996241.206878122],[309978.47836250067,9996318.572688475],[310049.46901290026,9996372.376128782],[310077.1203406211,9996395.833494455],[310131.7674322957,9996442.084933],[310141.80475770496,9996444.300694194],[310145.42930977605,9996447.34719552],[310147.9386271592,9996448.731983198],[310152.12080579996,9996452.055442825],[310153.2359851459,9996457.040546099],[310156.8605233915,9996460.917894475],[310161.60033325106,9996464.241362978],[310168.01300437376,9996469.503503],[310179.16552639566,9996475.596568586],[310183.3476590421,9996481.689518273],[310189.7603208134,9996487.505555427],[310247.4744468909,9996529.325810932],[310291.8055466041,9996563.668205786],[310338.3671657862,9996598.010621807],[310367.6424153736,9996620.72089677],[310460.2080438351,9996686.913116185],[310472.75457296986,9996696.883465651],[310490.598577193,9996707.684741909],[310492.51955537125,9996708.161803072],[310541.65977352206,9996745.404915774],[310607.2537939744,9996787.788744377],[310608.2573117884,9996788.55553757],[310614.948784532,9996794.37155786],[310620.525013851,9996799.079766873],[310630.004623943,9996805.72667384],[310637.81137296185,9996810.434915569],[310649.80028425436,9996819.297446951],[310672.66292024404,9996832.037417628],[310678.51798028685,9996835.637834625],[310681.30607202277,9996839.515154446],[310683.8153447779,9996843.669418504],[310689.39160617907,9996846.162037065],[310698.03479865193,9996850.87028832],[310703.6110801948,9996851.97816436],[310706.6780031426,9996854.747693898],[310708.62965021376,9996858.625000639],[310713.927104434,9996860.56371758],[310732.3286985336,9996873.303614525],[310737.3473090669,9996877.180965507],[310749.61503655836,9996885.766544592],[310757.42176691256,9996891.582574138],[310761.88275563996,9996894.906019408],[310769.9683690239,9996896.013930425],[310778.3327244986,9996902.106915459],[310781.6784578273,9996905.153395673],[310784.74540844094,9996905.984285122],[310790.8793015592,9996908.199960588],[310794.5038575623,9996910.692547923],[310797.0131464312,9996913.739015669],[310801.474134692,9996917.062459838],[310806.2139856359,9996917.06252829],[310809.8385454817,9996919.278167],[310816.2512168307,9996923.98638041],[310815.9723422611,9996928.14060071],[310818.2028164109,9996931.187063921],[310829.6341211656,9996938.110934973],[310835.4891906865,9996940.88050157],[310840.50783179887,9996942.542263005],[310845.52647677157,9996943.927076109],[310849.98745659366,9996947.804415362],[310854.16960983723,9996952.512595186],[310861.4187207408,9996957.497766754],[310867.2737817494,9996960.821228819],[310874.2440935001,9996964.698602984],[310880.0991621427,9996967.468168238],[310886.2330178581,9996972.176374678],[310895.43385418504,9996975.49988333],[310906.86512894183,9996984.362386627],[310929.44889426697,9996999.8718013],[310973.7800392937,9997026.459439773],[311030.6577613605,9997058.032304214],[311086.9778897064,9997086.281768812],[311140.5099013224,9997111.76170199],[311154.4505872596,9997113.977473056],[311158.91159373336,9997115.639220318],[311167.27597784065,9997118.962707097],[311171.4580804184,9997127.271198217],[311176.1979009155,9997128.932948805],[311296.9237288628,9997183.216310933],[311407.61226110347,9997232.791373456],[311515.7914765272,9997278.212141372],[311611.70288940985,9997320.03239514],[311700.0863862196,9997354.928839719],[311819.97564681526,9997400.349623768],[311847.0204156386,9997411.427829457],[311909.195488655,9997437.184638295],[311979.1772819394,9997465.987938784],[312036.6125516491,9997487.313512806],[312100.1816770071,9997510.300826067],[312140.3306072531,9997523.31778008],[312172.1151539134,9997535.226847176],[312226.76231323276,9997551.01342191],[312298.4169837851,9997572.06216184],[312334.38374533877,9997580.094011065],[312354.73701223265,9997585.910112197],[312378.43602703605,9997592.003195886],[312405.2019543387,9997600.311882298],[312421.37303435523,9997605.297094375],[312451.4847023506,9997614.159706833],[312516.4478311064,9997632.71581453],[312556.59674321115,9997641.024636868],[312615.70480314735,9997657.642041689],[312668.67902445607,9997669.828236707],[312697.6754144961,9997678.413871674],[312767.6571129579,9997695.308316853],[312791.9137307806,9997699.462762063],[312832.8990308568,9997707.771569591],[312857.1556152059,9997714.418522919],[312922.11870984733,9997725.497033594],[312939.126204825,9997729.097504893],[313025.27891686093,9997746.26902797],[313101.95200962014,9997762.055712136],[313170.302973683,9997773.068007732],[313246.6550114909,9997788.366999757],[313352.3243708415,9997809.415901504],[313429.833809183,9997822.986987067],[313491.17218292505,9997834.896231994],[313529.6480688704,9997841.820236443],[313627.5106312297,9997858.160946665],[313647.5850034533,9997860.930591468],[313679.09059182927,9997867.300628215],[313709.4809508007,9997871.73204019],[313745.72631430626,9997878.379064333],[313768.0311444644,9997883.087338839],[313817.65939131845,9997892.780878054],[313870.07575681433,9997900.258884793],[313892.9382123202,9997903.305493612],[313919.98279194254,9997909.952417932],[313938.66308958735,9997912.16815195],[314005.57754291967,9997923.523506992],[314042.91937091574,9997930.528800854],[314088.1053374652,9997937.925388096],[314098.9789320016,9997939.587155692],[314107.0644341167,9997939.86417644],[314116.2651595073,9997942.079816014],[314130.76325742155,9997947.064945765],[314167.56618706323,9997952.32722901],[314179.55501158163,9997954.819837626],[314184.8523962796,9997956.204607245],[314271.96495795343,9997975.714581447],[314304.18295604084,9997984.08473851],[314326.9833601508,9997992.45480613],[314356.22733481135,9998005.256030958],[314377.5406930046,9998019.534213195],[314401.8280069791,9998035.781796746],[314428.593618216,9998053.50643161],[314443.9458685182,9998066.783094361],[314508.96388338506,9998163.877438726],[314514.8364935918,9998175.815080673],[314527.1885442538,9998188.834809752],[314533.90073529165,9998182.420938313],[314534.0728221312,9998182.585854871],[314528.49001950957,9998188.207659138],[314370.47279482335,9998319.517747262],[314357.3742019562,9998306.419154394],[314355.80026667845,9998307.499897007],[314343.39991038386,9998317.500129702],[314331.9997124085,9998328.20011521],[314322.30066340417,9998338.599485401],[314314.3010391509,9998346.600725176],[314308.4009117624,9998351.300212873],[314304.5011314843,9998353.20072938],[314301.7483357601,9998353.888756877],[314293.5867405012,9998345.027596304],[314288.5791523913,9998349.033666788],[314283.9054034976,9998353.707415687],[314275.22558411304,9998355.376611724],[314271.2195136333,9998358.715003796],[314268.88263917435,9998364.056431107],[314264.87656869646,9998367.394823179],[314254.19371406175,9998375.406964147],[314246.18157309573,9998378.077677805],[314237.8355929237,9998375.073124941],[314226.151220683,9998370.73321525],[314205.1193506224,9998372.068572076],[314190.09658632334,9998368.396340799],[314187.7597118532,9998371.73473287],[314212.04892783146,9998400.413566187],[314215.4683660539,9998404.450975165],[314183.4198021693,9998430.490433319],[314181.3798820032,9998427.940533118],[314178.0783748608,9998423.813649176],[314155.71114799567,9998438.502574287],[314140.02070525754,9998417.804543449],[314133.01008190867,9998421.14293552],[314126.66713697836,9998416.469186619],[314098.9584827861,9998433.828825388],[314089.2771457834,9998438.502574287],[314090.61250259914,9998443.17632319],[314085.9387537092,9998444.845519226],[314077.59277351946,9998444.845519226],[314073.2528638365,9998441.173287949],[314058.8977779299,9998446.514715262],[314035.8628726546,9998453.525338609],[314032.190641365,9998459.534444334],[314026.84921405837,9998468.548102926],[314018.8370731706,9998474.22336945],[314003.14663046785,9998483.570867246],[313994.1329718549,9998489.246133765],[313991.46225818247,9998498.927470772],[313989.42988173384,9998509.329894377],[313976.2845187923,9998519.97607542],[313984.11779564526,9998530.308356239],[313968.9798972057,9998543.18661569],[313994.80065026507,9998575.710488407],[313988.499992826,9998582.000272753],[313947.3954828577,9998616.438871667],[313919.01915026456,9998645.816721892],[313916.682275814,9998644.481365062],[313910.0054916851,9998651.491988411],[313902.6610291386,9998653.828862863],[313892.3120137183,9998662.508682245],[313878.3153147353,9998673.998509763],[313869.9447868485,9998680.86983864],[313871.9478220744,9998684.875909122],[313848.24523836654,9998705.907779168],[313839.56541897915,9998698.229477407],[313825.84786658734,9998709.69489435],[313817.1981921075,9998716.924473006],[313810.52140799165,9998720.930543488],[313796.16632210277,9998733.950272564],[313788.1541811256,9998736.287147015],[313760.4455269249,9998757.31901706],[313755.4379388308,9998752.64526816],[313740.41517449636,9998764.329640409],[313744.421244978,9998771.006424552],[313720.71866130084,9998788.699902527],[313717.38026920054,9998785.695349663],[313709.70196747966,9998790.369098563],[313676.65188602917,9998757.31901706],[313672.30058543105,9998766.00101091],[313664.1009508837,9998768.599536898],[313652.9999358002,9998776.300165191],[313640.40126487985,9998786.500877382],[313635.09838528745,9998790.634230146],[313628.8015998807,9998786.863786891],[313618.56386420224,9998789.979619486],[313600.7591065001,9998805.113663541],[313595.8627981236,9998805.558782484],[313578.5031593498,9998813.570923455],[313572.271494152,9998823.808659138],[313551.35090386216,9998834.046394827],[313558.02768798266,9998845.174368395],[313553.57649855316,9998849.625557821],[313547.3448332874,9998855.412104078],[313570.0458994368,9998871.436386017],[313554.91185539216,9998887.9057869],[313530.4575770069,9998871.829363147],[313506.8390095942,9998856.302341964],[313501.94270120654,9998863.42424505],[313519.69908475876,9998879.02106845],[313534.88150298316,9998892.35697633],[313524.64376727585,9998905.710544618],[313501.80025741644,9998893.401050577],[313493.47099380475,9998898.6147844],[313490.3696087906,9998895.91792787],[313473.0099700233,9998906.155663555],[313454.3149744179,9998921.28970761],[313446.30283346865,9998920.399469724],[313439.62604931835,9998929.746967522],[313440.51628722716,9998936.868870607],[313443.1945047034,9998940.718808277],[313433.69991563074,9998951.600851059],[313421.30125306547,9998966.40092469],[313418.17068966664,9998969.344205534],[313412.02867496107,9998964.021126121],[313415.5896265134,9998960.905293517],[313410.2481991863,9998959.569936689],[313399.12022561487,9998952.002914665],[313393.77879830543,9998955.563866204],[313393.7787983278,9998963.130888233],[313388.8824899448,9998963.130888233],[313384.87641946506,9998967.58207766],[313383.5410626158,9998973.368623916],[313388.14062503073,9998982.938681185],[313378.051262334,9998992.434551965],[313369.7423753934,9998985.312648885],[313357.8725369107,9998993.028043889],[313332.94587613177,9999016.767720837],[313342.7540659979,9999030.935106203],[313336.3997848071,9999035.699935919],[313322.50001789164,9999046.39999963],[313312.7621308854,9999053.982567107],[313299.11683656555,9999040.507397786],[313261.7268453678,9999067.214534357],[313259.3528776709,9999076.116913209],[313248.6700230399,9999087.39325976],[313252.8244665321,9999093.328178998],[313223.7433622498,9999124.189759031],[313232.6457411153,9999134.872613657],[313218.9954268923,9999143.18150059],[313206.53209646884,9999130.718170192],[313189.9143226044,9999139.620549047],[313160.2397264242,9999172.856096776],[313141.8414767971,9999192.441330262],[313132.939097926,9999201.343709113],[313124.03671909776,9999205.49815258],[313118.6952917762,9999205.49815258],[313108.0124371387,9999214.400531437],[313107.41894520633,9999220.928942598],[313101.48402596824,9999223.896402216],[313037.98039016034,9999281.46511882],[313037.3868982019,9999285.619562283],[313042.72832553275,9999302.237336146],[312998.2164312741,9999349.716690043],[312969.13532699645,9999331.318440408],[312903.8512153756,9999397.19604394],[312882.4855061602,9999384.139221618],[312850.2072076788,9999407.803962534],[312840.5507133873,9999395.501853356],[312777.64056958817,9999440.60723956],[312766.36422303505,9999450.696602264],[312761.61628763936,9999460.19247304],[312743.8115299223,9999467.314376127],[312757.46184417605,9999499.95643193],[312712.35645798594,9999530.22452004],[312657.75520102493,9999557.525148535],[312644.69837871846,9999543.281342361],[312602.560452139,9999571.175462777],[312603.7474359749,9999575.329906246],[312577.6337913424,9999591.947680108],[312582.38172672875,9999613.31338936],[312547.3657032354,9999632.30513092],[312532.5284051364,9999613.31338936],[312512.34967973083,9999608.56545397],[312493.3579381928,9999620.435292445],[312491.5774624068,9999616.280848982],[312476.74016431905,9999626.370211681],[312479.7076239344,9999632.898622844],[312478.52064009383,9999645.955445169],[312473.77270468976,9999648.922904784],[312471.99222892337,9999647.142429018],[312469.02476930805,9999647.735920936],[312465.4638177585,9999645.361953244],[312461.9028662285,9999645.955445169],[312462.49635814875,9999654.264332097],[312448.2525519775,9999666.134170571],[312442.9111246597,9999655.451315945],[312438.7566812048,9999659.012267493],[312438.7566812141,9999662.57321903],[312435.7892215848,9999663.76020288],[312424.5128750438,9999647.735920936],[312379.4074888425,9999669.101630192],[312382.9684403762,9999675.036549428],[312344.3914653603,9999690.467339443],[312340.2370218765,9999688.686863672],[312333.11511878856,9999682.158452516],[312326.5867076209,9999682.751944441],[312323.61924800463,9999688.093371753],[312324.806231861,9999694.62178291],[312314.1233772347,9999701.150194071],[312315.31036107615,9999707.085113307],[312309.37544187065,9999710.052572927],[312280.2943375865,9999722.515903326],[312231.6279998487,9999739.133677188],[312222.72562100366,9999728.450822564],[312219.75816137623,9999729.637806408],[312217.3841936765,9999736.16621757],[312209.6687986972,9999745.068596426],[312200.1729279179,9999739.133677188],[312193.6445167521,9999742.101136807],[312196.01848443877,9999759.905894518],[312166.3438882744,9999770.58874915],[312153.2870659325,9999767.621289527],[312151.5065901801,9999760.499386443],[312136.6692920737,9999761.092878366],[312137.856275931,9999765.840813756],[312130.7343728384,9999765.247321837],[312116.4905666644,9999755.15795913],[312108.181679748,9999759.3124026],[312104.0272362754,9999762.873354137],[312102.84025244135,9999766.434305679],[312108.181679748,9999783.645571467],[312104.62072819006,9999790.173982628],[312081.47454318404,9999800.85683726],[312069.6047047097,9999780.084619924],[312045.271535825,9999786.613031086],[312010.25551234,9999792.547950324],[311998.3856738638,9999802.043821102],[311977.6134565482,9999812.133183809],[311959.2152069248,9999813.320167653],[311953.2802876886,9999803.824296873],[311946.75187656283,9999805.011280723],[311946.7518765433,9999812.726675734],[311940.2234653691,9999817.474611122],[311928.94711891003,9999818.661594966],[311923.0121996347,9999815.100643424],[311907.58140966576,9999816.287627272],[311908.17490157485,9999827.563973822],[311900.45950660016,9999829.937941521],[311893.9310954232,9999818.068103047],[311855.9476123322,9999828.750957672],[311838.7363465242,9999834.685876908],[311815.59016151633,9999841.21428807],[311798.97238766495,9999850.116666924],[311772.26525110006,9999850.116666924],[311755.6474772282,9999844.775239611],[311743.77763875015,9999830.53143344],[311738.4362114435,9999815.100643424],[311732.5012922026,9999807.385248415],[311725.9728810396,9999809.759216111],[311726.56637298036,9999820.442070737],[311728.9403406689,9999829.937941521],[311731.907800287,9999841.21428807],[311731.31430836394,9999847.742699232],[311716.47701026034,9999857.832061933],[311702.82669603825,9999851.897142695],[311697.48526871577,9999853.67761847],[311687.9893979328,9999863.173489245],[311679.08701908495,9999861.986505399],[311668.99765637703,9999853.084126545],[311663.65622906573,9999856.05158616],[311659.50178559497,9999863.76698117],[311639.91655211896,9999870.295392333],[311586.50227899663,9999880.384755034],[311556.2341908766,9999882.165230807],[311528.34007047303,9999881.571738882],[311528.34007047117,9999891.06760966],[311515.85733001214,9999901.551364936],[311509.44769629557,9999902.176235756],[311500.4459501542,9999894.628561206],[311487.9826197643,9999892.254593508],[311476.11278127413,9999885.726182347],[311458.3080235729,9999885.726182347],[311445.84469317086,9999883.352214657],[311442.2837416278,9999876.823803494],[311414.9831131473,9999891.661101583],[311421.48444964923,9999910.300459439],[311395.9913715832,9999921.33569777],[311393.02391113713,9999910.809652572],[311394.2108958196,9999901.750464287],[311397.1783554312,9999888.100150043],[311368.6907430934,9999886.913166193],[311351.4794773152,9999887.506658118],[311341.39011460263,9999883.352214657],[311322.99186497554,9999889.880625812],[311322.9918649737,9999893.441577356],[311319.43091343995,9999898.189512745],[311304.59361533634,9999894.035069281],[311292.7237768667,9999891.06760966],[311277.2929868465,9999879.197771186],[311259.48822914343,9999875.636819644],[311257.1142614456,9999881.571738882],[311245.8379149074,9999878.604279263],[311235.7485521948,9999877.417295419],[311233.3745845128,9999873.856343873],[311226.846173347,9999867.921424635],[311220.91125412006,9999873.262851948],[311212.6023671841,9999880.384755034],[311210.82189141586,9999885.726182347],[311192.4236417832,9999882.758722732],[311176.9928517742,9999878.604279263],[311165.1230132887,9999868.51491656],[311106.2378942603,9999877.079393726],[311065.9126843186,9999870.932951361],[311067.7903380105,9999854.864602314],[311059.4814510811,9999854.864602314],[311033.96129835583,9999854.864602314],[311013.18908105604,9999853.67761847],[310997.7582910126,9999851.30365077],[310992.41686370317,9999840.620796146],[310982.3275010148,9999836.466352683],[310971.05115446355,9999834.092384983],[310966.30321908183,9999825.190006128],[310959.1813159827,9999827.563973822],[310955.62036444806,9999834.092384983],[310939.59608250204,9999831.124925364],[310934.8481471222,9999825.78349805],[310916.44989749976,9999812.133183809],[310892.71022054274,9999808.572232263],[310857.10070513934,9999812.133183809],[310840.4829313019,9999812.133183809],[310812.5888108788,9999804.417788798],[310806.65389165096,9999800.85683726],[310796.56452894025,9999802.637313027],[310783.50770661887,9999803.824296873],[310768.0769166034,9999790.173982628],[310749.6786669791,9999796.702393789],[310737.8088284936,9999787.20652301],[310718.2235950157,9999788.39350686],[310696.8578857733,9999793.141442249],[310689.73598269187,9999788.986998785],[310679.6466199942,9999790.767474553],[310668.37027343176,9999775.336684536],[310647.0045642033,9999775.336684536],[310645.81758037116,9999766.434305679],[310633.94774187915,9999764.653829912],[310630.98028226756,9999755.15795913],[310614.9560003234,9999761.686370289],[310613.1755245682,9999774.149700688],[310606.6471134024,9999781.271603774],[310600.118702217,9999783.052079549],[310591.8098153034,9999772.96271684],[310585.2814041581,9999765.840813756],[310573.41156568006,9999769.4017653],[310569.25712220743,9999780.67811185],[310565.6961706579,9999793.141442249],[310549.07839679904,9999793.141442249],[310534.834590639,9999801.450329179],[310506.94047022704,9999802.637313027],[310458.27413249295,9999809.165724188],[310437.5019151559,9999808.572232263],[310420.88414130453,9999819.25508689],[310313.16785025876,9999840.902351383],[310289.1289343368,9999837.653336525],[310280.22655556444,9999845.368731534],[310253.5194190098,9999850.116666924],[310246.9910078617,9999847.742699232],[310223.8448228426,9999856.05158616],[310210.78800054453,9999863.173489245],[310187.0483235959,9999861.986505399],[310169.24356586393,9999879.79126311],[310150.8453162201,9999897.002528897],[310095.65056735184,9999914.807286609],[310056.4801003728,9999922.003376188],[310000.7132371422,9999947.475216486],[309932.3539286768,9999975.562028848],[309889.65941227134,9999995.536098205],[309880.6457536826,9999997.789512848],[309869.62905985117,9999997.789512848],[309860.61540129874,9999994.53458058],[309853.8551573362,9999985.52092199],[309848.5971898157,9999967.994363617],[309846.09339576215,9999964.489051946],[309834.3255636953,9999975.756125182],[309838.08125478774,9999981.514851503],[309838.5820136061,9999989.276613072],[309837.5804959852,9999991.780407125],[309833.82480491046,9999993.783442365],[309831.3210108541,9999994.284201179],[309831.3210108392,9999999.542168686],[309830.31949323975,10000003.506509272],[309826.64726197347,10000003.84034848],[309823.3088698862,10000004.508026892],[309821.3058346398,10000005.843383726],[309820.9719954431,10000007.512579761],[309822.97503068484,10000009.515615],[309821.63967384864,10000011.852489447],[309818.30128177255,10000014.857042313],[309813.9613720942,10000015.85855994],[309810.6229800163,10000013.187846277],[309804.9477134915,10000018.52927359],[309797.2694117371,10000013.187846277],[309795.26637650654,10000007.178740552],[309792.26182362065,10000005.175705308],[309790.92646678723,10000000.501956409],[309786.5865570884,10000001.16963482],[309780.5774513865,10000003.84034848],[309772.89914960973,10000005.509544516],[309765.8885262832,10000004.17418769],[309762.5501342155,10000002.171152445],[309757.8763853265,10000000.835795615],[309750.531922766,10000004.841866098],[309736.84451526403,10000013.187846277],[309736.8445152594,10000018.863112796],[309733.50612319633,10000027.209092975],[309730.50157034025,10000034.219716324],[309726.49549985677,10000035.221233947],[309722.48942935,10000036.556590777],[309717.14800205734,10000037.891947601],[309709.1358610913,10000036.556590777],[309720.7912513744,10000082.54264034],[309716.96443634015,10000085.867469836],[309657.05694487225,10000109.333537921],[309652.38319598045,10000099.986040125],[309628.34677307867,10000109.667377127],[309631.68516515754,10000118.013357302],[309591.38167388644,10000135.261244347],[309563.0433683116,10000137.36999845],[309559.9097357197,10000130.365407968],[309525.1364288451,10000140.940795919],[309497.3973828284,10000146.544095995],[309486.8412562655,10000148.676727198],[309483.19678331073,10000146.191859266],[309482.5291048959,10000137.178200675],[309470.84473267104,10000135.50900464],[309455.4881291585,10000135.50900464],[309453.1512547042,10000135.50900464],[309450.81438025367,10000134.507487016],[309446.80830978043,10000134.507487016],[309443.4699177155,10000134.507487016],[309440.4653648464,10000133.505969401],[309436.1254551541,10000134.841326227],[309429.7825102061,10000138.513557505],[309420.435012416,10000141.184271159],[309411.75519303326,10000141.518110365],[309407.7491225386,10000133.505969401],[309387.3849309264,10000135.175165437],[309385.38189568,10000144.856502436],[309383.04502121825,10000144.856502436],[309381.37582517974,10000132.83829098],[309377.7035938939,10000129.83373812],[309374.69904105924,10000131.836773366],[309370.6929705627,10000132.83829098],[309369.0237745354,10000136.510522263],[309366.3862096444,10000152.870834364],[309363.0420095064,10000154.115449913],[309363.99695615564,10000140.353448888],[309360.5684798034,10000120.891407022],[309357.2026236309,10000093.844282147],[309350.2830584422,10000038.22782899],[309348.6097014174,10000024.826938638],[309345.5081045851,9999999.9998417],[309343.827942159,9999986.550777443],[309338.52435330115,9999944.082946783],[309336.0820779158,9999928.172194757],[309329.9609996872,9999884.860986162],[309327.27186801564,9999854.672254566],[309325.7916033538,9999838.06454659],[309322.8833944043,9999811.16664314],[309319.52623569407,9999780.115525668],[309318.9794920059,9999775.058576796],[309317.9536917517,9999765.569103261],[309312.5666524591,9999722.850732807],[309311.914207262,9999666.117535084],[309313.4634458143,9999615.158868792],[309314.5114156315,9999614.779764188],[309314.0366765559,9999608.26930809],[309315.4679204561,9999599.389493942],[309314.7991086496,9999596.65367317],[309318.05841837917,9999556.268184813],[309341.02520957496,9999440.107488632],[309341.13940636814,9999440.117349623],[309341.6040933123,9999437.234331353],[309344.89501789864,9999420.900526047],[309350.28393772524,9999388.790929796],[309350.57269314956,9999386.230318075],[309350.8736269865,9999383.56776429],[309352.33395742066,9999370.663935028],[309358.59974798,9999331.789615965],[309367.9170115227,9999313.278806686],[309365.46788148675,9999307.440530777],[309361.77067957446,9999312.116470924],[309361.7758084852,9999312.084650053],[309365.42002693005,9999307.060987474],[309364.17592826765,9999297.193819048],[309363.803110281,9999294.236963278],[309364.853151463,9999292.992177965],[309364.7607900277,9999290.821405413],[309363.30220619123,9999256.539464954],[309363.2581693167,9999255.504430773],[309363.2501317542,9999255.496065138],[309356.43033042084,9999118.843244553],[309350.4368154155,9999048.949987419],[309344.40780083276,9999000.090810774],[309305.038313061,9998898.172468185],[309209.8037625933,9998647.536317822],[309237.62940422446,9998461.291666042],[309174.44452873897,9998141.048383716],[309209.35702338535,9997963.961931234],[308811.44911399204,9997777.825815199],[308568.2704068925,9997548.595750812],[308150.96274772845,9996990.145772938],[308501.82329766266,9996094.465711595],[308951.625196605,9995457.631853102],[308983.6750089228,9995481.361173635],[309021.26209464483,9995527.255853657],[309089.3967725467,9995593.925169004],[309148.95616736915,9995509.776208881],[309252.42188467924,9995605.759611135],[309261.9342842512,9995595.584944043],[309261.9546023365,9995595.604697736]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Barat"}}, +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[315789.31163016893,9997114.79528131],[315785.0355636161,9997126.636696348],[315778.35877948254,9997135.984194146],[315772.6835129522,9997131.978123661],[315758.9961054642,9997154.345350537],[315759.32994467486,9997156.682224993],[315760.33146229666,9997158.017581815],[315762.0006583277,9997161.022134678],[315762.0006583426,9997164.026687546],[315754.3223565817,9997174.04186376],[315751.65164291393,9997172.038828513],[315740.3011098765,9997193.070698563],[315753.1318133576,9997201.50230371],[315763.6698543653,9997208.427302085],[315739.96727066394,9997236.135956278],[315734.8764076121,9997232.786704259],[315727.28138080426,9997227.7899761],[315714.59549093526,9997246.818810903],[315680.8777310066,9997294.557817515],[315678.2070173519,9997293.890139101],[315672.1979116285,9997293.222460689],[315667.8580019381,9997298.563888002],[315664.18577066064,9997297.562370379],[315661.84889620356,9997300.90076245],[315667.5241627367,9997305.574511351],[315665.60171542875,9997312.528221639],[315658.1766650034,9997305.240672145],[315639.8155086227,9997327.607899021],[315638.48015179764,9997332.281647917],[315639.4816694092,9997335.953879194],[315645.1569359265,9997339.959949682],[315615.44524651486,9997373.343870388],[315616.2784559522,9997379.40425202],[315609.10230165627,9997376.68226246],[315597.41792939976,9997391.037348365],[315590.0734668514,9997386.363599468],[315574.38302412815,9997401.386363784],[315577.0537377922,9997404.057077441],[315577.053737754,9997411.735379204],[315579.6829920225,9997416.172245745],[315582.395165083,9997420.749037798],[315550.98028959613,9997444.15718468],[315537.70012471545,9997456.501001358],[315523.5012207348,9997469.500501644],[315519.5511059882,9997472.727217544],[315514.625806205,9997467.486526791],[315489.9217048893,9997489.853753665],[315480.57420708984,9997485.513843972],[315476.2342973994,9997490.855271285],[315473.2297445396,9997489.519914456],[315469.22367405705,9997492.190628113],[315466.5529603921,9997488.518396836],[315468.5559956338,9997485.513843972],[315457.53930180054,9997476.50018538],[315454.5347489426,9997479.504738247],[315448.19180400576,9997477.501703005],[315441.5150198629,9997482.509291107],[315438.51046700496,9997482.843130318],[315436.84127095994,9997486.793560931],[315435.95103308465,9997493.025226131],[315399.06527819764,9997535.138520481],[315382.0238299174,9997546.687270554],[315370.33424143214,9997554.292544989],[315369.34837251715,9997559.221889531],[315355.9326534653,9997563.693795891],[315354.13782365434,9997564.292072488],[315350.6168632759,9997564.996264566],[315347.9409333747,9997564.292072488],[315346.1100339731,9997562.883688334],[315345.4058418954,9997561.193627348],[315345.5466803126,9997558.658535872],[315346.6733876299,9997556.12344439],[315328.9770530537,9997538.548317583],[315326.1109789731,9997535.701874144],[315310.58785018325,9997543.947629757],[315303.99976552464,9997534.49980927],[315303.70058453456,9997534.80043602],[315283.7008572994,9997538.30065537],[315285.80027401634,9997542.500867851],[315289.6854030555,9997547.773818914],[315297.72421398014,9997542.468203701],[315303.35775059834,9997548.289524876],[315297.1608603122,9997551.669646844],[315307.4890107829,9997564.063427413],[315304.0584796872,9997566.007395029],[315301.85547415726,9997567.255764827],[315322.63696481474,9997594.453227732],[315324.8903794531,9997593.451710105],[315331.095972362,9997599.444728501],[315327.90016759187,9997603.80058861],[315316.28070184495,9997610.983311217],[315312.4517775234,9997605.779225318],[315314.6248238385,9997603.717265723],[315313.4067707192,9997601.288890246],[315292.84181557316,9997578.679325195],[315283.8281569816,9997577.928186975],[315261.04916497134,9997549.401225004],[315255.31536998414,9997554.315941535],[315252.1968921963,9997550.306470083],[315211.07207487617,9997585.609966232],[315213.02471524756,9997590.565333256],[315221.5880099796,9997598.567100456],[315203.5606928021,9997613.77764933],[315195.4859569771,9997613.965433883],[315167.6938429894,9997638.75299501],[315166.75492021814,9997646.076592615],[315146.55801786017,9997665.956935925],[315152.0001985198,9997675.699508667],[315146.6628338061,9997679.618736245],[315147.2722728215,9997681.168831142],[315147.6947880555,9997683.563084206],[315115.16111408826,9997709.19567583],[315109.9500927264,9997706.09723069],[315107.1333244052,9997707.223938009],[315103.34548747446,9997703.635460911],[315101.7814646233,9997702.15375505],[315093.0659793895,9997710.098898957],[315090.37355305534,9997706.942261176],[315085.86672376003,9997706.801422765],[315071.6420437908,9997719.195203329],[315084.17666277196,9997731.870660719],[315085.719214458,9997730.335282555],[315097.8379891487,9997719.617718572],[315104.4008199284,9997723.400815971],[315059.800319816,9997757.599702843],[315058.4658278283,9997759.420219662],[315054.7101367535,9997754.913390366],[315077.9008027734,9997737.400606165],[315074.10201468505,9997729.800136574],[315068.73138352204,9997725.869379349],[315031.9256109465,9997758.168322634],[315035.5760604907,9997763.932190355],[315032.11807837244,9997766.777348684],[315028.4202993568,9997761.924013715],[315024.91498768236,9997763.927048957],[315016.652467303,9997751.157699287],[314950.05154549424,9997802.73585678],[314963.5720333718,9997819.010518126],[315009.64184395596,9997781.954366138],[315010.45435557514,9997784.601825247],[315016.5968275126,9997791.621793177],[314966.29838698544,9997831.237379085],[314921.57946626376,9997867.633244706],[314882.158735577,9997899.717015814],[314838.6396651864,9997935.489973348],[314788.582040973,9997976.51894231],[314751.86233630124,9998007.226281092],[314709.46475699637,9998042.27939784],[314615.1590492027,9998119.066201553],[314544.8820281485,9998175.481241466],[314542.42780631967,9998174.172502475],[314542.16881853994,9998174.433299553],[314524.18399138656,9998154.783210626],[314519.0501926765,9998152.942815918],[314518.03876339365,9998151.484955266],[314472.76238899026,9998086.22419411],[314448.31007648166,9998045.523524182],[314411.96176308393,9998016.638999099],[314368.34365795087,9997995.631907383],[314316.79493191,9997975.937651983],[314283.75085146446,9997965.433993299],[314264.58529950865,9997957.556299914],[314242.7761926409,9997951.647958921],[314201.14058723487,9997943.770050254],[314111.92139622103,9997928.014166882],[313987.67534380965,9997907.006250668],[313792.0537576722,9997874.181317262],[313730.5915626511,9997861.051492369],[313673.0946248863,9997851.860466957],[313543.5612360602,9997831.508870512],[313274.5810466977,9997779.645638071],[313156.28250041883,9997759.950537452],[313121.25556579325,9997752.07261883],[312990.40014431626,9997725.812722636],[312835.75270744786,9997696.92668471],[312778.91647019517,9997683.796797838],[312711.5060471911,9997666.728004364],[312672.5137202004,9997658.193546096],[312576.0242391601,9997633.903306589],[312513.2399874544,9997616.178067025],[312395.6020770259,9997583.35350599],[312306.3822748838,9997558.406817177],[312273.99876188766,9997551.185328674],[312248.2241876414,9997540.025119638],[312221.78866073303,9997534.116625944],[312185.43981851917,9997524.92568772],[312146.4474784266,9997509.826522341],[312122.6555389054,9997500.63572262],[312049.95791851263,9997473.71976175],[311888.04042918794,9997412.666451812],[311773.0459121922,9997368.681771366],[311701.0091315489,9997337.826924767],[311683.826057991,9997329.292635923],[311630.95499833673,9997307.628549505],[311498.77730660513,9997253.140051948],[311215.2560821427,9997125.125000844],[311184.1942686094,9997113.308143511],[311069.1996472683,9997054.224359918],[311011.0414354205,9997024.0259653],[310981.9623896405,9997004.331475206],[310947.5961728543,9996985.949844288],[310923.14324902184,9996975.445984319],[310890.7596793482,9996959.033781137],[310796.2527259877,9996896.011307977],[310743.38167693187,9996861.874086706],[310730.16382646933,9996859.248011224],[310713.6416188283,9996848.744242767],[310693.15413060784,9996832.332180375],[310676.6319704,9996818.546055743],[310652.8400961589,9996796.225703359],[310634.3351224065,9996790.973660816],[310626.40451362915,9996782.439423721],[310613.18675622996,9996773.248635367],[310592.0383495623,9996758.149489181],[310568.2463820912,9996741.737358034],[310547.09798337985,9996725.98173461],[310515.3753024563,9996707.600061074],[310506.7837568987,9996701.69168968],[310492.90513113234,9996690.531467743],[310475.06108243763,9996682.653537879],[310458.538833444,9996674.119156167],[310449.9473893326,9996661.646070397],[310430.78166093305,9996646.546932489],[310414.25945147313,9996635.386661163],[310403.6851967657,9996630.791195152],[310387.162923608,9996623.569749136],[310371.30160760786,9996612.409484183],[310340.2400169531,9996580.8983591],[310284.0645566303,9996538.883271264],[310249.6983449906,9996515.906200934],[310231.85439061373,9996501.463528944],[310220.61929875985,9996492.92921023],[310192.8620652091,9996468.63929122],[310163.7830055803,9996446.31875979],[310142.6345565878,9996432.532492641],[310124.12984671723,9996409.555657197],[310111.57296029944,9996401.02130684],[310095.0506616365,9996394.456304885],[310075.8849323187,9996378.700644862],[310059.3627325101,9996366.227388928],[310045.4841297548,9996353.097703964],[310012.43995523825,9996315.021732662],[309972.78671138175,9996282.853887161],[309929.8291081954,9996243.46477101],[309893.4802284958,9996217.861686876],[309838.6267803358,9996161.404029787],[309713.7195260385,9996033.38945572],[309682.6579286689,9996001.878146673],[309572.2901590308,9995888.306090303],[309498.67079864163,9995815.346889103],[309262.7740293015,9995594.714084359],[309261.9546023365,9995595.604697736],[309261.9342842512,9995595.584944043],[309331.5392591115,9995521.133966444],[310136.68557945266,9994659.9322834],[310667.65555014554,9994091.996965405],[310826.27713599056,9993922.332159044],[310953.4009496225,9993701.465684893],[311019.58230032213,9993401.463056562],[311203.34632696956,9993221.538366316],[311328.0338828182,9993110.43067998],[311464.2981626112,9993237.237611568],[311583.1240564482,9993361.298415007],[311698.8146935431,9993476.70447159],[311791.3865605304,9993562.847736362],[311831.2455023378,9993609.353713805],[311933.5955735147,9993711.485351564],[312024.1709385803,9993817.553869251],[312144.96875771787,9993919.369174963],[312377.7419684185,9994156.134022819],[312632.938568864,9994400.914434949],[312719.480522451,9994487.888800044],[312800.3384179259,9994573.037548339],[312910.85608681757,9994676.82805443],[312985.8904209994,9994747.295080187],[313133.16059406754,9994901.098993659],[313244.28964982554,9995007.147864316],[313332.8099315511,9995091.621504825],[313445.53052338585,9995199.189155584],[313530.5864944523,9995287.25620945],[313591.36310395226,9995350.184383398],[313786.20826420654,9995517.413693674],[314123.4556103572,9995806.862203602],[314433.7916527614,9996073.213611608],[314587.6517598983,9996224.513288783],[314885.72711189743,9996509.767637255],[315023.1827240791,9996639.832895283],[315046.4192467546,9996645.813648228],[315109.47807479557,9996694.191427493],[315245.91340217274,9996792.288415588],[315339.0356217222,9996854.193527224],[315491.8881761376,9996944.624620387],[315654.15857171454,9997048.159979532],[315789.31163016893,9997114.79528131]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Kota"}}, +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[313464.6257165661,9991095.677634751],[314786.91458332725,9989856.24349022],[315563.4512463799,9989126.991254823],[315932.90499700233,9989610.339708328],[316038.154653674,9989800.842035292],[316191.6698895693,9990046.09898949],[316563.7178555727,9990615.53420067],[316951.3669873411,9991174.57535744],[317294.0364896087,9991752.127611158],[317391.97430622485,9991913.905954368],[317392.6399899768,9991914.002607346],[317530.2517415127,9992121.183420181],[317530.39023030084,9992121.677507408],[317530.6374226669,9992121.764081957],[317556.4211827433,9992160.582696917],[317627.82835208904,9992268.693788527],[317670.35562716424,9992341.596616745],[317749.75936709717,9992490.178377159],[317799.1191388266,9992586.444173822],[317799.8696805136,9992587.90794182],[317800.1590253012,9992588.47224999],[317800.14335834887,9992588.493021013],[318149.79971514083,9993336.000791553],[318358.9924022276,9993511.89839686],[318349.8726185337,9993518.846803479],[318351.65309428144,9993538.432036962],[318350.3177374676,9993543.773464276],[318345.8665480567,9993547.334415821],[318340.5251207296,9993551.785605246],[318337.4092881251,9993555.79167573],[318335.6288123643,9993563.358697759],[318333.84833659325,9993571.815957671],[318331.17762293015,9993581.163455471],[318328.9520282261,9993586.950001726],[318331.62274188455,9993594.962142695],[318332.0678608259,9993601.638926838],[318332.0678608231,9993609.651067808],[318330.73250399344,9993614.547376178],[318326.7264335146,9993619.888803491],[318320.9398872517,9993622.559517149],[318311.5923894476,9993624.339992924],[318307.5863189548,9993626.565587634],[318294.67786963005,9993640.364274861],[318290.22668020334,9993638.138680145],[318281.32430135366,9993636.358204374],[318272.86704142485,9993637.693561204],[318263.0744246999,9993642.14475063],[318259.06835421175,9993645.260583231],[318258.62323526386,9993650.156891601],[318259.513473155,9993655.498318914],[318277.76334980596,9993666.626292484],[318279.09870663565,9993664.400697773],[318282.2145392485,9993666.626292484],[318273.3121603746,9993678.199384997],[318270.64144672453,9993676.864028173],[318272.42192247696,9993670.187244028],[318263.0744246952,9993665.29093566],[318261.73906786554,9993667.961649314],[318258.62323526386,9993669.297006141],[318253.28180796653,9993671.52260086],[318251.94645111635,9993677.754266053],[318261.29394892044,9993683.54081231],[318245.1000511963,9993708.099788683],[318237.99956443906,9993719.799833301],[318236.720412774,9993724.623985434],[318249.27573753335,9993734.72949073],[318243.4891912928,9993741.851393819],[318239.0380018605,9993739.6257991],[318233.14182341844,9993747.346985145],[318220.3430062616,9993764.107340956],[318195.861464411,9993751.198891614],[318193.1907507498,9993755.204962099],[318215.4466978768,9993771.674362985],[318212.77598423045,9993777.906028185],[318208.76991375536,9993782.802336555],[318197.6419401746,9993794.82054801],[318190.5200370867,9993808.619235234],[318196.30658334587,9993809.064354178],[318178.50335419085,9993842.250000738],[318172.27016044036,9993841.112918058],[318157.64274772163,9993870.367743501],[318146.45326176006,9993892.74671542],[318140.30672545824,9993889.437042026],[318129.0936229965,9993883.399217624],[318128.20338509977,9993886.06993128],[318109.95350846555,9993878.057790313],[318107.28279480524,9993885.179693393],[318107.727913741,9993888.740644937],[318104.16696220264,9993895.41742908],[318100.1608917145,9993899.423499562],[318096.1548212264,9993902.539332166],[318085.4719666019,9993920.344089873],[318090.8133939281,9993923.459922474],[318092.593869688,9993927.020874016],[318089.4780370947,9993929.24646873],[318085.917085547,9993932.807420272],[318080.5756582385,9993939.929323357],[318076.5695877569,9993943.490274902],[318072.5635172678,9993950.16705904],[318088.14268025197,9993960.84991367],[318081.4658961138,9993968.862054639],[318075.67934986576,9993970.64253041],[318062.77090051863,9993982.21562292],[318072.1601438774,9993992.686169364],[318063.10011414904,9994009.899705907],[318052.20058563724,9994030.400775911],[318040.70105486177,9994047.800537128],[318036.1001789933,9994055.500951767],[318021.0987002989,9994071.52173229],[318004.74057917297,9994064.844948148],[317993.390046129,9994084.875300575],[318001.40218709223,9994093.55511996],[317999.399151857,9994096.559672825],[317988.71629722416,9994091.885923924],[317987.3809403796,9994095.224315995],[317989.05013644136,9994097.227351235],[317985.71174437646,9994101.567260934],[317979.7026386354,9994100.231904102],[317976.69808576535,9994107.576366656],[317992.05468930677,9994115.922346834],[317984.3763875365,9994128.94207591],[317954.76244624984,9994180.1161544],[317950.32478848565,9994177.682600148],[317944.98336117156,9994187.030097943],[317943.3141651368,9994186.362419533],[317937.63889861666,9994186.362419533],[317929.62675765343,9994183.691705873],[317926.9560439903,9994185.360901907],[317920.27925985213,9994188.031615568],[317918.6100638136,9994191.37000764],[317918.6100638164,9994199.715987813],[317936.28761848435,9994211.058955045],[317930.49958163034,9994219.700899135],[317923.2999146627,9994233.299760828],[317922.4443548331,9994234.901341677],[317928.95907930564,9994240.110531872],[317909.59640528914,9994265.482311614],[317906.0291264774,9994262.093396736],[317902.9196211491,9994259.139366675],[317904.58881718945,9994256.468653018],[317898.2458722573,9994252.128743328],[317892.2367665246,9994242.781245528],[317885.2261431888,9994235.102943765],[317883.5569471447,9994231.764551694],[317859.9155117087,9994210.55445769],[317855.5144537529,9994215.740269756],[317876.212484587,9994233.099908523],[317872.54025331605,9994235.436782971],[317870.53721806686,9994238.107496632],[317872.5402533272,9994241.112049492],[317868.5341828298,9994247.121155221],[317873.87561015226,9994250.125708086],[317872.20641410723,9994255.4671354],[317878.8831982454,9994261.476241125],[317874.20944936015,9994266.149990024],[317859.5205242345,9994257.804009847],[317854.17909692787,9994266.149990024],[317860.52204186004,9994272.826774167],[317854.84677533526,9994278.16820148],[317850.50686563924,9994274.495970203],[317845.83311674464,9994284.511146419],[317868.8680220293,9994302.538463596],[317867.53266521543,9994304.875338046],[317874.0540827429,9994309.570898613],[317870.39963277336,9994315.300451282],[317861.7006371636,9994328.199546833],[317860.736260985,9994329.625120874],[317850.5810522018,9994322.661549138],[317846.1298627751,9994327.557857506],[317839.8981975801,9994329.783452224],[317835.4470081553,9994326.667619621],[317833.2214134345,9994331.563927991],[317832.3311755685,9994341.356544737],[317827.879986126,9994347.58820993],[317812.30082312506,9994334.234641649],[317801.17284956854,9994331.118809048],[317796.7216601232,9994339.576068962],[317819.4227262167,9994359.161302447],[317816.3068936197,9994364.50272976],[317810.7997849798,9994376.300308244],[317804.299569455,9994381.500646599],[317791.30080920365,9994394.700265897],[317780.89899761416,9994405.999437334],[317777.3001111308,9994409.900587087],[317763.0002301838,9994425.39980317],[317748.20116363093,9994440.201000215],[317734.2004712559,9994455.200908674],[317720.19973503705,9994471.900918977],[317704.301265127,9994491.201137543],[317688.00096640456,9994511.800609596],[317671.5006936453,9994530.10045434],[317655.3013757253,9994546.800420772],[317639.20119605865,9994563.699081423],[317623.3010514872,9994580.400785457],[317607.40091645997,9994596.800138488],[317591.1007741485,9994611.000064865],[317580.3006681148,9994621.3006115],[317575.0006612465,9994625.199998856],[317573.40039192885,9994626.500951786],[317572.80026183836,9994628.201036457],[317570.5007070312,9994631.699663166],[317565.2006391324,9994638.10082436],[317557.5001786724,9994646.100091951],[317548.70039880555,9994655.099699028],[317540.10065027326,9994664.101036072],[317531.7009385722,9994672.80002595],[317523.00031797215,9994681.300317772],[317513.8004793413,9994690.299917227],[317503.69964365475,9994699.10080338],[317493.4996905308,9994706.700906763],[317485.8009924954,9994713.699815754],[317480.3008762095,9994720.900922775],[317474.60072088614,9994728.50113488],[317468.19959982764,9994735.70049477],[317461.80023152754,9994742.400535587],[317454.6998954341,9994748.900142677],[317447.5004306361,9994754.700012209],[317433.4998126691,9994766.500177387],[317426.5003696084,9994772.600679405],[317412.4005866451,9994785.300998691],[317397.10058741085,9994799.599456793],[317382.7015891839,9994813.99987603],[317367.99990806356,9994829.699552538],[317351.4005542584,9994845.30070687],[317333.9001803985,9994861.599851612],[317316.1006579958,9994876.800146108],[317299.29959829245,9994889.600626001],[317284.59974059276,9994901.5994816],[317270.90002400987,9994913.900718695],[317261.90194659494,9994923.20096971],[317258.8005309757,9994926.900003433],[317258.0995403109,9994927.599723822],[317257.60031850357,9994928.29944993],[317254.5006671427,9994930.899637224],[317244.7007518485,9994939.299715053],[317229.4007526301,9994953.499712003],[317211.30031546485,9994968.599803943],[317190.9995399201,9994984.000476843],[317171.30052528065,9995002.500743868],[317152.7007289715,9995024.30103494],[317133.300841894,9995044.900527965],[317111.99984128587,9995063.599460604],[317090.90059433784,9995082.999864578],[317071.79988059774,9995103.601102838],[317052.7009330783,9995123.100042345],[317031.70082628727,9995142.700880053],[317009.49877510034,9995163.400541317],[316988.99954184704,9995186.299669275],[316969.10043680295,9995207.400226597],[316948.30034601036,9995227.600612644],[316928.0011688443,9995249.30069924],[316909.1004291959,9995272.60071564],[316892.0000206325,9995293.10009194],[316874.40040552244,9995313.699670801],[316854.69957886916,9995335.399784094],[316851.10069049615,9995339.39944841],[316844.11237153504,9995347.146513999],[316743.4093666822,9995233.596603395],[316566.6775685102,9995075.446392063],[316586.04398544226,9995037.886461264],[316468.2173310099,9994906.148168566],[316319.94064720254,9994746.320627218],[316212.90348251164,9994585.734216692],[316067.6151657868,9994360.088901522],[315868.68425186165,9994136.941616064],[315454.92703827284,9993663.840604784],[315060.59281357285,9993220.49842644],[314703.11844932195,9992797.87805563],[314415.57445915695,9992459.996366503],[314189.58726242837,9992172.885796294],[313893.55349308904,9991727.144642543],[313547.2465840243,9991219.228366857],[313469.70677193534,9991105.99088669],[313464.6257165661,9991095.677634751]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Tenggara"}} +]} \ No newline at end of file diff --git a/webgis03/index.html b/webgis03/index.html new file mode 100644 index 0000000..5132387 --- /dev/null +++ b/webgis03/index.html @@ -0,0 +1,156 @@ + + + + + + + + Peta Kepadatan Penduduk - Kota Pontianak + + + + + + + + + + +
+ + + + + + + diff --git a/webgis03/pontianak-kecamatan.js b/webgis03/pontianak-kecamatan.js new file mode 100644 index 0000000..cfbc28e --- /dev/null +++ b/webgis03/pontianak-kecamatan.js @@ -0,0 +1 @@ +var kecamatanData = {"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.373693,-0.062143],[109.374575,-0.061419],[109.374859,-0.061186],[109.375308,-0.060853],[109.37645,-0.060024],[109.376687,-0.059852],[109.378309,-0.058676],[109.37948,-0.057806],[109.37948,-0.057806],[109.384897,-0.053612],[109.384821,-0.053385],[109.383225,-0.050929],[109.380741,-0.047151],[109.379609,-0.04577],[109.377889,-0.043672],[109.37672,-0.042266],[109.374834,-0.040155],[109.372537,-0.03775],[109.372502,-0.037745],[109.370994,-0.036182],[109.37325,-0.034241],[109.374678,-0.032803],[109.376011,-0.031439],[109.376031,-0.031293],[109.376087,-0.031276],[109.375541,-0.027246],[109.375557,-0.025895],[109.375707,-0.025298],[109.37636,-0.024509],[109.376304,-0.024486],[109.376276,-0.024459],[109.376262,-0.024437],[109.376288,-0.024437],[109.3763,-0.024414],[109.376313,-0.024384],[109.376295,-0.024372],[109.37633,-0.02427],[109.37631,-0.024259],[109.376317,-0.024235],[109.376027,-0.024087],[109.375984,-0.024174],[109.37615,-0.024257],[109.376135,-0.024286],[109.376055,-0.024254],[109.376023,-0.024254],[109.375878,-0.024175],[109.375849,-0.024206],[109.375809,-0.024212],[109.375738,-0.024223],[109.375708,-0.024327],[109.375657,-0.024303],[109.375718,-0.024175],[109.375393,-0.024041],[109.375336,-0.024009],[109.375284,-0.024085],[109.375127,-0.023997],[109.375184,-0.023924],[109.375197,-0.023909],[109.375076,-0.023864],[109.375011,-0.023828],[109.374974,-0.023837],[109.37495,-0.023841],[109.374923,-0.02389],[109.374809,-0.023831],[109.374825,-0.023769],[109.37479,-0.023732],[109.374635,-0.023646],[109.374559,-0.023637],[109.374421,-0.023708],[109.374183,-0.023574],[109.374178,-0.023469],[109.374037,-0.023418],[109.373921,-0.023402],[109.373649,-0.023313],[109.373605,-0.023345],[109.373569,-0.023325],[109.373549,-0.023289],[109.373529,-0.023233],[109.373485,-0.023209],[109.373429,-0.02316],[109.373417,-0.023112],[109.373049,-0.022971],[109.372973,-0.023092],[109.372793,-0.023031],[109.372733,-0.023096],[109.372605,-0.022987],[109.372529,-0.022907],[109.372489,-0.022842],[109.372461,-0.022798],[109.372397,-0.022782],[109.372305,-0.022778],[109.372245,-0.022754],[109.372181,-0.022717],[109.372085,-0.022673],[109.371946,-0.022629],[109.371862,-0.022593],[109.37181,-0.02256],[109.371746,-0.022564],[109.371702,-0.022589],[109.371623,-0.022509],[109.371572,-0.022496],[109.371479,-0.022457],[109.37141,-0.022412],[109.371362,-0.022373],[109.371299,-0.022324],[109.371212,-0.022288],[109.371095,-0.022246],[109.371002,-0.022216],[109.370969,-0.022198],[109.370921,-0.022161],[109.370897,-0.022119],[109.370858,-0.02208],[109.370747,-0.022237],[109.37072,-0.022228],[109.370762,-0.022116],[109.370531,-0.022044],[109.370438,-0.022059],[109.370252,-0.021977],[109.370162,-0.021932],[109.370108,-0.021962],[109.370057,-0.02201],[109.369889,-0.022001],[109.369808,-0.021995],[109.369748,-0.021971],[109.369703,-0.021932],[109.369631,-0.021953],[109.369568,-0.021935],[109.369535,-0.021908],[109.369577,-0.021829],[109.369508,-0.021787],[109.369469,-0.021856],[109.3694,-0.021862],[109.36934,-0.021862],[109.369245,-0.021835],[109.369158,-0.021841],[109.36905,-0.02185],[109.369014,-0.02182],[109.368966,-0.021775],[109.368915,-0.02173],[109.368876,-0.021687],[109.368798,-0.021654],[109.36869,-0.021642],[109.368609,-0.021606],[109.368597,-0.021558],[109.368672,-0.021394],[109.368381,-0.021304],[109.368267,-0.021292],[109.36809,-0.021262],[109.368072,-0.021304],[109.368003,-0.021301],[109.367985,-0.021382],[109.367949,-0.021404],[109.367874,-0.021407],[109.36785,-0.021452],[109.367841,-0.021545],[109.367811,-0.021579],[109.367805,-0.021542],[109.367808,-0.0215],[109.367793,-0.021482],[109.367754,-0.021449],[109.367697,-0.021431],[109.367649,-0.021416],[109.367574,-0.021364],[109.36755,-0.021355],[109.367505,-0.021364],[109.367469,-0.021388],[109.367412,-0.021361],[109.367379,-0.021343],[109.367325,-0.021352],[109.367283,-0.021361],[109.367223,-0.021376],[109.367172,-0.021376],[109.367124,-0.021358],[109.367052,-0.021364],[109.367013,-0.021397],[109.366983,-0.021385],[109.366944,-0.021355],[109.36683,-0.021334],[109.36677,-0.021301],[109.366692,-0.021304],[109.366558,-0.021292],[109.366492,-0.021265],[109.366441,-0.021228],[109.36662,-0.021228],[109.366635,-0.021129],[109.366186,-0.02112],[109.366108,-0.021352],[109.366051,-0.021348],[109.365956,-0.021346],[109.365818,-0.021345],[109.365632,-0.021333],[109.365615,-0.021318],[109.365597,-0.02128],[109.365568,-0.021241],[109.365553,-0.021214],[109.365531,-0.021209],[109.365467,-0.021251],[109.36545,-0.021255],[109.365432,-0.021268],[109.365421,-0.021292],[109.365413,-0.021307],[109.36541,-0.021272],[109.365422,-0.021256],[109.36542,-0.021233],[109.365411,-0.021209],[109.365403,-0.021177],[109.365384,-0.021155],[109.365351,-0.021139],[109.36531,-0.021112],[109.365268,-0.02111],[109.365241,-0.021126],[109.365201,-0.021129],[109.36515,-0.021109],[109.365098,-0.021109],[109.365061,-0.021117],[109.365028,-0.021124],[109.364991,-0.021112],[109.364959,-0.021092],[109.364936,-0.021092],[109.364888,-0.021088],[109.364872,-0.021066],[109.36485,-0.021048],[109.364806,-0.021065],[109.364779,-0.021085],[109.364728,-0.021097],[109.36471,-0.02108],[109.364713,-0.021061],[109.364705,-0.021046],[109.364674,-0.021046],[109.364652,-0.021059],[109.364615,-0.021068],[109.364595,-0.021068],[109.36458,-0.021042],[109.36457,-0.021008],[109.364534,-0.020997],[109.36449,-0.021019],[109.364472,-0.021064],[109.364472,-0.021097],[109.36449,-0.021121],[109.364482,-0.021148],[109.36447,-0.021183],[109.364458,-0.021204],[109.36443,-0.021197],[109.364418,-0.021177],[109.364406,-0.021165],[109.364355,-0.02117],[109.36432,-0.021158],[109.364287,-0.021146],[109.364257,-0.02117],[109.364212,-0.021227],[109.364134,-0.021264],[109.364066,-0.021231],[109.36401,-0.021203],[109.36397,-0.021146],[109.363934,-0.021134],[109.363906,-0.021158],[109.363894,-0.021203],[109.36385,-0.021227],[109.36385,-0.021344],[109.363818,-0.02134],[109.363806,-0.021263],[109.363766,-0.021223],[109.363754,-0.021146],[109.363634,-0.02109],[109.363462,-0.021066],[109.363454,-0.02109],[109.363426,-0.021094],[109.363371,-0.021114],[109.363359,-0.021154],[109.363319,-0.021154],[109.363267,-0.021138],[109.363203,-0.021142],[109.363111,-0.021179],[109.363083,-0.021203],[109.363071,-0.021259],[109.363039,-0.021259],[109.363019,-0.021223],[109.362887,-0.021211],[109.362847,-0.021227],[109.362819,-0.021299],[109.362777,-0.021312],[109.362711,-0.021332],[109.362647,-0.021396],[109.362515,-0.021434],[109.362427,-0.021409],[109.362214,-0.021303],[109.362235,-0.021246],[109.362285,-0.021146],[109.362249,-0.021089],[109.362072,-0.021033],[109.361994,-0.021054],[109.36198,-0.021118],[109.361852,-0.021196],[109.361639,-0.021224],[109.361241,-0.021239],[109.36113,-0.021212],[109.361124,-0.02124],[109.36112,-0.021284],[109.361151,-0.021343],[109.361228,-0.021369],[109.361269,-0.021403],[109.361284,-0.021444],[109.361284,-0.02152],[109.361277,-0.021578],[109.361265,-0.021612],[109.361247,-0.021603],[109.361221,-0.021586],[109.361198,-0.021576],[109.361147,-0.021581],[109.361078,-0.02161],[109.361026,-0.021649],[109.360981,-0.021688],[109.360954,-0.021706],[109.360956,-0.021664],[109.360947,-0.021632],[109.360944,-0.021589],[109.360932,-0.021548],[109.360904,-0.021516],[109.3609,-0.021484],[109.36092,-0.02146],[109.360907,-0.021111],[109.3609,-0.021071],[109.360794,-0.021076],[109.360724,-0.021142],[109.360659,-0.021153],[109.360403,-0.02121],[109.360402,-0.021211],[109.36036,-0.021193],[109.360312,-0.021189],[109.360249,-0.021192],[109.360185,-0.021155],[109.360347,-0.021098],[109.360379,-0.021066],[109.360154,-0.021033],[109.359958,-0.021108],[109.35995,-0.021122],[109.35995,-0.021153],[109.359958,-0.02118],[109.359973,-0.021217],[109.360024,-0.021219],[109.360063,-0.021204],[109.36013,-0.021172],[109.360151,-0.02118],[109.360187,-0.021201],[109.360225,-0.021238],[109.360246,-0.021274],[109.360245,-0.021293],[109.360244,-0.021313],[109.360235,-0.021335],[109.360154,-0.02134],[109.360138,-0.021324],[109.36012,-0.021313],[109.360096,-0.021289],[109.360068,-0.021266],[109.360039,-0.02125],[109.360007,-0.021232],[109.359964,-0.021227],[109.359929,-0.021227],[109.359895,-0.021227],[109.359854,-0.02123],[109.359812,-0.021233],[109.359793,-0.021211],[109.359779,-0.021195],[109.359767,-0.02119],[109.359739,-0.021194],[109.359739,-0.021194],[109.359687,-0.021203],[109.359661,-0.021213],[109.359616,-0.021223],[109.359599,-0.021247],[109.359588,-0.021289],[109.359586,-0.021312],[109.359583,-0.021339],[109.359564,-0.021352],[109.359538,-0.021366],[109.359513,-0.021368],[109.359458,-0.021373],[109.359414,-0.021394],[109.359352,-0.021396],[109.359321,-0.02139],[109.359306,-0.0214],[109.359306,-0.021437],[109.359313,-0.021492],[109.359299,-0.021533],[109.359287,-0.021567],[109.359196,-0.021655],[109.359129,-0.021656],[109.359092,-0.021645],[109.359079,-0.021624],[109.359067,-0.021592],[109.35903,-0.021593],[109.359028,-0.021617],[109.359022,-0.021639],[109.359009,-0.021656],[109.35898,-0.021669],[109.358924,-0.021673],[109.35887,-0.021674],[109.358817,-0.021657],[109.358766,-0.021631],[109.358719,-0.021611],[109.3586,-0.02161],[109.35856,-0.021597],[109.358549,-0.021611],[109.358498,-0.021642],[109.358444,-0.021627],[109.358377,-0.021616],[109.358309,-0.021621],[109.358213,-0.021606],[109.358164,-0.021598],[109.358104,-0.021598],[109.358023,-0.021618],[109.3577,-0.02161],[109.3577,-0.021647],[109.357705,-0.021718],[109.357722,-0.021735],[109.357722,-0.021782],[109.357722,-0.021813],[109.357712,-0.021835],[109.357695,-0.021859],[109.35767,-0.021874],[109.35764,-0.02189],[109.357597,-0.021908],[109.357586,-0.021944],[109.35753,-0.021934],[109.357495,-0.021919],[109.357455,-0.021896],[109.357434,-0.021885],[109.357425,-0.0219],[109.357402,-0.021927],[109.357388,-0.021906],[109.357368,-0.021873],[109.357349,-0.021844],[109.357341,-0.021815],[109.357322,-0.021776],[109.357301,-0.021761],[109.357287,-0.021776],[109.35725,-0.021812],[109.357221,-0.021846],[109.357211,-0.021891],[109.357209,-0.021921],[109.357206,-0.021959],[109.357174,-0.02197],[109.357122,-0.021961],[109.357068,-0.021947],[109.357056,-0.021915],[109.357048,-0.021893],[109.356963,-0.021889],[109.356906,-0.021905],[109.356852,-0.021912],[109.356789,-0.021988],[109.356771,-0.022029],[109.356754,-0.02208],[109.356752,-0.022129],[109.356747,-0.022175],[109.356744,-0.022148],[109.35673,-0.022119],[109.356712,-0.022102],[109.356702,-0.022068],[109.356703,-0.022037],[109.356712,-0.022012],[109.356707,-0.021983],[109.35669,-0.021954],[109.356675,-0.021927],[109.356666,-0.021898],[109.356656,-0.021856],[109.356651,-0.021817],[109.356639,-0.021793],[109.356627,-0.021769],[109.356607,-0.021744],[109.356552,-0.02172],[109.356418,-0.0217],[109.356373,-0.021671],[109.356339,-0.021681],[109.356314,-0.021703],[109.356273,-0.021723],[109.356234,-0.021723],[109.356206,-0.021715],[109.35618,-0.021716],[109.356167,-0.021747],[109.356153,-0.021779],[109.356147,-0.021812],[109.356138,-0.021851],[109.356121,-0.021856],[109.356106,-0.021849],[109.356079,-0.021842],[109.356057,-0.021876],[109.356037,-0.021929],[109.355998,-0.021936],[109.355963,-0.021917],[109.355948,-0.021888],[109.355938,-0.021864],[109.355921,-0.021844],[109.355924,-0.021806],[109.355877,-0.021803],[109.355877,-0.021825],[109.355868,-0.021874],[109.355848,-0.021912],[109.355811,-0.021947],[109.35575,-0.021956],[109.355698,-0.021929],[109.355631,-0.021936],[109.355609,-0.021973],[109.355612,-0.022007],[109.35561,-0.022021],[109.355605,-0.022066],[109.35556,-0.022105],[109.355536,-0.022121],[109.355523,-0.02215],[109.355512,-0.022209],[109.355504,-0.02217],[109.355494,-0.022126],[109.355487,-0.022097],[109.355476,-0.022033],[109.355465,-0.021971],[109.355394,-0.021978],[109.355401,-0.02204],[109.35541,-0.022114],[109.355327,-0.022102],[109.35521,-0.022058],[109.355153,-0.022063],[109.355152,-0.022092],[109.355136,-0.022104],[109.355106,-0.022107],[109.355077,-0.022106],[109.355047,-0.022097],[109.355035,-0.022074],[109.355023,-0.022051],[109.354976,-0.022053],[109.354969,-0.022007],[109.354961,-0.022002],[109.354941,-0.022007],[109.354927,-0.022016],[109.35491,-0.022038],[109.354902,-0.022063],[109.354846,-0.022058],[109.354843,-0.022019],[109.354839,-0.022007],[109.354821,-0.02199],[109.354799,-0.021987],[109.354772,-0.021987],[109.354732,-0.021989],[109.35471,-0.021999],[109.354688,-0.022021],[109.354688,-0.02207],[109.354627,-0.022073],[109.354626,-0.022107],[109.354622,-0.022228],[109.354549,-0.022228],[109.354534,-0.022252],[109.354519,-0.022243],[109.354494,-0.022235],[109.354478,-0.022243],[109.35445,-0.022257],[109.35443,-0.022257],[109.354414,-0.022259],[109.354401,-0.022272],[109.354394,-0.022292],[109.354379,-0.022299],[109.354357,-0.022298],[109.354332,-0.022289],[109.354305,-0.02227],[109.354312,-0.022142],[109.354317,-0.022051],[109.354018,-0.022051],[109.354005,-0.022195],[109.353996,-0.022299],[109.353971,-0.022301],[109.353942,-0.022304],[109.353929,-0.022326],[109.353885,-0.022332],[109.353849,-0.022333],[109.353819,-0.022342],[109.353809,-0.02236],[109.353799,-0.022382],[109.353773,-0.022389],[109.353743,-0.022422],[109.353694,-0.022452],[109.353659,-0.022461],[109.353613,-0.02247],[109.353574,-0.022467],[109.353566,-0.022454],[109.35356,-0.022444],[109.353554,-0.022429],[109.353546,-0.022413],[109.353534,-0.022404],[109.353517,-0.0224],[109.353498,-0.022403],[109.35349,-0.02241],[109.353486,-0.022425],[109.353484,-0.022442],[109.353474,-0.022447],[109.353457,-0.022446],[109.35343,-0.022446],[109.353412,-0.022452],[109.353394,-0.022471],[109.353389,-0.022496],[109.353303,-0.022501],[109.353303,-0.022512],[109.353286,-0.022557],[109.353271,-0.022542],[109.353271,-0.022513],[109.353266,-0.022484],[109.353237,-0.022459],[109.353218,-0.022449],[109.35319,-0.022445],[109.353161,-0.022444],[109.353136,-0.022449],[109.353117,-0.022474],[109.353078,-0.02252],[109.353068,-0.022562],[109.352949,-0.022604],[109.352905,-0.022614],[109.352903,-0.022656],[109.352987,-0.022663],[109.352971,-0.022715],[109.352917,-0.022735],[109.352737,-0.02274],[109.35269,-0.022815],[109.352485,-0.022794],[109.352384,-0.02276],[109.352178,-0.022718],[109.352097,-0.022739],[109.352029,-0.022733],[109.352021,-0.022732],[109.352018,-0.022759],[109.352009,-0.022844],[109.351916,-0.022849],[109.351913,-0.022785],[109.351911,-0.022749],[109.351842,-0.022749],[109.351842,-0.022802],[109.351842,-0.02284],[109.351742,-0.022845],[109.351742,-0.022823],[109.351732,-0.022825],[109.351631,-0.022823],[109.351631,-0.022845],[109.351631,-0.022895],[109.351592,-0.022901],[109.35159,-0.022925],[109.351572,-0.02293],[109.351569,-0.022881],[109.3515,-0.022867],[109.351461,-0.022859],[109.351396,-0.02283],[109.351375,-0.02283],[109.351376,-0.022886],[109.351327,-0.022893],[109.35124,-0.022886],[109.351239,-0.022905],[109.351236,-0.023032],[109.351162,-0.023021],[109.351043,-0.023023],[109.350896,-0.023045],[109.350778,-0.023076],[109.350709,-0.023113],[109.350656,-0.023166],[109.350647,-0.023004],[109.350646,-0.022981],[109.350578,-0.022976],[109.350284,-0.022981],[109.350281,-0.023035],[109.350263,-0.023081],[109.350224,-0.023102],[109.350172,-0.023123],[109.350138,-0.023118],[109.350134,-0.023079],[109.35006,-0.023074],[109.349944,-0.023086],[109.34947,-0.023169],[109.349471,-0.023298],[109.349402,-0.023305],[109.349385,-0.023286],[109.349224,-0.02328],[109.349188,-0.023343],[109.349057,-0.0233],[109.349017,-0.023395],[109.348995,-0.023391],[109.348989,-0.02338],[109.348854,-0.023394],[109.348851,-0.023366],[109.34883,-0.023346],[109.348776,-0.02333],[109.34874,-0.023327],[109.348662,-0.023343],[109.348385,-0.02338],[109.348381,-0.023393],[109.348214,-0.023391],[109.34818,-0.023346],[109.348012,-0.023361],[109.348,-0.023382],[109.347908,-0.023384],[109.347899,-0.023425],[109.347886,-0.023427],[109.347877,-0.023339],[109.347782,-0.023321],[109.347778,-0.023443],[109.347758,-0.023441],[109.347751,-0.023389],[109.347668,-0.023382],[109.347654,-0.023407],[109.347634,-0.023418],[109.3476,-0.023441],[109.347544,-0.023447],[109.347501,-0.023432],[109.347436,-0.02342],[109.347393,-0.023389],[109.34726,-0.023368],[109.347258,-0.023416],[109.347335,-0.023438],[109.347335,-0.023495],[109.347317,-0.023506],[109.347143,-0.02354],[109.346973,-0.023554],[109.34666,-0.023604],[109.346536,-0.023613],[109.346483,-0.023618],[109.346467,-0.02362],[109.346466,-0.02362],[109.346459,-0.02362],[109.346431,-0.023623],[109.346388,-0.023625],[109.346371,-0.023625],[109.346345,-0.023624],[109.34632,-0.023621],[109.346338,-0.023745],[109.346351,-0.023815],[109.346401,-0.023831],[109.346444,-0.023868],[109.346493,-0.023886],[109.346498,-0.023958],[109.346516,-0.024049],[109.3465,-0.024155],[109.346509,-0.024218],[109.346513,-0.024284],[109.346482,-0.024348],[109.346475,-0.024436],[109.346473,-0.024488],[109.346484,-0.024547],[109.346471,-0.024674],[109.346446,-0.024735],[109.346446,-0.024785],[109.346419,-0.024837],[109.346267,-0.024919],[109.346274,-0.024936],[109.346304,-0.024997],[109.346337,-0.025061],[109.346384,-0.025145],[109.346441,-0.025245],[109.346489,-0.025329],[109.346507,-0.025361],[109.346586,-0.025508],[109.346666,-0.025697],[109.346738,-0.025899],[109.346814,-0.026071],[109.346766,-0.026095],[109.346895,-0.026394],[109.346931,-0.026385],[109.346973,-0.026488],[109.347053,-0.026505],[109.347147,-0.026548],[109.347222,-0.026604],[109.347169,-0.026701],[109.347126,-0.026781],[109.34733,-0.02717],[109.347495,-0.027484],[109.347577,-0.027495],[109.348022,-0.027227],[109.348133,-0.027315],[109.348103,-0.027351],[109.348001,-0.027336],[109.347911,-0.027429],[109.347932,-0.027478],[109.347869,-0.027499],[109.347815,-0.027554],[109.347812,-0.027662],[109.347764,-0.027744],[109.347704,-0.027937],[109.347691,-0.028059],[109.347703,-0.028101],[109.347764,-0.02825],[109.347843,-0.028392],[109.347851,-0.028406],[109.347837,-0.02846],[109.347891,-0.028535],[109.347909,-0.028603],[109.347882,-0.02863],[109.34788,-0.028664],[109.347898,-0.028693],[109.347967,-0.028711],[109.348118,-0.028933],[109.348006,-0.029019],[109.348089,-0.029139],[109.348057,-0.029166],[109.348123,-0.029252],[109.348266,-0.029115],[109.348284,-0.029146],[109.348311,-0.029203],[109.348177,-0.029277],[109.348244,-0.029391],[109.348305,-0.029361],[109.348357,-0.029438],[109.348296,-0.029474],[109.348285,-0.029454],[109.348226,-0.029499],[109.348359,-0.029755],[109.348442,-0.029798],[109.348462,-0.029852],[109.348567,-0.029786],[109.348634,-0.029959],[109.348721,-0.030185],[109.348813,-0.030386],[109.348871,-0.030487],[109.348991,-0.030419],[109.349027,-0.030421],[109.349052,-0.030434],[109.349088,-0.030416],[109.349097,-0.03043],[109.349083,-0.030457],[109.349049,-0.030466],[109.349016,-0.030473],[109.348995,-0.030505],[109.349016,-0.030543],[109.349081,-0.03053],[109.34913,-0.030525],[109.349137,-0.030491],[109.349164,-0.030459],[109.349204,-0.030471],[109.349227,-0.030525],[109.349225,-0.030582],[109.349182,-0.0306],[109.349166,-0.030629],[109.34918,-0.030681],[109.349153,-0.030717],[109.349119,-0.03074],[109.349121,-0.030754],[109.349177,-0.030758],[109.349209,-0.030794],[109.349175,-0.030808],[109.349162,-0.030779],[109.349121,-0.030776],[109.349103,-0.030794],[109.349094,-0.030831],[109.349065,-0.030845],[109.349025,-0.030865],[109.349083,-0.030985],[109.349123,-0.030962],[109.349256,-0.030885],[109.349306,-0.030892],[109.349346,-0.030933],[109.349373,-0.030989],[109.349348,-0.031057],[109.349317,-0.031075],[109.349279,-0.031055],[109.349213,-0.031071],[109.3492,-0.031103],[109.349184,-0.031139],[109.34924,-0.031254],[109.349281,-0.031264],[109.3494,-0.031222],[109.349416,-0.031238],[109.349438,-0.031272],[109.349483,-0.031281],[109.349515,-0.031288],[109.349578,-0.03129],[109.349623,-0.031299],[109.349654,-0.031308],[109.349456,-0.031453],[109.349468,-0.031505],[109.349519,-0.031494],[109.349605,-0.031621],[109.349462,-0.031688],[109.349249,-0.031274],[109.349121,-0.031372],[109.349168,-0.031424],[109.349191,-0.031413],[109.349244,-0.031515],[109.349309,-0.031481],[109.34934,-0.031476],[109.349358,-0.031494],[109.349356,-0.031528],[109.349336,-0.031553],[109.349275,-0.031587],[109.34937,-0.031814],[109.349494,-0.031764],[109.349637,-0.031707],[109.349687,-0.0318],[109.349539,-0.031867],[109.349552,-0.031896],[109.349625,-0.032062],[109.349703,-0.032227],[109.349799,-0.032388],[109.349849,-0.032464],[109.349898,-0.03254],[109.349988,-0.032673],[109.350079,-0.032795],[109.350171,-0.032918],[109.350213,-0.032988],[109.350454,-0.033259],[109.350509,-0.03332],[109.3506,-0.033467],[109.350695,-0.033629],[109.350782,-0.033784],[109.350862,-0.033958],[109.350954,-0.034133],[109.351058,-0.034298],[109.35113,-0.034401],[109.351162,-0.034446],[109.351261,-0.034592],[109.351269,-0.034605],[109.351455,-0.034537],[109.351453,-0.034587],[109.351428,-0.034596],[109.351401,-0.034611],[109.351396,-0.034636],[109.351428,-0.034677],[109.351332,-0.034711],[109.351257,-0.034738],[109.351414,-0.035216],[109.351525,-0.035178],[109.351561,-0.03527],[109.351459,-0.035307],[109.351498,-0.035393],[109.351619,-0.035325],[109.351705,-0.035454],[109.351664,-0.035467],[109.351639,-0.035497],[109.351664,-0.035531],[109.351615,-0.03556],[109.351648,-0.03563],[109.351738,-0.035578],[109.351788,-0.035678],[109.351705,-0.035705],[109.351747,-0.035766],[109.35179,-0.03573],[109.351916,-0.035676],[109.351911,-0.035705],[109.351927,-0.035746],[109.35195,-0.035755],[109.351999,-0.035766],[109.351887,-0.035832],[109.351934,-0.035891],[109.352008,-0.03585],[109.352031,-0.035839],[109.352058,-0.035855],[109.352078,-0.035877],[109.352076,-0.035911],[109.352004,-0.035956],[109.351956,-0.035947],[109.35188,-0.036031],[109.35197,-0.036167],[109.352055,-0.036221],[109.352103,-0.036133],[109.352026,-0.036076],[109.352078,-0.03604],[109.352118,-0.036045],[109.35222,-0.036192],[109.352073,-0.036298],[109.352332,-0.036633],[109.352498,-0.036529],[109.35258,-0.036543],[109.352611,-0.036547],[109.352636,-0.036566],[109.352786,-0.036749],[109.352709,-0.036802],[109.352633,-0.036853],[109.352701,-0.036987],[109.352776,-0.036945],[109.352876,-0.036889],[109.352915,-0.036928],[109.353016,-0.036833],[109.353045,-0.036864],[109.353016,-0.0369],[109.353034,-0.036927],[109.353,-0.036955],[109.353023,-0.036975],[109.353112,-0.036909],[109.353155,-0.036957],[109.353034,-0.037065],[109.352989,-0.037007],[109.352862,-0.037106],[109.352735,-0.037206],[109.352791,-0.037272],[109.352836,-0.037235],[109.352881,-0.037301],[109.352957,-0.037245],[109.353128,-0.037118],[109.353187,-0.037183],[109.353171,-0.037204],[109.3532,-0.037244],[109.353056,-0.037355],[109.352984,-0.03741],[109.353029,-0.037471],[109.35311,-0.037414],[109.353164,-0.037376],[109.353202,-0.037432],[109.353154,-0.037463],[109.353054,-0.037527],[109.353083,-0.037586],[109.353195,-0.037515],[109.353211,-0.037505],[109.353191,-0.03748],[109.353335,-0.037387],[109.353414,-0.037475],[109.353412,-0.037552],[109.353283,-0.037629],[109.353202,-0.037677],[109.353193,-0.037731],[109.353103,-0.037779],[109.353007,-0.037663],[109.352984,-0.037681],[109.353049,-0.03779],[109.352975,-0.037831],[109.35307,-0.038007],[109.353173,-0.037944],[109.353184,-0.037849],[109.353227,-0.037824],[109.353211,-0.037799],[109.353297,-0.037727],[109.353351,-0.037774],[109.353381,-0.037755],[109.353468,-0.0377],[109.353529,-0.037799],[109.35346,-0.037858],[109.353501,-0.037911],[109.35352,-0.037936],[109.353404,-0.038009],[109.353473,-0.038102],[109.353545,-0.038054],[109.353599,-0.038132],[109.353533,-0.038202],[109.35368,-0.038377],[109.353794,-0.038273],[109.353736,-0.038202],[109.3538,-0.03816],[109.353875,-0.038253],[109.353816,-0.038301],[109.353887,-0.038389],[109.353935,-0.038353],[109.354022,-0.038449],[109.354076,-0.038407],[109.354169,-0.038519],[109.354068,-0.038627],[109.354141,-0.038718],[109.354147,-0.038726],[109.353992,-0.038887],[109.354064,-0.038981],[109.354205,-0.038866],[109.354229,-0.038881],[109.354094,-0.038993],[109.354112,-0.039026],[109.354097,-0.039053],[109.354145,-0.039108],[109.354091,-0.039171],[109.354211,-0.039301],[109.35425,-0.039265],[109.354268,-0.039259],[109.354265,-0.039307],[109.354334,-0.039385],[109.354328,-0.039412],[109.354376,-0.039476],[109.354454,-0.039485],[109.354463,-0.0395],[109.354511,-0.039548],[109.354556,-0.039515],[109.354562,-0.039482],[109.354589,-0.039449],[109.354643,-0.039455],[109.354664,-0.039488],[109.354682,-0.039527],[109.354706,-0.039566],[109.3547,-0.039621],[109.354742,-0.039666],[109.354873,-0.039561],[109.355036,-0.039431],[109.355045,-0.039539],[109.355054,-0.039557],[109.355114,-0.039609],[109.354984,-0.039725],[109.35488,-0.03982],[109.355021,-0.040016],[109.355126,-0.039946],[109.355203,-0.039868],[109.355212,-0.039877],[109.35526,-0.03985],[109.35532,-0.039862],[109.355368,-0.039917],[109.355371,-0.039962],[109.355362,-0.040004],[109.355371,-0.040065],[109.355464,-0.040189],[109.355472,-0.04019],[109.355503,-0.040194],[109.355523,-0.040185],[109.35553,-0.040163],[109.355584,-0.04016],[109.355619,-0.040168],[109.355656,-0.040187],[109.355702,-0.040212],[109.355715,-0.040233],[109.355715,-0.040272],[109.355712,-0.040309],[109.355703,-0.04033],[109.355742,-0.040358],[109.355776,-0.04037],[109.355798,-0.040369],[109.355823,-0.040394],[109.35583,-0.040401],[109.35587,-0.040418],[109.355889,-0.040447],[109.355896,-0.040481],[109.35587,-0.04052],[109.355862,-0.04053],[109.355857,-0.040557],[109.355857,-0.040581],[109.355862,-0.040608],[109.355881,-0.040622],[109.355918,-0.040632],[109.355943,-0.040634],[109.355957,-0.040647],[109.355967,-0.040681],[109.356,-0.0407],[109.356009,-0.040735],[109.355905,-0.040839],[109.35584,-0.040904],[109.355931,-0.041005],[109.355951,-0.040982],[109.355982,-0.040971],[109.356014,-0.040961],[109.356029,-0.040936],[109.356029,-0.04091],[109.356029,-0.040895],[109.356019,-0.040871],[109.356061,-0.040832],[109.356095,-0.040842],[109.35613,-0.040849],[109.356162,-0.040866],[109.356171,-0.04091],[109.356159,-0.040948],[109.356112,-0.041004],[109.356115,-0.041029],[109.356124,-0.041043],[109.356152,-0.041048],[109.35622,-0.040975],[109.356269,-0.040988],[109.35635,-0.041009],[109.356375,-0.041019],[109.356393,-0.041048],[109.356405,-0.041073],[109.356409,-0.041099],[109.356429,-0.041114],[109.356468,-0.041119],[109.35654,-0.041191],[109.356429,-0.041306],[109.356365,-0.041233],[109.356321,-0.04126],[109.356284,-0.041221],[109.35627,-0.041235],[109.356183,-0.041323],[109.356373,-0.041537],[109.356444,-0.041462],[109.356591,-0.041641],[109.356621,-0.041616],[109.356731,-0.041529],[109.356837,-0.041596],[109.356835,-0.041722],[109.35692,-0.041797],[109.356856,-0.04186],[109.356754,-0.04196],[109.356833,-0.042022],[109.356916,-0.041929],[109.356962,-0.041878],[109.356928,-0.041836],[109.356953,-0.04181],[109.356977,-0.041828],[109.357036,-0.041868],[109.357029,-0.041876],[109.357005,-0.041873],[109.35698,-0.041893],[109.356972,-0.041915],[109.356967,-0.041948],[109.35698,-0.041982],[109.357008,-0.042017],[109.357027,-0.042025],[109.357063,-0.042025],[109.357054,-0.042046],[109.357075,-0.042076],[109.357105,-0.042091],[109.357144,-0.042127],[109.357112,-0.04216],[109.357027,-0.042248],[109.357138,-0.042366],[109.357229,-0.042286],[109.357282,-0.042239],[109.357294,-0.042206],[109.357258,-0.042176],[109.357291,-0.042142],[109.357324,-0.04217],[109.357366,-0.042148],[109.35742,-0.04223],[109.357381,-0.042248],[109.357393,-0.042351],[109.357344,-0.042402],[109.35727,-0.042481],[109.35739,-0.042592],[109.357456,-0.04251],[109.35751,-0.042444],[109.357621,-0.042544],[109.357621,-0.04258],[109.357576,-0.042635],[109.35751,-0.042716],[109.357585,-0.042773],[109.357641,-0.042704],[109.357693,-0.042641],[109.357723,-0.042668],[109.357822,-0.04268],[109.35793,-0.042795],[109.357999,-0.042828],[109.35793,-0.042864],[109.357936,-0.042885],[109.357966,-0.042891],[109.357993,-0.0429],[109.357905,-0.042979],[109.357816,-0.04306],[109.357906,-0.043169],[109.357991,-0.043067],[109.358017,-0.043036],[109.358041,-0.043057],[109.35808,-0.043006],[109.358089,-0.04303],[109.358131,-0.043027],[109.358173,-0.043075],[109.358205,-0.043109],[109.358123,-0.043198],[109.35805,-0.043278],[109.358199,-0.043404],[109.358252,-0.043326],[109.35828,-0.043284],[109.358349,-0.043335],[109.358314,-0.043393],[109.358268,-0.043468],[109.358301,-0.043513],[109.358357,-0.043439],[109.358377,-0.043461],[109.358533,-0.043626],[109.358621,-0.043719],[109.358679,-0.043649],[109.358793,-0.043743],[109.358726,-0.043825],[109.358842,-0.043934],[109.35888,-0.04397],[109.359018,-0.043836],[109.359129,-0.043921],[109.359102,-0.043957],[109.359117,-0.04399],[109.359114,-0.044047],[109.35915,-0.044057],[109.359207,-0.044066],[109.359162,-0.044126],[109.359153,-0.044165],[109.359177,-0.044192],[109.359201,-0.044217],[109.359225,-0.044211],[109.359249,-0.044165],[109.35924,-0.044117],[109.359297,-0.044114],[109.359354,-0.044193],[109.359342,-0.044268],[109.359324,-0.044304],[109.359329,-0.044363],[109.359388,-0.044409],[109.359417,-0.044371],[109.359459,-0.044358],[109.359498,-0.044365],[109.359528,-0.044392],[109.359549,-0.044455],[109.359505,-0.044498],[109.359438,-0.044564],[109.359495,-0.044615],[109.359571,-0.044536],[109.359666,-0.044437],[109.359762,-0.044503],[109.359675,-0.044595],[109.359576,-0.0447],[109.359672,-0.044793],[109.359789,-0.044814],[109.359867,-0.044724],[109.359984,-0.044826],[109.360068,-0.044923],[109.360134,-0.04498],[109.360113,-0.045068],[109.360209,-0.045162],[109.360302,-0.045104],[109.360335,-0.045062],[109.360346,-0.045018],[109.360362,-0.044962],[109.360419,-0.044977],[109.360446,-0.044971],[109.360464,-0.045044],[109.360418,-0.045085],[109.360511,-0.045175],[109.360544,-0.04521],[109.360572,-0.045183],[109.36062,-0.045183],[109.360638,-0.045213],[109.360635,-0.045267],[109.36062,-0.04529],[109.360608,-0.04531],[109.360659,-0.04537],[109.360674,-0.045409],[109.360665,-0.04543],[109.360677,-0.045448],[109.360743,-0.045448],[109.360629,-0.045581],[109.360704,-0.045645],[109.36084,-0.045503],[109.360874,-0.045467],[109.360919,-0.045521],[109.360893,-0.045554],[109.360766,-0.045714],[109.360862,-0.045805],[109.360994,-0.045661],[109.361026,-0.045695],[109.361098,-0.045778],[109.361063,-0.045823],[109.361129,-0.045883],[109.361166,-0.045855],[109.361183,-0.045841],[109.361243,-0.045901],[109.361285,-0.045868],[109.361378,-0.045953],[109.361429,-0.045901],[109.361516,-0.045907],[109.36163,-0.046076],[109.361543,-0.046176],[109.361588,-0.046233],[109.361543,-0.04628],[109.361653,-0.046408],[109.361758,-0.046545],[109.361847,-0.046629],[109.36199,-0.046517],[109.362053,-0.046562],[109.362104,-0.046556],[109.362242,-0.046686],[109.362269,-0.046671],[109.362323,-0.046732],[109.362266,-0.046807],[109.362248,-0.046786],[109.362134,-0.046912],[109.362174,-0.046953],[109.362266,-0.04703],[109.362231,-0.047076],[109.362297,-0.047144],[109.362337,-0.047141],[109.362342,-0.047176],[109.362352,-0.04721],[109.362376,-0.047241],[109.362406,-0.047232],[109.36244,-0.047189],[109.362491,-0.047241],[109.362564,-0.047319],[109.362606,-0.04736],[109.362582,-0.04739],[109.362597,-0.047414],[109.362546,-0.04748],[109.362614,-0.04754],[109.36269,-0.047463],[109.362708,-0.04749],[109.362685,-0.047518],[109.362656,-0.047557],[109.362653,-0.047602],[109.3627,-0.047657],[109.36281,-0.04756],[109.362828,-0.047545],[109.362852,-0.047546],[109.362874,-0.047524],[109.363085,-0.047713],[109.363132,-0.047702],[109.363187,-0.047759],[109.363189,-0.047781],[109.363157,-0.047818],[109.363086,-0.047747],[109.363034,-0.047747],[109.36303,-0.047777],[109.363056,-0.047815],[109.363037,-0.047832],[109.363027,-0.047845],[109.363032,-0.047871],[109.363059,-0.047906],[109.363095,-0.047918],[109.363113,-0.047915],[109.363152,-0.047912],[109.363246,-0.047915],[109.363292,-0.0479],[109.363329,-0.047968],[109.3633,-0.047995],[109.3633,-0.048019],[109.36329,-0.048046],[109.363241,-0.048042],[109.36314,-0.048117],[109.363093,-0.048158],[109.363235,-0.048318],[109.36329,-0.048269],[109.363328,-0.048261],[109.363403,-0.048252],[109.363406,-0.048237],[109.363479,-0.048206],[109.36337,-0.048323],[109.363423,-0.048373],[109.363513,-0.048289],[109.363561,-0.048336],[109.363624,-0.048289],[109.36364,-0.048286],[109.363656,-0.048294],[109.363659,-0.048326],[109.363653,-0.048373],[109.363634,-0.048415],[109.363681,-0.048476],[109.363701,-0.048474],[109.363843,-0.048583],[109.363919,-0.048524],[109.363978,-0.048585],[109.36398,-0.048628],[109.363928,-0.048696],[109.363984,-0.048737],[109.364034,-0.048798],[109.363939,-0.0489],[109.363957,-0.048959],[109.363984,-0.049002],[109.364011,-0.049029],[109.364018,-0.049049],[109.364032,-0.049101],[109.364068,-0.049162],[109.364097,-0.049171],[109.364124,-0.049169],[109.364146,-0.04916],[109.364185,-0.049142],[109.364203,-0.049124],[109.364218,-0.049099],[109.364241,-0.049079],[109.364264,-0.049092],[109.364295,-0.049114],[109.364306,-0.049144],[109.364297,-0.049199],[109.364305,-0.049254],[109.364318,-0.049288],[109.364333,-0.049301],[109.364348,-0.049302],[109.364364,-0.049302],[109.364391,-0.049298],[109.364411,-0.049294],[109.364438,-0.049302],[109.364466,-0.049325],[109.364498,-0.049342],[109.36452,-0.049354],[109.364545,-0.049361],[109.364568,-0.049364],[109.364583,-0.049389],[109.364622,-0.049442],[109.364574,-0.049483],[109.364601,-0.04951],[109.364601,-0.049526],[109.36456,-0.049564],[109.36461,-0.049635],[109.364638,-0.049633],[109.364696,-0.049585],[109.364743,-0.04964],[109.364635,-0.049731],[109.364745,-0.049864],[109.364865,-0.04994],[109.364914,-0.049896],[109.364926,-0.049894],[109.36496,-0.04993],[109.364987,-0.049974],[109.364995,-0.050003],[109.364879,-0.050117],[109.364967,-0.050222],[109.365036,-0.050168],[109.365046,-0.050193],[109.365051,-0.050217],[109.365069,-0.050246],[109.365071,-0.050269],[109.365058,-0.050298],[109.365064,-0.05032],[109.365093,-0.050326],[109.365127,-0.050315],[109.365147,-0.050285],[109.365172,-0.050285],[109.36522,-0.050259],[109.365263,-0.05023],[109.365285,-0.050253],[109.365287,-0.050273],[109.365285,-0.050307],[109.365328,-0.050365],[109.365434,-0.050514],[109.365312,-0.050602],[109.365403,-0.050726],[109.365508,-0.05065],[109.365501,-0.050674],[109.365503,-0.050696],[109.365519,-0.050725],[109.365546,-0.050745],[109.365619,-0.050705],[109.365646,-0.050727],[109.365668,-0.050764],[109.365712,-0.050851],[109.365749,-0.05089],[109.365837,-0.050975],[109.365878,-0.051048],[109.365901,-0.051087],[109.365911,-0.051106],[109.365919,-0.051114],[109.365946,-0.051154],[109.366013,-0.051255],[109.366037,-0.05129],[109.365921,-0.051379],[109.365961,-0.05146],[109.366081,-0.051355],[109.366132,-0.05143],[109.366137,-0.051437],[109.3661,-0.051476],[109.366096,-0.051496],[109.366118,-0.051511],[109.366142,-0.05153],[109.366164,-0.051569],[109.366169,-0.051596],[109.366176,-0.051627],[109.366204,-0.051649],[109.366236,-0.051685],[109.366277,-0.051768],[109.366223,-0.051803],[109.366216,-0.051817],[109.366209,-0.051837],[109.366208,-0.051863],[109.366218,-0.051895],[109.366233,-0.051921],[109.366272,-0.051934],[109.366304,-0.051929],[109.366336,-0.05197],[109.366414,-0.051892],[109.366439,-0.051868],[109.366454,-0.051883],[109.366476,-0.051926],[109.366481,-0.051953],[109.366478,-0.051998],[109.366473,-0.052068],[109.366454,-0.052097],[109.366429,-0.052126],[109.366415,-0.052174],[109.366425,-0.052231],[109.366451,-0.052294],[109.366513,-0.052371],[109.366562,-0.052386],[109.366651,-0.052381],[109.366678,-0.052396],[109.366688,-0.052417],[109.366685,-0.052439],[109.366678,-0.052457],[109.366672,-0.052488],[109.366675,-0.052532],[109.366677,-0.052568],[109.366705,-0.0526],[109.366812,-0.052629],[109.36681,-0.052661],[109.366798,-0.05269],[109.366798,-0.052715],[109.366808,-0.052741],[109.366837,-0.052766],[109.366871,-0.05278],[109.36691,-0.052747],[109.366921,-0.052737],[109.366945,-0.052737],[109.366965,-0.052766],[109.366963,-0.05279],[109.36695,-0.052807],[109.366999,-0.05288],[109.36704,-0.05293],[109.367009,-0.052965],[109.367105,-0.053128],[109.367099,-0.05323],[109.367164,-0.053318],[109.367293,-0.053241],[109.367312,-0.05323],[109.367346,-0.053228],[109.367384,-0.053206],[109.367406,-0.053267],[109.367339,-0.0533],[109.367283,-0.053339],[109.367367,-0.053511],[109.367388,-0.053499],[109.367445,-0.053581],[109.367529,-0.053526],[109.367571,-0.053499],[109.367637,-0.053605],[109.367605,-0.053627],[109.367559,-0.053659],[109.367625,-0.053792],[109.367622,-0.053804],[109.367673,-0.053907],[109.367709,-0.053889],[109.367772,-0.053955],[109.36793,-0.054185],[109.367984,-0.054245],[109.367999,-0.054281],[109.367981,-0.05432],[109.367957,-0.05436],[109.367942,-0.054393],[109.367948,-0.054426],[109.367978,-0.054459],[109.36802,-0.054499],[109.368053,-0.054544],[109.368068,-0.054631],[109.368086,-0.054746],[109.368044,-0.054782],[109.368139,-0.054877],[109.36817,-0.054846],[109.368315,-0.055021],[109.36836,-0.055096],[109.36836,-0.055164],[109.368369,-0.055193],[109.368386,-0.055205],[109.368414,-0.05521],[109.368445,-0.0552],[109.368512,-0.055198],[109.368532,-0.055213],[109.368532,-0.055233],[109.368541,-0.055271],[109.368561,-0.055307],[109.368581,-0.055351],[109.368601,-0.05538],[109.368625,-0.055391],[109.368669,-0.055424],[109.368721,-0.055463],[109.36874,-0.055492],[109.368733,-0.05551],[109.368721,-0.055516],[109.368699,-0.055526],[109.36866,-0.05559],[109.36865,-0.055612],[109.368633,-0.05567],[109.368615,-0.055721],[109.368601,-0.055748],[109.368618,-0.055775],[109.368664,-0.055782],[109.368691,-0.055775],[109.368716,-0.05576],[109.368738,-0.055758],[109.368763,-0.05577],[109.36879,-0.055801],[109.368827,-0.055818],[109.368873,-0.055836],[109.368947,-0.055955],[109.368969,-0.056054],[109.368974,-0.056117],[109.369006,-0.056185],[109.36907,-0.056154],[109.369089,-0.056145],[109.3692,-0.056344],[109.369235,-0.056466],[109.36921,-0.056485],[109.369199,-0.056512],[109.369188,-0.056541],[109.369188,-0.056572],[109.369199,-0.056592],[109.369219,-0.056607],[109.369256,-0.056629],[109.369291,-0.056641],[109.369315,-0.056655],[109.369354,-0.056667],[109.369371,-0.056666],[109.369515,-0.056587],[109.369542,-0.056638],[109.3695,-0.056671],[109.369527,-0.056726],[109.369518,-0.05678],[109.369578,-0.056895],[109.369569,-0.056913],[109.369552,-0.056927],[109.369506,-0.056964],[109.369497,-0.056985],[109.369506,-0.057034],[109.369539,-0.057061],[109.369611,-0.057067],[109.369803,-0.05742],[109.369704,-0.05745],[109.369773,-0.057583],[109.369922,-0.057476],[109.370001,-0.05742],[109.37002,-0.057461],[109.36996,-0.057531],[109.369924,-0.057573],[109.369999,-0.057692],[109.369908,-0.057815],[109.369951,-0.057906],[109.370109,-0.057764],[109.370286,-0.057922],[109.370441,-0.058089],[109.370452,-0.058175],[109.370558,-0.058293],[109.370814,-0.058588],[109.37122,-0.059134],[109.371314,-0.059098],[109.371737,-0.059645],[109.37177,-0.059681],[109.371802,-0.059769],[109.372024,-0.059995],[109.372102,-0.060128],[109.372129,-0.060152],[109.372189,-0.060191],[109.372186,-0.060243],[109.372171,-0.060273],[109.372171,-0.060318],[109.37221,-0.060333],[109.372228,-0.060312],[109.37227,-0.060318],[109.372306,-0.060357],[109.37233,-0.060376],[109.372369,-0.06036],[109.372447,-0.060478],[109.37245,-0.060514],[109.372441,-0.060563],[109.372444,-0.060599],[109.372474,-0.060608],[109.372531,-0.060611],[109.372567,-0.060674],[109.372579,-0.06075],[109.372558,-0.060795],[109.372645,-0.060895],[109.372696,-0.060913],[109.372825,-0.061112],[109.372852,-0.061245],[109.372847,-0.061288],[109.37284,-0.061345],[109.372822,-0.061471],[109.372912,-0.061508],[109.37299,-0.061502],[109.373041,-0.061474],[109.373122,-0.061556],[109.373272,-0.061718],[109.373427,-0.061875],[109.373524,-0.061975],[109.373581,-0.062033],[109.373596,-0.062049],[109.3736,-0.062052],[109.3736,-0.062052],[109.373693,-0.062143]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Timur","name":"Pontianak Timur","density":5400}},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.354252,-0.042078],[109.354157,-0.041973],[109.353985,-0.041779],[109.353829,-0.04157],[109.353663,-0.04134],[109.353471,-0.041137],[109.353273,-0.04094],[109.353085,-0.040728],[109.352894,-0.040512],[109.352711,-0.04032],[109.352537,-0.040114],[109.352363,-0.039881],[109.352188,-0.039681],[109.352004,-0.039489],[109.35182,-0.039282],[109.351655,-0.039066],[109.351504,-0.038877],[109.351358,-0.038679],[109.35121,-0.038471],[109.351085,-0.038334],[109.351104,-0.03832],[109.351056,-0.038259],[109.351065,-0.03822],[109.351038,-0.038202],[109.350993,-0.038184],[109.350975,-0.038156],[109.350966,-0.03812],[109.350945,-0.038076],[109.350881,-0.03798],[109.350809,-0.037989],[109.350673,-0.038007],[109.35055,-0.03784],[109.350502,-0.037765],[109.350539,-0.037706],[109.350566,-0.037647],[109.350587,-0.037599],[109.350396,-0.037293],[109.350356,-0.037317],[109.350316,-0.037341],[109.350113,-0.037003],[109.349857,-0.036547],[109.349681,-0.036246],[109.349539,-0.035986],[109.349521,-0.03595],[109.349523,-0.035927],[109.34951,-0.035909],[109.349492,-0.035902],[109.349469,-0.035877],[109.349467,-0.03585],[109.349467,-0.035794],[109.349451,-0.035757],[109.349429,-0.035739],[109.349399,-0.035739],[109.349379,-0.035712],[109.349379,-0.035678],[109.349435,-0.035644],[109.349377,-0.035558],[109.349287,-0.03556],[109.349235,-0.035483],[109.349159,-0.035499],[109.349121,-0.035452],[109.349031,-0.035456],[109.348999,-0.035395],[109.349067,-0.035363],[109.349037,-0.035298],[109.349116,-0.035255],[109.349085,-0.035196],[109.348907,-0.035291],[109.348952,-0.035393],[109.348918,-0.035404],[109.348833,-0.035225],[109.348882,-0.035194],[109.348876,-0.035143],[109.34892,-0.035123],[109.348976,-0.034998],[109.348884,-0.034933],[109.34888,-0.034889],[109.348928,-0.034861],[109.348824,-0.034692],[109.348744,-0.034728],[109.34882,-0.034829],[109.34864,-0.034909],[109.348592,-0.034804],[109.34866,-0.034744],[109.34862,-0.034643],[109.34866,-0.034591],[109.348552,-0.034354],[109.348596,-0.034293],[109.348476,-0.034092],[109.34852,-0.034052],[109.348444,-0.033955],[109.348408,-0.033971],[109.348328,-0.033879],[109.348184,-0.033645],[109.34824,-0.033601],[109.348196,-0.033504],[109.348167,-0.033397],[109.348083,-0.033296],[109.347985,-0.033173],[109.347958,-0.033133],[109.347903,-0.033034],[109.34784,-0.032906],[109.347776,-0.032771],[109.347748,-0.032708],[109.347703,-0.03272],[109.347554,-0.032393],[109.347458,-0.032269],[109.347357,-0.032022],[109.347319,-0.032038],[109.347282,-0.031963],[109.347234,-0.031791],[109.347154,-0.031625],[109.347053,-0.031587],[109.346951,-0.031346],[109.346951,-0.031292],[109.346882,-0.031255],[109.346749,-0.030884],[109.34677,-0.030858],[109.346557,-0.030353],[109.346482,-0.030232],[109.346425,-0.030275],[109.346376,-0.030182],[109.346233,-0.029946],[109.346219,-0.029839],[109.34629,-0.029803],[109.346141,-0.029438],[109.346222,-0.029379],[109.346269,-0.029345],[109.345424,-0.027645],[109.345248,-0.027335],[109.345124,-0.027069],[109.345232,-0.027029],[109.345176,-0.026948],[109.345116,-0.026964],[109.34512,-0.026916],[109.344988,-0.026631],[109.344891,-0.026416],[109.344808,-0.026264],[109.344862,-0.02623],[109.344902,-0.026312],[109.344918,-0.026309],[109.344977,-0.026281],[109.344912,-0.026141],[109.344863,-0.02605],[109.344825,-0.026068],[109.344825,-0.026079],[109.344777,-0.026094],[109.344777,-0.026092],[109.343563,-0.026695],[109.342105,-0.027631],[109.340732,-0.028449],[109.339895,-0.029009],[109.33867,-0.029896],[109.338103,-0.030334],[109.337895,-0.030388],[109.33666,-0.031564],[109.333982,-0.034143],[109.3326,-0.035512],[109.329812,-0.03792],[109.326783,-0.040538],[109.325032,-0.04205],[109.324486,-0.042619],[109.323722,-0.043416],[109.32271,-0.044388],[109.321915,-0.045152],[109.320916,-0.046111],[109.319593,-0.047502],[109.318919,-0.04814],[109.317927,-0.049078],[109.3172,-0.049848],[109.316423,-0.050635],[109.31413,-0.052848],[109.312039,-0.054989],[109.310954,-0.05591],[109.310141,-0.056869],[109.309221,-0.057793],[109.308863,-0.058213],[109.308032,-0.058992],[109.306992,-0.060036],[109.305925,-0.061158],[109.304701,-0.062305],[109.304737,-0.062337],[109.304832,-0.062354],[109.306801,-0.064362],[109.310119,-0.067745],[109.310941,-0.068583],[109.312892,-0.070573],[109.315045,-0.072703],[109.316848,-0.07427],[109.316878,-0.074281],[109.317027,-0.074426],[109.322111,-0.078844],[109.323893,-0.080525],[109.323938,-0.080432],[109.324635,-0.079408],[109.327746,-0.074815],[109.330405,-0.070784],[109.332436,-0.068188],[109.335019,-0.065132],[109.33823,-0.06131],[109.341772,-0.057301],[109.345489,-0.053023],[109.347276,-0.051005],[109.348581,-0.048964],[109.349543,-0.047512],[109.350875,-0.046066],[109.351933,-0.044875],[109.351759,-0.044535],[109.353347,-0.043105],[109.354252,-0.042078]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Selatan","name":"Pontianak Selatan","density":9200}},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[109.298758,0.003911],[109.298781,0.004264],[109.298713,0.004554],[109.298397,0.004682],[109.298036,0.004875],[109.29772,0.005004],[109.297449,0.005132],[109.296997,0.005004],[109.296816,0.004875],[109.296681,0.004682],[109.296636,0.004554],[109.296726,0.004425],[109.296884,0.004329],[109.297133,0.004039],[109.297539,0.003975],[109.298036,0.003975],[109.298262,0.003846],[109.298555,0.003814],[109.298758,0.003911]]],[[[109.311636,0.03961],[109.311644,0.039396],[109.31161,0.039407],[109.29844,0.032276],[109.291123,0.011631],[109.290024,0.008531],[109.290489,0.008489],[109.290453,0.008403],[109.290493,0.008394],[109.290553,0.008418],[109.2907,0.008387],[109.290805,0.008354],[109.29091,0.008345],[109.291647,0.008387],[109.291702,0.008505],[109.291752,0.008614],[109.291872,0.008502],[109.291911,0.008466],[109.291893,0.00843],[109.291893,0.008394],[109.291932,0.008372],[109.292034,0.008427],[109.292124,0.008442],[109.292154,0.008442],[109.292205,0.008424],[109.292229,0.008487],[109.292253,0.008517],[109.292301,0.008514],[109.292348,0.008482],[109.292349,0.008397],[109.29243,0.008378],[109.292488,0.008477],[109.292508,0.008511],[109.292556,0.008502],[109.292564,0.008473],[109.29258,0.008412],[109.292613,0.008384],[109.292661,0.008384],[109.292709,0.008415],[109.29312,0.008339],[109.293186,0.008447],[109.293271,0.008444],[109.293282,0.008378],[109.293255,0.0083],[109.293315,0.008285],[109.293345,0.008333],[109.293366,0.008348],[109.293402,0.008342],[109.293453,0.008327],[109.293471,0.008339],[109.293489,0.008375],[109.293504,0.008324],[109.293492,0.008282],[109.293588,0.008224],[109.293663,0.008327],[109.293708,0.008394],[109.293729,0.008315],[109.293774,0.00827],[109.293843,0.008203],[109.293915,0.008176],[109.294031,0.008173],[109.294073,0.008197],[109.294139,0.008215],[109.294223,0.008264],[109.294235,0.008315],[109.294244,0.008354],[109.294283,0.008357],[109.294262,0.008273],[109.294241,0.008161],[109.29449,0.00811],[109.294529,0.008134],[109.294586,0.008149],[109.294694,0.00814],[109.294808,0.008116],[109.294865,0.008134],[109.29494,0.00814],[109.295012,0.008128],[109.295084,0.008089],[109.295168,0.008031],[109.295642,0.00791],[109.295699,0.00801],[109.295876,0.007977],[109.296001,0.007995],[109.296146,0.007913],[109.296179,0.007929],[109.296209,0.007935],[109.296233,0.007926],[109.296245,0.007886],[109.296242,0.007858],[109.296239,0.007805],[109.29661,0.007587],[109.296679,0.007418],[109.296748,0.007388],[109.296781,0.00747],[109.296979,0.007364],[109.297138,0.007267],[109.297543,0.007041],[109.297525,0.006981],[109.29796,0.006821],[109.298545,0.006525],[109.298695,0.006405],[109.298853,0.006339],[109.299074,0.006226],[109.299081,0.006185],[109.299117,0.006101],[109.299153,0.006052],[109.299245,0.006016],[109.299333,0.005952],[109.299373,0.005907],[109.299405,0.005803],[109.299473,0.00575],[109.299569,0.005698],[109.299657,0.005654],[109.299737,0.005573],[109.299765,0.005509],[109.299813,0.005461],[109.299893,0.005453],[109.300065,0.005449],[109.300259,0.005377],[109.300602,0.005167],[109.300937,0.005005],[109.301019,0.004998],[109.301355,0.004972],[109.301595,0.004994],[109.30212,0.005035],[109.302213,0.004984],[109.302234,0.004966],[109.302297,0.004966],[109.302327,0.004969],[109.302378,0.005002],[109.302498,0.004999],[109.302729,0.004975],[109.302732,0.005045],[109.302811,0.005035],[109.303074,0.005035],[109.303434,0.004972],[109.303463,0.005044],[109.303476,0.005075],[109.303671,0.005047],[109.303728,0.005023],[109.303782,0.004999],[109.30383,0.00499],[109.303851,0.005014],[109.30387,0.00505],[109.303884,0.00505],[109.304169,0.005042],[109.304207,0.005081],[109.304237,0.005117],[109.304318,0.005123],[109.304375,0.00509],[109.304491,0.005027],[109.30442,0.004818],[109.304546,0.004785],[109.304621,0.004918],[109.304867,0.004812],[109.304925,0.004963],[109.305002,0.004952],[109.305312,0.004862],[109.305362,0.004903],[109.305389,0.004915],[109.305506,0.004887],[109.305575,0.004863],[109.305605,0.004827],[109.305641,0.004824],[109.305725,0.00483],[109.305767,0.004812],[109.30577,0.004758],[109.305772,0.004735],[109.306481,0.004554],[109.306721,0.004468],[109.306822,0.004492],[109.306915,0.004456],[109.307089,0.004417],[109.307146,0.004389],[109.307353,0.004362],[109.30756,0.004317],[109.307644,0.004311],[109.307746,0.004296],[109.307718,0.004243],[109.307605,0.004033],[109.307767,0.003915],[109.307946,0.004219],[109.307968,0.004257],[109.308007,0.004254],[109.308394,0.004184],[109.308714,0.004964],[109.308778,0.004997],[109.308848,0.004981],[109.30888,0.004889],[109.308853,0.004793],[109.30856,0.004118],[109.308538,0.004068],[109.309194,0.003913],[109.309525,0.003837],[109.309594,0.003864],[109.309673,0.00397],[109.309731,0.003961],[109.309653,0.003794],[109.309908,0.003692],[109.309999,0.003757],[109.310212,0.003666],[109.310335,0.003607],[109.310452,0.003548],[109.310623,0.003472],[109.311071,0.003311],[109.311017,0.003145],[109.311275,0.003058],[109.311468,0.002969],[109.311513,0.003051],[109.312282,0.002813],[109.312327,0.002831],[109.312406,0.002847],[109.31251,0.002811],[109.312602,0.00282],[109.312761,0.002763],[109.312693,0.002501],[109.313089,0.002376],[109.313169,0.002622],[109.31332,0.002569],[109.313684,0.002501],[109.315176,0.002032],[109.315211,0.001996],[109.315282,0.001967],[109.315368,0.001967],[109.315417,0.001967],[109.315602,0.001896],[109.315609,0.001817],[109.316107,0.001702],[109.316313,0.001609],[109.317601,0.00106],[109.317674,0.001172],[109.317688,0.001193],[109.317754,0.001178],[109.317808,0.00115],[109.317811,0.001124],[109.317823,0.001042],[109.318131,0.000888],[109.318083,0.000791],[109.318128,0.000761],[109.318003,0.000504],[109.318251,0.000341],[109.318341,0.000541],[109.318365,0.000571],[109.318413,0.000619],[109.318437,0.000649],[109.318461,0.000698],[109.318506,0.000743],[109.318602,0.000731],[109.318587,0.000698],[109.31871,0.000661],[109.318767,0.000613],[109.318845,0.000562],[109.319487,0.000359],[109.319835,0.000154],[109.319892,0.000227],[109.32,0.000175],[109.319961,6.4e-05],[109.320231,-0.000109],[109.320285,-3.6e-05],[109.320609,-0.000244],[109.320707,-0.000118],[109.320773,-9.9e-05],[109.320842,-7.2e-05],[109.320905,-6.3e-05],[109.320985,-7.1e-05],[109.321067,-7.8e-05],[109.321041,-0.000119],[109.320881,-0.000368],[109.32095,-0.000432],[109.32112,-0.000187],[109.321172,-0.000112],[109.321217,-8.1e-05],[109.321337,-0.000106],[109.321376,-0.000166],[109.321415,-0.000235],[109.321484,-0.000278],[109.321589,-0.000353],[109.321784,-0.000432],[109.321856,-0.000495],[109.321898,-0.000552],[109.321931,-0.000628],[109.321799,-0.000558],[109.321716,-0.000742],[109.321667,-0.000851],[109.321838,-0.000939],[109.321961,-0.001002],[109.322318,-0.001147],[109.322381,-0.00122],[109.322375,-0.001301],[109.322645,-0.001452],[109.322684,-0.001431],[109.322744,-0.001422],[109.322939,-0.001461],[109.322954,-0.001518],[109.322966,-0.001582],[109.323014,-0.001606],[109.323071,-0.001648],[109.323137,-0.001657],[109.323158,-0.001639],[109.323238,-0.0016],[109.323334,-0.0016],[109.323386,-0.001606],[109.323406,-0.001657],[109.32343,-0.001706],[109.32343,-0.001772],[109.323415,-0.001835],[109.323388,-0.001887],[109.323343,-0.001935],[109.323976,-0.002409],[109.324357,-0.002651],[109.324409,-0.002578],[109.324617,-0.002714],[109.324537,-0.002799],[109.324623,-0.002895],[109.324613,-0.002948],[109.324869,-0.003202],[109.324948,-0.00312],[109.325073,-0.002992],[109.325097,-0.002988],[109.325141,-0.002996],[109.325237,-0.003085],[109.325349,-0.003181],[109.325475,-0.003236],[109.325481,-0.003306],[109.325964,-0.003656],[109.32606,-0.003813],[109.326056,-0.003886],[109.32626,-0.004031],[109.326564,-0.004268],[109.327024,-0.004603],[109.327269,-0.004784],[109.327287,-0.00485],[109.327329,-0.004888],[109.327398,-0.004942],[109.327388,-0.005044],[109.327316,-0.005154],[109.327626,-0.005433],[109.327748,-0.005516],[109.327778,-0.005492],[109.327763,-0.005481],[109.327834,-0.005401],[109.327879,-0.005448],[109.327788,-0.005518],[109.327761,-0.005543],[109.327721,-0.005535],[109.327687,-0.005594],[109.327824,-0.005678],[109.327982,-0.005717],[109.327982,-0.005601],[109.328031,-0.005586],[109.328131,-0.005565],[109.32821,-0.005659],[109.328237,-0.005661],[109.328304,-0.005698],[109.328337,-0.005674],[109.328385,-0.005635],[109.328455,-0.005581],[109.328422,-0.005686],[109.328339,-0.005788],[109.328332,-0.005825],[109.328322,-0.005883],[109.328307,-0.005919],[109.328309,-0.005966],[109.328342,-0.005998],[109.328341,-0.006024],[109.32842,-0.006073],[109.328444,-0.006055],[109.328481,-0.006051],[109.328521,-0.006068],[109.328536,-0.006094],[109.328579,-0.006131],[109.328577,-0.00617],[109.328594,-0.00618],[109.328625,-0.006211],[109.328646,-0.006231],[109.32868,-0.006224],[109.328708,-0.006211],[109.328737,-0.006206],[109.328766,-0.006219],[109.328773,-0.00625],[109.328781,-0.006285],[109.32881,-0.006304],[109.328847,-0.006291],[109.329037,-0.006452],[109.329004,-0.006508],[109.329036,-0.006544],[109.329007,-0.006584],[109.328995,-0.0066],[109.32925,-0.006817],[109.329319,-0.00687],[109.329335,-0.006852],[109.329356,-0.006829],[109.329378,-0.00682],[109.329414,-0.006831],[109.329434,-0.006849],[109.329466,-0.006822],[109.329577,-0.006931],[109.329731,-0.007071],[109.329755,-0.007083],[109.329683,-0.007172],[109.329842,-0.00734],[109.329884,-0.007301],[109.329871,-0.007287],[109.329925,-0.00724],[109.330033,-0.007355],[109.330103,-0.007391],[109.330127,-0.007384],[109.330156,-0.00735],[109.330193,-0.007362],[109.33026,-0.007374],[109.3303,-0.007363],[109.330321,-0.007373],[109.330367,-0.00741],[109.330368,-0.007428],[109.330377,-0.007449],[109.330392,-0.007486],[109.330377,-0.007557],[109.330404,-0.007573],[109.330442,-0.007569],[109.330451,-0.007595],[109.330459,-0.007647],[109.330478,-0.007659],[109.330485,-0.007697],[109.33048,-0.007749],[109.330478,-0.007797],[109.330493,-0.007865],[109.330544,-0.007919],[109.330564,-0.007921],[109.330601,-0.007955],[109.330633,-0.007972],[109.330665,-0.00797],[109.330689,-0.007957],[109.330716,-0.007948],[109.330768,-0.008007],[109.330704,-0.008094],[109.330687,-0.008079],[109.330645,-0.008126],[109.330739,-0.008218],[109.330863,-0.008096],[109.331109,-0.008298],[109.331124,-0.008337],[109.331117,-0.008359],[109.331089,-0.008362],[109.33106,-0.008354],[109.331045,-0.008386],[109.331136,-0.008458],[109.331171,-0.008452],[109.331173,-0.008405],[109.331262,-0.008417],[109.331296,-0.008442],[109.331362,-0.008441],[109.331421,-0.008476],[109.331488,-0.008548],[109.331578,-0.008651],[109.331611,-0.008702],[109.331617,-0.008741],[109.3316,-0.008777],[109.331595,-0.008818],[109.331665,-0.008857],[109.331731,-0.008899],[109.331787,-0.008908],[109.331838,-0.008991],[109.331861,-0.009062],[109.33189,-0.009091],[109.331945,-0.00912],[109.331959,-0.009174],[109.332005,-0.009198],[109.332033,-0.00923],[109.332065,-0.009268],[109.332114,-0.009286],[109.332177,-0.009295],[109.33232,-0.009415],[109.332261,-0.009504],[109.332288,-0.009527],[109.332256,-0.009595],[109.332342,-0.009689],[109.332423,-0.009612],[109.332496,-0.00965],[109.332443,-0.009729],[109.332386,-0.00976],[109.332352,-0.009797],[109.332479,-0.009932],[109.332379,-0.01],[109.332502,-0.010117],[109.332688,-0.009977],[109.332737,-0.009936],[109.332756,-0.009863],[109.332757,-0.009863],[109.332766,-0.009859],[109.332784,-0.009835],[109.332809,-0.009789],[109.332838,-0.009732],[109.332864,-0.009668],[109.332892,-0.009593],[109.332925,-0.009506],[109.332932,-0.009484],[109.332991,-0.009268],[109.333039,-0.00905],[109.333067,-0.008756],[109.333069,-0.008675],[109.333081,-0.008619],[109.333106,-0.008593],[109.333169,-0.008384],[109.333194,-0.008277],[109.333219,-0.008195],[109.333364,-0.007654],[109.333389,-0.007552],[109.333413,-0.007427],[109.333413,-0.007338],[109.333411,-0.007169],[109.33343,-0.00714],[109.333456,-0.007054],[109.333475,-0.007431],[109.333439,-0.007518],[109.333406,-0.007754],[109.333358,-0.007878],[109.333252,-0.008262],[109.333241,-0.008429],[109.333206,-0.008561],[109.333167,-0.008772],[109.333124,-0.008965],[109.333081,-0.00918],[109.333065,-0.009336],[109.333023,-0.009454],[109.332907,-0.009783],[109.332904,-0.009801],[109.332918,-0.009817],[109.332963,-0.009828],[109.33297,-0.009896],[109.33297,-0.009948],[109.332999,-0.009982],[109.332947,-0.01005],[109.333046,-0.010136],[109.333061,-0.010126],[109.33308,-0.010111],[109.333282,-0.010304],[109.333309,-0.010295],[109.333514,-0.010489],[109.333503,-0.01056],[109.333554,-0.010564],[109.333635,-0.010612],[109.333674,-0.010671],[109.333894,-0.010899],[109.333891,-0.01097],[109.333934,-0.011012],[109.334012,-0.011099],[109.334072,-0.011033],[109.334112,-0.011094],[109.334074,-0.011146],[109.334105,-0.01118],[109.334218,-0.011189],[109.334285,-0.011216],[109.334346,-0.011284],[109.334391,-0.011364],[109.334414,-0.011468],[109.334427,-0.011601],[109.334426,-0.011672],[109.334425,-0.011764],[109.33456,-0.011879],[109.33465,-0.011954],[109.334611,-0.012007],[109.334578,-0.012052],[109.335118,-0.01257],[109.335082,-0.012627],[109.335197,-0.012729],[109.335381,-0.012908],[109.335437,-0.01284],[109.335467,-0.012803],[109.335613,-0.012921],[109.335587,-0.012949],[109.335528,-0.013012],[109.33564,-0.013114],[109.335732,-0.013032],[109.33575,-0.013016],[109.33581,-0.013069],[109.335858,-0.013111],[109.335903,-0.013157],[109.335939,-0.013161],[109.336232,-0.013399],[109.336469,-0.013167],[109.336645,-0.013046],[109.33658,-0.013148],[109.336518,-0.013182],[109.336495,-0.013215],[109.336477,-0.013245],[109.336495,-0.013268],[109.336522,-0.013311],[109.336549,-0.013397],[109.336589,-0.013487],[109.336639,-0.013566],[109.336666,-0.013777],[109.336715,-0.013813],[109.336738,-0.013899],[109.336717,-0.013963],[109.336648,-0.013913],[109.33647,-0.014144],[109.336643,-0.01428],[109.336632,-0.014307],[109.336762,-0.014409],[109.336839,-0.014404],[109.336947,-0.014305],[109.336992,-0.014318],[109.33703,-0.014327],[109.337111,-0.01433],[109.337152,-0.01437],[109.337192,-0.01445],[109.337343,-0.014617],[109.337365,-0.014674],[109.337401,-0.014742],[109.337437,-0.014814],[109.337523,-0.01485],[109.337586,-0.014871],[109.337631,-0.014905],[109.337698,-0.014931],[109.337655,-0.014968],[109.33768,-0.015013],[109.337741,-0.015027],[109.337772,-0.015074],[109.337822,-0.015099],[109.337876,-0.015129],[109.337912,-0.015165],[109.337972,-0.015167],[109.338038,-0.015197],[109.338065,-0.015208],[109.338159,-0.015235],[109.338227,-0.015294],[109.33835,-0.015448],[109.33843,-0.015618],[109.338481,-0.015717],[109.338499,-0.015806],[109.33854,-0.015905],[109.338677,-0.016041],[109.33879,-0.016145],[109.338844,-0.016139],[109.338883,-0.016189],[109.338886,-0.016252],[109.339086,-0.016467],[109.339118,-0.016519],[109.33912,-0.016573],[109.339055,-0.016646],[109.339005,-0.016618],[109.338933,-0.016711],[109.339129,-0.01684],[109.339197,-0.01675],[109.339224,-0.016745],[109.339203,-0.016793],[109.339368,-0.016965],[109.339424,-0.016938],[109.339523,-0.016931],[109.339574,-0.016965],[109.339635,-0.017042],[109.339655,-0.017105],[109.339678,-0.017155],[109.339709,-0.017198],[109.339775,-0.017205],[109.339799,-0.017189],[109.339802,-0.017151],[109.339844,-0.017155],[109.339892,-0.0172],[109.339898,-0.017239],[109.339876,-0.017277],[109.339885,-0.017289],[109.339939,-0.017268],[109.339975,-0.017286],[109.340042,-0.017388],[109.34004,-0.017429],[109.340029,-0.017468],[109.340112,-0.017558],[109.340229,-0.017565],[109.340337,-0.017576],[109.340413,-0.017612],[109.340488,-0.017646],[109.340551,-0.017689],[109.340593,-0.017757],[109.340565,-0.017804],[109.340614,-0.017877],[109.340718,-0.018053],[109.340811,-0.018213],[109.340692,-0.018387],[109.340825,-0.018491],[109.340877,-0.018498],[109.340924,-0.018518],[109.341079,-0.018629],[109.341127,-0.018622],[109.341169,-0.018616],[109.341194,-0.018647],[109.341168,-0.018668],[109.341093,-0.018729],[109.341138,-0.018824],[109.341167,-0.018837],[109.341225,-0.018844],[109.341241,-0.018892],[109.341486,-0.019032],[109.341654,-0.019144],[109.341813,-0.019223],[109.341868,-0.019222],[109.341972,-0.01922],[109.34217,-0.019401],[109.342143,-0.019444],[109.342108,-0.019416],[109.342071,-0.019488],[109.342014,-0.019452],[109.341987,-0.01951],[109.342092,-0.019567],[109.34202,-0.019757],[109.342149,-0.019836],[109.342242,-0.019667],[109.342482,-0.019799],[109.3425,-0.019784],[109.342563,-0.0198],[109.342518,-0.019893],[109.34277,-0.020113],[109.343225,-0.020388],[109.343216,-0.020458],[109.343417,-0.020557],[109.343426,-0.020527],[109.343399,-0.020485],[109.343412,-0.020458],[109.343429,-0.020424],[109.343939,-0.020645],[109.343896,-0.020763],[109.343867,-0.020841],[109.344296,-0.021025],[109.344298,-0.020991],[109.344305,-0.020883],[109.344281,-0.020838],[109.344284,-0.020781],[109.344329,-0.020684],[109.344389,-0.020684],[109.344455,-0.020711],[109.344503,-0.020762],[109.344506,-0.020823],[109.344464,-0.021037],[109.344468,-0.021045],[109.344636,-0.021076],[109.344813,-0.021113],[109.345013,-0.021158],[109.345234,-0.021212],[109.345429,-0.021268],[109.34557,-0.021306],[109.345904,-0.021324],[109.34603,-0.021345],[109.346093,-0.021354],[109.346144,-0.021348],[109.346204,-0.021324],[109.346276,-0.021309],[109.346351,-0.021306],[109.346408,-0.0213],[109.34642,-0.021278],[109.346441,-0.021251],[109.346513,-0.021239],[109.346525,-0.021257],[109.346523,-0.021434],[109.346705,-0.021444],[109.346711,-0.021444],[109.34672,-0.021336],[109.346936,-0.021339],[109.346936,-0.021378],[109.34728,-0.021393],[109.347283,-0.021306],[109.347304,-0.021284],[109.347325,-0.02123],[109.347343,-0.0212],[109.347379,-0.021173],[109.347454,-0.021164],[109.347508,-0.021164],[109.34752,-0.021185],[109.34752,-0.021233],[109.347511,-0.021263],[109.347523,-0.021324],[109.347538,-0.021372],[109.347628,-0.021363],[109.34764,-0.021309],[109.347664,-0.021318],[109.347729,-0.021313],[109.34772,-0.021243],[109.347763,-0.021224],[109.347787,-0.021203],[109.347841,-0.021212],[109.347871,-0.021236],[109.347883,-0.021303],[109.347886,-0.021354],[109.347913,-0.021369],[109.347949,-0.02139],[109.348006,-0.021408],[109.348513,-0.021338],[109.34878,-0.021324],[109.349179,-0.021239],[109.349172,-0.021183],[109.349164,-0.021106],[109.349395,-0.021103],[109.349389,-0.021001],[109.349455,-0.021028],[109.349494,-0.021079],[109.349527,-0.021073],[109.34954,-0.021094],[109.349557,-0.021118],[109.349734,-0.021091],[109.349764,-0.021088],[109.34997,-0.021079],[109.350255,-0.020931],[109.350453,-0.020937],[109.350537,-0.02091],[109.350684,-0.020919],[109.35069,-0.020856],[109.350855,-0.020811],[109.350864,-0.020853],[109.350993,-0.02085],[109.351161,-0.02075],[109.35129,-0.020732],[109.351698,-0.020705],[109.351698,-0.020548],[109.351965,-0.020518],[109.352004,-0.020467],[109.352119,-0.020454],[109.352137,-0.020451],[109.35233,-0.020434],[109.352372,-0.02043],[109.352415,-0.02056],[109.352978,-0.020533],[109.352978,-0.020468],[109.352978,-0.020445],[109.353975,-0.020251],[109.354011,-0.020244],[109.354013,-0.020174],[109.354105,-0.02016],[109.354436,-0.020113],[109.35444,-0.01997],[109.354451,-0.019591],[109.354484,-0.018999],[109.354555,-0.018698],[109.354609,-0.018892],[109.354602,-0.019054],[109.354555,-0.019091],[109.354551,-0.019131],[109.354547,-0.019179],[109.354523,-0.019223],[109.354519,-0.019268],[109.354543,-0.019348],[109.354543,-0.019413],[109.354555,-0.019445],[109.354595,-0.019509],[109.354596,-0.019553],[109.354563,-0.019582],[109.354563,-0.01963],[109.354643,-0.019719],[109.35467,-0.019713],[109.354678,-0.019678],[109.354747,-0.019662],[109.354799,-0.019662],[109.354843,-0.019676],[109.354867,-0.019712],[109.354912,-0.019733],[109.354952,-0.019739],[109.354979,-0.019719],[109.354979,-0.019694],[109.355019,-0.019678],[109.355064,-0.01968],[109.355078,-0.019662],[109.355083,-0.019626],[109.355329,-0.019574],[109.35535,-0.019597],[109.355379,-0.019592],[109.355423,-0.019557],[109.355443,-0.019554],[109.355496,-0.019608],[109.35555,-0.019626],[109.355589,-0.019619],[109.355627,-0.019585],[109.355631,-0.019554],[109.355641,-0.01952],[109.355647,-0.019499],[109.35571,-0.019465],[109.355935,-0.019434],[109.356027,-0.019488],[109.356068,-0.019495],[109.356155,-0.019472],[109.356194,-0.019486],[109.356245,-0.019452],[109.356288,-0.019425],[109.356333,-0.019431],[109.356367,-0.019445],[109.356409,-0.019418],[109.356441,-0.019402],[109.356499,-0.019397],[109.356533,-0.0194],[109.356585,-0.01937],[109.356643,-0.019327],[109.356675,-0.019368],[109.356729,-0.019382],[109.35686,-0.019388],[109.356911,-0.019348],[109.357077,-0.019327],[109.358934,-0.018954],[109.359114,-0.018906],[109.35911,-0.018946],[109.359325,-0.018934],[109.359329,-0.018983],[109.359385,-0.018983],[109.359397,-0.01891],[109.359629,-0.01885],[109.359985,-0.018822],[109.360165,-0.018805],[109.360173,-0.018665],[109.360433,-0.018632],[109.360513,-0.018685],[109.360537,-0.018665],[109.360689,-0.018685],[109.360693,-0.018729],[109.360741,-0.018737],[109.360745,-0.018777],[109.360813,-0.018781],[109.360829,-0.018721],[109.360921,-0.018729],[109.360917,-0.018773],[109.361185,-0.018745],[109.361193,-0.018693],[109.361281,-0.018677],[109.361285,-0.018733],[109.361585,-0.018685],[109.361581,-0.018636],[109.361697,-0.018628],[109.361685,-0.018528],[109.361761,-0.018487],[109.361937,-0.018491],[109.361981,-0.018532],[109.361981,-0.018596],[109.3621,-0.018626],[109.362176,-0.018613],[109.362642,-0.018585],[109.362659,-0.018533],[109.362729,-0.01854],[109.36277,-0.018577],[109.362956,-0.018565],[109.363022,-0.018561],[109.363028,-0.018561],[109.363033,-0.018556],[109.363079,-0.018511],[109.363109,-0.018448],[109.363166,-0.018433],[109.363205,-0.018399],[109.363253,-0.018315],[109.363292,-0.018288],[109.363343,-0.018261],[109.363331,-0.018312],[109.363316,-0.018372],[109.363307,-0.018418],[109.363355,-0.018517],[109.363382,-0.018496],[109.363433,-0.018472],[109.363493,-0.018454],[109.363589,-0.018451],[109.363682,-0.018475],[109.363715,-0.018505],[109.363723,-0.018542],[109.363739,-0.018614],[109.363871,-0.018623],[109.363883,-0.018575],[109.363988,-0.018581],[109.363988,-0.018623],[109.364126,-0.018632],[109.364146,-0.018574],[109.3642,-0.018582],[109.364588,-0.018582],[109.364591,-0.018442],[109.364687,-0.018427],[109.364767,-0.018399],[109.364845,-0.018348],[109.364911,-0.01833],[109.364965,-0.0183],[109.365073,-0.018291],[109.365676,-0.018378],[109.365739,-0.01836],[109.365793,-0.018333],[109.365787,-0.018369],[109.36579,-0.018409],[109.365808,-0.018454],[109.365856,-0.018472],[109.365928,-0.018478],[109.366033,-0.01843],[109.366102,-0.01843],[109.366141,-0.018469],[109.366189,-0.018451],[109.366273,-0.018469],[109.366333,-0.018481],[109.366384,-0.018538],[109.366404,-0.018564],[109.366429,-0.018596],[109.366469,-0.018566],[109.36651,-0.018535],[109.366534,-0.018493],[109.366546,-0.018448],[109.366594,-0.018439],[109.366636,-0.018457],[109.366669,-0.01849],[109.366705,-0.018526],[109.366711,-0.018573],[109.36672,-0.018632],[109.366798,-0.018635],[109.366808,-0.018578],[109.366897,-0.018584],[109.366906,-0.018543],[109.366937,-0.018499],[109.36698,-0.018521],[109.367026,-0.018528],[109.367104,-0.018516],[109.367164,-0.018521],[109.367247,-0.018528],[109.367321,-0.018541],[109.367374,-0.018541],[109.367471,-0.018492],[109.36749,-0.018457],[109.367586,-0.018404],[109.367635,-0.018367],[109.367657,-0.018319],[109.36767,-0.018244],[109.3676,-0.018228],[109.367591,-0.018214],[109.367594,-0.018171],[109.367653,-0.01814],[109.367642,-0.018108],[109.367623,-0.018078],[109.367613,-0.01803],[109.367618,-0.017998],[109.36764,-0.017995],[109.367665,-0.017996],[109.367682,-0.017997],[109.367724,-0.017979],[109.367748,-0.01795],[109.367736,-0.01802],[109.367724,-0.018052],[109.367714,-0.018113],[109.367713,-0.018141],[109.367719,-0.018173],[109.367723,-0.018268],[109.367716,-0.018314],[109.367723,-0.018361],[109.367733,-0.018409],[109.367745,-0.01845],[109.367753,-0.018477],[109.367765,-0.018541],[109.367855,-0.018554],[109.367952,-0.018607],[109.367988,-0.018664],[109.368026,-0.018711],[109.368033,-0.018745],[109.36804,-0.018774],[109.368102,-0.018786],[109.368141,-0.018779],[109.36818,-0.018752],[109.368215,-0.018733],[109.368228,-0.018708],[109.368664,-0.01876],[109.369017,-0.018815],[109.369174,-0.018839],[109.369182,-0.018819],[109.36918,-0.018747],[109.369148,-0.018681],[109.369168,-0.018647],[109.369211,-0.018638],[109.369283,-0.018475],[109.369333,-0.018409],[109.369357,-0.018346],[109.369357,-0.018242],[109.36938,-0.018176],[109.36942,-0.01812],[109.369472,-0.018063],[109.369535,-0.017993],[109.369578,-0.017954],[109.369526,-0.017678],[109.369521,-0.017612],[109.369463,-0.017556],[109.369398,-0.017572],[109.369339,-0.017587],[109.369294,-0.017581],[109.369231,-0.017506],[109.369249,-0.017447],[109.369285,-0.017393],[109.369348,-0.017345],[109.36938,-0.017327],[109.369411,-0.017268],[109.369598,-0.017341],[109.369627,-0.017289],[109.369526,-0.0172],[109.369679,-0.017098],[109.369697,-0.017053],[109.36969,-0.016983],[109.369722,-0.016996],[109.369787,-0.016953],[109.369886,-0.016861],[109.370012,-0.016765],[109.370055,-0.016768],[109.370111,-0.01679],[109.370122,-0.016824],[109.370115,-0.016879],[109.369969,-0.017026],[109.369908,-0.017139],[109.36987,-0.017261],[109.369818,-0.017368],[109.3698,-0.017406],[109.369827,-0.017433],[109.369794,-0.017499],[109.36976,-0.017544],[109.369724,-0.017639],[109.369731,-0.017664],[109.369726,-0.017701],[109.369697,-0.017755],[109.369665,-0.017843],[109.369665,-0.017884],[109.369681,-0.017904],[109.369701,-0.017918],[109.36974,-0.017945],[109.369751,-0.017979],[109.369737,-0.01797],[109.369697,-0.01797],[109.36967,-0.017986],[109.369643,-0.018045],[109.36962,-0.01807],[109.3696,-0.018097],[109.369611,-0.018138],[109.369609,-0.018167],[109.369587,-0.018201],[109.369551,-0.018217],[109.369521,-0.018237],[109.36951,-0.018273],[109.369477,-0.018321],[109.369453,-0.018409],[109.369444,-0.018454],[109.36945,-0.018533],[109.369429,-0.018572],[109.369408,-0.01862],[109.369405,-0.018657],[109.369432,-0.018663],[109.369459,-0.018738],[109.369477,-0.018801],[109.369498,-0.018838],[109.369528,-0.018847],[109.369579,-0.018868],[109.369636,-0.018856],[109.369702,-0.018832],[109.369744,-0.018832],[109.369789,-0.018847],[109.369837,-0.018865],[109.369867,-0.018898],[109.369898,-0.018951],[109.369945,-0.018934],[109.369973,-0.018896],[109.370031,-0.018883],[109.370088,-0.018903],[109.370127,-0.018903],[109.37014,-0.018871],[109.370184,-0.018837],[109.370221,-0.018857],[109.370317,-0.018925],[109.370373,-0.01893],[109.370452,-0.018924],[109.370511,-0.018907],[109.370577,-0.018903],[109.370643,-0.018912],[109.370739,-0.018961],[109.370805,-0.019024],[109.370844,-0.019092],[109.370894,-0.019156],[109.370936,-0.019175],[109.370977,-0.019173],[109.371028,-0.019177],[109.371058,-0.019194],[109.371095,-0.019204],[109.371149,-0.019223],[109.371223,-0.019236],[109.371252,-0.019253],[109.371269,-0.019282],[109.371302,-0.019284],[109.371335,-0.019296],[109.371437,-0.019345],[109.37148,-0.019333],[109.37152,-0.01934],[109.371638,-0.01938],[109.371743,-0.019399],[109.371809,-0.01938],[109.371842,-0.019341],[109.371883,-0.019321],[109.371888,-0.019258],[109.371896,-0.019236],[109.371896,-0.019282],[109.371908,-0.019304],[109.371925,-0.019328],[109.37193,-0.019369],[109.371945,-0.019404],[109.371952,-0.019425],[109.371981,-0.019464],[109.372053,-0.019525],[109.372114,-0.019559],[109.372131,-0.019569],[109.37217,-0.019482],[109.37223,-0.019476],[109.372266,-0.019577],[109.372279,-0.01961],[109.372288,-0.019622],[109.372304,-0.019583],[109.372335,-0.019572],[109.372389,-0.019583],[109.372475,-0.019632],[109.372534,-0.019657],[109.372584,-0.019661],[109.372632,-0.019683],[109.372659,-0.019727],[109.372681,-0.019752],[109.372701,-0.019768],[109.372713,-0.019744],[109.372743,-0.019727],[109.372745,-0.019768],[109.372762,-0.019805],[109.372807,-0.019849],[109.372853,-0.019897],[109.372883,-0.019932],[109.372886,-0.019951],[109.372912,-0.019995],[109.37293,-0.020026],[109.372924,-0.020058],[109.372917,-0.020092],[109.37291,-0.020131],[109.372913,-0.020172],[109.372994,-0.020194],[109.373065,-0.020196],[109.373104,-0.020218],[109.373082,-0.020243],[109.373089,-0.020259],[109.373188,-0.020303],[109.373271,-0.020304],[109.373228,-0.020374],[109.373246,-0.020402],[109.373222,-0.020438],[109.373453,-0.020562],[109.373474,-0.020516],[109.373507,-0.020504],[109.373609,-0.020304],[109.37363,-0.020263],[109.373684,-0.020251],[109.373654,-0.020325],[109.373647,-0.020344],[109.37373,-0.020382],[109.373738,-0.020365],[109.373814,-0.020198],[109.373831,-0.020217],[109.373831,-0.020248],[109.373824,-0.020282],[109.373837,-0.020331],[109.373858,-0.020358],[109.373884,-0.020365],[109.373919,-0.020364],[109.373963,-0.020361],[109.374008,-0.02037],[109.374019,-0.020386],[109.374019,-0.020425],[109.374032,-0.020449],[109.374067,-0.020468],[109.374115,-0.020468],[109.374129,-0.020552],[109.374281,-0.020624],[109.374313,-0.020554],[109.374358,-0.020558],[109.374383,-0.02059],[109.374439,-0.020601],[109.374482,-0.02061],[109.374552,-0.020635],[109.374646,-0.020712],[109.374781,-0.020821],[109.374828,-0.020871],[109.374855,-0.020882],[109.374957,-0.020873],[109.374959,-0.020921],[109.374977,-0.02095],[109.375004,-0.020973],[109.375035,-0.020975],[109.375071,-0.020984],[109.375114,-0.020998],[109.375164,-0.021072],[109.375209,-0.021088],[109.375251,-0.021102],[109.37533,-0.021115],[109.375391,-0.021122],[109.375442,-0.021099],[109.375451,-0.02107],[109.375474,-0.021034],[109.375514,-0.020998],[109.375562,-0.020984],[109.375622,-0.020943],[109.375521,-0.021138],[109.375622,-0.021197],[109.375638,-0.021235],[109.375681,-0.021272],[109.375699,-0.021296],[109.375708,-0.021326],[109.375726,-0.021355],[109.375748,-0.021367],[109.37578,-0.021392],[109.375805,-0.021426],[109.375836,-0.021462],[109.375868,-0.021482],[109.375915,-0.021484],[109.37594,-0.021505],[109.375953,-0.021521],[109.376002,-0.021541],[109.376074,-0.021566],[109.376122,-0.021595],[109.376169,-0.021625],[109.376236,-0.021641],[109.376299,-0.021629],[109.376351,-0.021629],[109.376401,-0.021638],[109.376439,-0.021661],[109.37647,-0.021684],[109.376513,-0.021706],[109.376614,-0.021758],[109.376709,-0.021704],[109.376729,-0.021631],[109.376742,-0.021584],[109.376799,-0.021457],[109.376817,-0.021416],[109.376837,-0.021229],[109.376855,-0.021027],[109.376874,-0.020777],[109.376874,-0.020636],[109.376868,-0.020591],[109.376862,-0.020208],[109.376856,-0.020036],[109.376872,-0.01971],[109.376926,-0.019529],[109.377058,-0.019309],[109.377055,-0.019244],[109.377052,-0.019185],[109.377237,-0.018807],[109.377319,-0.018638],[109.377388,-0.018499],[109.377407,-0.018429],[109.377394,-0.0184],[109.3774,-0.018397],[109.377438,-0.018402],[109.377536,-0.018317],[109.377544,-0.018255],[109.377646,-0.018149],[109.377694,-0.018107],[109.377766,-0.01801],[109.377805,-0.017923],[109.377826,-0.017844],[109.377826,-0.017612],[109.377829,-0.017437],[109.377844,-0.017385],[109.377952,-0.016691],[109.378051,-0.016543],[109.378203,-0.01642],[109.378408,-0.016253],[109.378471,-0.016196],[109.378541,-0.016131],[109.378562,-0.016143],[109.378612,-0.01617],[109.378732,-0.016009],[109.37871,-0.015971],[109.378689,-0.015934],[109.378661,-0.015905],[109.378624,-0.015846],[109.378578,-0.015795],[109.378553,-0.015781],[109.378524,-0.015776],[109.378433,-0.015774],[109.378369,-0.015725],[109.378322,-0.015694],[109.378261,-0.015647],[109.378259,-0.015599],[109.378248,-0.015576],[109.37817,-0.015572],[109.377878,-0.015557],[109.377839,-0.015555],[109.377671,-0.015535],[109.377591,-0.015501],[109.377514,-0.01545],[109.37745,-0.015399],[109.377426,-0.015343],[109.377416,-0.015277],[109.377419,-0.015229],[109.377436,-0.015192],[109.377475,-0.015136],[109.377516,-0.015096],[109.37762,-0.014996],[109.377667,-0.014968],[109.377709,-0.014959],[109.377745,-0.014942],[109.377775,-0.014884],[109.377808,-0.014873],[109.377926,-0.01481],[109.377966,-0.014782],[109.377973,-0.014751],[109.37802,-0.014753],[109.378061,-0.014765],[109.378093,-0.014747],[109.378166,-0.014713],[109.378205,-0.01466],[109.378268,-0.014644],[109.378369,-0.014635],[109.378405,-0.014617],[109.378466,-0.014585],[109.378585,-0.014472],[109.378684,-0.014296],[109.378801,-0.014117],[109.378877,-0.01399],[109.378877,-0.013922],[109.378893,-0.013886],[109.37892,-0.013831],[109.378898,-0.013822],[109.378875,-0.013838],[109.378873,-0.013791],[109.378889,-0.013745],[109.378891,-0.013684],[109.378871,-0.013603],[109.378853,-0.013553],[109.378783,-0.013505],[109.378713,-0.013478],[109.37863,-0.013485],[109.378594,-0.013505],[109.37856,-0.013519],[109.378502,-0.013523],[109.37843,-0.01353],[109.378385,-0.01356],[109.378355,-0.013564],[109.378338,-0.013567],[109.378287,-0.013601],[109.378269,-0.01364],[109.378243,-0.013695],[109.37829,-0.013779],[109.37827,-0.013779],[109.378223,-0.013702],[109.378191,-0.013709],[109.377961,-0.013846],[109.37787,-0.014028],[109.377789,-0.01404],[109.377784,-0.014044],[109.377748,-0.014078],[109.377667,-0.014065],[109.377591,-0.014035],[109.377544,-0.013983],[109.377463,-0.013836],[109.377445,-0.013757],[109.377451,-0.013682],[109.377481,-0.013575],[109.377512,-0.013487],[109.377607,-0.01336],[109.377733,-0.013268],[109.377868,-0.013191],[109.377964,-0.013118],[109.378113,-0.012982],[109.378281,-0.012684],[109.378317,-0.01256],[109.378305,-0.012419],[109.378261,-0.012326],[109.378193,-0.012298],[109.378045,-0.012326],[109.377826,-0.01235],[109.377666,-0.012391],[109.377518,-0.012447],[109.377346,-0.012435],[109.377254,-0.012322],[109.377198,-0.012197],[109.37721,-0.012073],[109.377238,-0.011891],[109.37735,-0.011626],[109.37739,-0.011533],[109.377418,-0.011404],[109.377482,-0.011227],[109.377606,-0.01111],[109.377738,-0.011062],[109.377826,-0.011026],[109.377858,-0.010974],[109.377834,-0.010909],[109.377786,-0.010853],[109.377642,-0.010772],[109.377522,-0.010708],[109.377474,-0.010684],[109.37737,-0.010623],[109.377222,-0.010644],[109.377106,-0.010752],[109.377006,-0.010813],[109.376962,-0.010849],[109.376866,-0.010821],[109.376826,-0.010805],[109.37677,-0.010825],[109.376738,-0.010821],[109.376686,-0.01078],[109.376642,-0.010736],[109.37661,-0.010656],[109.376606,-0.010611],[109.376558,-0.010631],[109.376518,-0.010644],[109.37647,-0.010627],[109.37647,-0.010511],[109.37645,-0.010418],[109.37635,-0.010297],[109.37629,-0.010169],[109.376226,-0.010048],[109.37616,-0.009953],[109.375995,-0.009937],[109.375872,-0.00991],[109.375803,-0.009802],[109.375766,-0.009663],[109.375803,-0.009572],[109.375894,-0.009523],[109.375931,-0.009448],[109.375984,-0.0094],[109.376091,-0.009325],[109.376203,-0.009228],[109.376288,-0.00911],[109.376363,-0.009003],[109.376299,-0.009191],[109.376256,-0.009287],[109.376144,-0.009427],[109.376064,-0.009464],[109.376059,-0.009518],[109.376069,-0.009566],[109.376059,-0.009641],[109.376101,-0.00969],[109.376192,-0.009754],[109.376325,-0.009802],[109.376411,-0.009867],[109.376507,-0.010082],[109.376651,-0.010318],[109.376704,-0.010468],[109.376704,-0.010597],[109.37672,-0.010677],[109.376741,-0.010699],[109.376811,-0.010704],[109.377024,-0.0105],[109.377173,-0.010393],[109.37729,-0.010382],[109.377525,-0.010382],[109.377648,-0.010479],[109.377762,-0.010572],[109.377807,-0.010575],[109.377833,-0.010514],[109.377855,-0.010563],[109.377876,-0.010617],[109.3779,-0.010663],[109.377948,-0.010693],[109.377965,-0.010701],[109.377829,-0.008935],[109.376949,-0.00625],[109.376511,-0.005799],[109.376417,-0.005332],[109.376136,-0.004764],[109.375774,-0.0041],[109.375964,-0.003773],[109.376,-0.003487],[109.375806,-0.003195],[109.37579,-0.002911],[109.376088,-0.002791],[109.376111,-0.002583],[109.375744,-0.002253],[109.375134,-0.00209],[109.374226,-0.001458],[109.37335,-0.000657],[109.373158,-0.000332],[109.373071,0.000283],[109.372657,0.001057],[109.372297,0.001977],[109.372071,0.003021],[109.371754,0.004093],[109.371449,0.005772],[109.371248,0.006883],[109.370774,0.007644],[109.370511,0.00909],[109.369848,0.009276],[109.369661,0.010245],[109.369909,0.011507],[109.369865,0.01241],[109.370217,0.013088],[109.370601,0.01412],[109.370432,0.015115],[109.370175,0.01607],[109.370752,0.017219],[109.370744,0.018155],[109.370532,0.018669],[109.37089,0.019297],[109.371008,0.020714],[109.370815,0.020775],[109.353616,0.026533],[109.351621,0.027158],[109.337918,0.030833],[109.336942,0.031094],[109.335525,0.031474],[109.333547,0.032008],[109.332064,0.032522],[109.33206,0.032526],[109.332009,0.032541],[109.324174,0.03526],[109.324115,0.03528],[109.32149,0.036191],[109.320004,0.036707],[109.318405,0.037268],[109.317004,0.037747],[109.316182,0.038033],[109.311636,0.03961]]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Utara","name":"Pontianak Utara","density":1800}},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.286142,-0.03983],[109.286072,-0.039753],[109.286085,-0.039741],[109.286348,-0.039472],[109.287204,-0.038662],[109.287366,-0.038482],[109.288123,-0.037728],[109.288378,-0.037482],[109.289307,-0.036563],[109.28968,-0.036185],[109.290199,-0.035672],[109.290484,-0.035353],[109.290983,-0.034878],[109.291501,-0.034364],[109.291767,-0.034104],[109.291899,-0.033992],[109.292579,-0.033292],[109.293216,-0.032806],[109.293465,-0.032593],[109.293956,-0.032175],[109.294046,-0.032155],[109.294078,-0.032128],[109.294101,-0.032115],[109.294139,-0.032085],[109.294149,-0.03204],[109.294181,-0.032005],[109.294224,-0.031975],[109.294281,-0.031927],[109.294381,-0.031872],[109.294419,-0.031817],[109.294477,-0.031764],[109.294995,-0.031386],[109.295393,-0.031076],[109.295812,-0.030765],[109.296075,-0.03056],[109.296906,-0.029961],[109.297019,-0.029871],[109.297179,-0.029773],[109.297196,-0.029769],[109.297638,-0.029432],[109.298227,-0.029049],[109.298236,-0.029042],[109.298296,-0.028989],[109.298346,-0.028947],[109.298431,-0.028887],[109.298501,-0.028844],[109.298609,-0.028764],[109.298815,-0.028649],[109.298867,-0.028616],[109.298892,-0.028581],[109.298915,-0.028544],[109.298965,-0.028521],[109.299042,-0.028479],[109.299093,-0.028469],[109.29912,-0.028443],[109.299138,-0.028408],[109.299185,-0.028391],[109.29935,-0.028276],[109.299396,-0.028241],[109.299506,-0.028163],[109.299576,-0.02811],[109.299616,-0.02808],[109.299689,-0.02807],[109.299764,-0.028015],[109.299794,-0.027988],[109.299821,-0.02798],[109.299876,-0.02796],[109.299909,-0.027938],[109.299932,-0.02791],[109.299972,-0.02788],[109.300014,-0.02788],[109.300047,-0.02786],[109.300104,-0.027817],[109.300102,-0.02778],[109.300122,-0.027752],[109.300225,-0.02769],[109.300277,-0.027665],[109.300322,-0.02765],[109.300367,-0.027637],[109.300407,-0.027602],[109.300445,-0.027559],[109.30051,-0.027514],[109.300563,-0.027484],[109.300625,-0.027449],[109.300678,-0.027424],[109.300733,-0.027382],[109.300816,-0.027351],[109.300918,-0.027271],[109.301121,-0.027131],[109.301519,-0.026891],[109.30203,-0.026605],[109.302536,-0.02635],[109.303017,-0.026119],[109.303142,-0.026099],[109.303182,-0.026084],[109.303258,-0.026054],[109.303295,-0.025979],[109.303338,-0.025964],[109.304422,-0.025473],[109.305416,-0.025025],[109.306388,-0.024614],[109.30725,-0.024236],[109.308044,-0.02392],[109.309121,-0.02351],[109.309364,-0.023409],[109.309922,-0.023176],[109.310551,-0.022916],[109.311067,-0.022723],[109.311638,-0.022515],[109.311998,-0.022398],[109.312284,-0.02229],[109.312775,-0.022147],[109.313418,-0.021957],[109.313741,-0.021884],[109.313924,-0.021832],[109.314137,-0.021776],[109.314378,-0.021701],[109.314523,-0.021656],[109.314793,-0.021576],[109.315377,-0.021408],[109.315738,-0.021333],[109.316269,-0.021183],[109.316744,-0.021073],[109.317005,-0.020995],[109.317634,-0.020842],[109.317851,-0.020805],[109.31822,-0.02073],[109.318437,-0.020669],[109.319021,-0.020569],[109.319174,-0.020537],[109.319948,-0.020381],[109.320636,-0.020239],[109.32125,-0.020139],[109.321936,-0.020001],[109.322886,-0.01981],[109.323582,-0.019688],[109.324133,-0.01958],[109.324478,-0.019517],[109.325357,-0.01937],[109.325538,-0.019345],[109.325821,-0.019287],[109.326094,-0.019247],[109.326419,-0.019187],[109.32662,-0.019144],[109.327066,-0.019056],[109.327536,-0.018989],[109.327742,-0.018961],[109.327985,-0.018901],[109.328153,-0.018881],[109.328754,-0.018778],[109.329089,-0.018715],[109.329495,-0.018648],[109.329593,-0.018633],[109.329665,-0.018631],[109.329748,-0.018611],[109.329878,-0.018566],[109.330209,-0.018518],[109.330316,-0.018495],[109.330364,-0.018483],[109.331147,-0.018307],[109.331436,-0.018231],[109.331641,-0.018155],[109.331903,-0.018039],[109.332095,-0.01791],[109.332313,-0.017763],[109.332554,-0.017603],[109.332691,-0.017483],[109.333276,-0.016605],[109.333328,-0.016497],[109.333439,-0.016379],[109.3335,-0.016437],[109.333501,-0.016436],[109.333451,-0.016385],[109.332031,-0.015197],[109.331914,-0.015316],[109.3319,-0.015306],[109.331788,-0.015216],[109.331686,-0.015119],[109.331599,-0.015025],[109.331527,-0.014952],[109.331474,-0.01491],[109.331439,-0.014893],[109.331414,-0.014887],[109.331341,-0.014967],[109.331296,-0.01493],[109.331254,-0.014888],[109.331176,-0.014873],[109.33114,-0.014843],[109.331119,-0.014795],[109.331083,-0.014764],[109.330987,-0.014692],[109.330915,-0.014668],[109.33084,-0.014695],[109.330735,-0.014734],[109.330546,-0.014722],[109.330411,-0.014755],[109.33039,-0.014725],[109.330608,-0.014466],[109.330639,-0.014429],[109.330351,-0.014194],[109.330333,-0.014217],[109.330303,-0.014254],[109.330102,-0.014121],[109.329961,-0.014308],[109.329898,-0.014278],[109.329841,-0.014321],[109.329592,-0.014164],[109.329506,-0.014121],[109.329518,-0.014079],[109.329476,-0.014064],[109.329401,-0.014064],[109.329362,-0.014097],[109.329233,-0.014049],[109.329026,-0.013985],[109.328993,-0.013931],[109.328945,-0.01385],[109.328873,-0.013798],[109.328732,-0.013714],[109.328651,-0.013662],[109.328627,-0.013575],[109.328609,-0.013481],[109.328491,-0.013385],[109.328561,-0.013291],[109.328425,-0.013175],[109.328657,-0.01288],[109.3286,-0.012824],[109.328231,-0.012512],[109.327976,-0.012246],[109.327955,-0.012259],[109.327895,-0.012195],[109.327829,-0.012174],[109.327736,-0.012096],[109.32761,-0.011992],[109.327535,-0.011929],[109.327553,-0.011893],[109.32734,-0.011703],[109.327262,-0.011772],[109.327139,-0.011669],[109.327061,-0.011603],[109.327002,-0.011567],[109.326873,-0.011449],[109.326801,-0.011428],[109.326552,-0.011238],[109.326507,-0.01128],[109.326372,-0.011175],[109.326408,-0.011114],[109.326195,-0.010954],[109.326165,-0.010981],[109.326096,-0.010939],[109.325799,-0.011238],[109.32576,-0.01116],[109.325686,-0.011136],[109.325587,-0.011066],[109.325473,-0.010974],[109.325426,-0.010937],[109.325369,-0.010971],[109.325277,-0.010943],[109.325117,-0.010806],[109.325073,-0.010802],[109.324917,-0.010729],[109.324861,-0.010637],[109.324673,-0.010544],[109.324733,-0.010444],[109.324693,-0.010403],[109.324637,-0.010351],[109.324841,-0.010206],[109.324705,-0.010057],[109.324486,-0.010203],[109.324274,-0.010343],[109.32423,-0.010279],[109.324389,-0.010137],[109.324525,-0.010017],[109.324434,-0.009896],[109.324228,-0.010007],[109.324153,-0.00996],[109.324126,-0.009985],[109.32397,-0.009892],[109.323802,-0.009755],[109.32373,-0.009763],[109.32367,-0.009679],[109.323678,-0.009614],[109.323702,-0.00958],[109.323617,-0.009481],[109.323505,-0.009347],[109.323477,-0.009321],[109.323422,-0.009369],[109.323454,-0.009397],[109.323406,-0.009409],[109.323306,-0.009477],[109.323258,-0.009445],[109.323258,-0.009377],[109.323214,-0.009377],[109.323178,-0.009337],[109.323166,-0.009284],[109.323207,-0.009198],[109.323117,-0.009112],[109.323042,-0.009176],[109.322935,-0.009106],[109.322712,-0.008892],[109.3228,-0.008764],[109.322743,-0.008721],[109.322618,-0.008624],[109.32253,-0.008555],[109.322408,-0.008677],[109.322072,-0.008436],[109.32205,-0.008355],[109.321954,-0.008253],[109.321992,-0.008199],[109.321731,-0.00792],[109.321811,-0.007824],[109.321688,-0.007749],[109.321576,-0.007861],[109.321427,-0.007781],[109.32116,-0.00748],[109.320995,-0.007303],[109.320915,-0.007223],[109.320835,-0.007185],[109.320787,-0.007185],[109.320691,-0.007104],[109.320686,-0.007045],[109.320632,-0.007019],[109.320062,-0.006498],[109.320057,-0.00646],[109.320105,-0.00631],[109.319705,-0.005881],[109.319443,-0.006047],[109.318857,-0.005451],[109.318665,-0.005569],[109.318375,-0.005355],[109.318288,-0.005467],[109.317723,-0.005059],[109.317622,-0.004968],[109.317579,-0.004882],[109.317419,-0.004817],[109.317542,-0.004522],[109.317137,-0.004248],[109.316646,-0.004001],[109.316529,-0.00413],[109.316151,-0.003878],[109.316161,-0.00384],[109.315927,-0.00369],[109.315969,-0.003497],[109.315655,-0.003325],[109.315522,-0.003497],[109.31534,-0.00354],[109.31517,-0.003433],[109.315154,-0.00347],[109.31502,-0.003379],[109.315047,-0.00332],[109.315036,-0.003202],[109.314994,-0.003175],[109.314978,-0.003191],[109.314951,-0.003186],[109.314919,-0.003207],[109.314887,-0.003202],[109.314892,-0.003127],[109.314764,-0.003019],[109.314716,-0.003116],[109.314679,-0.003084],[109.314679,-0.003051],[109.314653,-0.003041],[109.314551,-0.003186],[109.314146,-0.002992],[109.314178,-0.002939],[109.313832,-0.002799],[109.313794,-0.002815],[109.31373,-0.002874],[109.313672,-0.002869],[109.313645,-0.002821],[109.313656,-0.002762],[109.31356,-0.002703],[109.31357,-0.002649],[109.313517,-0.002622],[109.313256,-0.002509],[109.312819,-0.002359],[109.312739,-0.002456],[109.312712,-0.002445],[109.312691,-0.002386],[109.312621,-0.002305],[109.312536,-0.002359],[109.312477,-0.002332],[109.312499,-0.002171],[109.312232,-0.002075],[109.312115,-0.002101],[109.312099,-0.002166],[109.311966,-0.002161],[109.311976,-0.002118],[109.311912,-0.002123],[109.311784,-0.002214],[109.31171,-0.002177],[109.311672,-0.002144],[109.311662,-0.002112],[109.31171,-0.001957],[109.311678,-0.001898],[109.31147,-0.001801],[109.311363,-0.001989],[109.311145,-0.00193],[109.31083,-0.001876],[109.310723,-0.00179],[109.310537,-0.001699],[109.310372,-0.001688],[109.310318,-0.001774],[109.31026,-0.001763],[109.31026,-0.001694],[109.310201,-0.001651],[109.3101,-0.00164],[109.310046,-0.001672],[109.309908,-0.001661],[109.309913,-0.001559],[109.309844,-0.001538],[109.309785,-0.001645],[109.309444,-0.001549],[109.309289,-0.001495],[109.309081,-0.001436],[109.308932,-0.001355],[109.308692,-0.001355],[109.308543,-0.001404],[109.308436,-0.001533],[109.308388,-0.001672],[109.308335,-0.001742],[109.308276,-0.00172],[109.308282,-0.001624],[109.308303,-0.001538],[109.30833,-0.001436],[109.308324,-0.001377],[109.308191,-0.001286],[109.308068,-0.001339],[109.30802,-0.001323],[109.307935,-0.001237],[109.307855,-0.001248],[109.307765,-0.001329],[109.307717,-0.001302],[109.307679,-0.001232],[109.307503,-0.001173],[109.307024,-0.001082],[109.306752,-0.001066],[109.306501,-0.001071],[109.306501,-0.000985],[109.306389,-0.00089],[109.306331,-0.000885],[109.306251,-0.000953],[109.306139,-0.000974],[109.306032,-0.001033],[109.305872,-0.001033],[109.30576,-0.001055],[109.305728,-0.001114],[109.305483,-0.00098],[109.305541,-0.000811],[109.305312,-0.000711],[109.305286,-0.000807],[109.305296,-0.000889],[109.305323,-0.001012],[109.305067,-0.001023],[109.304912,-0.001017],[109.304822,-0.001055],[109.304656,-0.000996],[109.304656,-0.000964],[109.304624,-0.000921],[109.304491,-0.000958],[109.304385,-0.000985],[109.304246,-0.001092],[109.304086,-0.001125],[109.304065,-0.001071],[109.303963,-0.001098],[109.303873,-0.001109],[109.303851,-0.001141],[109.303793,-0.001194],[109.30374,-0.001146],[109.303665,-0.001082],[109.303649,-0.001033],[109.303484,-0.00106],[109.303345,-0.001098],[109.303238,-0.001189],[109.302709,-0.001112],[109.302347,-0.001167],[109.302364,-0.001313],[109.302289,-0.001313],[109.30206,-0.001313],[109.301874,-0.001323],[109.301735,-0.001345],[109.301687,-0.001441],[109.301596,-0.001479],[109.301495,-0.0015],[109.301452,-0.001581],[109.301388,-0.001559],[109.301356,-0.0015],[109.301213,-0.001527],[109.30117,-0.001575],[109.301005,-0.001699],[109.300791,-0.001731],[109.300471,-0.001699],[109.300322,-0.001699],[109.300072,-0.001769],[109.300018,-0.001801],[109.299928,-0.001785],[109.29981,-0.001774],[109.299672,-0.001898],[109.299507,-0.001838],[109.2994,-0.001924],[109.299224,-0.001914],[109.299032,-0.001871],[109.298968,-0.001908],[109.298877,-0.001892],[109.298776,-0.002032],[109.298584,-0.002032],[109.298574,-0.002112],[109.298467,-0.002128],[109.29844,-0.002214],[109.298296,-0.002155],[109.29828,-0.002042],[109.298222,-0.001978],[109.298163,-0.001962],[109.298088,-0.002053],[109.29803,-0.002118],[109.297923,-0.002085],[109.297886,-0.001983],[109.297854,-0.001871],[109.297705,-0.001871],[109.297577,-0.001796],[109.297326,-0.001785],[109.296889,-0.001726],[109.296702,-0.001731],[109.296553,-0.001635],[109.295585,-0.001439],[109.29537,-0.001468],[109.29529,-0.001398],[109.29505,-0.001355],[109.294991,-0.001377],[109.294783,-0.001302],[109.294666,-0.001237],[109.294453,-0.001248],[109.294293,-0.001087],[109.294127,-0.000931],[109.293632,-0.00077],[109.29328,-0.000705],[109.292779,-0.000475],[109.292165,-0.000221],[109.291781,-4e-05],[109.2917,-2e-05],[109.291601,-2e-05],[109.29152,-4.9e-05],[109.29146,-0.000131],[109.291412,-0.000289],[109.29139,-0.000321],[109.291284,-0.000219],[109.291318,-0.000167],[109.291322,-9.7e-05],[109.291313,-7.4e-05],[109.29128,-5.6e-05],[109.291257,-5.2e-05],[109.291257,-4e-06],[109.291248,3.2e-05],[109.291215,3.5e-05],[109.291185,4.1e-05],[109.291167,5.3e-05],[109.291164,6.8e-05],[109.291182,8.6e-05],[109.29117,0.000107],[109.29114,0.000134],[109.291101,0.000143],[109.291071,0.000119],[109.29102,0.000168],[109.290951,0.000119],[109.290933,6.5e-05],[109.290906,4.7e-05],[109.290894,5e-06],[109.290855,1.1e-05],[109.290801,3.5e-05],[109.290732,5e-05],[109.290669,3.8e-05],[109.290639,2e-05],[109.290597,8e-06],[109.290531,4.4e-05],[109.290408,0.000119],[109.290408,0.000171],[109.290379,0.000246],[109.290352,0.000309],[109.290316,0.000319],[109.29028,0.000331],[109.290232,0.000343],[109.29016,0.000331],[109.290264,0.000746],[109.29023,0.000777],[109.289692,0.000989],[109.28965,0.000904],[109.289434,0.000992],[109.289464,0.001067],[109.289102,0.001223],[109.288847,0.001242],[109.288819,0.001179],[109.288507,0.001275],[109.288258,0.001325],[109.288163,0.001345],[109.28813,0.001322],[109.288124,0.001241],[109.288019,0.001225],[109.287881,0.001225],[109.28786,0.001225],[109.287839,0.001216],[109.287803,0.001216],[109.287773,0.001216],[109.287746,0.001207],[109.287707,0.001219],[109.28765,0.001253],[109.287566,0.001277],[109.287488,0.00128],[109.287452,0.001207],[109.287269,0.001222],[109.287251,0.00131],[109.28723,0.00131],[109.287215,0.001201],[109.287182,0.001174],[109.287155,0.001192],[109.287119,0.001201],[109.287104,0.001234],[109.287081,0.001382],[109.287051,0.001394],[109.287059,0.001269],[109.287029,0.001093],[109.286998,0.000849],[109.286936,0.000346],[109.286921,0.000225],[109.286893,-0.0],[109.286878,-0.000122],[109.286831,-0.000506],[109.286809,-0.00065],[109.286754,-0.001041],[109.286729,-0.001314],[109.286716,-0.001464],[109.28669,-0.001708],[109.28666,-0.001988],[109.286655,-0.002034],[109.286646,-0.00212],[109.286597,-0.002506],[109.286591,-0.003019],[109.286605,-0.00348],[109.286615,-0.003484],[109.286611,-0.003543],[109.286623,-0.003623],[109.286617,-0.003648],[109.286647,-0.004013],[109.286853,-0.005063],[109.286854,-0.005063],[109.286858,-0.005089],[109.286888,-0.005237],[109.286936,-0.005527],[109.286939,-0.00555],[109.286941,-0.005575],[109.286955,-0.005691],[109.287011,-0.006043],[109.287095,-0.00621],[109.287073,-0.006263],[109.287039,-0.006221],[109.287039,-0.006221],[109.287072,-0.006266],[109.287061,-0.006356],[109.287058,-0.006382],[109.287067,-0.006394],[109.287066,-0.006413],[109.287053,-0.006723],[109.287053,-0.006733],[109.287053,-0.006733],[109.286991,-0.007969],[109.286937,-0.008601],[109.286883,-0.009042],[109.28653,-0.009964],[109.285674,-0.012231],[109.285924,-0.013915],[109.285357,-0.016811],[109.28567,-0.018412],[109.282096,-0.020096],[109.279911,-0.022169],[109.276163,-0.027219],[109.279314,-0.035319],[109.283355,-0.041078],[109.283643,-0.040863],[109.28398,-0.040448],[109.284592,-0.039845],[109.285127,-0.040606],[109.286057,-0.039738],[109.286142,-0.03983],[109.286142,-0.03983]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Barat","name":"Pontianak Barat","density":7100}},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.344777,-0.026092],[109.344738,-0.025985],[109.344678,-0.025901],[109.344627,-0.025937],[109.344504,-0.025735],[109.344507,-0.025714],[109.344516,-0.025702],[109.344531,-0.025674],[109.344531,-0.025647],[109.344462,-0.025557],[109.344438,-0.025575],[109.344336,-0.025384],[109.344452,-0.025308],[109.344546,-0.025246],[109.344333,-0.024995],[109.344288,-0.025025],[109.34422,-0.025071],[109.344106,-0.024898],[109.343803,-0.024467],[109.343779,-0.024473],[109.343725,-0.024479],[109.343686,-0.02443],[109.343653,-0.02444],[109.343632,-0.024409],[109.343683,-0.024367],[109.343665,-0.024304],[109.343599,-0.02437],[109.343434,-0.024168],[109.343422,-0.024126],[109.343431,-0.024092],[109.343482,-0.024056],[109.343215,-0.023754],[109.343222,-0.023699],[109.343158,-0.023724],[109.343053,-0.023594],[109.342987,-0.023636],[109.342846,-0.023501],[109.34287,-0.023476],[109.34287,-0.023407],[109.342894,-0.023367],[109.342918,-0.023325],[109.342636,-0.023114],[109.342517,-0.023002],[109.342389,-0.022885],[109.342354,-0.022855],[109.342309,-0.022903],[109.342087,-0.022701],[109.342003,-0.02274],[109.341964,-0.022691],[109.341937,-0.022704],[109.341901,-0.022679],[109.341877,-0.022713],[109.341895,-0.02274],[109.341796,-0.022821],[109.341769,-0.022794],[109.341712,-0.022812],[109.341653,-0.022767],[109.341626,-0.022764],[109.341611,-0.022728],[109.341603,-0.022672],[109.341271,-0.022291],[109.341118,-0.022187],[109.341013,-0.022118],[109.341004,-0.022073],[109.340884,-0.022033],[109.340868,-0.022027],[109.340836,-0.022021],[109.340812,-0.022027],[109.340796,-0.02204],[109.340789,-0.022055],[109.34079,-0.022078],[109.340801,-0.022101],[109.340642,-0.02226],[109.340616,-0.022286],[109.340476,-0.022211],[109.340417,-0.022297],[109.340415,-0.022294],[109.340235,-0.022262],[109.340254,-0.022224],[109.340289,-0.022177],[109.340361,-0.022225],[109.340411,-0.022172],[109.340356,-0.022141],[109.340449,-0.022029],[109.340418,-0.022012],[109.340398,-0.022001],[109.340585,-0.021755],[109.340605,-0.021764],[109.340661,-0.021709],[109.340632,-0.02167],[109.340528,-0.021605],[109.340493,-0.021652],[109.340513,-0.021671],[109.340502,-0.021693],[109.340317,-0.021897],[109.340236,-0.021904],[109.340031,-0.022162],[109.33998,-0.022118],[109.339952,-0.022154],[109.339582,-0.021835],[109.3396,-0.02179],[109.339677,-0.021717],[109.339515,-0.02158],[109.339442,-0.021578],[109.339193,-0.021354],[109.339184,-0.021288],[109.339003,-0.021108],[109.339052,-0.02102],[109.339004,-0.020984],[109.339009,-0.02097],[109.339013,-0.020949],[109.338721,-0.020717],[109.338674,-0.020745],[109.338649,-0.020735],[109.338615,-0.020767],[109.338601,-0.020781],[109.338522,-0.020709],[109.338498,-0.020737],[109.338458,-0.020739],[109.33833,-0.020626],[109.338443,-0.020512],[109.338456,-0.020526],[109.338565,-0.020623],[109.338624,-0.020588],[109.338224,-0.020279],[109.338212,-0.020263],[109.338178,-0.020303],[109.338386,-0.020462],[109.338352,-0.020531],[109.338304,-0.020566],[109.337973,-0.020274],[109.338006,-0.020222],[109.337975,-0.020196],[109.337942,-0.02024],[109.33791,-0.020222],[109.337836,-0.020337],[109.337238,-0.019871],[109.337359,-0.019724],[109.337773,-0.020059],[109.33778,-0.020035],[109.337836,-0.019971],[109.337384,-0.019613],[109.336982,-0.019284],[109.336628,-0.018994],[109.336237,-0.01867],[109.335787,-0.018299],[109.335457,-0.018022],[109.335077,-0.017705],[109.334229,-0.01701],[109.333598,-0.0165],[109.333576,-0.016512],[109.333574,-0.016509],[109.333412,-0.016687],[109.333366,-0.016704],[109.333357,-0.016717],[109.33295,-0.017307],[109.332731,-0.017675],[109.332404,-0.017936],[109.332012,-0.018126],[109.331549,-0.018305],[109.331252,-0.018399],[109.33108,-0.018471],[109.330884,-0.018524],[109.33051,-0.018595],[109.329709,-0.018738],[109.328593,-0.018928],[109.326836,-0.019225],[109.326283,-0.019343],[109.325767,-0.019427],[109.324603,-0.019611],[109.322187,-0.02008],[109.321124,-0.020258],[109.32081,-0.020329],[109.319634,-0.020566],[109.318245,-0.020828],[109.317735,-0.020946],[109.317129,-0.021101],[109.316779,-0.021178],[109.315912,-0.021398],[109.315348,-0.021558],[109.314291,-0.021855],[109.31349,-0.02208],[109.313199,-0.022146],[109.312968,-0.022246],[109.31273,-0.0223],[109.312404,-0.022383],[109.312053,-0.02252],[109.31184,-0.022603],[109.311187,-0.022846],[109.309732,-0.023398],[109.308699,-0.023796],[109.308052,-0.024075],[109.307898,-0.024152],[109.307423,-0.024348],[109.306235,-0.024841],[109.303689,-0.025998],[109.30341,-0.026105],[109.302377,-0.02664],[109.301854,-0.026913],[109.301593,-0.027091],[109.301284,-0.027257],[109.301065,-0.027352],[109.300774,-0.0275],[109.299925,-0.02807],[109.29945,-0.028379],[109.299331,-0.028403],[109.299183,-0.028498],[109.298999,-0.028646],[109.29885,-0.028771],[109.298636,-0.028973],[109.29847,-0.02902],[109.298399,-0.029097],[109.29828,-0.02918],[109.29809,-0.029317],[109.297877,-0.029465],[109.297687,-0.029608],[109.297402,-0.029774],[109.297324,-0.029828],[109.2972,-0.029928],[109.297039,-0.03],[109.296891,-0.030077],[109.296814,-0.03019],[109.296642,-0.030326],[109.296493,-0.030427],[109.296398,-0.030469],[109.29625,-0.030534],[109.296107,-0.030635],[109.295828,-0.03092],[109.295324,-0.0313],[109.295015,-0.031508],[109.294855,-0.031638],[109.294754,-0.031715],[109.294505,-0.031935],[109.294243,-0.032137],[109.294053,-0.032262],[109.293887,-0.032469],[109.293774,-0.032547],[109.293626,-0.032606],[109.293454,-0.032748],[109.293305,-0.032861],[109.293181,-0.03298],[109.292884,-0.033324],[109.292528,-0.033615],[109.292142,-0.033971],[109.291815,-0.034203],[109.291322,-0.034713],[109.2902,-0.035871],[109.289921,-0.036156],[109.28893,-0.037183],[109.288269,-0.037843],[109.28615,-0.039838],[109.286142,-0.03983],[109.286142,-0.03983],[109.286767,-0.040503],[109.294,-0.048292],[109.298769,-0.053428],[109.300194,-0.054962],[109.301336,-0.05696],[109.30193,-0.059673],[109.303581,-0.0613],[109.304701,-0.062305],[109.305925,-0.061158],[109.306992,-0.060036],[109.308032,-0.058992],[109.308863,-0.058213],[109.309221,-0.057793],[109.310141,-0.056869],[109.310954,-0.05591],[109.312039,-0.054989],[109.31413,-0.052848],[109.316423,-0.050635],[109.3172,-0.049848],[109.317927,-0.049078],[109.318919,-0.04814],[109.319593,-0.047502],[109.320916,-0.046111],[109.321915,-0.045152],[109.32271,-0.044388],[109.323722,-0.043416],[109.324486,-0.042619],[109.325032,-0.04205],[109.326783,-0.040538],[109.329812,-0.03792],[109.3326,-0.035512],[109.333982,-0.034143],[109.33666,-0.031564],[109.337895,-0.030388],[109.338103,-0.030334],[109.33867,-0.029896],[109.339895,-0.029009],[109.340732,-0.028449],[109.342105,-0.027631],[109.343563,-0.026695],[109.344777,-0.026092]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Kota","name":"Pontianak Kota","density":14800}},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[109.323893,-0.080525],[109.33577,-0.091735],[109.342746,-0.09833],[109.346065,-0.093959],[109.34701,-0.092236],[109.348389,-0.090018],[109.351732,-0.084869],[109.355214,-0.079813],[109.358292,-0.07459],[109.359172,-0.073127],[109.359178,-0.073126],[109.360415,-0.071253],[109.360416,-0.071248],[109.360418,-0.071247],[109.36065,-0.070896],[109.361291,-0.069919],[109.361673,-0.069259],[109.362386,-0.067916],[109.36283,-0.067045],[109.362837,-0.067032],[109.362839,-0.067027],[109.362839,-0.067027],[109.36598,-0.060267],[109.36786,-0.058676],[109.367778,-0.058613],[109.367794,-0.058436],[109.367782,-0.058388],[109.367742,-0.058355],[109.367694,-0.058315],[109.367666,-0.058279],[109.36765,-0.058211],[109.367634,-0.058134],[109.36761,-0.05805],[109.36759,-0.057997],[109.367614,-0.057925],[109.367618,-0.057864],[109.367618,-0.057792],[109.367606,-0.057748],[109.36757,-0.057699],[109.367518,-0.057675],[109.367434,-0.057659],[109.367398,-0.057639],[109.367282,-0.057514],[109.367242,-0.057534],[109.367162,-0.05755],[109.367086,-0.057538],[109.366998,-0.057498],[109.366962,-0.05747],[109.366958,-0.057426],[109.366966,-0.057377],[109.36713,-0.057277],[109.367142,-0.057297],[109.36717,-0.057277],[109.36709,-0.057172],[109.367066,-0.057184],[109.367082,-0.057244],[109.366998,-0.057289],[109.366986,-0.057265],[109.366958,-0.057252],[109.36691,-0.057232],[109.366898,-0.057176],[109.366982,-0.057124],[109.366836,-0.056902],[109.366773,-0.056796],[109.366761,-0.056752],[109.366874,-0.056661],[109.366822,-0.056596],[109.366782,-0.056616],[109.366729,-0.056547],[109.366614,-0.056395],[109.366394,-0.056512],[109.36637,-0.056476],[109.36657,-0.056327],[109.366546,-0.05627],[109.36651,-0.056226],[109.36641,-0.056117],[109.366346,-0.055992],[109.366398,-0.055988],[109.366238,-0.055688],[109.366182,-0.055699],[109.366051,-0.055434],[109.36595,-0.055232],[109.365895,-0.055262],[109.365794,-0.055316],[109.365786,-0.055292],[109.365622,-0.055364],[109.365599,-0.0553],[109.365603,-0.055268],[109.365571,-0.055207],[109.365535,-0.055171],[109.365499,-0.055143],[109.365403,-0.054982],[109.365451,-0.054954],[109.365467,-0.054922],[109.365439,-0.054902],[109.365407,-0.054869],[109.365359,-0.054805],[109.365323,-0.054773],[109.365287,-0.054712],[109.365427,-0.054616],[109.365367,-0.054543],[109.365315,-0.054527],[109.365199,-0.054422],[109.365283,-0.054328],[109.365202,-0.054172],[109.365104,-0.053987],[109.365,-0.053829],[109.364959,-0.05376],[109.364824,-0.053615],[109.364677,-0.053675],[109.364575,-0.053494],[109.364647,-0.053416],[109.364629,-0.053388],[109.364533,-0.053431],[109.364521,-0.0534],[109.364536,-0.053382],[109.364506,-0.053343],[109.364453,-0.053355],[109.364426,-0.053289],[109.364563,-0.053213],[109.364494,-0.053096],[109.364228,-0.052633],[109.364189,-0.052655],[109.364141,-0.05257],[109.364126,-0.052576],[109.364075,-0.052576],[109.364003,-0.0526],[109.363979,-0.052585],[109.363919,-0.052561],[109.363904,-0.052531],[109.363904,-0.052455],[109.364063,-0.052353],[109.364011,-0.052275],[109.363946,-0.052152],[109.363938,-0.052137],[109.363997,-0.05209],[109.363823,-0.051861],[109.363791,-0.051891],[109.363763,-0.051918],[109.363778,-0.051942],[109.363721,-0.051981],[109.363667,-0.052066],[109.363604,-0.052135],[109.363589,-0.052166],[109.363376,-0.052357],[109.363337,-0.052311],[109.363523,-0.052154],[109.36349,-0.052132],[109.363472,-0.052108],[109.36349,-0.052081],[109.363454,-0.052027],[109.363502,-0.052],[109.363487,-0.051951],[109.363547,-0.051897],[109.363505,-0.051855],[109.363373,-0.05193],[109.363325,-0.051855],[109.363382,-0.051794],[109.363331,-0.051746],[109.363292,-0.051779],[109.36325,-0.051689],[109.363457,-0.051526],[109.363445,-0.051504],[109.363504,-0.051462],[109.363471,-0.05141],[109.363393,-0.051293],[109.363384,-0.051281],[109.363293,-0.051344],[109.363253,-0.051299],[109.363197,-0.051279],[109.363157,-0.051307],[109.363137,-0.051263],[109.363129,-0.051174],[109.363089,-0.051118],[109.362949,-0.051239],[109.362849,-0.051267],[109.362809,-0.051191],[109.363013,-0.051013],[109.362985,-0.050965],[109.362935,-0.050858],[109.362877,-0.050811],[109.36276,-0.050692],[109.362667,-0.05059],[109.362634,-0.050555],[109.362506,-0.050414],[109.362373,-0.050281],[109.362247,-0.050145],[109.362121,-0.049994],[109.361979,-0.049819],[109.361832,-0.049633],[109.361684,-0.049468],[109.361538,-0.049316],[109.361394,-0.049164],[109.361251,-0.049013],[109.361108,-0.048864],[109.360962,-0.048736],[109.360865,-0.048643],[109.360817,-0.048607],[109.360803,-0.048596],[109.360797,-0.04858],[109.360777,-0.048549],[109.360729,-0.048491],[109.36066,-0.048418],[109.360581,-0.048337],[109.360504,-0.048256],[109.360428,-0.048177],[109.36035,-0.0481],[109.360267,-0.048019],[109.360177,-0.047939],[109.360085,-0.04787],[109.360016,-0.047807],[109.359966,-0.047742],[109.359915,-0.047673],[109.359858,-0.047608],[109.3598,-0.047548],[109.359737,-0.047489],[109.359672,-0.047436],[109.359546,-0.04733],[109.359483,-0.047274],[109.359357,-0.04716],[109.359219,-0.04703],[109.35909,-0.0469],[109.358958,-0.046758],[109.358809,-0.046617],[109.358651,-0.04647],[109.358492,-0.046332],[109.358341,-0.046216],[109.358209,-0.046108],[109.358085,-0.045997],[109.358005,-0.045912],[109.357977,-0.045879],[109.35797,-0.045873],[109.357966,-0.045866],[109.357938,-0.045843],[109.35785,-0.045767],[109.357713,-0.045638],[109.35755,-0.045502],[109.357368,-0.045363],[109.357191,-0.045195],[109.357024,-0.044998],[109.356849,-0.044812],[109.356658,-0.044643],[109.356469,-0.044467],[109.356297,-0.044281],[109.356125,-0.044105],[109.355937,-0.043927],[109.355737,-0.04374],[109.355553,-0.043533],[109.355374,-0.043342],[109.355188,-0.043159],[109.355005,-0.042963],[109.354835,-0.042753],[109.354682,-0.042567],[109.354524,-0.042381],[109.354347,-0.042185],[109.354314,-0.042148],[109.354252,-0.042078],[109.353347,-0.043105],[109.351759,-0.044535],[109.351933,-0.044875],[109.350875,-0.046066],[109.349543,-0.047512],[109.348581,-0.048964],[109.347276,-0.051005],[109.345489,-0.053023],[109.341772,-0.057301],[109.33823,-0.06131],[109.335019,-0.065132],[109.332436,-0.068188],[109.330405,-0.070784],[109.327746,-0.074815],[109.324635,-0.079408],[109.323938,-0.080432],[109.323893,-0.080525]]]},"properties":{"Id":0,"Plan_Area":113026328.1,"Ket":"Pontianak Tenggara","name":"Pontianak Tenggara","density":2600}}]}; \ No newline at end of file diff --git a/webgis03/us-states.js b/webgis03/us-states.js new file mode 100644 index 0000000..7f6af2f --- /dev/null +++ b/webgis03/us-states.js @@ -0,0 +1,54 @@ +var statesData = {"type":"FeatureCollection","features":[ +{"type":"Feature","id":"01","properties":{"name":"Alabama","density":94.65},"geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}}, +{"type":"Feature","id":"02","properties":{"name":"Alaska","density":1.264},"geometry":{"type":"MultiPolygon","coordinates":[[[[-131.602021,55.117982],[-131.569159,55.28229],[-131.355558,55.183705],[-131.38842,55.01392],[-131.645836,55.035827],[-131.602021,55.117982]]],[[[-131.832052,55.42469],[-131.645836,55.304197],[-131.749898,55.128935],[-131.832052,55.189182],[-131.832052,55.42469]]],[[[-132.976733,56.437924],[-132.735747,56.459832],[-132.631685,56.421493],[-132.664547,56.273616],[-132.878148,56.240754],[-133.069841,56.333862],[-132.976733,56.437924]]],[[[-133.595627,56.350293],[-133.162949,56.317431],[-133.05341,56.125739],[-132.620732,55.912138],[-132.472854,55.780691],[-132.4619,55.671152],[-132.357838,55.649245],[-132.341408,55.506844],[-132.166146,55.364444],[-132.144238,55.238474],[-132.029222,55.276813],[-131.97993,55.178228],[-131.958022,54.789365],[-132.029222,54.701734],[-132.308546,54.718165],[-132.385223,54.915335],[-132.483808,54.898904],[-132.686455,55.046781],[-132.746701,54.997489],[-132.916486,55.046781],[-132.889102,54.898904],[-132.73027,54.937242],[-132.626209,54.882473],[-132.675501,54.679826],[-132.867194,54.701734],[-133.157472,54.95915],[-133.239626,55.090597],[-133.223195,55.22752],[-133.453227,55.216566],[-133.453227,55.320628],[-133.277964,55.331582],[-133.102702,55.42469],[-133.17938,55.588998],[-133.387503,55.62186],[-133.420365,55.884753],[-133.497042,56.0162],[-133.639442,55.923092],[-133.694212,56.070969],[-133.546335,56.142169],[-133.666827,56.311955],[-133.595627,56.350293]]],[[[-133.738027,55.556137],[-133.546335,55.490413],[-133.414888,55.572568],[-133.283441,55.534229],[-133.420365,55.386352],[-133.633966,55.430167],[-133.738027,55.556137]]],[[[-133.907813,56.930849],[-134.050213,57.029434],[-133.885905,57.095157],[-133.343688,57.002049],[-133.102702,57.007526],[-132.932917,56.82131],[-132.620732,56.667956],[-132.653593,56.55294],[-132.817901,56.492694],[-133.042456,56.520078],[-133.201287,56.448878],[-133.420365,56.492694],[-133.66135,56.448878],[-133.710643,56.684386],[-133.688735,56.837741],[-133.869474,56.843218],[-133.907813,56.930849]]],[[[-134.115936,56.48174],[-134.25286,56.558417],[-134.400737,56.722725],[-134.417168,56.848695],[-134.296675,56.908941],[-134.170706,56.848695],[-134.143321,56.952757],[-133.748981,56.772017],[-133.710643,56.596755],[-133.847566,56.574848],[-133.935197,56.377678],[-133.836612,56.322908],[-133.957105,56.092877],[-134.110459,56.142169],[-134.132367,55.999769],[-134.230952,56.070969],[-134.291198,56.350293],[-134.115936,56.48174]]],[[[-134.636246,56.28457],[-134.669107,56.169554],[-134.806031,56.235277],[-135.178463,56.67891],[-135.413971,56.810356],[-135.331817,56.914418],[-135.424925,57.166357],[-135.687818,57.369004],[-135.419448,57.566174],[-135.298955,57.48402],[-135.063447,57.418296],[-134.849846,57.407343],[-134.844369,57.248511],[-134.636246,56.728202],[-134.636246,56.28457]]],[[[-134.712923,58.223407],[-134.373353,58.14673],[-134.176183,58.157683],[-134.187137,58.081006],[-133.902336,57.807159],[-134.099505,57.850975],[-134.148798,57.757867],[-133.935197,57.615466],[-133.869474,57.363527],[-134.083075,57.297804],[-134.154275,57.210173],[-134.499322,57.029434],[-134.603384,57.034911],[-134.6472,57.226604],[-134.575999,57.341619],[-134.608861,57.511404],[-134.729354,57.719528],[-134.707446,57.829067],[-134.784123,58.097437],[-134.91557,58.212453],[-134.953908,58.409623],[-134.712923,58.223407]]],[[[-135.857603,57.330665],[-135.715203,57.330665],[-135.567326,57.149926],[-135.633049,57.023957],[-135.857603,56.996572],[-135.824742,57.193742],[-135.857603,57.330665]]],[[[-136.279328,58.206976],[-135.978096,58.201499],[-135.780926,58.28913],[-135.496125,58.168637],[-135.64948,58.037191],[-135.59471,57.987898],[-135.45231,58.135776],[-135.107263,58.086483],[-134.91557,57.976944],[-135.025108,57.779775],[-134.937477,57.763344],[-134.822462,57.500451],[-135.085355,57.462112],[-135.572802,57.675713],[-135.556372,57.456635],[-135.709726,57.369004],[-135.890465,57.407343],[-136.000004,57.544266],[-136.208128,57.637374],[-136.366959,57.829067],[-136.569606,57.916698],[-136.558652,58.075529],[-136.421728,58.130299],[-136.377913,58.267222],[-136.279328,58.206976]]],[[[-147.079854,60.200582],[-147.501579,59.948643],[-147.53444,59.850058],[-147.874011,59.784335],[-147.80281,59.937689],[-147.435855,60.09652],[-147.205824,60.271782],[-147.079854,60.200582]]],[[[-147.561825,60.578491],[-147.616594,60.370367],[-147.758995,60.156767],[-147.956165,60.227967],[-147.791856,60.474429],[-147.561825,60.578491]]],[[[-147.786379,70.245291],[-147.682318,70.201475],[-147.162008,70.15766],[-146.888161,70.185044],[-146.510252,70.185044],[-146.099482,70.146706],[-145.858496,70.168614],[-145.622988,70.08646],[-145.195787,69.993352],[-144.620708,69.971444],[-144.461877,70.026213],[-144.078491,70.059075],[-143.914183,70.130275],[-143.497935,70.141229],[-143.503412,70.091936],[-143.25695,70.119321],[-142.747594,70.042644],[-142.402547,69.916674],[-142.079408,69.856428],[-142.008207,69.801659],[-141.712453,69.790705],[-141.433129,69.697597],[-141.378359,69.63735],[-141.208574,69.686643],[-141.00045,69.648304],[-141.00045,60.304644],[-140.53491,60.22249],[-140.474664,60.310121],[-139.987216,60.184151],[-139.696939,60.342983],[-139.088998,60.359413],[-139.198537,60.091043],[-139.045183,59.997935],[-138.700135,59.910304],[-138.623458,59.767904],[-137.604747,59.242118],[-137.445916,58.908024],[-137.265177,59.001132],[-136.827022,59.159963],[-136.580559,59.16544],[-136.465544,59.285933],[-136.476498,59.466672],[-136.301236,59.466672],[-136.25742,59.625503],[-135.945234,59.663842],[-135.479694,59.800766],[-135.025108,59.565257],[-135.068924,59.422857],[-134.959385,59.280456],[-134.701969,59.247595],[-134.378829,59.033994],[-134.400737,58.973748],[-134.25286,58.858732],[-133.842089,58.727285],[-133.173903,58.152206],[-133.075318,57.998852],[-132.867194,57.845498],[-132.560485,57.505928],[-132.253777,57.21565],[-132.368792,57.095157],[-132.05113,57.051341],[-132.127807,56.876079],[-131.870391,56.804879],[-131.837529,56.602232],[-131.580113,56.613186],[-131.087188,56.405062],[-130.78048,56.366724],[-130.621648,56.268139],[-130.468294,56.240754],[-130.424478,56.142169],[-130.101339,56.114785],[-130.002754,55.994292],[-130.150631,55.769737],[-130.128724,55.583521],[-129.986323,55.276813],[-130.095862,55.200136],[-130.336847,54.920812],[-130.687372,54.718165],[-130.785957,54.822227],[-130.917403,54.789365],[-131.010511,54.997489],[-130.983126,55.08512],[-131.092665,55.189182],[-130.862634,55.298721],[-130.928357,55.337059],[-131.158389,55.200136],[-131.284358,55.287767],[-131.426759,55.238474],[-131.843006,55.457552],[-131.700606,55.698537],[-131.963499,55.616383],[-131.974453,55.49589],[-132.182576,55.588998],[-132.226392,55.704014],[-132.083991,55.829984],[-132.127807,55.955953],[-132.324977,55.851892],[-132.522147,56.076446],[-132.642639,56.032631],[-132.719317,56.218847],[-132.527624,56.339339],[-132.341408,56.339339],[-132.396177,56.487217],[-132.297592,56.67891],[-132.450946,56.673433],[-132.768609,56.837741],[-132.993164,57.034911],[-133.51895,57.177311],[-133.507996,57.577128],[-133.677781,57.62642],[-133.639442,57.790728],[-133.814705,57.834544],[-134.072121,58.053622],[-134.143321,58.168637],[-134.586953,58.206976],[-135.074401,58.502731],[-135.282525,59.192825],[-135.38111,59.033994],[-135.337294,58.891593],[-135.140124,58.617746],[-135.189417,58.573931],[-135.05797,58.349376],[-135.085355,58.201499],[-135.277048,58.234361],[-135.430402,58.398669],[-135.633049,58.426053],[-135.91785,58.382238],[-135.912373,58.617746],[-136.087635,58.814916],[-136.246466,58.75467],[-136.876314,58.962794],[-136.931084,58.902547],[-136.586036,58.836824],[-136.317666,58.672516],[-136.213604,58.667039],[-136.180743,58.535592],[-136.043819,58.382238],[-136.388867,58.294607],[-136.591513,58.349376],[-136.59699,58.212453],[-136.859883,58.316515],[-136.947514,58.393192],[-137.111823,58.393192],[-137.566409,58.590362],[-137.900502,58.765624],[-137.933364,58.869686],[-138.11958,59.02304],[-138.634412,59.132579],[-138.919213,59.247595],[-139.417615,59.379041],[-139.746231,59.505011],[-139.718846,59.641934],[-139.625738,59.598119],[-139.5162,59.68575],[-139.625738,59.88292],[-139.488815,59.992458],[-139.554538,60.041751],[-139.801,59.833627],[-140.315833,59.696704],[-140.92925,59.745996],[-141.444083,59.871966],[-141.46599,59.970551],[-141.706976,59.948643],[-141.964392,60.019843],[-142.539471,60.085566],[-142.873564,60.091043],[-143.623905,60.036274],[-143.892275,59.997935],[-144.231845,60.140336],[-144.65357,60.206059],[-144.785016,60.29369],[-144.834309,60.441568],[-145.124586,60.430614],[-145.223171,60.299167],[-145.738004,60.474429],[-145.820158,60.551106],[-146.351421,60.408706],[-146.608837,60.238921],[-146.718376,60.397752],[-146.608837,60.485383],[-146.455483,60.463475],[-145.951604,60.578491],[-146.017328,60.666122],[-146.252836,60.622307],[-146.345944,60.737322],[-146.565022,60.753753],[-146.784099,61.044031],[-146.866253,60.972831],[-147.172962,60.934492],[-147.271547,60.972831],[-147.375609,60.879723],[-147.758995,60.912584],[-147.775426,60.808523],[-148.032842,60.781138],[-148.153334,60.819476],[-148.065703,61.005692],[-148.175242,61.000215],[-148.350504,60.803046],[-148.109519,60.737322],[-148.087611,60.594922],[-147.939734,60.441568],[-148.027365,60.277259],[-148.219058,60.332029],[-148.273827,60.249875],[-148.087611,60.217013],[-147.983549,59.997935],[-148.251919,59.95412],[-148.399797,59.997935],[-148.635305,59.937689],[-148.755798,59.986981],[-149.067984,59.981505],[-149.05703,60.063659],[-149.204907,60.008889],[-149.287061,59.904827],[-149.418508,59.997935],[-149.582816,59.866489],[-149.511616,59.806242],[-149.741647,59.729565],[-149.949771,59.718611],[-150.031925,59.61455],[-150.25648,59.521442],[-150.409834,59.554303],[-150.579619,59.444764],[-150.716543,59.450241],[-151.001343,59.225687],[-151.308052,59.209256],[-151.406637,59.280456],[-151.592853,59.159963],[-151.976239,59.253071],[-151.888608,59.422857],[-151.636669,59.483103],[-151.47236,59.472149],[-151.423068,59.537872],[-151.127313,59.669319],[-151.116359,59.778858],[-151.505222,59.63098],[-151.828361,59.718611],[-151.8667,59.778858],[-151.702392,60.030797],[-151.423068,60.211536],[-151.379252,60.359413],[-151.297098,60.386798],[-151.264237,60.545629],[-151.406637,60.720892],[-151.06159,60.786615],[-150.404357,61.038554],[-150.245526,60.939969],[-150.042879,60.912584],[-149.741647,61.016646],[-150.075741,61.15357],[-150.207187,61.257632],[-150.47008,61.246678],[-150.656296,61.29597],[-150.711066,61.252155],[-151.023251,61.180954],[-151.165652,61.044031],[-151.477837,61.011169],[-151.800977,60.852338],[-151.833838,60.748276],[-152.080301,60.693507],[-152.13507,60.578491],[-152.310332,60.507291],[-152.392486,60.304644],[-152.732057,60.173197],[-152.567748,60.069136],[-152.704672,59.915781],[-153.022334,59.888397],[-153.049719,59.691227],[-153.345474,59.620026],[-153.438582,59.702181],[-153.586459,59.548826],[-153.761721,59.543349],[-153.72886,59.433811],[-154.117723,59.368087],[-154.1944,59.066856],[-153.750768,59.050425],[-153.400243,58.968271],[-153.301658,58.869686],[-153.444059,58.710854],[-153.679567,58.612269],[-153.898645,58.606793],[-153.920553,58.519161],[-154.062953,58.4863],[-153.99723,58.376761],[-154.145107,58.212453],[-154.46277,58.059098],[-154.643509,58.059098],[-154.818771,58.004329],[-154.988556,58.015283],[-155.120003,57.955037],[-155.081664,57.872883],[-155.328126,57.829067],[-155.377419,57.708574],[-155.547204,57.785251],[-155.73342,57.549743],[-156.045606,57.566174],[-156.023698,57.440204],[-156.209914,57.473066],[-156.34136,57.418296],[-156.34136,57.248511],[-156.549484,56.985618],[-156.883577,56.952757],[-157.157424,56.832264],[-157.20124,56.766541],[-157.376502,56.859649],[-157.672257,56.607709],[-157.754411,56.67891],[-157.918719,56.657002],[-157.957058,56.514601],[-158.126843,56.459832],[-158.32949,56.48174],[-158.488321,56.339339],[-158.208997,56.295524],[-158.510229,55.977861],[-159.375585,55.873799],[-159.616571,55.594475],[-159.676817,55.654722],[-159.643955,55.829984],[-159.813741,55.857368],[-160.027341,55.791645],[-160.060203,55.720445],[-160.394296,55.605429],[-160.536697,55.473983],[-160.580512,55.567091],[-160.668143,55.457552],[-160.865313,55.528752],[-161.232268,55.358967],[-161.506115,55.364444],[-161.467776,55.49589],[-161.588269,55.62186],[-161.697808,55.517798],[-161.686854,55.408259],[-162.053809,55.074166],[-162.179779,55.15632],[-162.218117,55.03035],[-162.470057,55.052258],[-162.508395,55.249428],[-162.661749,55.293244],[-162.716519,55.222043],[-162.579595,55.134412],[-162.645319,54.997489],[-162.847965,54.926289],[-163.00132,55.079643],[-163.187536,55.090597],[-163.220397,55.03035],[-163.034181,54.942719],[-163.373752,54.800319],[-163.14372,54.76198],[-163.138243,54.696257],[-163.329936,54.74555],[-163.587352,54.614103],[-164.085754,54.61958],[-164.332216,54.531949],[-164.354124,54.466226],[-164.638925,54.389548],[-164.847049,54.416933],[-164.918249,54.603149],[-164.710125,54.663395],[-164.551294,54.88795],[-164.34317,54.893427],[-163.894061,55.041304],[-163.532583,55.046781],[-163.39566,54.904381],[-163.291598,55.008443],[-163.313505,55.128935],[-163.105382,55.183705],[-162.880827,55.183705],[-162.579595,55.446598],[-162.245502,55.682106],[-161.807347,55.89023],[-161.292514,55.983338],[-161.078914,55.939523],[-160.87079,55.999769],[-160.816021,55.912138],[-160.931036,55.813553],[-160.805067,55.736876],[-160.766728,55.857368],[-160.509312,55.868322],[-160.438112,55.791645],[-160.27928,55.76426],[-160.273803,55.857368],[-160.536697,55.939523],[-160.558604,55.994292],[-160.383342,56.251708],[-160.147834,56.399586],[-159.830171,56.541986],[-159.326293,56.667956],[-158.959338,56.848695],[-158.784076,56.782971],[-158.641675,56.810356],[-158.701922,56.925372],[-158.658106,57.034911],[-158.378782,57.264942],[-157.995396,57.41282],[-157.688688,57.609989],[-157.705118,57.719528],[-157.458656,58.497254],[-157.07527,58.705377],[-157.119086,58.869686],[-158.039212,58.634177],[-158.32949,58.661562],[-158.40069,58.760147],[-158.564998,58.803962],[-158.619768,58.913501],[-158.767645,58.864209],[-158.860753,58.694424],[-158.701922,58.480823],[-158.893615,58.387715],[-159.0634,58.420577],[-159.392016,58.760147],[-159.616571,58.929932],[-159.731586,58.929932],[-159.808264,58.803962],[-159.906848,58.782055],[-160.054726,58.886116],[-160.235465,58.902547],[-160.317619,59.072332],[-160.854359,58.88064],[-161.33633,58.743716],[-161.374669,58.667039],[-161.752577,58.552023],[-161.938793,58.656085],[-161.769008,58.776578],[-161.829255,59.061379],[-161.955224,59.36261],[-161.703285,59.48858],[-161.911409,59.740519],[-162.092148,59.88292],[-162.234548,60.091043],[-162.448149,60.178674],[-162.502918,59.997935],[-162.760334,59.959597],[-163.171105,59.844581],[-163.66403,59.795289],[-163.9324,59.806242],[-164.162431,59.866489],[-164.189816,60.02532],[-164.386986,60.074613],[-164.699171,60.29369],[-164.962064,60.337506],[-165.268773,60.578491],[-165.060649,60.68803],[-165.016834,60.890677],[-165.175665,60.846861],[-165.197573,60.972831],[-165.120896,61.076893],[-165.323543,61.170001],[-165.34545,61.071416],[-165.591913,61.109754],[-165.624774,61.279539],[-165.816467,61.301447],[-165.920529,61.416463],[-165.915052,61.558863],[-166.106745,61.49314],[-166.139607,61.630064],[-165.904098,61.662925],[-166.095791,61.81628],[-165.756221,61.827233],[-165.756221,62.013449],[-165.674067,62.139419],[-165.044219,62.539236],[-164.912772,62.659728],[-164.819664,62.637821],[-164.874433,62.807606],[-164.633448,63.097884],[-164.425324,63.212899],[-164.036462,63.262192],[-163.73523,63.212899],[-163.313505,63.037637],[-163.039658,63.059545],[-162.661749,63.22933],[-162.272887,63.486746],[-162.075717,63.514131],[-162.026424,63.448408],[-161.555408,63.448408],[-161.13916,63.503177],[-160.766728,63.771547],[-160.766728,63.837271],[-160.952944,64.08921],[-160.974852,64.237087],[-161.26513,64.395918],[-161.374669,64.532842],[-161.078914,64.494503],[-160.79959,64.609519],[-160.783159,64.719058],[-161.144637,64.921705],[-161.413007,64.762873],[-161.664946,64.790258],[-161.900455,64.702627],[-162.168825,64.680719],[-162.234548,64.620473],[-162.541257,64.532842],[-162.634365,64.384965],[-162.787719,64.324718],[-162.858919,64.49998],[-163.045135,64.538319],[-163.176582,64.401395],[-163.253259,64.467119],[-163.598306,64.565704],[-164.304832,64.560227],[-164.80871,64.450688],[-165.000403,64.434257],[-165.411174,64.49998],[-166.188899,64.576658],[-166.391546,64.636904],[-166.484654,64.735489],[-166.413454,64.872412],[-166.692778,64.987428],[-166.638008,65.113398],[-166.462746,65.179121],[-166.517516,65.337952],[-166.796839,65.337952],[-167.026871,65.381768],[-167.47598,65.414629],[-167.711489,65.496784],[-168.072967,65.578938],[-168.105828,65.682999],[-167.541703,65.819923],[-166.829701,66.049954],[-166.3313,66.186878],[-166.046499,66.110201],[-165.756221,66.09377],[-165.690498,66.203309],[-165.86576,66.21974],[-165.88219,66.312848],[-165.186619,66.466202],[-164.403417,66.581218],[-163.981692,66.592172],[-163.751661,66.553833],[-163.872153,66.389525],[-163.828338,66.274509],[-163.915969,66.192355],[-163.768091,66.060908],[-163.494244,66.082816],[-163.149197,66.060908],[-162.749381,66.088293],[-162.634365,66.039001],[-162.371472,66.028047],[-162.14144,66.077339],[-161.840208,66.02257],[-161.549931,66.241647],[-161.341807,66.252601],[-161.199406,66.208786],[-161.128206,66.334755],[-161.528023,66.395002],[-161.911409,66.345709],[-161.87307,66.510017],[-162.174302,66.68528],[-162.502918,66.740049],[-162.601503,66.89888],[-162.344087,66.937219],[-162.015471,66.778388],[-162.075717,66.652418],[-161.916886,66.553833],[-161.571838,66.438817],[-161.489684,66.55931],[-161.884024,66.718141],[-161.714239,67.002942],[-161.851162,67.052235],[-162.240025,66.991988],[-162.639842,67.008419],[-162.700088,67.057712],[-162.902735,67.008419],[-163.740707,67.128912],[-163.757138,67.254881],[-164.009077,67.534205],[-164.211724,67.638267],[-164.534863,67.725898],[-165.192096,67.966884],[-165.493328,68.059992],[-165.794559,68.081899],[-166.243668,68.246208],[-166.681824,68.339316],[-166.703731,68.372177],[-166.375115,68.42147],[-166.227238,68.574824],[-166.216284,68.881533],[-165.329019,68.859625],[-164.255539,68.930825],[-163.976215,68.985595],[-163.532583,69.138949],[-163.110859,69.374457],[-163.023228,69.609966],[-162.842489,69.812613],[-162.470057,69.982398],[-162.311225,70.108367],[-161.851162,70.311014],[-161.779962,70.256245],[-161.396576,70.239814],[-160.837928,70.343876],[-160.487404,70.453415],[-159.649432,70.792985],[-159.33177,70.809416],[-159.298908,70.760123],[-158.975769,70.798462],[-158.658106,70.787508],[-158.033735,70.831323],[-157.420318,70.979201],[-156.812377,71.285909],[-156.565915,71.351633],[-156.522099,71.296863],[-155.585543,71.170894],[-155.508865,71.083263],[-155.832005,70.968247],[-155.979882,70.96277],[-155.974405,70.809416],[-155.503388,70.858708],[-155.476004,70.940862],[-155.262403,71.017539],[-155.191203,70.973724],[-155.032372,71.148986],[-154.566832,70.990155],[-154.643509,70.869662],[-154.353231,70.8368],[-154.183446,70.7656],[-153.931507,70.880616],[-153.487874,70.886093],[-153.235935,70.924431],[-152.589656,70.886093],[-152.26104,70.842277],[-152.419871,70.606769],[-151.817408,70.546523],[-151.773592,70.486276],[-151.187559,70.382214],[-151.182082,70.431507],[-150.760358,70.49723],[-150.355064,70.491753],[-150.349588,70.436984],[-150.114079,70.431507],[-149.867617,70.508184],[-149.462323,70.519138],[-149.177522,70.486276],[-148.78866,70.404122],[-148.607921,70.420553],[-148.350504,70.305537],[-148.202627,70.349353],[-147.961642,70.316491],[-147.786379,70.245291]]],[[[-152.94018,58.026237],[-152.945657,57.982421],[-153.290705,58.048145],[-153.044242,58.305561],[-152.819688,58.327469],[-152.666333,58.562977],[-152.496548,58.354853],[-152.354148,58.426053],[-152.080301,58.311038],[-152.080301,58.152206],[-152.480117,58.130299],[-152.655379,58.059098],[-152.94018,58.026237]]],[[[-153.958891,57.538789],[-153.67409,57.670236],[-153.931507,57.69762],[-153.936983,57.812636],[-153.723383,57.889313],[-153.570028,57.834544],[-153.548121,57.719528],[-153.46049,57.796205],[-153.455013,57.96599],[-153.268797,57.889313],[-153.235935,57.998852],[-153.071627,57.933129],[-152.874457,57.933129],[-152.721103,57.993375],[-152.469163,57.889313],[-152.469163,57.599035],[-152.151501,57.620943],[-152.359625,57.42925],[-152.74301,57.505928],[-152.60061,57.379958],[-152.710149,57.275896],[-152.907319,57.325188],[-152.912796,57.128019],[-153.214027,57.073249],[-153.312612,56.991095],[-153.498828,57.067772],[-153.695998,56.859649],[-153.849352,56.837741],[-154.013661,56.744633],[-154.073907,56.969187],[-154.303938,56.848695],[-154.314892,56.919895],[-154.523016,56.991095],[-154.539447,57.193742],[-154.742094,57.275896],[-154.627078,57.511404],[-154.227261,57.659282],[-153.980799,57.648328],[-153.958891,57.538789]]],[[[-154.53397,56.602232],[-154.742094,56.399586],[-154.807817,56.432447],[-154.53397,56.602232]]],[[[-155.634835,55.923092],[-155.476004,55.912138],[-155.530773,55.704014],[-155.793666,55.731399],[-155.837482,55.802599],[-155.634835,55.923092]]],[[[-159.890418,55.28229],[-159.950664,55.068689],[-160.257373,54.893427],[-160.109495,55.161797],[-160.005433,55.134412],[-159.890418,55.28229]]],[[[-160.520266,55.358967],[-160.33405,55.358967],[-160.339527,55.249428],[-160.525743,55.128935],[-160.690051,55.211089],[-160.794113,55.134412],[-160.854359,55.320628],[-160.79959,55.380875],[-160.520266,55.358967]]],[[[-162.256456,54.981058],[-162.234548,54.893427],[-162.349564,54.838658],[-162.437195,54.931766],[-162.256456,54.981058]]],[[[-162.415287,63.634624],[-162.563165,63.536039],[-162.612457,63.62367],[-162.415287,63.634624]]],[[[-162.80415,54.488133],[-162.590549,54.449795],[-162.612457,54.367641],[-162.782242,54.373118],[-162.80415,54.488133]]],[[[-165.548097,54.29644],[-165.476897,54.181425],[-165.630251,54.132132],[-165.685021,54.252625],[-165.548097,54.29644]]],[[[-165.73979,54.15404],[-166.046499,54.044501],[-166.112222,54.121178],[-165.980775,54.219763],[-165.73979,54.15404]]],[[[-166.364161,60.359413],[-166.13413,60.397752],[-166.084837,60.326552],[-165.88219,60.342983],[-165.685021,60.277259],[-165.646682,59.992458],[-165.750744,59.89935],[-166.00816,59.844581],[-166.062929,59.745996],[-166.440838,59.855535],[-166.6161,59.850058],[-166.994009,59.992458],[-167.125456,59.992458],[-167.344534,60.074613],[-167.421211,60.206059],[-167.311672,60.238921],[-166.93924,60.206059],[-166.763978,60.310121],[-166.577762,60.321075],[-166.495608,60.392275],[-166.364161,60.359413]]],[[[-166.375115,54.01164],[-166.210807,53.934962],[-166.5449,53.748746],[-166.539423,53.715885],[-166.117699,53.852808],[-166.112222,53.776131],[-166.282007,53.683023],[-166.555854,53.622777],[-166.583239,53.529669],[-166.878994,53.431084],[-167.13641,53.425607],[-167.306195,53.332499],[-167.623857,53.250345],[-167.793643,53.337976],[-167.459549,53.442038],[-167.355487,53.425607],[-167.103548,53.513238],[-167.163794,53.611823],[-167.021394,53.715885],[-166.807793,53.666592],[-166.785886,53.732316],[-167.015917,53.754223],[-167.141887,53.825424],[-167.032348,53.945916],[-166.643485,54.017116],[-166.561331,53.880193],[-166.375115,54.01164]]],[[[-168.790446,53.157237],[-168.40706,53.34893],[-168.385152,53.431084],[-168.237275,53.524192],[-168.007243,53.568007],[-167.886751,53.518715],[-167.842935,53.387268],[-168.270136,53.244868],[-168.500168,53.036744],[-168.686384,52.965544],[-168.790446,53.157237]]],[[[-169.74891,52.894344],[-169.705095,52.795759],[-169.962511,52.790282],[-169.989896,52.856005],[-169.74891,52.894344]]],[[[-170.148727,57.221127],[-170.28565,57.128019],[-170.313035,57.221127],[-170.148727,57.221127]]],[[[-170.669036,52.697174],[-170.603313,52.604066],[-170.789529,52.538343],[-170.816914,52.636928],[-170.669036,52.697174]]],[[[-171.742517,63.716778],[-170.94836,63.5689],[-170.488297,63.69487],[-170.280174,63.683916],[-170.093958,63.612716],[-170.044665,63.492223],[-169.644848,63.4265],[-169.518879,63.366254],[-168.99857,63.338869],[-168.686384,63.295053],[-168.856169,63.147176],[-169.108108,63.180038],[-169.376478,63.152653],[-169.513402,63.08693],[-169.639372,62.939052],[-169.831064,63.075976],[-170.055619,63.169084],[-170.263743,63.180038],[-170.362328,63.2841],[-170.866206,63.415546],[-171.101715,63.421023],[-171.463193,63.306007],[-171.73704,63.366254],[-171.852055,63.486746],[-171.742517,63.716778]]],[[[-172.432611,52.390465],[-172.41618,52.275449],[-172.607873,52.253542],[-172.569535,52.352127],[-172.432611,52.390465]]],[[[-173.626584,52.14948],[-173.495138,52.105664],[-173.122706,52.111141],[-173.106275,52.07828],[-173.549907,52.028987],[-173.626584,52.14948]]],[[[-174.322156,52.280926],[-174.327632,52.379511],[-174.185232,52.41785],[-173.982585,52.319265],[-174.059262,52.226157],[-174.179755,52.231634],[-174.141417,52.127572],[-174.333109,52.116618],[-174.738403,52.007079],[-174.968435,52.039941],[-174.902711,52.116618],[-174.656249,52.105664],[-174.322156,52.280926]]],[[[-176.469116,51.853725],[-176.288377,51.870156],[-176.288377,51.744186],[-176.518409,51.760617],[-176.80321,51.61274],[-176.912748,51.80991],[-176.792256,51.815386],[-176.775825,51.963264],[-176.627947,51.968741],[-176.627947,51.859202],[-176.469116,51.853725]]],[[[-177.153734,51.946833],[-177.044195,51.897541],[-177.120872,51.727755],[-177.274226,51.678463],[-177.279703,51.782525],[-177.153734,51.946833]]],[[[-178.123152,51.919448],[-177.953367,51.913971],[-177.800013,51.793479],[-177.964321,51.651078],[-178.123152,51.919448]]],[[[-187.107557,52.992929],[-187.293773,52.927205],[-187.304726,52.823143],[-188.90491,52.762897],[-188.642017,52.927205],[-188.642017,53.003883],[-187.107557,52.992929]]]]}}, +{"type":"Feature","id":"04","properties":{"name":"Arizona","density":57.05},"geometry":{"type":"Polygon","coordinates":[[[-109.042503,37.000263],[-109.04798,31.331629],[-111.074448,31.331629],[-112.246513,31.704061],[-114.815198,32.492741],[-114.72209,32.717295],[-114.524921,32.755634],[-114.470151,32.843265],[-114.524921,33.029481],[-114.661844,33.034958],[-114.727567,33.40739],[-114.524921,33.54979],[-114.497536,33.697668],[-114.535874,33.933176],[-114.415382,34.108438],[-114.256551,34.174162],[-114.136058,34.305608],[-114.333228,34.448009],[-114.470151,34.710902],[-114.634459,34.87521],[-114.634459,35.00118],[-114.574213,35.138103],[-114.596121,35.324319],[-114.678275,35.516012],[-114.738521,36.102045],[-114.371566,36.140383],[-114.251074,36.01989],[-114.152489,36.025367],[-114.048427,36.195153],[-114.048427,37.000263],[-110.499369,37.00574],[-109.042503,37.000263]]]}}, +{"type":"Feature","id":"05","properties":{"name":"Arkansas","density":56.43},"geometry":{"type":"Polygon","coordinates":[[[-94.473842,36.501861],[-90.152536,36.496384],[-90.064905,36.304691],[-90.218259,36.184199],[-90.377091,35.997983],[-89.730812,35.997983],[-89.763673,35.811767],[-89.911551,35.756997],[-89.944412,35.603643],[-90.130628,35.439335],[-90.114197,35.198349],[-90.212782,35.023087],[-90.311367,34.995703],[-90.251121,34.908072],[-90.409952,34.831394],[-90.481152,34.661609],[-90.585214,34.617794],[-90.568783,34.420624],[-90.749522,34.365854],[-90.744046,34.300131],[-90.952169,34.135823],[-90.891923,34.026284],[-91.072662,33.867453],[-91.231493,33.560744],[-91.056231,33.429298],[-91.143862,33.347144],[-91.089093,33.13902],[-91.16577,33.002096],[-93.608485,33.018527],[-94.041164,33.018527],[-94.041164,33.54979],[-94.183564,33.593606],[-94.380734,33.544313],[-94.484796,33.637421],[-94.430026,35.395519],[-94.616242,36.501861],[-94.473842,36.501861]]]}}, +{"type":"Feature","id":"06","properties":{"name":"California","density":241.7},"geometry":{"type":"Polygon","coordinates":[[[-123.233256,42.006186],[-122.378853,42.011663],[-121.037003,41.995232],[-120.001861,41.995232],[-119.996384,40.264519],[-120.001861,38.999346],[-118.71478,38.101128],[-117.498899,37.21934],[-116.540435,36.501861],[-115.85034,35.970598],[-114.634459,35.00118],[-114.634459,34.87521],[-114.470151,34.710902],[-114.333228,34.448009],[-114.136058,34.305608],[-114.256551,34.174162],[-114.415382,34.108438],[-114.535874,33.933176],[-114.497536,33.697668],[-114.524921,33.54979],[-114.727567,33.40739],[-114.661844,33.034958],[-114.524921,33.029481],[-114.470151,32.843265],[-114.524921,32.755634],[-114.72209,32.717295],[-116.04751,32.624187],[-117.126467,32.536556],[-117.24696,32.668003],[-117.252437,32.876127],[-117.329114,33.122589],[-117.471515,33.297851],[-117.7837,33.538836],[-118.183517,33.763391],[-118.260194,33.703145],[-118.413548,33.741483],[-118.391641,33.840068],[-118.566903,34.042715],[-118.802411,33.998899],[-119.218659,34.146777],[-119.278905,34.26727],[-119.558229,34.415147],[-119.875891,34.40967],[-120.138784,34.475393],[-120.472878,34.448009],[-120.64814,34.579455],[-120.609801,34.858779],[-120.670048,34.902595],[-120.631709,35.099764],[-120.894602,35.247642],[-120.905556,35.450289],[-121.004141,35.461243],[-121.168449,35.636505],[-121.283465,35.674843],[-121.332757,35.784382],[-121.716143,36.195153],[-121.896882,36.315645],[-121.935221,36.638785],[-121.858544,36.6114],[-121.787344,36.803093],[-121.929744,36.978355],[-122.105006,36.956447],[-122.335038,37.115279],[-122.417192,37.241248],[-122.400761,37.361741],[-122.515777,37.520572],[-122.515777,37.783465],[-122.329561,37.783465],[-122.406238,38.15042],[-122.488392,38.112082],[-122.504823,37.931343],[-122.701993,37.893004],[-122.937501,38.029928],[-122.97584,38.265436],[-123.129194,38.451652],[-123.331841,38.566668],[-123.44138,38.698114],[-123.737134,38.95553],[-123.687842,39.032208],[-123.824765,39.366301],[-123.764519,39.552517],[-123.85215,39.831841],[-124.109566,40.105688],[-124.361506,40.259042],[-124.410798,40.439781],[-124.158859,40.877937],[-124.109566,41.025814],[-124.158859,41.14083],[-124.065751,41.442061],[-124.147905,41.715908],[-124.257444,41.781632],[-124.213628,42.000709],[-123.233256,42.006186]]]}}, +{"type":"Feature","id":"08","properties":{"name":"Colorado","density":49.33},"geometry":{"type":"Polygon","coordinates":[[[-107.919731,41.003906],[-105.728954,40.998429],[-104.053011,41.003906],[-102.053927,41.003906],[-102.053927,40.001626],[-102.042974,36.994786],[-103.001438,37.000263],[-104.337812,36.994786],[-106.868158,36.994786],[-107.421329,37.000263],[-109.042503,37.000263],[-109.042503,38.166851],[-109.058934,38.27639],[-109.053457,39.125316],[-109.04798,40.998429],[-107.919731,41.003906]]]}}, +{"type":"Feature","id":"09","properties":{"name":"Connecticut","density":739.1},"geometry":{"type":"Polygon","coordinates":[[[-73.053528,42.039048],[-71.799309,42.022617],[-71.799309,42.006186],[-71.799309,41.414677],[-71.859555,41.321569],[-71.947186,41.338],[-72.385341,41.261322],[-72.905651,41.28323],[-73.130205,41.146307],[-73.371191,41.102491],[-73.655992,40.987475],[-73.727192,41.102491],[-73.48073,41.21203],[-73.55193,41.294184],[-73.486206,42.050002],[-73.053528,42.039048]]]}}, +{"type":"Feature","id":"10","properties":{"name":"Delaware","density":464.3},"geometry":{"type":"Polygon","coordinates":[[[-75.414089,39.804456],[-75.507197,39.683964],[-75.611259,39.61824],[-75.589352,39.459409],[-75.441474,39.311532],[-75.403136,39.065069],[-75.189535,38.807653],[-75.09095,38.796699],[-75.047134,38.451652],[-75.693413,38.462606],[-75.786521,39.722302],[-75.616736,39.831841],[-75.414089,39.804456]]]}}, +{"type":"Feature","id":"11","properties":{"name":"District of Columbia","density":10065},"geometry":{"type":"Polygon","coordinates":[[[-77.035264,38.993869],[-76.909294,38.895284],[-77.040741,38.791222],[-77.117418,38.933623],[-77.035264,38.993869]]]}}, +{"type":"Feature","id":"12","properties":{"name":"Florida","density":353.4},"geometry":{"type":"Polygon","coordinates":[[[-85.497137,30.997536],[-85.004212,31.003013],[-84.867289,30.712735],[-83.498053,30.647012],[-82.216449,30.570335],[-82.167157,30.356734],[-82.046664,30.362211],[-82.002849,30.564858],[-82.041187,30.751074],[-81.948079,30.827751],[-81.718048,30.745597],[-81.444201,30.707258],[-81.383954,30.27458],[-81.257985,29.787132],[-80.967707,29.14633],[-80.524075,28.461713],[-80.589798,28.41242],[-80.56789,28.094758],[-80.381674,27.738757],[-80.091397,27.021277],[-80.03115,26.796723],[-80.036627,26.566691],[-80.146166,25.739673],[-80.239274,25.723243],[-80.337859,25.465826],[-80.304997,25.383672],[-80.49669,25.197456],[-80.573367,25.241272],[-80.759583,25.164595],[-81.077246,25.120779],[-81.170354,25.224841],[-81.126538,25.378195],[-81.351093,25.821827],[-81.526355,25.903982],[-81.679709,25.843735],[-81.800202,26.090198],[-81.833064,26.292844],[-82.041187,26.517399],[-82.09048,26.665276],[-82.057618,26.878877],[-82.172634,26.917216],[-82.145249,26.791246],[-82.249311,26.758384],[-82.566974,27.300601],[-82.692943,27.437525],[-82.391711,27.837342],[-82.588881,27.815434],[-82.720328,27.689464],[-82.851774,27.886634],[-82.676512,28.434328],[-82.643651,28.888914],[-82.764143,28.998453],[-82.802482,29.14633],[-82.994175,29.179192],[-83.218729,29.420177],[-83.399469,29.518762],[-83.410422,29.66664],[-83.536392,29.721409],[-83.640454,29.885717],[-84.02384,30.104795],[-84.357933,30.055502],[-84.341502,29.902148],[-84.451041,29.929533],[-84.867289,29.743317],[-85.310921,29.699501],[-85.299967,29.80904],[-85.404029,29.940487],[-85.924338,30.236241],[-86.29677,30.362211],[-86.630863,30.395073],[-86.910187,30.373165],[-87.518128,30.280057],[-87.37025,30.427934],[-87.446927,30.510088],[-87.408589,30.674397],[-87.633143,30.86609],[-87.600282,30.997536],[-85.497137,30.997536]]]}}, +{"type":"Feature","id":"13","properties":{"name":"Georgia","density":169.5},"geometry":{"type":"Polygon","coordinates":[[[-83.109191,35.00118],[-83.322791,34.787579],[-83.339222,34.683517],[-83.005129,34.469916],[-82.901067,34.486347],[-82.747713,34.26727],[-82.714851,34.152254],[-82.55602,33.94413],[-82.325988,33.81816],[-82.194542,33.631944],[-81.926172,33.462159],[-81.937125,33.347144],[-81.761863,33.160928],[-81.493493,33.007573],[-81.42777,32.843265],[-81.416816,32.629664],[-81.279893,32.558464],[-81.121061,32.290094],[-81.115584,32.120309],[-80.885553,32.032678],[-81.132015,31.693108],[-81.175831,31.517845],[-81.279893,31.364491],[-81.290846,31.20566],[-81.400385,31.13446],[-81.444201,30.707258],[-81.718048,30.745597],[-81.948079,30.827751],[-82.041187,30.751074],[-82.002849,30.564858],[-82.046664,30.362211],[-82.167157,30.356734],[-82.216449,30.570335],[-83.498053,30.647012],[-84.867289,30.712735],[-85.004212,31.003013],[-85.113751,31.27686],[-85.042551,31.539753],[-85.141136,31.840985],[-85.053504,32.01077],[-85.058981,32.13674],[-84.889196,32.262709],[-85.004212,32.322956],[-84.960397,32.421541],[-85.069935,32.580372],[-85.184951,32.859696],[-85.431413,34.124869],[-85.606675,34.984749],[-84.319594,34.990226],[-83.618546,34.984749],[-83.109191,35.00118]]]}}, +{"type":"Feature","id":"15","properties":{"name":"Hawaii","density":214.1},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.634835,18.948267],[-155.881297,19.035898],[-155.919636,19.123529],[-155.886774,19.348084],[-156.062036,19.73147],[-155.925113,19.857439],[-155.826528,20.032702],[-155.897728,20.147717],[-155.87582,20.26821],[-155.596496,20.12581],[-155.284311,20.021748],[-155.092618,19.868393],[-155.092618,19.736947],[-154.807817,19.523346],[-154.983079,19.348084],[-155.295265,19.26593],[-155.514342,19.134483],[-155.634835,18.948267]]],[[[-156.587823,21.029505],[-156.472807,20.892581],[-156.324929,20.952827],[-156.00179,20.793996],[-156.051082,20.651596],[-156.379699,20.580396],[-156.445422,20.60778],[-156.461853,20.783042],[-156.631638,20.821381],[-156.697361,20.919966],[-156.587823,21.029505]]],[[[-156.982162,21.210244],[-157.080747,21.106182],[-157.310779,21.106182],[-157.239579,21.221198],[-156.982162,21.210244]]],[[[-157.951581,21.697691],[-157.842042,21.462183],[-157.896811,21.325259],[-158.110412,21.303352],[-158.252813,21.582676],[-158.126843,21.588153],[-157.951581,21.697691]]],[[[-159.468693,22.228955],[-159.353678,22.218001],[-159.298908,22.113939],[-159.33177,21.966061],[-159.446786,21.872953],[-159.764448,21.987969],[-159.726109,22.152277],[-159.468693,22.228955]]]]}}, +{"type":"Feature","id":"16","properties":{"name":"Idaho","density":19.15},"geometry":{"type":"Polygon","coordinates":[[[-116.04751,49.000239],[-116.04751,47.976051],[-115.724371,47.696727],[-115.718894,47.42288],[-115.527201,47.302388],[-115.324554,47.258572],[-115.302646,47.187372],[-114.930214,46.919002],[-114.886399,46.809463],[-114.623506,46.705401],[-114.612552,46.639678],[-114.322274,46.645155],[-114.464674,46.272723],[-114.492059,46.037214],[-114.387997,45.88386],[-114.568736,45.774321],[-114.497536,45.670259],[-114.546828,45.560721],[-114.333228,45.456659],[-114.086765,45.593582],[-113.98818,45.703121],[-113.807441,45.604536],[-113.834826,45.522382],[-113.736241,45.330689],[-113.571933,45.128042],[-113.45144,45.056842],[-113.456917,44.865149],[-113.341901,44.782995],[-113.133778,44.772041],[-113.002331,44.448902],[-112.887315,44.394132],[-112.783254,44.48724],[-112.471068,44.481763],[-112.241036,44.569394],[-112.104113,44.520102],[-111.868605,44.563917],[-111.819312,44.509148],[-111.616665,44.547487],[-111.386634,44.75561],[-111.227803,44.580348],[-111.047063,44.476286],[-111.047063,42.000709],[-112.164359,41.995232],[-114.04295,41.995232],[-117.027882,42.000709],[-117.027882,43.830007],[-116.896436,44.158624],[-116.97859,44.240778],[-117.170283,44.257209],[-117.241483,44.394132],[-117.038836,44.750133],[-116.934774,44.782995],[-116.830713,44.930872],[-116.847143,45.02398],[-116.732128,45.144473],[-116.671881,45.319735],[-116.463758,45.61549],[-116.545912,45.752413],[-116.78142,45.823614],[-116.918344,45.993399],[-116.92382,46.168661],[-117.055267,46.343923],[-117.038836,46.426077],[-117.044313,47.762451],[-117.033359,49.000239],[-116.04751,49.000239]]]}}, +{"type":"Feature","id":"17","properties":{"name":"Illinois","density":231.5},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,42.510065],[-88.788778,42.493634],[-87.802929,42.493634],[-87.83579,42.301941],[-87.682436,42.077386],[-87.523605,41.710431],[-87.529082,39.34987],[-87.63862,39.169131],[-87.512651,38.95553],[-87.49622,38.780268],[-87.62219,38.637868],[-87.655051,38.506421],[-87.83579,38.292821],[-87.950806,38.27639],[-87.923421,38.15042],[-88.000098,38.101128],[-88.060345,37.865619],[-88.027483,37.799896],[-88.15893,37.657496],[-88.065822,37.482234],[-88.476592,37.389126],[-88.514931,37.285064],[-88.421823,37.153617],[-88.547792,37.071463],[-88.914747,37.224817],[-89.029763,37.213863],[-89.183118,37.038601],[-89.133825,36.983832],[-89.292656,36.994786],[-89.517211,37.279587],[-89.435057,37.34531],[-89.517211,37.537003],[-89.517211,37.690357],[-89.84035,37.903958],[-89.949889,37.88205],[-90.059428,38.013497],[-90.355183,38.216144],[-90.349706,38.374975],[-90.179921,38.632391],[-90.207305,38.725499],[-90.10872,38.845992],[-90.251121,38.917192],[-90.470199,38.961007],[-90.585214,38.867899],[-90.661891,38.928146],[-90.727615,39.256762],[-91.061708,39.470363],[-91.368417,39.727779],[-91.494386,40.034488],[-91.50534,40.237135],[-91.417709,40.379535],[-91.401278,40.560274],[-91.121954,40.669813],[-91.09457,40.823167],[-90.963123,40.921752],[-90.946692,41.097014],[-91.111001,41.239415],[-91.045277,41.414677],[-90.656414,41.463969],[-90.344229,41.589939],[-90.311367,41.743293],[-90.179921,41.809016],[-90.141582,42.000709],[-90.168967,42.126679],[-90.393521,42.225264],[-90.420906,42.329326],[-90.639984,42.510065]]]}}, +{"type":"Feature","id":"18","properties":{"name":"Indiana","density":181.7},"geometry":{"type":"Polygon","coordinates":[[[-85.990061,41.759724],[-84.807042,41.759724],[-84.807042,41.694001],[-84.801565,40.500028],[-84.817996,39.103408],[-84.894673,39.059592],[-84.812519,38.785745],[-84.987781,38.780268],[-85.173997,38.68716],[-85.431413,38.730976],[-85.42046,38.533806],[-85.590245,38.451652],[-85.655968,38.325682],[-85.83123,38.27639],[-85.924338,38.024451],[-86.039354,37.958727],[-86.263908,38.051835],[-86.302247,38.166851],[-86.521325,38.040881],[-86.504894,37.931343],[-86.729448,37.893004],[-86.795172,37.991589],[-87.047111,37.893004],[-87.129265,37.788942],[-87.381204,37.93682],[-87.512651,37.903958],[-87.600282,37.975158],[-87.682436,37.903958],[-87.934375,37.893004],[-88.027483,37.799896],[-88.060345,37.865619],[-88.000098,38.101128],[-87.923421,38.15042],[-87.950806,38.27639],[-87.83579,38.292821],[-87.655051,38.506421],[-87.62219,38.637868],[-87.49622,38.780268],[-87.512651,38.95553],[-87.63862,39.169131],[-87.529082,39.34987],[-87.523605,41.710431],[-87.42502,41.644708],[-87.118311,41.644708],[-86.822556,41.759724],[-85.990061,41.759724]]]}}, +{"type":"Feature","id":"19","properties":{"name":"Iowa","density":54.81},"geometry":{"type":"Polygon","coordinates":[[[-91.368417,43.501391],[-91.215062,43.501391],[-91.204109,43.353514],[-91.056231,43.254929],[-91.176724,43.134436],[-91.143862,42.909881],[-91.067185,42.75105],[-90.711184,42.636034],[-90.639984,42.510065],[-90.420906,42.329326],[-90.393521,42.225264],[-90.168967,42.126679],[-90.141582,42.000709],[-90.179921,41.809016],[-90.311367,41.743293],[-90.344229,41.589939],[-90.656414,41.463969],[-91.045277,41.414677],[-91.111001,41.239415],[-90.946692,41.097014],[-90.963123,40.921752],[-91.09457,40.823167],[-91.121954,40.669813],[-91.401278,40.560274],[-91.417709,40.379535],[-91.527248,40.412397],[-91.729895,40.615043],[-91.833957,40.609566],[-93.257961,40.582182],[-94.632673,40.571228],[-95.7664,40.587659],[-95.881416,40.719105],[-95.826646,40.976521],[-95.925231,41.201076],[-95.919754,41.453015],[-96.095016,41.540646],[-96.122401,41.67757],[-96.062155,41.798063],[-96.127878,41.973325],[-96.264801,42.039048],[-96.44554,42.488157],[-96.631756,42.707235],[-96.544125,42.855112],[-96.511264,43.052282],[-96.434587,43.123482],[-96.560556,43.222067],[-96.527695,43.397329],[-96.582464,43.479483],[-96.451017,43.501391],[-91.368417,43.501391]]]}}, +{"type":"Feature","id":"20","properties":{"name":"Kansas","density":35.09},"geometry":{"type":"Polygon","coordinates":[[[-101.90605,40.001626],[-95.306337,40.001626],[-95.207752,39.908518],[-94.884612,39.831841],[-95.109167,39.541563],[-94.983197,39.442978],[-94.824366,39.20747],[-94.610765,39.158177],[-94.616242,37.000263],[-100.087706,37.000263],[-102.042974,36.994786],[-102.053927,40.001626],[-101.90605,40.001626]]]}}, +{"type":"Feature","id":"21","properties":{"name":"Kentucky","density":110},"geometry":{"type":"Polygon","coordinates":[[[-83.903347,38.769315],[-83.678792,38.632391],[-83.519961,38.703591],[-83.142052,38.626914],[-83.032514,38.725499],[-82.890113,38.758361],[-82.846298,38.588575],[-82.731282,38.561191],[-82.594358,38.424267],[-82.621743,38.123036],[-82.50125,37.931343],[-82.342419,37.783465],[-82.293127,37.668449],[-82.101434,37.553434],[-81.969987,37.537003],[-82.353373,37.268633],[-82.720328,37.120755],[-82.720328,37.044078],[-82.868205,36.978355],[-82.879159,36.890724],[-83.070852,36.852385],[-83.136575,36.742847],[-83.673316,36.600446],[-83.689746,36.584015],[-84.544149,36.594969],[-85.289013,36.627831],[-85.486183,36.616877],[-86.592525,36.655216],[-87.852221,36.633308],[-88.071299,36.677123],[-88.054868,36.496384],[-89.298133,36.507338],[-89.418626,36.496384],[-89.363857,36.622354],[-89.215979,36.578538],[-89.133825,36.983832],[-89.183118,37.038601],[-89.029763,37.213863],[-88.914747,37.224817],[-88.547792,37.071463],[-88.421823,37.153617],[-88.514931,37.285064],[-88.476592,37.389126],[-88.065822,37.482234],[-88.15893,37.657496],[-88.027483,37.799896],[-87.934375,37.893004],[-87.682436,37.903958],[-87.600282,37.975158],[-87.512651,37.903958],[-87.381204,37.93682],[-87.129265,37.788942],[-87.047111,37.893004],[-86.795172,37.991589],[-86.729448,37.893004],[-86.504894,37.931343],[-86.521325,38.040881],[-86.302247,38.166851],[-86.263908,38.051835],[-86.039354,37.958727],[-85.924338,38.024451],[-85.83123,38.27639],[-85.655968,38.325682],[-85.590245,38.451652],[-85.42046,38.533806],[-85.431413,38.730976],[-85.173997,38.68716],[-84.987781,38.780268],[-84.812519,38.785745],[-84.894673,39.059592],[-84.817996,39.103408],[-84.43461,39.103408],[-84.231963,38.895284],[-84.215533,38.807653],[-83.903347,38.769315]]]}}, +{"type":"Feature","id":"22","properties":{"name":"Louisiana","density":105},"geometry":{"type":"Polygon","coordinates":[[[-93.608485,33.018527],[-91.16577,33.002096],[-91.072662,32.887081],[-91.143862,32.843265],[-91.154816,32.640618],[-91.006939,32.514649],[-90.985031,32.218894],[-91.105524,31.988862],[-91.341032,31.846462],[-91.401278,31.621907],[-91.499863,31.643815],[-91.516294,31.27686],[-91.636787,31.265906],[-91.565587,31.068736],[-91.636787,30.997536],[-89.747242,30.997536],[-89.845827,30.66892],[-89.681519,30.449842],[-89.643181,30.285534],[-89.522688,30.181472],[-89.818443,30.044549],[-89.84035,29.945964],[-89.599365,29.88024],[-89.495303,30.039072],[-89.287179,29.88024],[-89.30361,29.754271],[-89.424103,29.699501],[-89.648657,29.748794],[-89.621273,29.655686],[-89.69795,29.513285],[-89.506257,29.387316],[-89.199548,29.348977],[-89.09001,29.2011],[-89.002379,29.179192],[-89.16121,29.009407],[-89.336472,29.042268],[-89.484349,29.217531],[-89.851304,29.310638],[-89.851304,29.480424],[-90.032043,29.425654],[-90.021089,29.283254],[-90.103244,29.151807],[-90.23469,29.129899],[-90.333275,29.277777],[-90.563307,29.283254],[-90.645461,29.129899],[-90.798815,29.086084],[-90.963123,29.179192],[-91.09457,29.190146],[-91.220539,29.436608],[-91.445094,29.546147],[-91.532725,29.529716],[-91.620356,29.73784],[-91.883249,29.710455],[-91.888726,29.836425],[-92.146142,29.715932],[-92.113281,29.622824],[-92.31045,29.535193],[-92.617159,29.579009],[-92.97316,29.715932],[-93.2251,29.776178],[-93.767317,29.726886],[-93.838517,29.688547],[-93.926148,29.787132],[-93.690639,30.143133],[-93.767317,30.334826],[-93.696116,30.438888],[-93.728978,30.575812],[-93.630393,30.679874],[-93.526331,30.93729],[-93.542762,31.15089],[-93.816609,31.556184],[-93.822086,31.775262],[-94.041164,31.994339],[-94.041164,33.018527],[-93.608485,33.018527]]]}}, +{"type":"Feature","id":"23","properties":{"name":"Maine","density":43.04},"geometry":{"type":"Polygon","coordinates":[[[-70.703921,43.057759],[-70.824413,43.128959],[-70.807983,43.227544],[-70.966814,43.34256],[-71.032537,44.657025],[-71.08183,45.303304],[-70.649151,45.440228],[-70.720352,45.511428],[-70.556043,45.664782],[-70.386258,45.735983],[-70.41912,45.796229],[-70.260289,45.889337],[-70.309581,46.064599],[-70.210996,46.327492],[-70.057642,46.415123],[-69.997395,46.694447],[-69.225147,47.461219],[-69.044408,47.428357],[-69.033454,47.242141],[-68.902007,47.176418],[-68.578868,47.285957],[-68.376221,47.285957],[-68.233821,47.357157],[-67.954497,47.198326],[-67.790188,47.066879],[-67.779235,45.944106],[-67.801142,45.675736],[-67.456095,45.604536],[-67.505388,45.48952],[-67.417757,45.379982],[-67.488957,45.281397],[-67.346556,45.128042],[-67.16034,45.160904],[-66.979601,44.804903],[-67.187725,44.646072],[-67.308218,44.706318],[-67.406803,44.596779],[-67.549203,44.624164],[-67.565634,44.531056],[-67.75185,44.54201],[-68.047605,44.328409],[-68.118805,44.476286],[-68.222867,44.48724],[-68.173574,44.328409],[-68.403606,44.251732],[-68.458375,44.377701],[-68.567914,44.311978],[-68.82533,44.311978],[-68.830807,44.459856],[-68.984161,44.426994],[-68.956777,44.322932],[-69.099177,44.103854],[-69.071793,44.043608],[-69.258008,43.923115],[-69.444224,43.966931],[-69.553763,43.840961],[-69.707118,43.82453],[-69.833087,43.720469],[-69.986442,43.742376],[-70.030257,43.851915],[-70.254812,43.676653],[-70.194565,43.567114],[-70.358873,43.528776],[-70.369827,43.435668],[-70.556043,43.320652],[-70.703921,43.057759]]]}}, +{"type":"Feature","id":"24","properties":{"name":"Maryland","density":596.3},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.994645,37.95325],[-76.016553,37.95325],[-76.043938,37.95325],[-75.994645,37.95325]]],[[[-79.477979,39.722302],[-75.786521,39.722302],[-75.693413,38.462606],[-75.047134,38.451652],[-75.244304,38.029928],[-75.397659,38.013497],[-75.671506,37.95325],[-75.885106,37.909435],[-75.879629,38.073743],[-75.961783,38.139466],[-75.846768,38.210667],[-76.000122,38.374975],[-76.049415,38.303775],[-76.257538,38.320205],[-76.328738,38.500944],[-76.263015,38.500944],[-76.257538,38.736453],[-76.191815,38.829561],[-76.279446,39.147223],[-76.169907,39.333439],[-76.000122,39.366301],[-75.972737,39.557994],[-76.098707,39.536086],[-76.104184,39.437501],[-76.367077,39.311532],[-76.443754,39.196516],[-76.460185,38.906238],[-76.55877,38.769315],[-76.514954,38.539283],[-76.383508,38.380452],[-76.399939,38.259959],[-76.317785,38.139466],[-76.3616,38.057312],[-76.591632,38.216144],[-76.920248,38.292821],[-77.018833,38.446175],[-77.205049,38.358544],[-77.276249,38.479037],[-77.128372,38.632391],[-77.040741,38.791222],[-76.909294,38.895284],[-77.035264,38.993869],[-77.117418,38.933623],[-77.248864,39.026731],[-77.456988,39.076023],[-77.456988,39.223901],[-77.566527,39.306055],[-77.719881,39.322485],[-77.834897,39.601809],[-78.004682,39.601809],[-78.174467,39.694917],[-78.267575,39.61824],[-78.431884,39.623717],[-78.470222,39.514178],[-78.765977,39.585379],[-78.963147,39.437501],[-79.094593,39.470363],[-79.291763,39.300578],[-79.488933,39.20747],[-79.477979,39.722302]]]]}}, +{"type":"Feature","id":"25","properties":{"name":"Massachusetts","density":840.2},"geometry":{"type":"Polygon","coordinates":[[[-70.917521,42.887974],[-70.818936,42.871543],[-70.780598,42.696281],[-70.824413,42.55388],[-70.983245,42.422434],[-70.988722,42.269079],[-70.769644,42.247172],[-70.638197,42.08834],[-70.660105,41.962371],[-70.550566,41.929509],[-70.539613,41.814493],[-70.260289,41.715908],[-69.937149,41.809016],[-70.008349,41.672093],[-70.484843,41.5516],[-70.660105,41.546123],[-70.764167,41.639231],[-70.928475,41.611847],[-70.933952,41.540646],[-71.120168,41.496831],[-71.196845,41.67757],[-71.22423,41.710431],[-71.328292,41.781632],[-71.383061,42.01714],[-71.530939,42.01714],[-71.799309,42.006186],[-71.799309,42.022617],[-73.053528,42.039048],[-73.486206,42.050002],[-73.508114,42.08834],[-73.267129,42.745573],[-72.456542,42.729142],[-71.29543,42.696281],[-71.185891,42.789389],[-70.917521,42.887974]]]}}, +{"type":"Feature","id":"26","properties":{"name":"Michigan","density":173.9},"geometry":{"type":"MultiPolygon","coordinates":[[[[-83.454238,41.732339],[-84.807042,41.694001],[-84.807042,41.759724],[-85.990061,41.759724],[-86.822556,41.759724],[-86.619909,41.891171],[-86.482986,42.115725],[-86.357016,42.252649],[-86.263908,42.444341],[-86.209139,42.718189],[-86.231047,43.013943],[-86.526801,43.594499],[-86.433693,43.813577],[-86.499417,44.07647],[-86.269385,44.34484],[-86.220093,44.569394],[-86.252954,44.689887],[-86.088646,44.73918],[-86.066738,44.903488],[-85.809322,44.947303],[-85.612152,45.128042],[-85.628583,44.766564],[-85.524521,44.750133],[-85.393075,44.930872],[-85.387598,45.237581],[-85.305444,45.314258],[-85.031597,45.363551],[-85.119228,45.577151],[-84.938489,45.75789],[-84.713934,45.768844],[-84.461995,45.653829],[-84.215533,45.637398],[-84.09504,45.494997],[-83.908824,45.484043],[-83.596638,45.352597],[-83.4871,45.358074],[-83.317314,45.144473],[-83.454238,45.029457],[-83.322791,44.88158],[-83.273499,44.711795],[-83.333745,44.339363],[-83.536392,44.246255],[-83.585684,44.054562],[-83.82667,43.988839],[-83.958116,43.758807],[-83.908824,43.671176],[-83.667839,43.589022],[-83.481623,43.714992],[-83.262545,43.972408],[-82.917498,44.070993],[-82.747713,43.994316],[-82.643651,43.851915],[-82.539589,43.435668],[-82.523158,43.227544],[-82.413619,42.975605],[-82.517681,42.614127],[-82.681989,42.559357],[-82.687466,42.690804],[-82.797005,42.652465],[-82.922975,42.351234],[-83.125621,42.236218],[-83.185868,42.006186],[-83.437807,41.814493],[-83.454238,41.732339]]],[[[-85.508091,45.730506],[-85.49166,45.610013],[-85.623106,45.588105],[-85.568337,45.75789],[-85.508091,45.730506]]],[[[-87.589328,45.095181],[-87.742682,45.199243],[-87.649574,45.341643],[-87.885083,45.363551],[-87.791975,45.500474],[-87.781021,45.675736],[-87.989145,45.796229],[-88.10416,45.922199],[-88.531362,46.020784],[-88.662808,45.987922],[-89.09001,46.135799],[-90.119674,46.338446],[-90.229213,46.508231],[-90.415429,46.568478],[-90.026566,46.672539],[-89.851304,46.793032],[-89.413149,46.842325],[-89.128348,46.990202],[-88.996902,46.995679],[-88.887363,47.099741],[-88.575177,47.247618],[-88.416346,47.373588],[-88.180837,47.455742],[-87.956283,47.384542],[-88.350623,47.077833],[-88.443731,46.973771],[-88.438254,46.787555],[-88.246561,46.929956],[-87.901513,46.908048],[-87.633143,46.809463],[-87.392158,46.535616],[-87.260711,46.486323],[-87.008772,46.530139],[-86.948526,46.469893],[-86.696587,46.437031],[-86.159846,46.667063],[-85.880522,46.68897],[-85.508091,46.678016],[-85.256151,46.754694],[-85.064458,46.760171],[-85.02612,46.480847],[-84.82895,46.442508],[-84.63178,46.486323],[-84.549626,46.4206],[-84.418179,46.502754],[-84.127902,46.530139],[-84.122425,46.179615],[-83.990978,46.031737],[-83.793808,45.993399],[-83.7719,46.091984],[-83.580208,46.091984],[-83.476146,45.987922],[-83.563777,45.911245],[-84.111471,45.976968],[-84.374364,45.933153],[-84.659165,46.053645],[-84.741319,45.944106],[-84.70298,45.850998],[-84.82895,45.872906],[-85.015166,46.00983],[-85.338305,46.091984],[-85.502614,46.097461],[-85.661445,45.966014],[-85.924338,45.933153],[-86.209139,45.960537],[-86.324155,45.905768],[-86.351539,45.796229],[-86.663725,45.703121],[-86.647294,45.834568],[-86.784218,45.861952],[-86.838987,45.725029],[-87.069019,45.719552],[-87.17308,45.659305],[-87.326435,45.423797],[-87.611236,45.122565],[-87.589328,45.095181]]],[[[-88.805209,47.976051],[-89.057148,47.850082],[-89.188594,47.833651],[-89.177641,47.937713],[-88.547792,48.173221],[-88.668285,48.008913],[-88.805209,47.976051]]]]}}, +{"type":"Feature","id":"27","properties":{"name":"Minnesota","density":67.14},"geometry":{"type":"Polygon","coordinates":[[[-92.014696,46.705401],[-92.091373,46.749217],[-92.29402,46.667063],[-92.29402,46.075553],[-92.354266,46.015307],[-92.639067,45.933153],[-92.869098,45.719552],[-92.885529,45.577151],[-92.770513,45.566198],[-92.644544,45.440228],[-92.75956,45.286874],[-92.737652,45.117088],[-92.808852,44.750133],[-92.545959,44.569394],[-92.337835,44.552964],[-92.233773,44.443425],[-91.927065,44.333886],[-91.877772,44.202439],[-91.592971,44.032654],[-91.43414,43.994316],[-91.242447,43.775238],[-91.269832,43.616407],[-91.215062,43.501391],[-91.368417,43.501391],[-96.451017,43.501391],[-96.451017,45.297827],[-96.681049,45.412843],[-96.856311,45.604536],[-96.582464,45.818137],[-96.560556,45.933153],[-96.598895,46.332969],[-96.719387,46.437031],[-96.801542,46.656109],[-96.785111,46.924479],[-96.823449,46.968294],[-96.856311,47.609096],[-97.053481,47.948667],[-97.130158,48.140359],[-97.16302,48.545653],[-97.097296,48.682577],[-97.228743,49.000239],[-95.152983,49.000239],[-95.152983,49.383625],[-94.955813,49.372671],[-94.824366,49.295994],[-94.69292,48.775685],[-94.588858,48.715438],[-94.260241,48.699007],[-94.221903,48.649715],[-93.838517,48.627807],[-93.794701,48.518268],[-93.466085,48.545653],[-93.466085,48.589469],[-93.208669,48.644238],[-92.984114,48.62233],[-92.726698,48.540176],[-92.655498,48.436114],[-92.50762,48.447068],[-92.370697,48.222514],[-92.304974,48.315622],[-92.053034,48.359437],[-92.009219,48.266329],[-91.713464,48.200606],[-91.713464,48.112975],[-91.565587,48.041775],[-91.264355,48.080113],[-91.083616,48.178698],[-90.837154,48.238944],[-90.749522,48.091067],[-90.579737,48.123929],[-90.377091,48.091067],[-90.141582,48.112975],[-89.873212,47.987005],[-89.615796,48.008913],[-89.637704,47.954144],[-89.971797,47.828174],[-90.437337,47.729589],[-90.738569,47.625527],[-91.171247,47.368111],[-91.357463,47.20928],[-91.642264,47.028541],[-92.091373,46.787555],[-92.014696,46.705401]]]}}, +{"type":"Feature","id":"28","properties":{"name":"Mississippi","density":63.50},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,34.995703],[-88.202745,34.995703],[-88.098683,34.891641],[-88.241084,33.796253],[-88.471115,31.895754],[-88.394438,30.367688],[-88.503977,30.323872],[-88.744962,30.34578],[-88.843547,30.411504],[-89.084533,30.367688],[-89.418626,30.252672],[-89.522688,30.181472],[-89.643181,30.285534],[-89.681519,30.449842],[-89.845827,30.66892],[-89.747242,30.997536],[-91.636787,30.997536],[-91.565587,31.068736],[-91.636787,31.265906],[-91.516294,31.27686],[-91.499863,31.643815],[-91.401278,31.621907],[-91.341032,31.846462],[-91.105524,31.988862],[-90.985031,32.218894],[-91.006939,32.514649],[-91.154816,32.640618],[-91.143862,32.843265],[-91.072662,32.887081],[-91.16577,33.002096],[-91.089093,33.13902],[-91.143862,33.347144],[-91.056231,33.429298],[-91.231493,33.560744],[-91.072662,33.867453],[-90.891923,34.026284],[-90.952169,34.135823],[-90.744046,34.300131],[-90.749522,34.365854],[-90.568783,34.420624],[-90.585214,34.617794],[-90.481152,34.661609],[-90.409952,34.831394],[-90.251121,34.908072],[-90.311367,34.995703],[-88.471115,34.995703]]]}}, +{"type":"Feature","id":"29","properties":{"name":"Missouri","density":87.26},"geometry":{"type":"Polygon","coordinates":[[[-91.833957,40.609566],[-91.729895,40.615043],[-91.527248,40.412397],[-91.417709,40.379535],[-91.50534,40.237135],[-91.494386,40.034488],[-91.368417,39.727779],[-91.061708,39.470363],[-90.727615,39.256762],[-90.661891,38.928146],[-90.585214,38.867899],[-90.470199,38.961007],[-90.251121,38.917192],[-90.10872,38.845992],[-90.207305,38.725499],[-90.179921,38.632391],[-90.349706,38.374975],[-90.355183,38.216144],[-90.059428,38.013497],[-89.949889,37.88205],[-89.84035,37.903958],[-89.517211,37.690357],[-89.517211,37.537003],[-89.435057,37.34531],[-89.517211,37.279587],[-89.292656,36.994786],[-89.133825,36.983832],[-89.215979,36.578538],[-89.363857,36.622354],[-89.418626,36.496384],[-89.484349,36.496384],[-89.539119,36.496384],[-89.533642,36.249922],[-89.730812,35.997983],[-90.377091,35.997983],[-90.218259,36.184199],[-90.064905,36.304691],[-90.152536,36.496384],[-94.473842,36.501861],[-94.616242,36.501861],[-94.616242,37.000263],[-94.610765,39.158177],[-94.824366,39.20747],[-94.983197,39.442978],[-95.109167,39.541563],[-94.884612,39.831841],[-95.207752,39.908518],[-95.306337,40.001626],[-95.552799,40.264519],[-95.7664,40.587659],[-94.632673,40.571228],[-93.257961,40.582182],[-91.833957,40.609566]]]}}, +{"type":"Feature","id":"30","properties":{"name":"Montana","density":6.858},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,49.000239],[-104.042057,47.861036],[-104.047534,45.944106],[-104.042057,44.996596],[-104.058488,44.996596],[-105.91517,45.002073],[-109.080842,45.002073],[-111.05254,45.002073],[-111.047063,44.476286],[-111.227803,44.580348],[-111.386634,44.75561],[-111.616665,44.547487],[-111.819312,44.509148],[-111.868605,44.563917],[-112.104113,44.520102],[-112.241036,44.569394],[-112.471068,44.481763],[-112.783254,44.48724],[-112.887315,44.394132],[-113.002331,44.448902],[-113.133778,44.772041],[-113.341901,44.782995],[-113.456917,44.865149],[-113.45144,45.056842],[-113.571933,45.128042],[-113.736241,45.330689],[-113.834826,45.522382],[-113.807441,45.604536],[-113.98818,45.703121],[-114.086765,45.593582],[-114.333228,45.456659],[-114.546828,45.560721],[-114.497536,45.670259],[-114.568736,45.774321],[-114.387997,45.88386],[-114.492059,46.037214],[-114.464674,46.272723],[-114.322274,46.645155],[-114.612552,46.639678],[-114.623506,46.705401],[-114.886399,46.809463],[-114.930214,46.919002],[-115.302646,47.187372],[-115.324554,47.258572],[-115.527201,47.302388],[-115.718894,47.42288],[-115.724371,47.696727],[-116.04751,47.976051],[-116.04751,49.000239],[-111.50165,48.994762],[-109.453274,49.000239],[-104.047534,49.000239]]]}}, +{"type":"Feature","id":"31","properties":{"name":"Nebraska","density":23.97},"geometry":{"type":"Polygon","coordinates":[[[-103.324578,43.002989],[-101.626726,42.997512],[-98.499393,42.997512],[-98.466531,42.94822],[-97.951699,42.767481],[-97.831206,42.866066],[-97.688806,42.844158],[-97.217789,42.844158],[-96.692003,42.657942],[-96.626279,42.515542],[-96.44554,42.488157],[-96.264801,42.039048],[-96.127878,41.973325],[-96.062155,41.798063],[-96.122401,41.67757],[-96.095016,41.540646],[-95.919754,41.453015],[-95.925231,41.201076],[-95.826646,40.976521],[-95.881416,40.719105],[-95.7664,40.587659],[-95.552799,40.264519],[-95.306337,40.001626],[-101.90605,40.001626],[-102.053927,40.001626],[-102.053927,41.003906],[-104.053011,41.003906],[-104.053011,43.002989],[-103.324578,43.002989]]]}}, +{"type":"Feature","id":"32","properties":{"name":"Nevada","density":24.80},"geometry":{"type":"Polygon","coordinates":[[[-117.027882,42.000709],[-114.04295,41.995232],[-114.048427,37.000263],[-114.048427,36.195153],[-114.152489,36.025367],[-114.251074,36.01989],[-114.371566,36.140383],[-114.738521,36.102045],[-114.678275,35.516012],[-114.596121,35.324319],[-114.574213,35.138103],[-114.634459,35.00118],[-115.85034,35.970598],[-116.540435,36.501861],[-117.498899,37.21934],[-118.71478,38.101128],[-120.001861,38.999346],[-119.996384,40.264519],[-120.001861,41.995232],[-118.698349,41.989755],[-117.027882,42.000709]]]}}, +{"type":"Feature","id":"33","properties":{"name":"New Hampshire","density":147},"geometry":{"type":"Polygon","coordinates":[[[-71.08183,45.303304],[-71.032537,44.657025],[-70.966814,43.34256],[-70.807983,43.227544],[-70.824413,43.128959],[-70.703921,43.057759],[-70.818936,42.871543],[-70.917521,42.887974],[-71.185891,42.789389],[-71.29543,42.696281],[-72.456542,42.729142],[-72.544173,42.80582],[-72.533219,42.953697],[-72.445588,43.008466],[-72.456542,43.150867],[-72.379864,43.572591],[-72.204602,43.769761],[-72.116971,43.994316],[-72.02934,44.07647],[-72.034817,44.322932],[-71.700724,44.41604],[-71.536416,44.585825],[-71.629524,44.750133],[-71.4926,44.914442],[-71.503554,45.013027],[-71.361154,45.270443],[-71.131122,45.243058],[-71.08183,45.303304]]]}}, +{"type":"Feature","id":"34","properties":{"name":"New Jersey","density":1189 },"geometry":{"type":"Polygon","coordinates":[[[-74.236547,41.14083],[-73.902454,40.998429],[-74.022947,40.708151],[-74.187255,40.642428],[-74.274886,40.489074],[-74.001039,40.412397],[-73.979131,40.297381],[-74.099624,39.760641],[-74.411809,39.360824],[-74.614456,39.245808],[-74.795195,38.993869],[-74.888303,39.158177],[-75.178581,39.240331],[-75.534582,39.459409],[-75.55649,39.607286],[-75.561967,39.629194],[-75.507197,39.683964],[-75.414089,39.804456],[-75.145719,39.88661],[-75.129289,39.963288],[-74.82258,40.127596],[-74.773287,40.215227],[-75.058088,40.417874],[-75.069042,40.543843],[-75.195012,40.576705],[-75.205966,40.691721],[-75.052611,40.866983],[-75.134765,40.971045],[-74.882826,41.179168],[-74.828057,41.288707],[-74.69661,41.359907],[-74.236547,41.14083]]]}}, +{"type":"Feature","id":"35","properties":{"name":"New Mexico","density":17.16},"geometry":{"type":"Polygon","coordinates":[[[-107.421329,37.000263],[-106.868158,36.994786],[-104.337812,36.994786],[-103.001438,37.000263],[-103.001438,36.501861],[-103.039777,36.501861],[-103.045254,34.01533],[-103.067161,33.002096],[-103.067161,31.999816],[-106.616219,31.999816],[-106.643603,31.901231],[-106.528588,31.786216],[-108.210008,31.786216],[-108.210008,31.331629],[-109.04798,31.331629],[-109.042503,37.000263],[-107.421329,37.000263]]]}}, +{"type":"Feature","id":"36","properties":{"name":"New York","density":412.3},"geometry":{"type":"Polygon","coordinates":[[[-73.343806,45.013027],[-73.332852,44.804903],[-73.387622,44.618687],[-73.294514,44.437948],[-73.321898,44.246255],[-73.436914,44.043608],[-73.349283,43.769761],[-73.404052,43.687607],[-73.245221,43.523299],[-73.278083,42.833204],[-73.267129,42.745573],[-73.508114,42.08834],[-73.486206,42.050002],[-73.55193,41.294184],[-73.48073,41.21203],[-73.727192,41.102491],[-73.655992,40.987475],[-73.22879,40.905321],[-73.141159,40.965568],[-72.774204,40.965568],[-72.587988,40.998429],[-72.28128,41.157261],[-72.259372,41.042245],[-72.100541,40.992952],[-72.467496,40.845075],[-73.239744,40.625997],[-73.562884,40.582182],[-73.776484,40.593136],[-73.935316,40.543843],[-74.022947,40.708151],[-73.902454,40.998429],[-74.236547,41.14083],[-74.69661,41.359907],[-74.740426,41.431108],[-74.89378,41.436584],[-75.074519,41.60637],[-75.052611,41.754247],[-75.173104,41.869263],[-75.249781,41.863786],[-75.35932,42.000709],[-79.76278,42.000709],[-79.76278,42.252649],[-79.76278,42.269079],[-79.149363,42.55388],[-79.050778,42.690804],[-78.853608,42.783912],[-78.930285,42.953697],[-79.012439,42.986559],[-79.072686,43.260406],[-78.486653,43.375421],[-77.966344,43.369944],[-77.75822,43.34256],[-77.533665,43.233021],[-77.391265,43.276836],[-76.958587,43.271359],[-76.695693,43.34256],[-76.41637,43.523299],[-76.235631,43.528776],[-76.230154,43.802623],[-76.137046,43.961454],[-76.3616,44.070993],[-76.312308,44.196962],[-75.912491,44.366748],[-75.764614,44.514625],[-75.282643,44.848718],[-74.828057,45.018503],[-74.148916,44.991119],[-73.343806,45.013027]]]}}, +{"type":"Feature","id":"37","properties":{"name":"North Carolina","density":198.2},"geometry":{"type":"Polygon","coordinates":[[[-80.978661,36.562108],[-80.294043,36.545677],[-79.510841,36.5402],[-75.868676,36.551154],[-75.75366,36.151337],[-76.032984,36.189676],[-76.071322,36.140383],[-76.410893,36.080137],[-76.460185,36.025367],[-76.68474,36.008937],[-76.673786,35.937736],[-76.399939,35.987029],[-76.3616,35.943213],[-76.060368,35.992506],[-75.961783,35.899398],[-75.781044,35.937736],[-75.715321,35.696751],[-75.775568,35.581735],[-75.89606,35.570781],[-76.147999,35.324319],[-76.482093,35.313365],[-76.536862,35.14358],[-76.394462,34.973795],[-76.279446,34.940933],[-76.493047,34.661609],[-76.673786,34.694471],[-76.991448,34.667086],[-77.210526,34.60684],[-77.555573,34.415147],[-77.82942,34.163208],[-77.971821,33.845545],[-78.179944,33.916745],[-78.541422,33.851022],[-79.675149,34.80401],[-80.797922,34.820441],[-80.781491,34.935456],[-80.934845,35.105241],[-81.038907,35.044995],[-81.044384,35.149057],[-82.276696,35.198349],[-82.550543,35.160011],[-82.764143,35.066903],[-83.109191,35.00118],[-83.618546,34.984749],[-84.319594,34.990226],[-84.29221,35.225734],[-84.09504,35.247642],[-84.018363,35.41195],[-83.7719,35.559827],[-83.498053,35.565304],[-83.251591,35.718659],[-82.994175,35.773428],[-82.775097,35.997983],[-82.638174,36.063706],[-82.610789,35.965121],[-82.216449,36.156814],[-82.03571,36.118475],[-81.909741,36.304691],[-81.723525,36.353984],[-81.679709,36.589492],[-80.978661,36.562108]]]}}, +{"type":"Feature","id":"38","properties":{"name":"North Dakota","density":9.916},"geometry":{"type":"Polygon","coordinates":[[[-97.228743,49.000239],[-97.097296,48.682577],[-97.16302,48.545653],[-97.130158,48.140359],[-97.053481,47.948667],[-96.856311,47.609096],[-96.823449,46.968294],[-96.785111,46.924479],[-96.801542,46.656109],[-96.719387,46.437031],[-96.598895,46.332969],[-96.560556,45.933153],[-104.047534,45.944106],[-104.042057,47.861036],[-104.047534,49.000239],[-97.228743,49.000239]]]}}, +{"type":"Feature","id":"39","properties":{"name":"Ohio","density":281.9},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,41.978802],[-80.518598,40.636951],[-80.666475,40.582182],[-80.595275,40.472643],[-80.600752,40.319289],[-80.737675,40.078303],[-80.830783,39.711348],[-81.219646,39.388209],[-81.345616,39.344393],[-81.455155,39.410117],[-81.57017,39.267716],[-81.685186,39.273193],[-81.811156,39.0815],[-81.783771,38.966484],[-81.887833,38.873376],[-82.03571,39.026731],[-82.221926,38.785745],[-82.172634,38.632391],[-82.293127,38.577622],[-82.331465,38.446175],[-82.594358,38.424267],[-82.731282,38.561191],[-82.846298,38.588575],[-82.890113,38.758361],[-83.032514,38.725499],[-83.142052,38.626914],[-83.519961,38.703591],[-83.678792,38.632391],[-83.903347,38.769315],[-84.215533,38.807653],[-84.231963,38.895284],[-84.43461,39.103408],[-84.817996,39.103408],[-84.801565,40.500028],[-84.807042,41.694001],[-83.454238,41.732339],[-83.065375,41.595416],[-82.933929,41.513262],[-82.835344,41.589939],[-82.616266,41.431108],[-82.479343,41.381815],[-82.013803,41.513262],[-81.739956,41.485877],[-81.444201,41.672093],[-81.011523,41.852832],[-80.518598,41.978802],[-80.518598,41.978802]]]}}, +{"type":"Feature","id":"40","properties":{"name":"Oklahoma","density":55.22},"geometry":{"type":"Polygon","coordinates":[[[-100.087706,37.000263],[-94.616242,37.000263],[-94.616242,36.501861],[-94.430026,35.395519],[-94.484796,33.637421],[-94.868182,33.74696],[-94.966767,33.861976],[-95.224183,33.960561],[-95.289906,33.87293],[-95.547322,33.878407],[-95.602092,33.933176],[-95.8376,33.834591],[-95.936185,33.889361],[-96.149786,33.840068],[-96.346956,33.686714],[-96.423633,33.774345],[-96.631756,33.845545],[-96.850834,33.845545],[-96.922034,33.960561],[-97.173974,33.736006],[-97.256128,33.861976],[-97.371143,33.823637],[-97.458774,33.905791],[-97.694283,33.982469],[-97.869545,33.851022],[-97.946222,33.987946],[-98.088623,34.004376],[-98.170777,34.113915],[-98.36247,34.157731],[-98.488439,34.064623],[-98.570593,34.146777],[-98.767763,34.135823],[-98.986841,34.223454],[-99.189488,34.2125],[-99.260688,34.404193],[-99.57835,34.415147],[-99.698843,34.382285],[-99.923398,34.573978],[-100.000075,34.563024],[-100.000075,36.501861],[-101.812942,36.501861],[-103.001438,36.501861],[-103.001438,37.000263],[-102.042974,36.994786],[-100.087706,37.000263]]]}}, +{"type":"Feature","id":"41","properties":{"name":"Oregon","density":40.33},"geometry":{"type":"Polygon","coordinates":[[[-123.211348,46.174138],[-123.11824,46.185092],[-122.904639,46.08103],[-122.811531,45.960537],[-122.762239,45.659305],[-122.247407,45.549767],[-121.809251,45.708598],[-121.535404,45.725029],[-121.217742,45.670259],[-121.18488,45.604536],[-120.637186,45.746937],[-120.505739,45.697644],[-120.209985,45.725029],[-119.963522,45.823614],[-119.525367,45.911245],[-119.125551,45.933153],[-118.988627,45.998876],[-116.918344,45.993399],[-116.78142,45.823614],[-116.545912,45.752413],[-116.463758,45.61549],[-116.671881,45.319735],[-116.732128,45.144473],[-116.847143,45.02398],[-116.830713,44.930872],[-116.934774,44.782995],[-117.038836,44.750133],[-117.241483,44.394132],[-117.170283,44.257209],[-116.97859,44.240778],[-116.896436,44.158624],[-117.027882,43.830007],[-117.027882,42.000709],[-118.698349,41.989755],[-120.001861,41.995232],[-121.037003,41.995232],[-122.378853,42.011663],[-123.233256,42.006186],[-124.213628,42.000709],[-124.356029,42.115725],[-124.432706,42.438865],[-124.416275,42.663419],[-124.553198,42.838681],[-124.454613,43.002989],[-124.383413,43.271359],[-124.235536,43.55616],[-124.169813,43.8081],[-124.060274,44.657025],[-124.076705,44.772041],[-123.97812,45.144473],[-123.939781,45.659305],[-123.994551,45.944106],[-123.945258,46.113892],[-123.545441,46.261769],[-123.370179,46.146753],[-123.211348,46.174138]]]}}, +{"type":"Feature","id":"42","properties":{"name":"Pennsylvania","density":284.3},"geometry":{"type":"Polygon","coordinates":[[[-79.76278,42.252649],[-79.76278,42.000709],[-75.35932,42.000709],[-75.249781,41.863786],[-75.173104,41.869263],[-75.052611,41.754247],[-75.074519,41.60637],[-74.89378,41.436584],[-74.740426,41.431108],[-74.69661,41.359907],[-74.828057,41.288707],[-74.882826,41.179168],[-75.134765,40.971045],[-75.052611,40.866983],[-75.205966,40.691721],[-75.195012,40.576705],[-75.069042,40.543843],[-75.058088,40.417874],[-74.773287,40.215227],[-74.82258,40.127596],[-75.129289,39.963288],[-75.145719,39.88661],[-75.414089,39.804456],[-75.616736,39.831841],[-75.786521,39.722302],[-79.477979,39.722302],[-80.518598,39.722302],[-80.518598,40.636951],[-80.518598,41.978802],[-80.518598,41.978802],[-80.332382,42.033571],[-79.76278,42.269079],[-79.76278,42.252649]]]}}, +{"type":"Feature","id":"44","properties":{"name":"Rhode Island","density":1006 },"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.196845,41.67757],[-71.120168,41.496831],[-71.317338,41.474923],[-71.196845,41.67757]]],[[[-71.530939,42.01714],[-71.383061,42.01714],[-71.328292,41.781632],[-71.22423,41.710431],[-71.344723,41.726862],[-71.448785,41.578985],[-71.481646,41.370861],[-71.859555,41.321569],[-71.799309,41.414677],[-71.799309,42.006186],[-71.530939,42.01714]]]]}}, +{"type":"Feature","id":"45","properties":{"name":"South Carolina","density":155.4},"geometry":{"type":"Polygon","coordinates":[[[-82.764143,35.066903],[-82.550543,35.160011],[-82.276696,35.198349],[-81.044384,35.149057],[-81.038907,35.044995],[-80.934845,35.105241],[-80.781491,34.935456],[-80.797922,34.820441],[-79.675149,34.80401],[-78.541422,33.851022],[-78.716684,33.80173],[-78.935762,33.637421],[-79.149363,33.380005],[-79.187701,33.171881],[-79.357487,33.007573],[-79.582041,33.007573],[-79.631334,32.887081],[-79.866842,32.755634],[-79.998289,32.613234],[-80.206412,32.552987],[-80.430967,32.399633],[-80.452875,32.328433],[-80.660998,32.246279],[-80.885553,32.032678],[-81.115584,32.120309],[-81.121061,32.290094],[-81.279893,32.558464],[-81.416816,32.629664],[-81.42777,32.843265],[-81.493493,33.007573],[-81.761863,33.160928],[-81.937125,33.347144],[-81.926172,33.462159],[-82.194542,33.631944],[-82.325988,33.81816],[-82.55602,33.94413],[-82.714851,34.152254],[-82.747713,34.26727],[-82.901067,34.486347],[-83.005129,34.469916],[-83.339222,34.683517],[-83.322791,34.787579],[-83.109191,35.00118],[-82.764143,35.066903]]]}}, +{"type":"Feature","id":"46","properties":{"name":"South Dakota","density":98.07},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,45.944106],[-96.560556,45.933153],[-96.582464,45.818137],[-96.856311,45.604536],[-96.681049,45.412843],[-96.451017,45.297827],[-96.451017,43.501391],[-96.582464,43.479483],[-96.527695,43.397329],[-96.560556,43.222067],[-96.434587,43.123482],[-96.511264,43.052282],[-96.544125,42.855112],[-96.631756,42.707235],[-96.44554,42.488157],[-96.626279,42.515542],[-96.692003,42.657942],[-97.217789,42.844158],[-97.688806,42.844158],[-97.831206,42.866066],[-97.951699,42.767481],[-98.466531,42.94822],[-98.499393,42.997512],[-101.626726,42.997512],[-103.324578,43.002989],[-104.053011,43.002989],[-104.058488,44.996596],[-104.042057,44.996596],[-104.047534,45.944106]]]}}, +{"type":"Feature","id":"47","properties":{"name":"Tennessee","density":88.08},"geometry":{"type":"Polygon","coordinates":[[[-88.054868,36.496384],[-88.071299,36.677123],[-87.852221,36.633308],[-86.592525,36.655216],[-85.486183,36.616877],[-85.289013,36.627831],[-84.544149,36.594969],[-83.689746,36.584015],[-83.673316,36.600446],[-81.679709,36.589492],[-81.723525,36.353984],[-81.909741,36.304691],[-82.03571,36.118475],[-82.216449,36.156814],[-82.610789,35.965121],[-82.638174,36.063706],[-82.775097,35.997983],[-82.994175,35.773428],[-83.251591,35.718659],[-83.498053,35.565304],[-83.7719,35.559827],[-84.018363,35.41195],[-84.09504,35.247642],[-84.29221,35.225734],[-84.319594,34.990226],[-85.606675,34.984749],[-87.359296,35.00118],[-88.202745,34.995703],[-88.471115,34.995703],[-90.311367,34.995703],[-90.212782,35.023087],[-90.114197,35.198349],[-90.130628,35.439335],[-89.944412,35.603643],[-89.911551,35.756997],[-89.763673,35.811767],[-89.730812,35.997983],[-89.533642,36.249922],[-89.539119,36.496384],[-89.484349,36.496384],[-89.418626,36.496384],[-89.298133,36.507338],[-88.054868,36.496384]]]}}, +{"type":"Feature","id":"48","properties":{"name":"Texas","density":98.07},"geometry":{"type":"Polygon","coordinates":[[[-101.812942,36.501861],[-100.000075,36.501861],[-100.000075,34.563024],[-99.923398,34.573978],[-99.698843,34.382285],[-99.57835,34.415147],[-99.260688,34.404193],[-99.189488,34.2125],[-98.986841,34.223454],[-98.767763,34.135823],[-98.570593,34.146777],[-98.488439,34.064623],[-98.36247,34.157731],[-98.170777,34.113915],[-98.088623,34.004376],[-97.946222,33.987946],[-97.869545,33.851022],[-97.694283,33.982469],[-97.458774,33.905791],[-97.371143,33.823637],[-97.256128,33.861976],[-97.173974,33.736006],[-96.922034,33.960561],[-96.850834,33.845545],[-96.631756,33.845545],[-96.423633,33.774345],[-96.346956,33.686714],[-96.149786,33.840068],[-95.936185,33.889361],[-95.8376,33.834591],[-95.602092,33.933176],[-95.547322,33.878407],[-95.289906,33.87293],[-95.224183,33.960561],[-94.966767,33.861976],[-94.868182,33.74696],[-94.484796,33.637421],[-94.380734,33.544313],[-94.183564,33.593606],[-94.041164,33.54979],[-94.041164,33.018527],[-94.041164,31.994339],[-93.822086,31.775262],[-93.816609,31.556184],[-93.542762,31.15089],[-93.526331,30.93729],[-93.630393,30.679874],[-93.728978,30.575812],[-93.696116,30.438888],[-93.767317,30.334826],[-93.690639,30.143133],[-93.926148,29.787132],[-93.838517,29.688547],[-94.002825,29.68307],[-94.523134,29.546147],[-94.70935,29.622824],[-94.742212,29.787132],[-94.873659,29.672117],[-94.966767,29.699501],[-95.016059,29.557101],[-94.911997,29.496854],[-94.895566,29.310638],[-95.081782,29.113469],[-95.383014,28.867006],[-95.985477,28.604113],[-96.045724,28.647929],[-96.226463,28.582205],[-96.23194,28.642452],[-96.478402,28.598636],[-96.593418,28.724606],[-96.664618,28.697221],[-96.401725,28.439805],[-96.593418,28.357651],[-96.774157,28.406943],[-96.801542,28.226204],[-97.026096,28.039988],[-97.256128,27.694941],[-97.404005,27.333463],[-97.513544,27.360848],[-97.540929,27.229401],[-97.425913,27.262263],[-97.480682,26.99937],[-97.557359,26.988416],[-97.562836,26.840538],[-97.469728,26.758384],[-97.442344,26.457153],[-97.332805,26.353091],[-97.30542,26.161398],[-97.217789,25.991613],[-97.524498,25.887551],[-97.650467,26.018997],[-97.885976,26.06829],[-98.198161,26.057336],[-98.466531,26.221644],[-98.669178,26.238075],[-98.822533,26.369522],[-99.030656,26.413337],[-99.173057,26.539307],[-99.266165,26.840538],[-99.446904,27.021277],[-99.424996,27.174632],[-99.50715,27.33894],[-99.479765,27.48134],[-99.605735,27.640172],[-99.709797,27.656603],[-99.879582,27.799003],[-99.934351,27.979742],[-100.082229,28.14405],[-100.29583,28.280974],[-100.399891,28.582205],[-100.498476,28.66436],[-100.629923,28.905345],[-100.673738,29.102515],[-100.799708,29.244915],[-101.013309,29.370885],[-101.062601,29.458516],[-101.259771,29.535193],[-101.413125,29.754271],[-101.851281,29.803563],[-102.114174,29.792609],[-102.338728,29.869286],[-102.388021,29.765225],[-102.629006,29.732363],[-102.809745,29.524239],[-102.919284,29.190146],[-102.97953,29.184669],[-103.116454,28.987499],[-103.280762,28.982022],[-103.527224,29.135376],[-104.146119,29.381839],[-104.266611,29.513285],[-104.507597,29.639255],[-104.677382,29.924056],[-104.688336,30.181472],[-104.858121,30.389596],[-104.896459,30.570335],[-105.005998,30.685351],[-105.394861,30.855136],[-105.602985,31.085167],[-105.77277,31.167321],[-105.953509,31.364491],[-106.205448,31.468553],[-106.38071,31.731446],[-106.528588,31.786216],[-106.643603,31.901231],[-106.616219,31.999816],[-103.067161,31.999816],[-103.067161,33.002096],[-103.045254,34.01533],[-103.039777,36.501861],[-103.001438,36.501861],[-101.812942,36.501861]]]}}, +{"type":"Feature","id":"49","properties":{"name":"Utah","density":34.30},"geometry":{"type":"Polygon","coordinates":[[[-112.164359,41.995232],[-111.047063,42.000709],[-111.047063,40.998429],[-109.04798,40.998429],[-109.053457,39.125316],[-109.058934,38.27639],[-109.042503,38.166851],[-109.042503,37.000263],[-110.499369,37.00574],[-114.048427,37.000263],[-114.04295,41.995232],[-112.164359,41.995232]]]}}, +{"type":"Feature","id":"50","properties":{"name":"Vermont","density":67.73},"geometry":{"type":"Polygon","coordinates":[[[-71.503554,45.013027],[-71.4926,44.914442],[-71.629524,44.750133],[-71.536416,44.585825],[-71.700724,44.41604],[-72.034817,44.322932],[-72.02934,44.07647],[-72.116971,43.994316],[-72.204602,43.769761],[-72.379864,43.572591],[-72.456542,43.150867],[-72.445588,43.008466],[-72.533219,42.953697],[-72.544173,42.80582],[-72.456542,42.729142],[-73.267129,42.745573],[-73.278083,42.833204],[-73.245221,43.523299],[-73.404052,43.687607],[-73.349283,43.769761],[-73.436914,44.043608],[-73.321898,44.246255],[-73.294514,44.437948],[-73.387622,44.618687],[-73.332852,44.804903],[-73.343806,45.013027],[-72.308664,45.002073],[-71.503554,45.013027]]]}}, +{"type":"Feature","id":"51","properties":{"name":"Virginia","density":204.5},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.397659,38.013497],[-75.244304,38.029928],[-75.375751,37.860142],[-75.512674,37.799896],[-75.594828,37.569865],[-75.802952,37.197433],[-75.972737,37.120755],[-76.027507,37.257679],[-75.939876,37.564388],[-75.671506,37.95325],[-75.397659,38.013497]]],[[[-76.016553,37.95325],[-75.994645,37.95325],[-76.043938,37.95325],[-76.016553,37.95325]]],[[[-78.349729,39.464886],[-77.82942,39.130793],[-77.719881,39.322485],[-77.566527,39.306055],[-77.456988,39.223901],[-77.456988,39.076023],[-77.248864,39.026731],[-77.117418,38.933623],[-77.040741,38.791222],[-77.128372,38.632391],[-77.248864,38.588575],[-77.325542,38.446175],[-77.281726,38.342113],[-77.013356,38.374975],[-76.964064,38.216144],[-76.613539,38.15042],[-76.514954,38.024451],[-76.235631,37.887527],[-76.3616,37.608203],[-76.246584,37.389126],[-76.383508,37.285064],[-76.399939,37.159094],[-76.273969,37.082417],[-76.410893,36.961924],[-76.619016,37.120755],[-76.668309,37.065986],[-76.48757,36.95097],[-75.994645,36.923586],[-75.868676,36.551154],[-79.510841,36.5402],[-80.294043,36.545677],[-80.978661,36.562108],[-81.679709,36.589492],[-83.673316,36.600446],[-83.136575,36.742847],[-83.070852,36.852385],[-82.879159,36.890724],[-82.868205,36.978355],[-82.720328,37.044078],[-82.720328,37.120755],[-82.353373,37.268633],[-81.969987,37.537003],[-81.986418,37.454849],[-81.849494,37.285064],[-81.679709,37.20291],[-81.55374,37.208387],[-81.362047,37.339833],[-81.225123,37.235771],[-80.967707,37.290541],[-80.513121,37.482234],[-80.474782,37.421987],[-80.29952,37.509618],[-80.294043,37.690357],[-80.184505,37.849189],[-79.998289,37.997066],[-79.921611,38.177805],[-79.724442,38.364021],[-79.647764,38.594052],[-79.477979,38.457129],[-79.313671,38.413313],[-79.209609,38.495467],[-78.996008,38.851469],[-78.870039,38.763838],[-78.404499,39.169131],[-78.349729,39.464886]]]]}}, +{"type":"Feature","id":"53","properties":{"name":"Washington","density":102.6},"geometry":{"type":"MultiPolygon","coordinates":[[[[-117.033359,49.000239],[-117.044313,47.762451],[-117.038836,46.426077],[-117.055267,46.343923],[-116.92382,46.168661],[-116.918344,45.993399],[-118.988627,45.998876],[-119.125551,45.933153],[-119.525367,45.911245],[-119.963522,45.823614],[-120.209985,45.725029],[-120.505739,45.697644],[-120.637186,45.746937],[-121.18488,45.604536],[-121.217742,45.670259],[-121.535404,45.725029],[-121.809251,45.708598],[-122.247407,45.549767],[-122.762239,45.659305],[-122.811531,45.960537],[-122.904639,46.08103],[-123.11824,46.185092],[-123.211348,46.174138],[-123.370179,46.146753],[-123.545441,46.261769],[-123.72618,46.300108],[-123.874058,46.239861],[-124.065751,46.327492],[-124.027412,46.464416],[-123.895966,46.535616],[-124.098612,46.74374],[-124.235536,47.285957],[-124.31769,47.357157],[-124.427229,47.740543],[-124.624399,47.88842],[-124.706553,48.184175],[-124.597014,48.381345],[-124.394367,48.288237],[-123.983597,48.162267],[-123.704273,48.167744],[-123.424949,48.118452],[-123.162056,48.167744],[-123.036086,48.080113],[-122.800578,48.08559],[-122.636269,47.866512],[-122.515777,47.882943],[-122.493869,47.587189],[-122.422669,47.318818],[-122.324084,47.346203],[-122.422669,47.576235],[-122.395284,47.800789],[-122.230976,48.030821],[-122.362422,48.123929],[-122.373376,48.288237],[-122.471961,48.468976],[-122.422669,48.600422],[-122.488392,48.753777],[-122.647223,48.775685],[-122.795101,48.8907],[-122.756762,49.000239],[-117.033359,49.000239]]],[[[-122.718423,48.310145],[-122.586977,48.35396],[-122.608885,48.151313],[-122.767716,48.227991],[-122.718423,48.310145]]],[[[-123.025132,48.583992],[-122.915593,48.715438],[-122.767716,48.556607],[-122.811531,48.419683],[-123.041563,48.458022],[-123.025132,48.583992]]]]}}, +{"type":"Feature","id":"54","properties":{"name":"West Virginia","density":77.06},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,40.636951],[-80.518598,39.722302],[-79.477979,39.722302],[-79.488933,39.20747],[-79.291763,39.300578],[-79.094593,39.470363],[-78.963147,39.437501],[-78.765977,39.585379],[-78.470222,39.514178],[-78.431884,39.623717],[-78.267575,39.61824],[-78.174467,39.694917],[-78.004682,39.601809],[-77.834897,39.601809],[-77.719881,39.322485],[-77.82942,39.130793],[-78.349729,39.464886],[-78.404499,39.169131],[-78.870039,38.763838],[-78.996008,38.851469],[-79.209609,38.495467],[-79.313671,38.413313],[-79.477979,38.457129],[-79.647764,38.594052],[-79.724442,38.364021],[-79.921611,38.177805],[-79.998289,37.997066],[-80.184505,37.849189],[-80.294043,37.690357],[-80.29952,37.509618],[-80.474782,37.421987],[-80.513121,37.482234],[-80.967707,37.290541],[-81.225123,37.235771],[-81.362047,37.339833],[-81.55374,37.208387],[-81.679709,37.20291],[-81.849494,37.285064],[-81.986418,37.454849],[-81.969987,37.537003],[-82.101434,37.553434],[-82.293127,37.668449],[-82.342419,37.783465],[-82.50125,37.931343],[-82.621743,38.123036],[-82.594358,38.424267],[-82.331465,38.446175],[-82.293127,38.577622],[-82.172634,38.632391],[-82.221926,38.785745],[-82.03571,39.026731],[-81.887833,38.873376],[-81.783771,38.966484],[-81.811156,39.0815],[-81.685186,39.273193],[-81.57017,39.267716],[-81.455155,39.410117],[-81.345616,39.344393],[-81.219646,39.388209],[-80.830783,39.711348],[-80.737675,40.078303],[-80.600752,40.319289],[-80.595275,40.472643],[-80.666475,40.582182],[-80.518598,40.636951]]]}}, +{"type":"Feature","id":"55","properties":{"name":"Wisconsin","density":105.2},"geometry":{"type":"Polygon","coordinates":[[[-90.415429,46.568478],[-90.229213,46.508231],[-90.119674,46.338446],[-89.09001,46.135799],[-88.662808,45.987922],[-88.531362,46.020784],[-88.10416,45.922199],[-87.989145,45.796229],[-87.781021,45.675736],[-87.791975,45.500474],[-87.885083,45.363551],[-87.649574,45.341643],[-87.742682,45.199243],[-87.589328,45.095181],[-87.627666,44.974688],[-87.819359,44.95278],[-87.983668,44.722749],[-88.043914,44.563917],[-87.928898,44.536533],[-87.775544,44.640595],[-87.611236,44.837764],[-87.403112,44.914442],[-87.238804,45.166381],[-87.03068,45.22115],[-87.047111,45.089704],[-87.189511,44.969211],[-87.468835,44.552964],[-87.545512,44.322932],[-87.540035,44.158624],[-87.644097,44.103854],[-87.737205,43.8793],[-87.704344,43.687607],[-87.791975,43.561637],[-87.912467,43.249452],[-87.885083,43.002989],[-87.76459,42.783912],[-87.802929,42.493634],[-88.788778,42.493634],[-90.639984,42.510065],[-90.711184,42.636034],[-91.067185,42.75105],[-91.143862,42.909881],[-91.176724,43.134436],[-91.056231,43.254929],[-91.204109,43.353514],[-91.215062,43.501391],[-91.269832,43.616407],[-91.242447,43.775238],[-91.43414,43.994316],[-91.592971,44.032654],[-91.877772,44.202439],[-91.927065,44.333886],[-92.233773,44.443425],[-92.337835,44.552964],[-92.545959,44.569394],[-92.808852,44.750133],[-92.737652,45.117088],[-92.75956,45.286874],[-92.644544,45.440228],[-92.770513,45.566198],[-92.885529,45.577151],[-92.869098,45.719552],[-92.639067,45.933153],[-92.354266,46.015307],[-92.29402,46.075553],[-92.29402,46.667063],[-92.091373,46.749217],[-92.014696,46.705401],[-91.790141,46.694447],[-91.09457,46.864232],[-90.837154,46.95734],[-90.749522,46.88614],[-90.886446,46.754694],[-90.55783,46.584908],[-90.415429,46.568478]]]}}, +{"type":"Feature","id":"56","properties":{"name":"Wyoming","density":5.851},"geometry":{"type":"Polygon","coordinates":[[[-109.080842,45.002073],[-105.91517,45.002073],[-104.058488,44.996596],[-104.053011,43.002989],[-104.053011,41.003906],[-105.728954,40.998429],[-107.919731,41.003906],[-109.04798,40.998429],[-111.047063,40.998429],[-111.047063,42.000709],[-111.047063,44.476286],[-111.05254,45.002073],[-109.080842,45.002073]]]}}, +{"type":"Feature","id":"72","properties":{"name":"Puerto Rico","density":1082 },"geometry":{"type":"Polygon","coordinates":[[[-66.448338,17.984326],[-66.771478,18.006234],[-66.924832,17.929556],[-66.985078,17.973372],[-67.209633,17.956941],[-67.154863,18.19245],[-67.269879,18.362235],[-67.094617,18.515589],[-66.957694,18.488204],[-66.409999,18.488204],[-65.840398,18.433435],[-65.632274,18.367712],[-65.626797,18.203403],[-65.730859,18.186973],[-65.834921,18.017187],[-66.234737,17.929556],[-66.448338,17.984326]]]}} +]}; diff --git a/webgis04/ambil_data.php b/webgis04/ambil_data.php new file mode 100644 index 0000000..ad04870 --- /dev/null +++ b/webgis04/ambil_data.php @@ -0,0 +1,13 @@ +query("SELECT * FROM spbu"); + +while ($row = $result->fetch_assoc()) { + $data[] = $row; +} + +echo json_encode($data); +?> \ No newline at end of file diff --git a/webgis04/db_spbu.sql b/webgis04/db_spbu.sql new file mode 100644 index 0000000..12f56ef --- /dev/null +++ b/webgis04/db_spbu.sql @@ -0,0 +1,20 @@ +CREATE DATABASE IF NOT EXISTS db_spbu + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE db_spbu; + +CREATE TABLE IF NOT EXISTS spbu ( + id INT(11) NOT NULL AUTO_INCREMENT, + nama_spbu VARCHAR(100) NOT NULL, + no_wa VARCHAR(20) NOT NULL, + status ENUM('yes','no') NOT NULL DEFAULT 'no', + latitude DOUBLE NOT NULL, + longitude DOUBLE NOT NULL, + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO spbu (nama_spbu, no_wa, status, latitude, longitude) VALUES +('SPBU Gajah Mada', '08115700101', 'yes', -0.0227, 109.3294), +('SPBU Ahmad Yani', '08115700102', 'no', -0.0350, 109.3350), +('SPBU Tanjungpura', '08115700103', 'yes', -0.0180, 109.3410); diff --git a/webgis04/hapus.php b/webgis04/hapus.php new file mode 100644 index 0000000..4ba7032 --- /dev/null +++ b/webgis04/hapus.php @@ -0,0 +1,13 @@ +query($query)) { + echo "success"; +} else { + echo "error"; +} +?> \ No newline at end of file diff --git a/webgis04/index.php b/webgis04/index.php new file mode 100644 index 0000000..321f2ca --- /dev/null +++ b/webgis04/index.php @@ -0,0 +1,244 @@ + + + + Peta SPBU - Layer Control + + + + + + + + +
+ + + + diff --git a/webgis04/koneksi.php b/webgis04/koneksi.php new file mode 100644 index 0000000..27cdeff --- /dev/null +++ b/webgis04/koneksi.php @@ -0,0 +1,14 @@ + diff --git a/webgis04/simpan.php b/webgis04/simpan.php new file mode 100644 index 0000000..2cc5df5 --- /dev/null +++ b/webgis04/simpan.php @@ -0,0 +1,18 @@ +query($query)) { + echo "success"; +} else { + echo "error"; +} +?> \ No newline at end of file diff --git a/webgis04/update.php b/webgis04/update.php new file mode 100644 index 0000000..3868e70 --- /dev/null +++ b/webgis04/update.php @@ -0,0 +1,24 @@ +query($query)) { + echo "success"; +} else { + echo "error"; +} +?> \ No newline at end of file