Saya bertanya-tanya apakah ada Python lib open-source GIS yang memiliki API untuk mendukung panggilan WMS / WFS dari server GIS lain (misalnya, GeoServer) dan kemudian menyimpan data respons (WMS Basemap dan lapisan WFS) sebagai gambar.
ada rekomendasi?
terima kasih atas masukan!
PEMBARUAN :
apa yang saya coba lakukan adalah layanan Pencetakan Peta, dengan menggunakan OpenLayers sebagai front-end dan Django sebagai server; Pengguna klien mengatur tingkat dan lapisan dan kemudian mengirim permintaan cetak (yang mengacu pada parameter, yaitu, tingkat peta, nama lapisan) ke server, kemudian server mengambil alih permintaan ini dan memanggil WMS / WFS lagi dengan menggunakan parameter permintaan, menyimpan respons sebagai PDF, ekspor tautan PDF ini ke klien.
Bagian yang sulit adalah bagaimana server memanggil WMS / WFS dan menggabungkan / overlay tanggapan ini bersama-sama (yaitu, menempatkan peta / lapisan ini bersama-sama, karena WMS biasanya peta dasar, WFS menunjuk ke lapisan fitur), akhirnya menyimpan objek gabungan ini sebagai Gambar.
dalam jawaban saat ini, urllib tampaknya bagus, tetapi saya tidak yakin bagaimana menggabungkan tanggapan ini (WMS, WFSs) bersama-sama; OWSLib juga tampaknya pilihan lain yang baik, tetapi ini menunjukkan itu adalah alat pemrograman klien, saya sedikit bingung apakah itu sesuai untuk saya gunakan ...
input lebih lanjut lainnya ???
menghargai!
sumber
Jawaban:
Ada OWSLib yang harus menyediakan apa yang Anda butuhkan.
Dokumentasi dan contoh di sini . Klien dalam konteks ini berarti itu adalah aplikasi klien ke server WMS / WFS - dapat dijalankan di server jika diperlukan.
Setelah Anda menambahkan rincian lebih lanjut ke jawaban Anda, sepertinya aplikasi cetak MapFish cocok dengan kebutuhan Anda. Ini adalah aplikasi Java yang dapat diintegrasikan dengan OpenLayers dan ubin jahitan, WMS, WFS dll bersama-sama dan menghasilkan PDF.
Karena ini adalah aplikasi baris perintah, ia dapat dimanipulasi dengan pembungkus Python. Lihat tautan berikut untuk detail lebih lanjut:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
sumber
Anda dapat menggunakan perpustakaan python urllib untuk memanggil WMS secara langsung dan menulis respons ke file. Ada contoh yang layak menggunakan urllib dalam jawaban ini . Cukup ganti URL dengan satu untuk WMS, mis. Http: //some.wms.service? Request = GetMap & VERSION = 1.1.1 & BBOX = 141.00, -29.00,141.80, -28.40 & SRS = EPSG: 4326 & LAYERS = LANDSAT_MOSAIC & WIDTH = 800 & HEIGHT = 600 & FORM = gambar / png .
Anda juga dapat menggunakan perpustakaan GDAL untuk mengakses WMS ( http://www.gdal.org/frmt_wms.html ) dan perpustakaan OGR untuk mengakses WFS ( http://www.gdal.org/ogr/drv_wfs.html )
Jika Anda ingin membuat gambar WFS, Anda bisa menggunakan fungsi gdal.RasterizeLayer untuk membuat jpg. Ada contoh di sini .
sumber
Ini adalah contoh sederhana. Di sisi server:
Dan di sisi klien menggunakan jquery:
sumber
Anda bisa menggunakan GeoTools untuk mengambil data dari server WMS / WFS dan merender ke objek grafis Java. Kemudian sesuatu seperti iText dapat dikonversi menjadi pdf.
Jika Anda benar-benar harus menggunakan Python, saya berharap Anda bisa menggunakan pembungkus untuk mengatur semuanya.
sumber