GIS

Implementasi Laravel untuk Sistem Informasi Geografis: Membangun Dashboard Administrasi dengan Laravel Filament dan Integrasi GeoServer untuk Publikasi Data Spasial

calendar_today schedule 4 menit baca

Dalam artikel ini kita akan membahas langkah-langkah Implementasi Laravel untuk Sistem Informasi Geografis menggunakan Laravel Filament untuk membangun admin panel dan GeoServer untuk Publikasi data spasial. Anda akan belajar integrasi PostGIS, mengelola layer, serta menambahkan fitur real‑time dengan Laravel Echo.

Implementasi Laravel untuk Sistem Informasi Geografis: Membangun Dashboard Administrasi dengan Laravel Filament dan Integrasi GeoServer untuk Publikasi Data Spasial

Dalam era data spasial yang semakin kompleks, Implementasi Laravel untuk Sistem Informasi Geografis membutuhkan solusi admin yang fleksibel serta layanan peta yang мощный. Artikel ini menjelaskan cara menggabungkan internal link Laravel Filament sebagai panel administrasi dan GeoServer sebagai server pemetaan untuk menghasilkan SIG yang interaktif, skalable, dan responsif.

Mengapa Memilih Laravel Filament untuk Admin SIG?

Laravel Filament menyediakan komponen UI yang siap pakai dengan dasar Tailwind CSS, sehingga pengembang dapat dengan cepat membangun resource seperti layer, fitur, dan pengguna tanpa menulis banyak kode blade. Dengan menggunakan Filament, Implementasi Laravel untuk Sistem Informasi Geografis menjadi lebih produktif karena fitur otomatis seperti formulir, validasi, dan sorting.

Integrasi GeoServer sebagai Layanan Pemetaan Spasial

GeoServer adalah server open source yang mendukung standar OGC seperti WMS, WFS, dan WCS. Dengan meng Publish layer dari PostGIS ke GeoServer, aplikasi Laravel dapat meminta peta vektor atau raster melalui permintaan HTTP. Integrasi ini memberi kelecehan dalam hal caching (GeoWebCache) dan reproyeksi on‑the‑fly.

Alur Kerja Publikasi Data Spasial dari Laravel ke GeoServer

Persiapan Environment dengan Laravel Sail

Untuk memudahkan pengembangan, kita menggunakan Laravel Sail yang menyediakan Docker kompose dengan layanan PostgreSQL+PostGIS, Redis, dan Mailhog. Jalankan perintah ./vendor/bin/sail up untuk menampung semua dependensi.

Model dan Migrasi untuk Data Spasial

Buat model Layer dengan atribut name, description, dan kolom spasial geom tipe geometry. Migrasi contoh:

Schema::create('layers', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->text('description')->nullable();
    $table->geometry('geom', 4326);
    $table->timestamps();
});

Jangan lupa menambahkan indeks spasial: $table->spatialIndex('geom');

Membuat Resource Filament untuk Layer dan Fitur

Dengan perintah php artisan make:filament-resource Layer --generate Anda mendapatkan resource lengkap yang mencakup tabel, formulir, dan aksi massal. Tambahkan field Spatiale menggunakan komponen Map dari plugin filament-spatie-laravel-maps untuk mengedit geometri langsung dari UI.

Menghubungkan Laravel ke GeoServer melalui REST API

GeoServer menyediakan REST API untuk mengelola workspace, store, dan layer. Dari Laravel kita dapat menggunakan layanan Http atau paket guzzlehttp/guzzle untuk melakukan POST/PUT ke endpoint seperti http://geoserver:8080/geoserver/rest/workspaces/gs/datastores/postgis/featuretypes. Contoh kode:

$response = Http::withBasicAuth('admin', 'geoserver')
    ->post('http://geoserver:8080/geoserver/rest/workspaces/gs/datastores/postgis/featuretypes', [
        'featureType' => [
            'name' => $layer->name,
            'nativeCRS' => 'GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137, 298.257223563]],',
            'nativeBoundingBox' => [
                'minx' => $bbox->minx,
                'maxx' => $bbox->maxx,
                'miny' => $bbox->miny,
                'maxy' => $bbox->maxy,
                'crs' => 'EPSG:4326'
            ]
        ]
    ]);

Menggunakan Laravel Echo dan Pusher untuk Update Real‑time

Untuk memberi notifikasi saat data spasial diubah, kita siapkan Laravel Echo dengan broadcaster pusher. Sebagai contoh, event LayerUpdated akan broadcast ke channel layer.{id} sehingga peta Leaflet di frontend dapat melakukan reloadLayer tanpa refresh halaman.

Optimasi Query dengan PostGIS dan Indeks Spasial

Gunakan fungsi ST_Intersects, ST_DWithin, dan pastikan kolom geom memiliki indeks GIST. Query contoh untuk mendapatkan fitur dalam viewport:

SELECT * FROM layers WHERE ST_Intersects(geom, ST_MakeEnvelope($minx, $miny, $maxx, $maxy, 4326));

Dengan indeks spasial, eksekusi tetap cepat bahkan dengan jutaan baris.

Keamanan dan Otorisasi dengan Laravel Policies

Definisikan policy LayerPolicy yang mengatur siapa yang bisa melihat, membuat, atau menghapus layer. Registrasi policy di AuthServiceProvider dan gunakan middleware can:view,layer di route atau controller.

Deploy ke Server Produksi menggunakan Docker Compose

Untuk produksi, susun file docker-compose.yml yang mencakup layanan app (Laravel), postgis, geoserver, dan nginx sebagai reverse proxy. Jalankan docker compose up -d dan pastikan volume data PostGIS di‑mount untuk persistensi.

Manfaat dan Kasus Penggunaan

Dengan pendekatan ini, Implementasi Laravel untuk Sistem Informasi Geografis memberikan:

  • Admin panel yang cepat dan dapat disesuaikan melalui Filament.
  • Publikasi layer spasial yang standar OGC via GeoServer.
  • Update real‑time menggunakan Laravel Echo dan Pusher.
  • Keamanan terjamin dengan policies dan otorisasi.
  • Deploy yang konsisten menggunakan Docker, sehingga mudah di‑scale ke Kubernetes bila diperlukan.

Contoh penggunaan meliputi pemetaan aset infrastruktur jalan, monitoring lahan pertanian, dan sistem informasi kepemudaan desa.

FAQ

Apakah saya harus menginstal GeoServer secara terpisah?

Ya, GeoServer dapat dijalankan dalam container Docker terpisah atau pada VM sendiri. Integrasi hanya membutuhkan akses HTTP ke REST API-nya.

Apakah Filament mendukung multitenancy?

Filament memiliki plugin multitenancy yang bisa Anda instal untuk mengisolasi data per tenant, sesuai kebutuhan SIG multi‑organisasi.

Bagaimana cara menangani data citra besar seperti citra drone?

Citra dapat disimpan sebagai objek dalam layanan penyimpanan cloud (misal S3) dan referensi disimpan di PostGIS sebagai raster menggunakan ekstensi postgis_raster. Laravel dapat menghasilkan signed URL untuk ditampilkan di peta.


Dengan mengikuti panduan di atas, Anda dapat membangun Implementasi Laravel untuk Sistem Informasi Geografis yang modern, mudah dikelola, dan siap untuk pertumbuhan masa depan.