2015-08-05 5 views
0

У меня есть растровый слой со значениями данных между 1.7 и 34.6 (данные GeoTIFF с одной полосой float32). У меня есть простой стиль (ниже) для рендеринга данных в оттенках серого. Регулируя DATARANGE, я могу фильтровать данные в интересующий диапазон. Есть ли способ, по которому вызывающий может указать DATARANGE в строке запроса?Может ли клиент MapServer установить DATARANGE через QueryString

CLASS 
    STYLE 
    COLORRANGE 0 0 0 255 255 255 
    DATARANGE 25 30 
    END 
END 

Я попытался добавить «& map.layer [0] .class [0] .style [0] = DATARANGE + 20 + 30» в строке запроса, но я получаю ошибку:

loadStyle(): Неизвестный идентификатор. Ошибка анализа (DATARANGE): (строка 1)

ответ

0

Предупреждение: Я не пробовал это сам.

Развернувшись в «Основном примере» в разделе «Замена времени выполнения» http://mapserver.org/cgi/runsub.html#runsub, я предлагаю эту модификацию.

VALIDATION 
    'default_lowlimit' '25' 
    'default_highlimit' '35' 
    'lowlimit' '[0-9]+' 
    'highlimit' '[0-9]+' 
END 
CLASS 
    STYLE 
    COLORRANGE 0 0 0 255 255 255 
    DATARANGE '%lowlimit' '%highlimit' 
    END 
END 

default_ В линии в блоке ВАЛИДАЦИИ присвоит значения по умолчанию. Затем строки без default_ дают регулярные выражения для соответствия входящим значениям. Строка запроса содержит &lowlimit=25&highlimit=30.

Я не в восторге от проверки числовых значений регулярным выражением. И этот образец позволяет с высокой степенью ограниченности быть меньшим. Надеюсь, вам это поможет.