Ich habe ein Shapefile mit ungefähr 6.500 Punkten weltweit, das ich mit Geoserver 2.2.1 mithilfe von WMS bereitstellen möchte. Alles war anscheinend in Ordnung, bis ich eine Filterfunktion in meiner Client-Anwendung implementiert habe, die eine Broschüre verwendet. Beim Anhängen eines CQL_FILTER (Attributfilter, nicht räumlich) an die WMS-Abfrage habe ich beim Verkleinern fehlende Funktionen festgestellt. Wenn ich zurückzoomte, tauchten sie manchmal wieder auf, aber nicht immer. Siehe das Bild unten -
In der Zoomstufe links wird Atlanta nicht angezeigt. Wenn ich hineinzoome, ist es. Manchmal wird jedoch nicht einmal der Punkt in Tampa in der Zoomstufe links angezeigt. Wenn ich 3 weitere Ebenen verkleinere, werden überhaupt keine Punkte angezeigt. Ich bin mir nicht sicher, ob das Problem der Parameter CQL_FILTER ist, da es bei 6.500 Punkten schwierig ist, einige fehlende Punkte auf globaler Ebene zu bemerken, aber der spezielle Filter, den ich hier als Beispiel zeige, filtert auf nur 3 Features herunter und wann 1 bis 3 von ihnen fehlen je nach Zoomstufe, was besonders auffällt.
Ich kann dasselbe Verhalten in der Geoserver-eigenen Layer-Vorschau mithilfe des CQL-Filters in den erweiterten Kartenoptionen wiederherstellen, daher bin ich mir ziemlich sicher, dass es nicht meine Client-Anwendung ist.
Für meine eigenen Schritte beim Debuggen dieses Problems habe ich versucht, die Standarddatei "Points style / sld" zu verwenden, um mein eigenes Layer-Styling auszuschließen. Ich habe das gesamte mir bekannte Caching deaktiviert. Ich habe zweimal überprüft, ob meine Projektionen korrekt sind. Ich habe das Shapefile in ArcGIS 10 mit WGS_1984_Web_Mercator_Auxiliary_Sphere als Projektion erstellt und die Ebene in Geoserver auf EPSG: 3857 festgelegt, was meiner Meinung nach äquivalent ist. Ich habe auch ein Upgrade von Geoserver 2.2 auf 2.2.1 durchgeführt und hatte in beiden Fällen das gleiche Problem. Ich habe auch die räumliche Indexdatei des Geoservers (.qix) gelöscht und neu erstellen lassen, da ich in Arc ähnliche Probleme mit beschädigten räumlichen Indizes gesehen habe, aber das hat offensichtlich auch nicht funktioniert.
Hier ist ein Schnappschuss aus der Geoserver-eigenen Ebenenvorschau mit aktiviertem CQL-Filter, der in denselben Bereich wie oben gezeigt gezoomt wurde. Der rote Kreis ist ungefähr dort, wo ich einen anderen Punkt sehen sollte (Atlanta).
Ich habe versucht, jede andere Einstellung zu optimieren, die mir einfällt, habe aber kein Glück. Ich habe auch die Geoserver-Protokolle nach oben und unten durchgesehen und die ausführliche Protokollierung aktiviert und sehe keine Fehler / Ausnahmen. Ich sehe auch keine schlechten Anfragen in den Entwicklertools von Chrome.
Wenn mir wichtige Informationen fehlen, gebe ich an, was ich kann, aber dies ist eine interne / nicht öffentliche Anwendung.
quelle
Antworten:
Die "Lösung", die ich implementiert habe, bestand darin, die Shapefiles mit shp2pqsql in eine PostGIS-Datenbank zu importieren, wodurch die Funktionen zum Verschwinden von Punkten bei Verwendung eines CQL-Filters behoben wurden. Ich kann jetzt genau dieselbe CQL-Filteranforderung stellen und jetzt alle Punkte in allen Zoomstufen anzeigen. Ich musste dann einige automatisierte Prozesse optimieren, um die PostGIS-Datenbank anstelle von Shapefiles zu aktualisieren, aber es dauerte nur einige Stunden.
Ich bin mir immer noch nicht sicher, warum Grundpunkte verschwinden. Ich habe verschiedene Projektionen und Shapefile-Writer (QGis, ESRI, Shapefile.py oder pyShape oder so) jedes Mal mit genau demselben Ergebnis ausprobiert. Ich bin kein Experte für Geoserver, daher zögere ich, es als Fehler zu bezeichnen, und es ist wahrscheinlich etwas Besonderes für mein Setup, aber ich konnte auf zwei verschiedenen Instanzen reproduzieren, die auf zwei verschiedenen Computern von Geoserver mit 2.2 und 2.2 ausgeführt werden. 1, beide unter Windows (One XP, unter Server 2003).
Ich bin auch nicht in der Lage, die Quell-Shapefiles zu veröffentlichen, daher denke ich, dass die Grundursache ein Rätsel bleiben wird.
quelle