Opsi untuk menampilkan raster PostGIS di OpenLayers


12

Pertanyaan ini mirip dengan pertanyaan sebelumnya tentang menampilkan data vektor di peta web. Saya ingin memiliki antarmuka web dasar yang menggunakan OpenLayers dan dapat menampilkan data raster yang saat ini ada di PostGIS, menggunakan basemap seperti google. Saya telah menginstal PostGIS2.0 dengan perpustakaan raster dan melihat dari dokumentasi bahwa ada beberapa opsi untuk menampilkan data, seperti JPEG, GeoTIFF dan PNG. Apakah format rekomendasi mereka untuk digunakan?

Untuk menampilkan data vektor, saya saat ini menggunakan javascript untuk mengirim koordinat dari browser pengguna ke server saya, dan kemudian melakukan kueri menggunakan PHP / SQL di PostGIS. Hasilnya kemudian dikembalikan sebagai GeoJSON yang dapat dilapiskan pada basemap. Saya bertanya-tanya apakah pendekatan yang sama dapat diterapkan dengan menggunakan raster tetapi saya tidak tahu format raster apa yang terbaik, atau jika ada kendala lain yang harus saya pertimbangkan.

Saya telah melihat banyak referensi untuk GeoServer tapi saya tidak yakin apakah itu perlu untuk proyek ini (saya tidak sepenuhnya yakin kapan GeoServer harus digunakan atau tidak).

Jawaban:


13

Raster adalah gambar , jadi format terbaik adalah format gambar (png / jpg / dll). Geojson adalah format yang baik untuk vektor . Anda tidak akan pernah melihat, katakanlah, foto profil facebook Anda diangkut kembali sebagai json murni. Tentu saja, mengembalikan url ke gambar sebagai json sangat berbeda :)

Sejauh jpeg vs png vs diskusi format gambar lainnya, ada banyak pendapat berbeda tentang hal itu . Intinya adalah bahwa beberapa format gambar adalah lossless sementara yang lain lossy . Keputusan Anda tergantung pada apa yang akan Anda lakukan dengan data. Untuk analisis Anda mungkin tidak mentolerir kerugian, tetapi untuk menampilkan hal-hal di web Anda akan melakukannya.

Bisakah PostGIS 2.0 menghasilkan gambar? Tentu. Lihatlah bagian output Raster.

Apakah ini ide yang bagus? Itu benar-benar sangat tergantung pada apa yang Anda lakukan. Terkadang menghasilkan gambar mungkin membutuhkan waktu yang sangat sangat lama, dan Anda ingin menyimpannya untuk menghindari membayar harga pembuatannya setiap kali Anda memintanya melalui lingkungan web. Satu-satunya "caching" yang dapat Anda lakukan di sisi PostGIS adalah menyimpan hasil ke tabel yang berbeda dan kemudian meminta tabel itu ketika Anda membutuhkannya. Geoserver memiliki seluruh infrastruktur ( GeoWebCache ) untuk melakukan ini.

Apakah Anda memerlukan GeoServer, mungkin tidak - tetapi itu membuat hidup jauh lebih mudah ketika Anda memiliki middleware ini yang mengekspos semua data Anda menggunakan layanan web OGC , melakukan caching , styling vektor dan raster, banyak hal lainnya .


Saya mengerti cara membuat gambar menggunakan PostGIS - apa yang saya coba pahami adalah cara terbaik memuatnya ke dalam Openlayers. Misalnya, jika saya menggunakan ST_AsPNG () - Saya masih perlu mengidentifikasi koordinat atas dan bawah tempat gambar ini diposisikan. Saya pikir mungkin ada cara yang rapi untuk mengembalikan gambar mandiri yang bisa saya muatkan langsung ke openlayers (selain menggunakan geoserver).
djq

Ya, Anda dapat memuatnya langsung ke openlayers dari st_aspng, tetapi itu akan membutuhkan kerja ekstra. Anda kemudian harus melacak bbox, dan secara spesifik ketika Anda memuatnya dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html Percayalah, ini adalah rute yang panjang. Anda lebih baik membiarkan geoserver atau mapserver melakukan ini. Mereka memberi Anda kembali WMS / WMTS dan Anda menggunakan dua baris kode untuk menambahkannya ke openlayers.
Ragi Yaser Burhum

4

Mapserver memiliki dukungan untuk raster postgis dan petunjuk untuk pengaturan dasar diberikan di sini (item 9.9).

Dalam kasus Anda, Anda akan mengatur Mapserver agar berfungsi sebagai server WMS sehingga mengembalikan raster Postgis sebagai lapisan WMS normal. Maka hampir sepele untuk menambahkan lapisan ke peta OpenLayers Anda dengan menggunakan objek lapisan WMS .

Solusi semacam ini mungkin merupakan pilihan terbaik Anda karena semuanya didasarkan pada perangkat lunak OpenSource, ini adalah tumpukan yang terbukti dan tidak memerlukan middleware yang luas. Semua kebutuhan mapserver adalah server web (apache yang mungkin sudah Anda gunakan untuk php ok) yang dapat menjalankan skrip cgi. Jika kinerja bukan masalah kritis maka Anda dapat menghindari menggunakan cache (ubin) dan hanya meminta mapserver membuat layer dengan cepat setiap saat.

Jika Anda ingin men-cache ubin untuk meminimalkan beban server dan meningkatkan waktu respons, pertimbangkan untuk menggunakan mapcache atau tilecache . Mapcache adalah proyek adik perempuan dari Mapserver, tetapi harus mengungguli semua cache lainnya saat dijalankan sebagai modul apache.

Untuk pengguna Ubuntu, cara termudah yang paling mudah untuk menginstal dependensi Mapserver adalah dengan menambahkan PPA GIS Ubuntu ke sistem Anda.


Mapserver jelas merupakan alternatif yang bagus dari GeoServer (saya menggunakannya untuk beberapa proyek lain). Secara umum, saya memilih geoserver untuk pelanggan saya karena memiliki antarmuka yang mudah digunakan. Namun demikian, saya ingin menunjukkan bahwa melayani cache ubin melayani konten statis, dan solusi apa pun berdasarkan nginx (atau server non-pemblokiran lainnya) akan jauh lebih cepat daripada solusi apache - baik dalam proses berbasis isolasi atau mode berulir.
Ragi Yaser Burhum

Terima kasih @ unicoletti. Bisakah saya menggunakan Mapserver jika saya ingin membuat raster berdasarkan permintaan pengguna? Misalnya, jika saya mengizinkan pengguna untuk menentukan area mana saja (dalam batas tertentu) akankah ini memungkinkan saya membuat kueri spasial area itu?
djq

@celenius Mapserver dan GeoServer akan memungkinkan Anda melakukan itu.
Ragi Yaser Burhum

1
@RagiYaserBurhum Saya membandingkan mapcache dengan cache lainnya. Ubin statis tidak sepenuhnya menyebutkan cache.
unicoletti

0

Semuanya tergantung. Ukuran gambar, caching, perpustakaan yang tersedia (beberapa driver jp2k misalnya).

Berikut ini tautan ke pdf yang mengagumkan , Geoserver tentang steroid. Ini akan menjalankan Anda melalui berbagai format, pro dan kontra mereka dan beberapa pengaturan dasar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.