任何人都知道是否有办法在mapfile中设置空间过滤器以用于普通请求,而不仅仅是WMS或WFS?我需要这个空间滤镜是任何类型的多边形,而不仅仅是矩形,因为我们系统上的这些滤镜是动态的:允许用户绘制多边形或从多边形层中选择它们。这是一个系统,用户使用没有地图功能的旧桌面应用程序,只请求Mapserver获取图像,所以我必须在Mapserver端进行这些过滤
简而言之,这是一个例子:用户拥有包含街道名称(标记点)和区域(多边形)等数据的图层。其中一个人可能只想看到第二区内的那些街道,所以我希望Mapserver生成隐藏其他街道的图像。当然,在街道层,没有关于哪个区位于街道的信息
有些事情可以帮助你提出这个问题:
如何在Mapserver中进行图像生成的空间过滤?
由于
答案 0 :(得分:1)
据我所知,通常有两种方法可以进行空间/非空间查询。 首先使用过滤器编码,例如在wms调用url中使用参数。例如http://.../mapserv?map=..¶m=value
另一种方法是在请求正文中使用过滤器。假设您能够向服务器发出请求,您可以在一个过滤器中使用过滤器进行复杂的空间/非空间查询。有关更多详细信息,请参阅mapserver过滤器页面。有多个空间过滤操作,如包含,交叉等可用。
映射文件中的过滤器略有不同,它是数据源的预定义过滤器。当您有逻辑来过滤数据时,即使在客户请求进入之前,这也是有效的。(通过搜索OGC过滤器查看更多信息,CQL目前用于GeoServer)
SLD在渲染时工作,也可以过滤数据。它也适用于空间和非空间滤波器。但它只反映了getmap操作。
答案 1 :(得分:0)
您可以使用WMS请求返回边界框内的要素。
请参阅http://mapserver.org/ogc/wms_server.html
BBOX = minx,miny,maxx,maxy:SRS单位的边界框角(左下角,右上角)
请求类似于:
或者,您可以在空间数据库中创建查询(如果您使用的是),并传入要素ID并在那里进行过滤。