6.2公告

作者

项目指导委员会

发行

2012-11-14

MapServer团队很高兴在经过广泛的测试阶段后宣布期待已久的MapServer6.2.0版本。

在6.0版本引入了MapServer核心架构下关键组件的重要更改之后,这个6.2版本带来了大量在本文中总结的新特性。

MapServer 6.2的主要新功能

MAPServer套件

这是MapServer 6.2、Tinyows 1.1和MapCache 1.0之间的第一个联合版本,也是迈向集成这三个组件的成熟的MapServer“套件”的第一步。在下载链接中可以找到包含所有3个组件的源代码存档。

  • MapServer CGI and MapScript 6.2.0 从一开始就一直是项目核心的MapServer Web映射引擎。

  • WFS-T: TinyOWS 1.1 Tinyows是OGC WFS-T规范的轻量级和快速实现。Web要素服务(WFS)允许查询和检索功能,而事务配置文件(WFS-T)则允许插入、更新或删除这些功能。

    从技术角度来看,WFS-T是一个在空间数据库前面的Web服务API;Tinyows与PostgreSQL/Postgis有着紧密的联系。

  • 平铺:mapcache 1.0

    mapcache是一个高性能的平铺服务器,它以本地代码作为fastcgi、apache模块或nginx模块运行。它支持各种各样的协议(wmts、tms、wms、virtualEarth、kml…)和存储后端(disk、sqlite、memcache、geotiff文件、berkeleybd…)。

激发视图服务

MapServer 6.2是 INSPIRE View 服务 兼容,即支持提供符合Inspire View服务 WMS服务器 .

掩模层

遮罩层用于“遮罩”给定层的一部分,以仅表示与其他层特征相交的数据。这通常可用于陆地地块,仅显示特定所有者/客户地块覆盖区域的基础卫星图像。

两层组合使用以激活此功能。第一层用于渲染将用作遮罩的功能。它通常使用过滤器来渲染选定数量的功能:

layer
   name "countries"
   status off
   class
      expression ("[FIPS]" = "EZ")
      style
         color 0 0 0
      end
   end
end

注意两件事:

  • 图层设置为“状态关闭”,因为我们不希望它在最终地图上呈现。在某些用例中,这可能被设置为状态开启。

  • 我们设置了一个表达式,只呈现代码为“EZ”的国家。在包裹场景中,这通常是包裹列表或包裹所有者的ID。

第二层是将被屏蔽的层:

layer
   status on
   name "naturalearth"
   mask "countries"
   type raster
end

有了这两层,我们的“自然地球”栅格层将仅在与“EZ”国家/地区层相交的像素上渲染。

此蒙版功能可用于处理像素数据的所有渲染器,即不用于PDF或SVG渲染器。在遮罩层包含标签的情况下,只有锚定在遮罩内的标签将被渲染。实际标签文本本身可能会在屏蔽区域之外重叠。

精确的符号放置

传统上,MapServer将标记符号集中在它应该呈现到的点上。anchorPoint是一个新的符号级关键字,用于描述给定符号应锚定在哪里。

SYMBOL
  NAME "foo"
  TYPE TRUETYPE
  ANCHORPOINT 0 0 #will anchor the symbol on it's top-left
  ANCHORPOINT 0.5 0.5 #default, will center the symbol
  ANCHORPOINT 1 1 #will anchor the symbol on it's bottom right
  ...
END
../../_images/anchorpoint.png

复杂多标签/符号符号

一些制图表示需要将多个符号和/或标签并列,以获得复杂的最终符号。通常,在创建观测地图时,气象领域会出现这种需求,从而产生这种符号:

../../_images/multilabel.png

为了在不与相邻符号冲突的情况下呈现此类符号,“mapserver”class`元素现在支持多个“label”子元素,“label”元素支持一个“expression”筛选器,用于确定是否应显示标签。在“label”中,新的“force group”参数确定当前标签是否允许与来自同一功能的其他标签相交,并且可以使用多个“style”块来呈现图形符号而不是文本或文本旁边的图形符号。注意,这个新特性在实践中会大量使用属性绑定来控制符号大小和方向。

向量场

MapServer可以基于gdal支持的包含“u”和“v”条带的栅格格式的数据呈现矢量字段。

../../_images/uv.png

STYLE POLAROFFSET r theta OFFSET.

标签引线偏移

对于标签密集的地图,如果原始位置导致与已经存在的标签发生冲突,MapServer现在支持将标签相对于其原始锚定点进行偏移。还可以渲染可选行,以将渲染的文本链接到其原始特征位置。

../../_images/label-leaders.jpg

为了能够偏移前面定义的复杂符号,“label”引线在其自己的“leader”块的“class”级别上定义:

class
   ...
   leader
      maxdistance 30
      gridstep 5
      style
         color 0 0 0
         width 1
      end
   end
   label
      ...
   end
end

配置设置标签可以从其原始位置偏移的最大距离,以及在碰撞测试时对可能标签位置进行采样的网格密度。可选的“style”块用于将从功能绘制的线条呈现到偏移标签位置。

请注意,计算偏移标签的位置计算量很大,可能会增加渲染时间。要减轻这种影响,您可以将此偏移应用于选定的功能类别,和/或减小引线最大距离,和/或增大引线网格步长。

参见

查看A Labels leader test mapfile 或前往 LEADER object documentation 使用mapfile下载示例数据

SVG符号学

除了传统的椭圆、矢量、像素映射和TrueType符号外,MapServer6.2现在直接支持SVG符号,为具有可扩展和多色复杂标记的新符号用法打开了大门。SVG符号的定义非常经典

SYMBOL
  NAME "my-svg-symbol"
  TYPE SVG
  IMAGE "/path/to/svgfile.svg"
END

多字体支持

没有一个TrueType字体包含世界上所有脚本的所有字形。因此,在渲染全球地图时,需要能够指定从中提取字形的多个字体文件。现在,您可以为标签的字体提供一个以逗号分隔的字体集键列表,供尝试使用,对于要呈现的每个字形,MapServer将依次测试每个字体,直到找到请求的字形。

LABEL
  TYPE TRUETYPE
  FONT "vera,arialuni,cjk,khmer"
  ...
END

MapServer 6.2中的次要新功能

  • WMS维度支持

    除了已经存在的时间支持之外,MapServer的WMS服务器现在还支持提升和尺寸标注。前往 WMS dimension documentation 更多信息。

  • 稳定孵化

    mapserver的“hatch”符号现在将创建跨相邻功能和跨不同切片的连续图案填充。

  • xmp元数据支持

    RFC and documentation

  • 支持命名分组层

    的功能 wms_layer_group 根据需要扩展以支持命名的组层 INSPIRE View 服务 . 如果与中使用的层同名 wms_layer_group 如果未找到具有此名称的层,则将其视为命名组,如果未发现具有此名称的层,则将其视为未命名组。

  • 支持生成地理空间PDF

  • 对线条模式的初始间隙支持

    用于设置线条样式的线条图案现在可以精确地在线条特征的起始处加上括号,从而允许虚线图案的稳定组合。

  • 一般加速和内存使用优化

    • 发送到postgis后端的查询已经过优化,以执行可能在time列上设置的最终索引。

    • PostGIS驱动程序减少了简单功能所需的动态内存分配。

    • LabelCache呈现阶段已加快,并且占用的内存更少。

    • 如果使用的是4.8版或更高版本的proj,那么在输入proj函数之前,mapserver将不再使用线程锁。

可能影响现有应用程序的值得注意的更改

  • Unix生成过程

    • 配置脚本现在接受传统的`--prefix`参数,以确定应该在哪里安装库和可执行文件。

    • 编译成功后,现在**需要**以特权用户身份运行“make install”,以前将“mapserv”二进制文件从源目录复制到webserver的cgi bin目录的方法被大大降低了。相反,从$prefix/bin复制或符号链接安装的二进制文件。

    • libmapserver库现在默认构建为共享库,而不是在mapserv、shp2img或mapscript库中静态链接。

    • 安装多个实例(目前具有不同的功能,或将来具有多个版本)可以/必须通过为每个实例指定不同的`--prefix`条目来完成,例如:

      $ ./configure --without-gd --prefix=/opt/ms-62-nogd
      $ make && sudo make install
      $ ln -s /opt/ms-62-nogd/bin/mapserv /usr/lib/cgi-bin/mapserv
      $ make clean
      $ ./configure --with-gd --prefix=/opt/ms-62-gd
      $ make && sudo make install
      $ ln -s /opt/ms-62-gd/bin/mapserv /usr/lib/cgi-bin/mapserv-62-gd
      
  • php mapscript构建现在通过使用php[=/path/to/php config]配置`--`

  • 现在,通过为非标准的python安装配置“--enable python mapscript”和最终的“--with python=/path/to/bin/python”,可以启用python mapscript构建。

  • gd支持现在是可选的,默认情况下是禁用的

    gd库现在是可选的依赖项,默认情况下不启用。如果`--with gd`未提供给./configure,`gd/*`输出格式将返回到本机agg呈现。

  • 注释层已弃用

    注释层在6.2中已被弃用,在将来的版本中可能会被删除。通过添加“label` level` style”块可以获得相同的功能,并且不需要在两个不同的层中加载数据集两次,就像在注释层中一样。

    注解

    注释层不支持多标签符号和带括号的标签。

  • 已取消对1.5.0之前的GDAL的支持

迁徙指南

  • cgi:除了上面详细介绍的构建过程更改之外,我们没有发现向后兼容性问题。

  • MapScript: class. label class classObj. classObj getLabeladdLabelremoveLabel . 现有的脚本需要更新,否则可能会出现静默失败,因为swig mapscript(至少在python中)不会抱怨对classobj的label成员的访问无效。

源代码下载

此版本的源可以下载到:

或:

二元分布

二进制分布将在未来几天内提供:

  • MS4W 用户将很快能够升级到此MapServer 6.2.0版本:http://ms4w.com

  • Ubuntu 在Ubuntugis不稳定的ppa中,还构建了清晰、精确和定量的二进制文件。有关详细信息和说明,请访问:http://trac.osgeo.org/ubuntugis。/

  • RHEL and CentOS 5.6 TODO

  • OpenSUSE RPM二进制文件可从开放式构建服务(应用程序:geo)获得。 official repository . 还有一个 One-Click Installer .

下载页面中列出的其他二进制发行版也应该很快用新版本的二进制文件进行更新。

谢谢

MapServer团队要感谢 Météo-France 为本版本中的一些新功能提供资金。

最后,感谢所有的用户、开发人员和MapServer的支持者。享受!

MapServer团队