Come modificare dinamicamente il GRID MININTERVAL di MapServer?
Ho iniziato a cercare di utilizzare qualcosa di simile a questo esempio della definizione del livello GRID in un mapfile MapServer che disegnerà una griglia lat/lon almeno ogni 5 gradi:
LAYER
NAME "grid"
METADATA
"DESCRIPTION" "Grid"
END
TYPE LINE
STATUS ON
CLASS
NAME "Graticule"
COLOR 0 0 0
LABEL
COLOR 255 0 0
FONT "sans"
TYPE truetype
SIZE 8
POSITION AUTO
PARTIALS FALSE
BUFFER 2
OUTLINECOLOR 255 255 255
END
END
PROJECTION
"init=epsg:4326"
END
GRID
LABELFORMAT '%g°'
MININTERVAL 5
END
END # Layer
Tuttavia, non voglio che il valore MININTERVAL sia hardcoded e vorrei poter variare quel valore inserendo un valore diverso nella chiamata URL da una pagina Web utilizzando la notazione map_object. Ma non ho avuto successo. Ho provato questo nella chiamata URL a MapServer:
&map_layer[grid].grid[0]=MININTERVAL+10 #cambiare a 10 gradi invece di 5
utilizzando il secondo esempio a questo link:https://mapserver.org/cgi/controls.html#cgi-mapfile-change-parameters. Ma ricevo un errore di analisi o un errore del server interno. Ho provato a portare il livello di debug a 5 e guardare i log ma non offrono alcun aiuto. Forse non sto usando la corretta notazione map_object, ma non sono sicuro di cos'altro usare dati gli esempi nel collegamento. Ho anche provato a guardare il codice MapServer senza alcun risultato.
Sto usando MapServer v 7.2.2 ma sembra che il livello GRID sia disponibile da un po' di tempo.
Risposte
Apparentemente, la sintassi del tipo map_object_property ha le stesse restrizioni della sostituzione di runtime . GRID MININTERVAL non è nell'elenco dei parametri supportati .
Come aveva pensato @CL, ho confermato con Steve L su MapServer che in effetti "nessuna delle parole chiave della griglia rilevanti (GRID, MINTERVAL, LABELFORMAT) viene riconosciuta quando si trova nel contesto dell'URL". La funzionalità del livello GRID è stata orientata verso casi d'uso comuni. Pertanto, nel caso in cui qualcun altro avesse un'esigenza simile, Steve ha suggerito che una soluzione sarebbe quella di avere più livelli GRID con impostazioni diverse, ad esempio il nome del livello "grid1" avrebbe MININTERVAL 1, "grid5" avrebbe MININTERVAL 5, ecc.