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

CLASS LABEL LABEL EXPRESSION LABEL, 一个新的 FORCE GROUP STYLE

向量场

uv

../../_images/uv.png

STYLE POLAROFFSET r theta OFFSET.

标签引线偏移

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

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

LABEL CLASS LEADER

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 使用映射文件下载样例数据

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 更多信息。

  • 稳定孵化

    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 强烈建议将源代码目录中的二进制文件复制到Web服务器的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呈现。

  • 注释层已弃用

    LABEL 水平 STYLE

    备注

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

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

迁徙指南

  • CGI:

  • MapScript :至少遇到了一个与MapScrip不兼容的问题,而不是支持 class 。在6.0及更早版本中, label 是不变的成员 class 对象,并且始终将单个标签分配为 classObj 。在6.2中,默认情况下没有在类对象和您的MapScript代码中分配标签(Python等)。必须创建新的Label对象并将其添加到类对象。中添加了三个新方法。 classObj 在MapScrip中处理此问题: getLabeladdLabelremoveLabel 。现有脚本需要更新,否则将面临静默失败的风险,因为SWIG MapScript(至少在Python中)不会抱怨对类Obj的标签成员的无效访问。

源代码下载

此版本的源可以下载到:

或:

二元分布

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

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

谢谢

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

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

MapServer团队