Tengo un archivo de forma con aproximadamente 6.500 puntos en todo el mundo que estoy tratando de servir con Geoserver 2.2.1 usando WMS. Aparentemente, todo estuvo bien hasta que implementé una función de filtrado en mi aplicación cliente que usa un folleto. Cuando agrego un CQL_FILTER (filtro de atributos, no espacial) en la consulta WMS, noté que faltan características cuando se aleja. Cuando volví a acercarme, a veces reaparecían, pero no siempre. Ver la imagen a continuación -
En el nivel de zoom de la izquierda, Atlanta no se muestra. Cuando me acerco, lo es. Sin embargo, a veces ni siquiera el punto en Tampa se muestra en el nivel de zoom a la izquierda. Si alejo 3 niveles más, no se mostrarán puntos. No estoy seguro de que el problema sea el parámetro CQL_FILTER, ya que con 6.500 puntos es difícil notar algunos puntos faltantes a escala global, pero el filtro particular que estoy mostrando aquí como ejemplo filtra solo a 3 características, y cuando Faltan 1 a 3 de ellos dependiendo del nivel de zoom que es particularmente notable.
Puedo recrear este mismo comportamiento en la vista previa de capa de geoserver usando el filtro CQL en las opciones de mapa avanzadas, por lo que estoy bastante seguro de que no es mi aplicación cliente.
En cuanto a mis propios pasos para depurar este problema, probé el estilo de puntos / archivo sld predeterminado para descartar mi propio estilo de capa. He desactivado todo el almacenamiento en caché que conozco. Verifiqué dos veces que mis proyecciones son correctas: creé el archivo de forma en ArcGIS 10 usando WGS_1984_Web_Mercator_Auxiliary_Sphere como la proyección, y la capa está configurada en EPSG: 3857 en geoserver, que creo que es equivalente. También actualicé de geoserver 2.2 a 2.2.1 y he tenido el mismo problema en ambos. También eliminé el archivo de índice espacial de geoserver (.qix) y dejé que se recreara ya que he visto problemas similares en Arc con índices espaciales corruptos, pero obviamente eso tampoco funcionó.
Aquí hay una instantánea de la vista previa de la capa de Geoserver con el filtro CQL activado y ampliado en la misma área que se muestra arriba. El círculo rojo es aproximadamente donde debería estar viendo otro punto (Atlanta).
He intentado ajustar cualquier otra configuración que se me ocurra, pero no tengo suerte. También busqué los registros de geoservidor y habilité el registro detallado, y no veo ningún error / excepción. Tampoco veo ninguna solicitud incorrecta en las herramientas de desarrollador de Chrome.
Si me falta alguna información crítica, proporcionaré lo que pueda, pero esta es una aplicación interna / no pública.
fuente
Respuestas:
La "solución" que implementé fue importar los archivos de forma en una base de datos postGIS usando shp2pqsql, que resolvió las características del punto de desaparición al usar un filtro CQL. Puedo hacer exactamente la misma solicitud de filtro CQL y ver todos los puntos en todos los niveles de zoom ahora. Luego tuve que ajustar algunos procesos automatizados para actualizar la base de datos postGIS en lugar de los archivos de forma, pero solo me llevó unas horas.
Todavía no estoy seguro de la causa raíz de las características del punto de desaparición. Intenté diferentes proyecciones y escritores de archivos de forma (QGis, ESRI, shapefile.py o pyShape o algo así) con el mismo resultado exacto cada vez. No soy un experto en geoservidor, por lo que dudo en llamarlo un error, y probablemente sea algo particular de mi configuración, pero pude reproducir en dos instancias diferentes que se ejecutan en dos computadoras diferentes de geoservidor con 2.2 y 2.2. 1, ambos en Windows (One Xp, en Server 2003).
Tampoco puedo publicar los archivos de forma fuente, así que supongo que la causa raíz seguirá siendo un misterio.
fuente