Saya memiliki shapefile dengan sekitar 6.500 poin di seluruh dunia di dalamnya yang saya coba layani dengan Geoserver 2.2.1 menggunakan WMS. Semua tampaknya baik-baik saja dengan itu sampai saya menerapkan fitur penyaringan pada aplikasi klien saya yang menggunakan leaflet. Ketika saya menambahkan CQL_FILTER (filter atribut, bukan spasial) ke dalam kueri WMS, saya melihat fitur yang hilang saat diperbesar. Ketika saya memperbesar kembali, mereka kadang-kadang akan muncul kembali, tetapi tidak selalu. Lihat gambar di bawah ini -
Di tingkat pembesaran di sebelah kiri, Atlanta tidak ditampilkan. Ketika saya memperbesar, itu. Namun, terkadang bahkan titik di Tampa tidak ditampilkan di tingkat pembesaran di sebelah kiri. Jika saya memperkecil 3 level lagi, tidak ada poin sama sekali yang akan ditampilkan. Saya tidak yakin masalahnya adalah param CQL_FILTER, karena dengan 6.500 poin sulit untuk melihat beberapa poin yang hilang pada skala global, tetapi filter tertentu yang saya tampilkan di sini sebagai contoh memfilter ke hanya 3 fitur, dan ketika 1 hingga 3 dari mereka hilang tergantung pada tingkat pembesaran yang terlihat jelas.
Saya dapat membuat kembali perilaku yang sama ini di pratinjau lapisan geoserver sendiri menggunakan CQL Filter di opsi peta tingkat lanjut, jadi saya cukup yakin itu bukan aplikasi klien saya.
Adapun langkah-langkah saya sendiri dalam men-debug masalah ini, saya telah mencoba file Points style / sld default untuk mengesampingkan style layer saya sendiri. Saya telah mematikan semua caching yang saya sadari. Saya mengecek ulang bahwa proyeksi saya benar - saya membuat shapefile di ArcGIS 10 menggunakan WGS_1984_Web_Mercator_Auxiliary_Sphere sebagai proyeksi, dan layer diatur ke EPSG: 3857 di geoserver, yang saya pikir setara. Saya juga memutakhirkan dari geoserver 2.2 ke 2.2.1 dan memiliki masalah yang sama di keduanya. Saya juga telah menghapus file indeks spasial geoserver (.qix) dan membiarkannya diciptakan kembali karena saya telah melihat masalah serupa di Arc dengan indeks spasial yang korup, tapi jelas itu tidak berhasil juga.
Berikut ini cuplikan dari pratinjau layer Geoserver sendiri dengan Filter CQL aktif dan diperbesar ke area yang sama seperti yang ditunjukkan di atas. Lingkaran merah kira-kira di mana saya harus melihat titik lain (Atlanta).
Saya sudah mencoba mengutak-atik setiap pengaturan lain yang dapat saya pikirkan, tetapi saya tidak beruntung. Saya juga melihat ke atas dan ke bawah log geoserver dan mengaktifkan logging verbose, dan tidak melihat kesalahan / pengecualian. Saya juga tidak melihat permintaan buruk di alat pengembang chrome.
Jika saya kehilangan info penting, saya akan memberikan apa yang saya bisa, tetapi ini adalah aplikasi internal / non-publik.
sumber
Jawaban:
"Solusi" yang saya terapkan adalah mengimpor shapefile ke dalam database postGIS menggunakan shp2pqsql, yang menyelesaikan fitur titik menghilang ketika menggunakan Filter CQL. Saya dapat membuat permintaan filter CQL yang sama persis dan melihat semua titik di semua tingkat zoom sekarang. Saya kemudian harus men-tweak beberapa proses otomatis untuk memperbarui database postGIS alih-alih shapefile, tetapi hanya butuh beberapa jam.
Saya masih tidak yakin tentang penyebab utama fitur titik hilang. Saya mencoba berbagai proyeksi dan penulis shapefile (QGis, ESRI, shapefile.py atau pyShape atau sesuatu) dengan hasil yang persis sama setiap kali. Saya bukan ahli geoserver, jadi saya ragu untuk menyebutnya bug, dan itu mungkin sesuatu yang khusus untuk pengaturan saya, tetapi saya dapat mereproduksi pada dua instance berbeda yang berjalan pada dua komputer geoserver berbeda yang menjalankan 2.2 dan 2.2. 1, keduanya pada Windows (One Xp, pada Server 2003).
Saya juga tidak dapat memposting shapefile sumber, jadi saya kira akar penyebabnya akan tetap menjadi misteri.
sumber