3. 漂亮的印刷¶
mappyfile可用于“漂亮打印”或格式化映射文件。这可用于标准化格式不一致的映射文件。例如:
map
/**
Some comments
*/
EXTENT -180 -90 180 90
NAME "MyMap"
WEB
metadata
'wms_enable_request' '*'
'wms_feature_info_mime_type' 'text/html' # this is required to return the content-type for GetFeatureInfo requests
END
END
PROJECTION
"init=epsg:4326"
END
# START OF THE LAYER DEFINITION
LAYER
PROCESSING 'BANDS=1'
PROCESSING 'CONTOUR_ITEM=elevation'
PROCESSING 'CONTOUR_INTERVAL=20'
EXTENT -180 -90 180 90 # set this here as it is not stored in the image
NAME "rgb"
TYPE RASTER
DATA '../data/raster/bluemarble.tif'
TEMPLATE 'raster.template.html'
END
END
可以使用下面的代码将mappyfile转换为格式良好的版本:
import mappyfile
mf = mappyfile.load("./docs/examples/before.map")
mappyfile.write(mf, "./docs/examples/after.map")
结果:
MAP
EXTENT -180 -90 180 90
NAME 'MyMap'
WEB
METADATA
'wms_enable_request' '*'
'wms_feature_info_mime_type' 'text/html'
END
END
PROJECTION
"init=epsg:4326"
END
LAYER
PROCESSING 'BANDS=1'
PROCESSING 'CONTOUR_ITEM=elevation'
PROCESSING 'CONTOUR_INTERVAL=20'
EXTENT -180 -90 180 90
NAME 'rgb'
TYPE RASTER
DATA '../data/raster/bluemarble.tif'
TEMPLATE 'raster.template.html'
END
END
可以使用高级映射文件API应用映射文件的格式-请参见 mapfile-reader-writer-api 或者使用命令行 格式 .
请尝试http://mappyfile.geographika.net/上的在线交互式演示,以测试mappyfile中的各种格式选项。
3.1. 选项¶
映射文件输出的格式可以通过以下几个选项进行配置:
spacer -用于在映射文件中缩进结构的字符。通常是空格或制表符(
\\t
)indent -可用于设置
spacer
在映射文件中缩进结构的字符quote -要在映射文件中使用的引号字符(双引号或单引号)
newlinechar -用于在映射文件中插入换行符的字符
end_comment -在每个结束END语句处添加一个带有块类型的注释,例如 END # MAP
警告
标准化引号时,请注意,在字符串值中找不到为格式化选择的引号。例如大 DATA
SQL块可能包含单引号,这将创建一个无效的映射文件。
3.2. 实例¶
下面的示例从一个字符串加载一个映射文件,然后将其作为字符串转储。单个选项卡用于缩进映射文件的块:
s = '''MAP NAME "TEST" END'''
d = mappyfile.loads(s)
output = mappyfile.dumps(d, indent=1, spacer="\t")
print(output)
此示例将块类型添加到其结束处 END
标签:
s=''map name“test”layer name“layer1”end end''d=mappyfile.loads(s)output=mappyfile.dumps(d,end_comment=true)print(输出)
MAP
NAME "TEST"
LAYER
NAME "Layer1"
END # LAYER
END # MAP
此示例用单引号括住所有属性,并将映射文件直接写入磁盘:
import tempfile
s = '''MAP NAME "TEST" LAYER NAME "Layer1" END END'''
d = mappyfile.loads(s)
output_file = os.path.join(tempfile.mkdtemp(), 'test_mapfile.map')
mappyfile.save(d, output_file)
此示例使用 dump
函数将映射文件写入打开的文件对象:
s = """MAP NAME "TEST" END"""
d = mappyfile.loads(s)
with tempfile.NamedTemporaryFile(mode="w+", delete=False) as fp:
mappyfile.dump(d, fp)