Saya bekerja dengan Geoserver, melayani US Lower 48 county untuk openlayers (3109 poligon - lebih banyak simpul). Kabupaten dimuat ke dalam database postgis. Saya ingin tahu tentang pengalaman pengembang ketika mencoba untuk mendorong jumlah simpul ke klien.
Dengan format WFS apa Anda mendapatkan hasil terbaik? Apakah penyetelan tambahan untuk Geoserver telah digunakan?
Saya menyadari bahwa ubin WMS akan lebih cepat, tetapi saya ingin mengizinkan perubahan dinamis dalam peta choropleth menggunakan openLayers, yaitu. pengguna mengirimkan formulir, skrip Python dipanggil, dan nampan data baru dikembalikan ke openlayers untuk memuat ulang div peta. Saya juga ingin mencoba ini dalam bentuk resolusi penuh sebelum mengurangi kompleksitas poligon dalam openlayers.
GEOJSON menurut saya, format terbaik, mudah dibaca, mudah digunakan dalam javascript dan umumnya berukuran lebih kecil daripada GML / KML. Bahkan bisa berisi info tentang gaya, lihat di sini .
Ini bukan standar resmi, tetapi didukung pada leaflet dan openlayers dan pada banyak aplikasi gis-desktop seperti qgis.
sumber
Menggunakan GeoJSON adalah awal yang baik untuk mempercepat sistem Anda, tetapi itu mungkin tidak cukup. Anda harus mempertimbangkan untuk membangun beberapa versi lapisan data Anda, satu per lapisan zoom, dan menerapkan metode generalisasi / penyederhanaan untuk setiap versi. Klien harus meminta lapisan yang relevan tergantung pada tingkat zoom yang dipilih. Itu akan memastikan tingkat detail data yang dipertukarkan antara server dan klien sesuai, dan itu akan meningkatkan lebih signifikan baik transfer jaringan dan rendering. Untuk melangkah lebih jauh, Anda dapat memperluas sistem Anda dengan ubin vektor dan pengindeksan spasial seperti yang dijelaskan dalam dokumen ini , tetapi saya tidak yakin openlayers dan geoserver dapat menanganinya ... belum!
Pasti: Lupakan GML.
sumber
Mengapa tidak menggunakan skrip python Anda untuk membuat file SLD baru dan mengirimkannya ke server WMS dengan permintaan Anda.
Ada contoh di sini .
sumber
Saya sudah menyusuri jalan yang sama sudah dua kali dan rendering sisi klien untuk apa pun lebih dari sejumlah kecil poin atau poligon yang sangat sederhana hanya bukan ide yang baik. Begitu Anda mengikat diri Anda dengan arsitektur itu, mahal untuk mundur dan dalam proyek apa pun Anda cenderung melihat perubahan dalam persyaratan atau peningkatan volume data ketika berbagai pemangku kepentingan / penyelia mulai melihat kemampuan sistem Anda. Pendekatan rendering sisi klien berbasis browser tidak berskala.
Jika Anda ingin rendering dinamis, saya pendekatan kedua @ant. Saya sebelumnya menjelaskan sejumlah opsi untuk masalah yang berbeda tetapi terkait di sini . Saya juga menggunakan generalisasi poligon untuk membantu rendering di sisi klien dan, meskipun jelas membantu, itu menghasilkan masalah yang lebih sulit, seperti jika Anda ingin menarik poligon non-umum ketika pengguna Anda memperbesar lebih jauh.
Bahkan jika Anda bekerja dengan platform yang dikenal - misalnya Anda tahu perangkat keras, versi browser, dan plugins dari semua klien - yang tidak mungkin, Anda tidak tahu seperti apa beban klien-klien itu. Pendekatan semacam ini mensyaratkan bahwa browser bisa mendapatkan BANYAK waktu CPU untuk menjaga cairan pengalaman pengguna dan hal lain akan mengganggu pengguna Anda.
sumber