Mapserver / PostGIS FILTER查询错误

时间:2017-02-27 12:50:06

标签: postgis mapserver

我是使用mapsever的新手。我从Internet(http://www.codegeo.com.br/search/label/MapServer)下载了一个示例。我在我的PC,我的开发环境(mapserver版本6.4.1)中测试了它,并且它可以工作。

现在我把它放在“测试环境”(mapserver版本7.0.0)中,但我在mapfile中遇到了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"

定义到mapfile文件中的日志文件有以下错误:

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运算符的文档。

有人知道哪个是问题?

1 个答案:

答案 0 :(得分:2)

从Mapserver 7,您无法使用"原生过滤器"了。

点击此处查看文档 http://mapserver.org/de/mapfile/layer.html(在FILTER下)。

您需要使用此处记录的表达式语法http://mapserver.org/de/mapfile/expressions.html#expressions

重写过滤器