首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于MapServer的动态OpenLayers

基于MapServer的动态OpenLayers
EN

Stack Overflow用户
提问于 2010-09-01 10:26:08
回答 2查看 2.1K关注 0票数 0

我正在为一个特殊的设置而挣扎:我们在OpenLayers中有一个WMS层(在GeoExt web接口中)调用MapServer字符串(例如http://mydomain/cgi-bin/mapserv.exe?map=someMapFile.map&etcetc)。

现在,我们需要将数据集分成几个层。我们尝试过实例化n个单独的WMS层,这太慢了,所以我们尝试了一个非常简单的解决方案:生成一个只包含所需层的自定义mapFile。此动态映射文件由服务返回:

返回自定义映射文件的路径的http://mydomain/myservice/get?layers=listoflayers,otherparams,etc。这个解决方案非常简单和有效。

因此,现在我们应该更新WMS层,以便动态替换这个映射文件,而不需要重新加载整个页面。

所以我的问题是:

  • 是可能的吗?
  • 可以有一个单独的层列表(而不是OpenLayers提供的默认层列表)并触发事件"changeLayers“吗?是否有此设置的示例?

谢谢您的提示!

木兰

EN

回答 2

Stack Overflow用户

发布于 2010-09-21 15:50:58

您不应该为此需要动态映射文件。GetMap请求有一个参数层。

LAYERS=layer_list:一个或多个映射层的逗号分隔列表。如果存在SLD参数,则为可选。(http://mapserver.org/ogc/wms_server.html)

或者,除了选择层的子集之外,您还在做其他事情吗?

票数 4
EN

Stack Overflow用户

发布于 2016-09-08 19:23:50

在我看来,在您提到的情况下,将WMS映射文件分解成几个层是很好的。即使在某些情况下,数据来自完全相同的来源,但您仍然可以应用一些过滤器在您的WMS中包含多个层。

例如,数据库中存储在表中的地方有100万条路,为了发布公路特性,您可能会为这个数据集有几个层。根据属性或空间关系,层可以按年份、类型或任何您想要的类型进行筛选。当使用层块或层文件中的筛选器通过数据库连接解析字符串以进行查询时,就会发生这种情况。当您生成请求字符串时,图层名称可以是动态的,所以我认为这可能是您要寻找的。

因此,当您只对州际公路感兴趣时,而不是对WMS请求中的所有层使用WMS端点,您只能通过在请求中使用'layer=interstate_road‘来查询州际层。然后,只有州际公路才会返回,而不是穷尽地扫描/渲染整个数据集。

如果你不介意多读一点,MapServer中也有空间的、非空间的过滤器。例如,过滤器编码将在特征级别为您提供空间/非空间查询。它也是动态的,因为过滤器在请求url中,您也可以动态地更改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3617065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档