Merender gambar di OpenLayers?

11

Organisasi saya memiliki aplikasi web untuk menampilkan data iklim global dan regional dan kami sedang mempertimbangkan peningkatannya. Gagasan utama kami adalah membuat aplikasi berbasis OpenLayers untuk menampilkan raster iklim di atas lapisan dasar seperti OSM atau Google Maps. Peta juga dapat mencakup beberapa lapisan vektor khusus aplikasi dan bilah warna atau fitur legenda lainnya yang menjelaskan data. Sedekat yang saya tahu, ini semua bisa dilakukan dengan OpenLayers.

Salah satu persyaratan untuk proyek ini adalah untuk dapat mengekspor ( idealnya dari aplikasi web) kualitas publikasi (lebih atau kurang) peta. Kasus penggunaan tipikal adalah seperti ini:

  1. Seorang pengguna, menggunakan lapisan dasar sebagai panduan, menavigasi ke bidang yang mereka minati
  2. Pengguna memilih parameter iklim (misalnya temp rata-rata untuk tahun 2040-an) atau set parameter
  3. Pengguna menekan tombol "ekspor" dan kemudian mengunduh peta berkualitas baik yang mencakup semua elemen yang dijelaskan dalam paragraf pertama.

Saya belum dapat menemukan apa pun di OpenLayers tentang rendering ke suatu gambar. Adakah yang tahu apakah ini mungkin? Dan jika tidak, apa pendekatan rendering lain yang bisa kita ambil? Saya kira kita perlu melewati semua parameter peta (bbox, proyeksi, termasuk layer, dll.) Ke beberapa mesin rendering eksternal; mesin rendering open source apa yang ada di luar sana?

Hiebert
sumber
Saya telah menerapkan ekspor sebagai png / pdf dan pencetakan peta openlayers di sini di www.mapsdata.co. Anda dapat mendaftar dan memeriksa.
Rayiez

Jawaban:

12

Cara utama untuk menampilkan peta cetak cantik dari openlayers yang saya tahu adalah:

-Geoserver dengan Geoext

-Mapfish dengan Geoext

Kedua solusi bergantung pada bagian java (mis. Http://geoserver.org/display/GEOS/Printing+in+GeoServer atau http://www.mapfish.org/doc/print/ )

-Openlayers standalone (Lihat dokumen resmi http://trac.openlayers.org/wiki/Printing )

Baru-baru ini, sebuah teknik muncul untuk membuat gambar dengan PhantomJS (sebuah peranti lunak yang mensimulasikan peramban dari baris perintah) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Beberapa perpustakaan terbaru menggunakan kemampuan rendering Canvas browser untuk "menangkap" gambar seperti contoh OpenLayers 3 ini atau yang Leaflet ini

ThomasG77
sumber
2

Untuk mendapatkan "kualitas publikasi" yang Anda inginkan 300dpi, jadi menggunakan peta yang Anda lewati untuk membuka layer untuk rendering layar mungkin bukan starter.

Tab ekspor OpenStreetMap menggunakan OpenLayers untuk memilih apa yang ingin Anda ekspor, tetapi kemudian merendernya dengan proses server backend yang terpisah (sebenarnya beberapa pilihan). Ini mungkin pendekatan yang harus Anda ambil. Anda tidak mungkin dapat menggunakan Google Maps untuk ini.

rjmunro
sumber
Yah, "kualitas publikasi" lebih mungkin berarti svg atau format vektor lainnya. Dan ketika saya memasukkannya ke dalam istilah-istilah itu, itu membuat saya berpikir bahwa, ya, kita mungkin akan ingin menggunakan Mapnik atau sesuatu untuk membuat peta dasar dari file planet.osm. Kemudian kita bisa menggunakan beberapa pustaka gambar untuk menindih elemen-elemen lain (raster iklim, elemen legenda, atribut). Anda benar bahwa Gmaps mungkin keluar untuk eksportir (karena berbagai alasan teknis dan non-teknis). Bagaimanapun, terima kasih atas semua tanggapannya.
Hiebert