Mapserver空间过滤

Mapserver空间过滤,mapserver,umn-mapserver,Mapserver,Umn Mapserver,有人知道是否有办法在地图文件中设置空间过滤器以用于普通请求,而不仅仅是WMS或WFS?我需要这个空间过滤器是任何类型的多边形,而不仅仅是矩形,因为我们系统上的这些过滤器是动态的:用户可以绘制多边形或从多边形层中选择它们。在这个系统中,用户使用的是没有地图功能的传统桌面应用程序,只请求Mapserver获取图像,所以我必须在Mapserver端进行这些过滤 简单地说,这里有一个例子:用户拥有带有街道名称(标记点)和区域(多边形)等数据的图层。其中一个可能只想看到第二区内的街道,所以我希望Mapse

有人知道是否有办法在地图文件中设置空间过滤器以用于普通请求,而不仅仅是WMS或WFS?我需要这个空间过滤器是任何类型的多边形,而不仅仅是矩形,因为我们系统上的这些过滤器是动态的:用户可以绘制多边形或从多边形层中选择它们。在这个系统中,用户使用的是没有地图功能的传统桌面应用程序,只请求Mapserver获取图像,所以我必须在Mapserver端进行这些过滤

简单地说,这里有一个例子:用户拥有带有街道名称(标记点)和区域(多边形)等数据的图层。其中一个可能只想看到第二区内的街道,所以我希望Mapserver生成隐藏其余街道的图像。当然,在街道层中,没有关于街道位于哪个地区的信息

一些东西可以帮助你问这个问题:

  • 请求是cgi,不是WMS,但如果有帮助的话,我可以更改它
  • 我没有使用Mapscript,也没有使用OpenLayers或uDig之类的客户端
  • 层没有也不会有属性关系
  • 我知道图层部分中的过滤器参数,但它仅用于属性过滤
  • 我读过关于“过滤器编码”(包含在SLD中)的文章,但无法使其工作,而且似乎只适用于WFS
  • 我见过CQL,但Mapserver不直接支持CQL,只能通过SLD
如何在Mapserver中进行图像生成的空间过滤


谢谢

您可以使用WMS请求返回边界框中的功能

BBOX=minx,miny,maxx,maxy:SRS单位中的边界框角点(左下,右上)

请求类似于:


或者,您可以在空间数据库中创建查询(如果您正在使用空间数据库),然后传入要素ID并在其中进行过滤

据我所知,通常有两种方法可以进行空间/非空间查询。 首先是使用过滤器编码,例如在wms调用url中使用参数。e、 g

另一种方法是在请求主体中使用过滤器。假设您能够向服务器发出post请求,您可以在一个筛选器中使用该筛选器进行复杂的空间/非空间查询。有关详细信息,请参阅mapserver筛选器页面。有多个空间过滤操作可用,如包含、相交等

映射文件中的过滤器略有不同,它是数据源的预定义过滤器。当您甚至在客户请求到来之前就有了过滤数据的逻辑时,这种方法就起作用了。(通过搜索OGC筛选器查看更多信息,CQL当前用于GeoServer)

SLD在渲染时也会对数据进行过滤。它也适用于空间和非空间过滤器。但它只反映了getmap操作