Ошибка запроса Mapserver/PostGIS FILTER

Я новичок в использовании mapsever. Я скачал пример из Интернета (http://www.codegeo.com.br/search/label/MapServer). Я протестировал его на своем ПК, в своей среде разработки (версия картографического сервера 6.4.1), и он работает.

Теперь я поместил его в «тестовую среду» (версия 7.0.0 картсервера), но у меня возникла проблема с директивой FILTER в файле карты.

Это код в файле .map:

DATA "the_geom FROM estados USING UNIQUE id USING SRID=4326"
FILTER "sigla ILIKE '%%state%%'"

Когда я запускаю скрипт, я получаю пустой png-файл, но ошибок нет:

$ mapserv -nh "QUERY_STRING=map=/var/www/codegeo/codegeo.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=states&estado=SP&WIDTH=256&HEIGHT=256&CRS=EPSG%3A900913&STYLES=&BBOX=0%2C0%2C2504688.5428486555%2C2504688.5428486555"

Файл журнала, определенный в файле карты, имеет следующую ошибку:

executing query: select "nome","codigo",encode(ST_AsBinary(ST_Force2D("the_geom"),'NDR'),'hex') as geom,"id" from estados where the_geom && ST_GeomFromText('POLYGON((0.0439453124999988 0.0439453081913454,0.0439453124999988 21.9022779666686,22.4560546875 21.9022779666686,22.4560546875 0.0439453081913454,0.0439453124999988 0.0439453081913454))',4326) and () [Mon Feb 27 11:39:06 2017].147993 msPostGISLayerWhichShapes(): Query error. Error executing query. Check server logs [Mon Feb 27 12:05:49 2017].361015 getSymbol(): Symbol definition error. Parsing error near (():(line 123) [Mon Feb 27 11:39:06 2017].147993 msPostGISLayerWhichShapes(): Query error. Error executing query. Check server logs [Mon Feb 27 12:05:49 2017].361015 getSymbol(): Symbol definition error. Parsing error near (():(line 123)

Я знаю, что что-то не так с инструкцией фильтра. Если я прокомментирую это, я увижу слой на веб-странице. Я не нашел никакой документации об операторе ILIKE.

Кто-нибудь знает в чем проблема?


person Jorge Rodriguez    schedule 27.02.2017    source источник


Ответы (1)


Начиная с Mapserver 7, вы больше не можете использовать «родные фильтры».

Ознакомьтесь с документацией здесь http://mapserver.org/de/mapfile/layer.html (в разделе ФИЛЬТР).

Вам необходимо переписать фильтр, используя синтаксис выражения, описанный здесь http://mapserver.org/de/mapfile/expressions.html#expressions

person fradal83    schedule 27.02.2017