Fitur Titik Hilang di Geoserver menggunakan WMS

10

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 -

Perbandingan berdampingan

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).

Contoh Openlayers

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.

MWrenn
sumber
1
Mengesampingkan yang sudah jelas: apakah Anda, secara kebetulan, memiliki gaya yang bergantung pada skala? (Yaitu titik ditampilkan hanya antara skala tertentu)
unicoletti
1
Bisakah Anda memverifikasi bahwa nilai dalam VENUE_TYPE valid / konsisten? Hasil tidak konsisten yang Anda lihat dapat disebabkan oleh fitur yang dikembalikan dalam urutan yang berbeda (karena sedikit perbedaan dalam kotak) dan salah satunya adalah 'buruk' dalam beberapa cara, menyebabkan perenderan berhenti sebelum mencapai Atlanta. Mungkin bijaksana untuk menguji mengekspor data Anda ke format yang berbeda kemudian 1) memeriksa semuanya dipindahkan seperti yang diharapkan dan kemudian 2) menguji ulang filter / render Anda
tomfumb
1
@unicoletti Pada layer yang ditampilkan di tangkapan layar, ada dependensi skala, tapi saya melihat hasil yang sama ketika saya menggunakan gaya 'point' default yang disediakan oleh Geoserver, yang tidak memiliki dependensi skala. Saya melihat titik yang persis sama menghilang pada skala yang sama. .
MWrenn
1
@tomfumb Saya melihat nilai-nilai di kolom VENUE_TYPE dan semuanya adalah alfanumerik bahasa Inggris kecuali untuk garis miring sesekali '/' atau ampersand '&'. Saya akan mengambil catatan dengan garis miring dan ampersand dan melihat apakah itu membuat perbedaan. Sebagai catatan, DBF shapefile ini dikodekan dalam UTF-8 yang saya atur di geoserver juga. Bisakah itu membuat perbedaan?
MWrenn
4
@ McWrenn Saya tidak yakin jadi tidak akan mencoba menjawab, tetapi mengekspor data ke format lain akan membantu menentukan apakah store / format saat ini adalah masalahnya. Mungkin mencoba membuka Shp Anda di ArcMap atau QGIS, membatasi area ke kotak contoh Anda, lalu memeriksa atribut fitur yang terkandung - apakah ini termasuk karakter khusus yang mungkin terpengaruh oleh penyandian?
Tomfumb

Jawaban:

1

"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.

MWrenn
sumber