1. 句法分析¶
请注意,本页目前为草稿,有待进一步更新。
映射文件使用 lark 作为解析引擎。
1.1. 关键词¶
Mapserver使用的所有令牌都列在以下文件中:https://github.com/mapserver/mapserver/blob/master/maplexer.l
在https://github.com/mapserver/docs/blob/master/conf.py上还有一个用于代码格式化的sphinx regexlexer(请参见文件底部)
1.2. MapFiles¶
有关映射文件结构的详细信息,请访问:http://mapserver.org/mapfile/notes
映射文件不区分大小写
必须引用包含非字母数字字符或mapserver关键字的字符串。建议将所有字符串放在双引号中。
Mapfile有一个层次结构,其中map对象是根,所有其他对象都属于这个层次结构。
注释用 # 指定。
最近添加了C样式的注释:https://github.com/mapserver/mapserver/pull/5362-两条单行(例如
/* foo */
)和多行注释也可以。
1.3. 等级制度¶
下面显示了所有主要mapfile组件的摘要。这些是 TYPE..END
形式上的指令.

这个 LAYER
类型因其更复杂的性质而被拆分为自己的关系图:

其他层次结构和关系可以在http://www.mapserver.org/mapscript/mapscript.html mapscript classes页面上看到。
1.4. Mapfile 注释¶
本节详细介绍在映射文件中找到的各种类型的声明。
引用字符串。用于引用的属性值,例如.
NAME "Layer1" DATA "lakes.shp"
非引用列表。例如,点块可以定义如下:
POINTS 0 100 100 200 40 90 END
引用列表。用于应引用的属性列表。例如,投影块的定义如下:
PROJECTION 'proj=utm' 'ellps=GRS80' 'datum=NAD83' 'zone=15' 'units=m' 'north' 'no_defs' END
键值列表。
PROCESSING "BANDS=1" PROCESSING "CONTOUR_ITEM=elevation" PROCESSING "CONTOUR_INTERVAL=20"
键双值列表。如上所述,但每个指令有两个字符串。
CONFIG MS_ERRORFILE "stderr" CONFIG "PROJ_DEBUG" "OFF" CONFIG "ON_MISSING_DATA" "IGNORE"
复合类型-以关键字end结尾的容器声明。实例:
MAP ... END LAYER ... END CLASS ... END STYLE ... END
1.5. 包括文件¶
解析器允许加载和解析映射文件中引用的文件(包含更多的映射文件声明)。注 INCLUDE
可在http://mapserver.org/mapfile/include.html上找到指令:
包含可以嵌套,最多5个深度。
文件位置可以指定为文件的完整路径,也可以指定为相对于映射文件的路径
如果将字符串提供给
parse
方法,然后是可选的root_folder
参数可用于处理相对路径
MAP
NAME "include_mapfile"
EXTENT 0 0 500 500
SIZE 250 250
INCLUDE "test_include_symbols.map"
INCLUDE "C:\Includes\test_include_layer.map"
END