Di più

Geoserver SLD: Sostituzione variabile dinamica

Geoserver SLD: Sostituzione variabile dinamica


Sto affrontando un problema con Geoserver e il suo meccanismo di stile che non sono sicuro se sia possibile risolverlo o meno. Ma prima, un rapido contesto...

Contesto

Vogliamo usare Geoserver e OpenLayers per visualizzare una mappa nella nostra applicazione. In questa app, saremo in grado di scegliere uno stato brasiliano da un campo selezionato per vedere ogni città di questo stato. Inoltre, considera che ogni città sarà riempita con un colore specifico.

I colori verranno inviati tramite una richiesta WMS anziché calcolati o definiti all'interno dell'SLD, ad esempio utilizzando i dati del nostro set di dati del livello. Questo è il problema... Un'altra cosa da tenere in considerazione è che alcuni stati in Brasile hanno più di 400 città.

Risolvere il problema?

Il primo approccio che abbiamo provato consiste nel creare uno specifico Regola per ogni città. Tuttavia si è rivelato irrealizzabile perché abbiamo più di 300 città da visualizzare in alcuni stati. Immagina quanto sarebbe grande questo file SLD!

Il secondo approccio a cui abbiamo pensato è stato quello di ottenere dinamicamente ogni colore dalla QueryString. Ad esempio, quando si visualizza la città denominata "Salvador", deve cercare il parametro QueryString color-salvador. Ma non sappiamo come farlo. In realtà, sembra impossibile. Ho ragione?

Dai un'occhiata al SLD qui sotto.

 Regola della città Città    #  salvadoregno 234545

Quello che vorremmo fare è invece di definire il letterale salvadoregno, dentro il env funzione, vorremmo usare una proprietà come nome della città che proviene dal nostro set di dati di livello. Qualcosa come questo…

 Regola della città Città    #  nome della città-colore  234545

Invece di

 nome della città-colore 

Devi usare la funzione Concatena

 nome della città -colore

Guarda il video: GeoServer. Styling. SLD CSS.