9. mappyfile API¶
此页列出顶级 mappyfile API。
9.1. mapfile 读取器和编写器函数¶
这些函数用于打开 Mapfile 并将其写入文件和字符串。
-
mappyfile.
open
(fn, expand_includes=True, include_comments=False, include_position=False, **kwargs)¶ 将提供的文件名中的mapfile加载到python字典中。
- 参数
fn (string) -- Mapfile 或部分 Mapfile 文件的路径
expand_includes (boolean) -- 载入任何
INCLUDE
映射文件中的文件include_comments (boolean) -- 从映射文件中包含或放弃注释字符串- 实验
include_position (boolean) -- 在输出中包括mapfile标记的位置
- 返回
以mappyfile格式表示映射文件的python字典
- 返回类型
dict
示例
要从文件名打开映射文件并将其作为字典对象返回,请执行以下操作:
d = mappyfile.open('mymap.map')
提示
也可以打开部分映射文件,例如包含
LAYER
对象。
-
mappyfile.
load
(fp, expand_includes=True, include_position=False, include_comments=False, **kwargs)¶ 从打开的文件或类似文件的对象加载映射文件。
- 参数
fp (file) -- 一个类似对象的文件-与所有映射文件一样,这应该用“utf-8”编码
expand_includes (boolean) -- 载入任何
INCLUDE
映射文件中的文件include_comments (boolean) -- 从映射文件中包含或放弃注释字符串- 实验
include_position (boolean) -- 在输出中包括mapfile标记的位置
- 返回
以mappyfile格式表示映射文件的python字典
- 返回类型
dict
示例
要从文件中打开映射文件并将其作为字典对象返回,请执行以下操作:
with open('mymap.map') as fp: d = mappyfile.load(fp)
提示
也可以打开部分映射文件,例如包含
LAYER
对象。
-
mappyfile.
loads
(s, expand_includes=True, include_position=False, include_comments=False, **kwargs)¶ 从字符串加载映射文件
- 参数
s (string) -- 映射文件,或部分映射文件,文本
expand_includes (boolean) -- 载入任何
INCLUDE
映射文件中的文件include_comments (boolean) -- 从映射文件中包含或放弃注释字符串- 实验
include_position (boolean) -- 在输出中包括mapfile标记的位置
- 返回
以mappyfile格式表示映射文件的python字典
- 返回类型
dict
示例
要从字符串中打开映射文件并将其作为字典对象返回,请执行以下操作:
s = '''MAP NAME "TEST" END''' d = mappyfile.loads(s) assert d["name"] == "TEST"
mappyfile.
dump
(d, fp, indent=4, spacer=' ', quote='"', newlinechar='\n', end_comment=False)¶将d(mapfile字典)作为格式化流写入fp
- 参数
d (dict) -- 基于mappyfile模式的python字典
fp (file) -- 类似文件的对象
indent (int) -- 在映射文件中缩进结构的
spacer
字符数spacer (string) -- 用于在映射文件中缩进结构的字符。通常是空格或制表符(
\t
)quote (string) -- 要在映射文件中使用的引号字符(双引号或单引号)
newlinechar (string) -- 用于在映射文件中插入换行符的字符
end_comment (bool) -- 在每个结束结束语句处添加一个带有块类型的注释,例如end map
示例
要从字符串中打开映射文件,然后将其转储回打开的文件,使用2个空格作为缩进,使用单引号作为属性:
s = '''MAP NAME "TEST" END''' d = mappyfile.loads(s) with open(fn, "w") as f: mappyfile.dump(d, f, indent=2, quote="'")
mappyfile.
dumps
(d, indent=4, spacer=' ', quote='"', newlinechar='\n', end_comment=False, **kwargs)¶以字符串形式输出映射文件字典
- 参数
d (dict) -- 基于mappyfile模式的python字典
indent (int) -- 在映射文件中缩进结构的
spacer
字符数spacer (string) -- 用于在映射文件中缩进结构的字符。通常是空格或制表符(
\t
)quote (string) -- 要在映射文件中使用的引号字符(双引号或单引号)
newlinechar (string) -- 用于在映射文件中插入换行符的字符
end_comment (bool) -- 在每个结束结束语句处添加一个带有块类型的注释,例如end map
- 返回
作为字符串的映射文件
- 返回类型
string
示例
要从字符串中打开映射文件,然后使用制表符将其作为字符串打印出来,请执行以下操作:
s = '''MAP NAME "TEST" END''' d = mappyfile.loads(s) print(mappyfile.dumps(d, indent=1, spacer="\t"))
mappyfile.
save
(d, output_file, indent=4, spacer=' ', quote='"', newlinechar='\n', end_comment=False, **kwargs)¶将字典写入磁盘上的输出映射文件
- 参数
d (dict) -- 基于mappyfile模式的python字典
output_file (string) -- 输出文件名
indent (int) -- 在映射文件中缩进结构的
spacer
字符数spacer (string) -- 用于在映射文件中缩进结构的字符。通常是空格或制表符(
\t
)quote (string) -- 要在映射文件中使用的引号字符(双引号或单引号)
newlinechar (string) -- 用于在映射文件中插入换行符的字符
end_comment (bool) -- 在每个结束结束语句处添加一个带有块类型的注释,例如end map
- 返回
传递给函数的输出文件
- 返回类型
string
示例
要从字符串中打开映射文件,然后将其保存到文件中,请执行以下操作:
s = '''MAP NAME "TEST" END''' d = mappyfile.loads(s) fn = "C:/Data/mymap.map" mappyfile.save(d, fn)
9.2. 字典帮助程序函数¶
9.2.1. 总结¶
这些函数有助于使用mapfile字典结构,例如按键查找对象。
-
mappyfile.
find
(lst, key, value)¶ 使用键和值在听写列表中查找项
- 参数
list (list) -- 复合字典列表,例如
layers
,classes
key (value) -- 用于搜索列表中每个词典的关键字名称
key -- 要搜索的值
- 返回
具有与值匹配的键的第一个复合字典对象
- 返回类型
dict
示例
在层列表中
NAME
找到LAYER
设置为Layer2
::s = ''' MAP LAYER NAME "Layer1" TYPE POLYGON END LAYER NAME "Layer2" TYPE POLYGON CLASS NAME "Class1" COLOR 0 0 -8 END END END ''' d = mappyfile.loads(s) cmp = mappyfile.find(d["layers"], "name", "Layer2") assert cmp["name"] == "Layer2"
-
mappyfile.
findall
(lst, key, value)¶ 在lst中查找键与值匹配的所有项。例如,全部查找
LAYER
A中的SMAP
在哪里?GROUP
等于VALUE
- 参数
list (list) -- 复合字典列表,例如
layers
,classes
key (value) -- 用于搜索列表中每个词典的关键字名称
key -- 要搜索的值
- 返回
包含匹配的复合字典的python列表
- 返回类型
list
示例
找到所有
LAYER
的GROUP
设置为test
::s = ''' MAP LAYER NAME "Layer1" TYPE POLYGON GROUP "test" END LAYER NAME "Layer2" TYPE POLYGON GROUP "test1" END LAYER NAME "Layer3" TYPE POLYGON GROUP "test2" END LAYER NAME "Layer4" TYPE POLYGON GROUP "test" END END ''' d = mappyfile.loads(s) layers = mappyfile.findall(d["layers"], "group", "test") assert len(layers) == 2
-
mappyfile.
findunique
(lst, key)¶ 查找lst中项目的所有唯一键值。
- 参数
lst (list) -- 复合字典列表,例如
layers
,classes
key (string) -- 用于搜索列表中每个词典的关键字名称
- 返回
列表中唯一键的排序python列表
- 返回类型
list
示例
在
LAYER
中找到CLASS
的所有GROUP
值 ::s = ''' LAYER CLASS GROUP "group1" NAME "Class1" COLOR 0 0 0 END CLASS GROUP "group2" NAME "Class2" COLOR 0 0 0 END CLASS GROUP "group1" NAME "Class3" COLOR 0 0 0 END END ''' d = mappyfile.loads(s) groups = mappyfile.findunique(d["classes"], "group") assert groups == ["group1", "group2"]
-
mappyfile.
findkey
(d, *keys)¶ 根据键列表和/或列表索引从字典中获取值。
- 参数
d (dict) -- Python词典
keys (list) -- 关键字名或列表索引的列表
- 返回
由键指定的路径处的复合字典对象
- 返回类型
dict
示例
要返回映射文件中第一层的第一个类的值,请执行以下操作:
s = ''' MAP LAYER NAME "Layer1" TYPE POLYGON CLASS NAME "Class1" COLOR 0 0 255 END END END ''' d = mappyfile.loads(s) pth = ["layers", 0, "classes", 0] cls1 = mappyfile.findkey(d, *pth) assert cls1["name"] == "Class1"
-
mappyfile.
update
(d1, d2)¶ 使用d2中的属性更新dict d1
注解
允许删除具有特殊
__delete__
任何听写列表的键更新时可以添加新项目- 参数
d1 (dict) -- Python词典
d2 (dict) -- 一个python字典,用于更新d1中具有相同名称的任何键
- 返回
更新后的词典
- 返回类型
dict