Funzionalità dei punti che scompaiono in Geoserver utilizzando WMS


10

Ho un file di forma con circa 6.500 punti in tutto il mondo che sto cercando di servire con Geoserver 2.2.1 usando WMS. Apparentemente tutto è andato bene fino a quando non ho implementato una funzione di filtro sulla mia applicazione client che utilizza il volantino. Quando ho aggiunto un CQL_FILTER (filtro di attributo, non spaziale) alla query WMS, ho notato funzioni mancanti durante lo zoom indietro. Quando ho effettuato lo zoom indietro, a volte riapparivano, ma non sempre. Vedi l'immagine qui sotto -

Confronto fianco a fianco

A livello di zoom a sinistra, Atlanta non viene visualizzata. Quando ingrandisco lo è. Tuttavia, a volte nemmeno il punto in Tampa viene visualizzato a livello di zoom a sinistra. Se ingrandisco altri 3 livelli, non verranno visualizzati punti. Non sono sicuro che il problema sia il parametro CQL_FILTER, poiché con 6.500 punti è difficile notare alcuni punti mancanti su scala globale, ma il filtro particolare che sto mostrando qui come esempio filtra fino a solo 3 funzioni, e quando Ne mancano da 1 a 3 a seconda del livello di zoom, particolarmente evidente.

Posso ricreare questo stesso comportamento nell'anteprima del livello del geoserver usando il filtro CQL nelle opzioni avanzate della mappa, quindi sono abbastanza certo che non è la mia applicazione client.

Per quanto riguarda i miei passi per il debug di questo problema, ho provato il file style / sld predefinito di punti per escludere il mio stile di livello. Ho disattivato tutta la memorizzazione nella cache di cui sono a conoscenza. Ho ricontrollato che le mie proiezioni siano corrette: ho creato lo shapefile in ArcGIS 10 usando WGS_1984_Web_Mercator_Auxitime_Sphere come proiezione e il layer è impostato su EPSG: 3857 in geoserver, che ritengo equivalente. Ho anche aggiornato da geoserver 2.2 a 2.2.1 e ho avuto lo stesso problema in entrambi. Ho anche cancellato il file dell'indice spaziale del geoserver (.qix) e l'ho ricreato da quando ho visto problemi simili in Arc con indici spaziali corrotti, ma ovviamente non ha funzionato neanche.

Ecco un'istantanea dall'anteprima del livello del Geoserver con il filtro CQL attivato e ingrandito nella stessa area mostrata sopra. Il cerchio rosso è approssimativamente dove dovrei vedere un altro punto (Atlanta).

Esempio di Openlayers

Ho provato a modificare ogni altra impostazione che mi viene in mente, ma non ho fortuna. Ho anche cercato su e giù i registri del geoserver e abilitato la registrazione dettagliata e non vedo errori / eccezioni. Inoltre non vedo nessuna cattiva richiesta negli strumenti di sviluppo di Chrome.

Se mi mancano informazioni importanti, fornirò ciò che posso, ma questa è un'applicazione interna / non pubblica.


1
Escludendo l'ovvio: hai, per caso, uno stile dipendente dalla scala? (ovvero un punto viene visualizzato solo tra alcune scale)
unicoletti il

1
Puoi verificare che i valori in VENUE_TYPE siano validi / coerenti? I risultati incoerenti che stai vedendo potrebbero essere dovuti alla restituzione di funzionalità in un ordine diverso (a causa di lievi differenze nella bbox) e una di esse è in qualche modo "cattiva", causando l'arresto del rendering prima che colpisca Atlanta. Potrebbe essere saggio testare l'esportazione dei dati in un formato diverso da 1) controllare tutto spostato come previsto e quindi 2) testare nuovamente il filtro / render
tomfumb,

1
@unicoletti Sul layer visualizzato nello screenshot, ci sono dipendenze di scala, ma vedo lo stesso risultato quando uso lo stile 'punto' predefinito fornito da Geoserver, che non ha dipendenze di scala vedo che gli stessi stessi punti scompaiono alle stesse scale .
MWr

1
@tomfumb Ho esaminato i valori nella colonna VENUE_TYPE e sono tutti alfanumerici inglesi ad eccezione di una barra rovesciata occasionale '/' o e commerciale '&'. Prenderò i dischi con le barre e la e commerciale e vedrò se questo fa la differenza. Come nota a margine, il DBF di questo file di forma è codificato in UTF-8 che ho impostato anche nel geoserver. Potrebbe fare la differenza?
MWrenn,

4
@MWrenn Non sono sicuro, quindi non tenterò una risposta, ma l'esportazione dei dati in un altro formato dovrebbe aiutare a determinare se il negozio / formato corrente è il problema. Forse prova ad aprire Shp in ArcMap o QGIS, limitando l'area alla bbox del tuo esempio, quindi ispeziona gli attributi delle funzionalità contenute - questi includono alcuni caratteri speciali che potrebbero essere influenzati dalla codifica?
Tomfumb,

Risposte:


1

La "soluzione" che ho implementato era importare gli shapefile in un database postGIS usando shp2pqsql, che risolveva le caratteristiche del punto di scomparsa quando si utilizzava un filtro CQL. Posso fare esattamente la stessa richiesta di filtro CQL e vedere tutti i punti a tutti i livelli di zoom ora. Ho quindi dovuto modificare alcuni processi automatizzati per aggiornare il database postGIS anziché gli shapefile, ma ci sono volute solo poche ore.

Non sono ancora sicuro della causa principale delle caratteristiche dei punti che scompaiono. Ho provato diverse proiezioni e autori di file di forma (QGis, ESRI, shapefile.py o pyShape o qualcosa del genere) con lo stesso risultato esatto ogni volta. Non sono un esperto di geoserver, quindi sono riluttante a chiamarlo un bug, ed è probabilmente qualcosa di particolare per la mia configurazione, ma sono stato in grado di riprodurre su due diverse istanze in esecuzione su due diversi computer di geoserver che eseguono 2.2 e 2.2. 1, entrambi su Windows (One Xp, su Server 2003).

Neanche io sono in grado di pubblicare gli shapefile di origine, quindi immagino che la causa principale rimarrà un mistero.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.