Como alterar dinamicamente o GRID MININTERVAL do MapServer?

Sep 02 2020

Comecei a procurar usar algo semelhante a este exemplo de definição de camada GRID em um arquivo de mapa MapServer que desenhará grade de linha de latitude / longitude pelo menos a cada 5 graus:

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

No entanto, não quero que o valor MININTERVAL seja codificado permanentemente e gostaria de poder variar esse valor inserindo um valor diferente na chamada de URL de uma página da web usando a notação map_object. Mas, eu não tive sucesso. Eu tentei isso na chamada de URL para MapServer:

& map_layer [grade] .grid [0] = MININTERVAL + 10 # mudando para 10 graus em vez de 5

usando o segundo exemplo neste link: https://mapserver.org/cgi/controls.html#cgi-mapfile-change-parameters. Porém, recebo um erro de análise ou um erro do servidor interno. Eu tentei mudar o nível de depuração para 5 e olhar os logs, mas eles não oferecem nenhuma ajuda. Talvez eu não esteja usando a notação map_object correta, mas não tenho certeza do que mais usar, dados os exemplos no link. Eu também tentei olhar o código do MapServer sem sucesso.

Estou usando o MapServer v 7.2.2, mas parece que a camada GRID já está disponível há algum tempo.

Respostas

CL. Sep 02 2020 at 16:48

Aparentemente, a sintaxe de tipo map_object_property tem as mesmas restrições que a substituição de tempo de execução . O GRID MININTERVAL não está na lista de parâmetros suportados .

teknocreator Sep 08 2020 at 23:45

Como @CL havia pensado, confirmei com Steve L no MapServer que de fato "nenhuma das palavras-chave relevantes da grade (GRID, MINTERVAL, LABELFORMAT) são reconhecidas no contexto de URL". A funcionalidade da camada GRID foi desenvolvida para casos de uso comuns. Portanto, no caso de alguém ter uma necessidade semelhante, Steve sugeriu que uma solução alternativa seria ter várias camadas GRID com configurações diferentes, por exemplo, o nome da camada "grade1" teria MININTERVAL 1, "grade5" teria MININTERVAL 5, etc.