有人知道是否有一种方法可以在地图文件中设置一个空间过滤器,用于正常的请求,而不仅仅是WMS或WFS?我需要这个空间过滤器是任何类型的多边形,而不仅仅是矩形,因为我们系统上的这些过滤器是动态的:允许用户绘制多边形或从多边形层中选择它们。在这个系统中,用户使用没有地图功能的遗留桌面应用程序,只请求Mapserver提供图像,所以我必须在Mapserver端进行这些过滤
简单地说,这里有一个例子:用户有数据层,比如街道名称(标记点)和区域(多边形)。其中一个可能只想看到那些位于第二区的街道,所以我希望Mapserver生成隐藏其余街道的图像。当然,在街道层中没有关于街道所在区域的信息。
有些事情可以帮助你问这个问题:
H 19,我读过关于“筛选编码”(包括在SLD中),但无法使它工作,而且似乎只适用于WFSH 210H 111,我已经看到了CQL,但是它在Mapserver中没有直接支持,只有通过SLDH 212>
如何在Mapserver中进行空间滤波以生成图像?
谢谢
发布于 2016-09-08 18:54:10
据我所知,通常有两种方法来执行空间/非空间查询。首先是使用过滤器编码,例如在wms调用url中使用参数。例如http://.../mapserv?map=..¶m=value
另一种方法是在请求体中使用过滤器。假设您能够向服务器发出post请求,则可以在一个过滤器中对复杂的空间/非空间查询使用筛选器。有关详细信息,请参阅mapserver筛选器页面。有多个空间过滤器操作,如包含,相交等可用。
映射文件中的过滤器有点不同,它是数据源的预定义过滤器。当您在客户请求传入之前就有了过滤数据的逻辑时,这是可行的。(请参阅通过搜索OGC筛选器获得的更多信息,CQL目前用于GeoServer )
SLD在渲染时也会对数据进行过滤。它也适用于空间和非空间滤波器。但它只反映getmap操作。
发布于 2010-01-07 22:50:49
您可以使用WMS请求在边界框中返回功能。
请参阅http://mapserver.org/ogc/wms_server.html
BBOX=minx,miny,maxx,maxy: SRS单位中的包围框角(左下角,右上角)
一项请求将类似于:
http://my.host.com/cgi-bin/mapserv?map=mywms.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=prov_bound&STYLES=&SRS=EPSG:4326&BBOX=-173.537,35.8775,-11.9603,83.8009&WIDTH=400&HEIGHT=300&FORMAT=image/png
或者,您可以在空间数据库中创建查询(如果使用的话),并在其中传递功能Ids和筛选器。
https://stackoverflow.com/questions/1327480
复制相似问题