Mapfile

作者

Steve Lime

接触

steve.lime at dnr.state.mn.us

作者

Jeff McKenna

接触

jmckenna at gatewaygeomatics.com

最后更新

2017-06-16

Mapfile 是 Mapserver 的核心。它定义对象之间的关系,将 Mapserver指向数据所在的位置,并定义如何绘制对象。

Mapfile 由 MAP 对象组成, 此对象由 MAP 开始.

在可靠地使用mapfiles配置mapserver之前,必须了解一些重要的概念。第一个概念是 LAYER .图层是数据加样式的组合。数据以属性和几何图形的形式,使用 CLASSSTYLE 指令。

参见

MapServer简介 “ Mapfile 简介”

笔记

  • Mapfile 不区分大小写。

  • 这个 Mapfile is read from top to bottom by MapServer ;这意味着,将先绘制 Mapfile 顶部附近的图层,再绘制底部附近的图层。因此,用户通常将背景图像和其他背景层类型放在其 Mapfile 顶部附近,并将线条和点放在其 Mapfile 底部附近。

  • 必须引用包含非字母数字字符或mapserver关键字的字符串。建议将所有字符串放在双引号中。

  • Mapfile 应该是UTF-8编码的。非UTF-8编码的 Mapfile 将需要 iconv 转换为UTF-8。

    7.0 新版功能.

  • 对于mapserver版本<5,每个mapfile的默认最大层数为200层( Mapserver大于等于5时没有层限制)。这可以通过编辑 map.h 文件来更改,将ms_maxlayers的值更改为所需的数字并重新编译。以下是使用低于5的MapServer版本时的其他重要默认限制:

    • MAXCLASSES 250 (在 map.h 中设置)

    • MAXSTYLES 5 (在 map.h 中设置)

    • maxsymbols 64位(在mapsymbol.h中设置)

    MapServer版本 >=5 对 分类、样式、符号或图层数目没有限制。

  • 文件路径可以是绝对路径,也可以是相对于 Mapfile 位置的路径。此外,可以相对于shapepath指定数据文件。

  • Mapfile 具有层次结构,映射对象为“根”。所有其他物体都落在这个物体下面。

  • 注释用 # 指定。

  • 属性的命名使用以下语法:[attributename]。

    注解

    属性的名称包含在方括号之间 区分大小写. 通常,ESRI生成的形状数据集的属性(.dbf列名)都是大写的,例如,对于postgis, ALWAYS 使用小写字母。

  • Mapserver 正则表达式通过操作系统的C库使用。有关如何在系统上使用和编写正则表达式的信息,您应该阅读C库提供的文档。在Linux上,这是glibc,您可以阅读“man 7 regex”…大多数Unix上也有此手册页。由于这些regex兼容posix,因此在Windows上也应该是相同的,因此Windows用户可以尝试在Web上搜索“man 7 regex”,手册页在整个Web上都可用。