Come modificare dinamicamente il GRID MININTERVAL di MapServer?

Sep 02 2020

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

CL. Sep 02 2020 at 16:48

Apparentemente, la sintassi del tipo map_object_property ha le stesse restrizioni della sostituzione di runtime . GRID MININTERVAL non è nell'elenco dei parametri supportati .

teknocreator Sep 08 2020 at 23:45

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.