MapScript图像生成¶
- 作者
肖恩吉利斯
- 作者
赛斯·吉文
- 联系
Sethg在gegraph ika.co.uk网站上
- 最后更新
2021-05-22
介绍¶
MapScrip HOWTO文档旨在通过特定主题的用法示例来补充API参考。本文档中的所有示例都是指与MapServer一起分发并位于以下源代码管理中的Mapfile和Testing Layers Mapserver/tests
。
下面的示例是用Python语言编写的。所有MapScrip语言都使用相同的API,但需要使用相关语言的语法重写。
图像概述¶
MapServer和MapScript最常见的用法是使用内置格式驱动程序创建地图影像,例如 AGG/PNG
, AGG/JPEG
,以及 CAIRO/PNG
。该图像可以保存到磁盘上的文件中,也可以直接流到另一台设备上。
ImageObj类¶
图像在MapScrip中由 imageObj
班级。
从mapobj创建imageobj¶
这个 mapObj
类有两个方法,它们返回 imageObj
: mapObj.draw()
,以及 mapObj.prepareImage()
。第一个函数返回一个完整的地图图像,就像从mapserv CGI程序中获得的一样:
test_map = mapscript.mapObj('tests/test.map')
map_image = test_map.draw()
将生成大小适当且格式化的空白图像,不包含任何图层、符号或标签 mapObj.prepareImage()
:
blank_image = test_map.prepareImage()
创建新的ImageObj¶
ImageObj类构造函数无需映射即可创建新实例:
format = mapscript.outputFormatObj('AGG/JPEG')
image = mapscript.imageObj(300, 200, format) # 300 wide, 200 high JPEG
甚至可以从磁盘上的文件进行初始化:
# First three args are overridden by attributes of the disk image file
disk_image = mapscript.imageObj(-1, -1, None, 'tests/test.png')
图像输出¶
在磁盘上创建文件¶
使用“保存”方法将图像保存到磁盘。通过访问图像格式的“扩展名”属性,可以在不做任何假设的情况下使用正确的文件扩展名。
filename = 'test.' + map_image.format.extension
map_image.save(filename)
如果图像使用基于gdal/gtiff的格式,则可以通过将mapobj作为第二个可选参数添加到“save”来在磁盘上创建geotiff文件。
map_image.save(filename, test_map)
直接输出¶
方法可以将图像转储到打开的文件句柄 mapObj.write()
方法。默认情况下,文件句柄为‘stdout’:
# Send an image to a web browser
print("Content-type: " + map_image.format.mimetype + "\n\n")
map_image.write()
此方法并不完全适用于所有SWIG MapScrip语言。请参阅 SWIG API 有关详细信息,请参阅。
图像和符号¶
这个 symbolObj.getImage()
方法将返回 imageObj
:对于像素图符号:
symbol = test_map.symbolset.getSymbolByName('home-png')
input_format = mapscript.outputFormatObj('AGG/PNG')
image = symbol.getImage(input_format)
有一个对称的 symbolObj.setImage()
将图像加载到元件中的方法,允许动态创建像素图元件:
new_symbol = mapscript.symbolObj('from_image')
new_symbol.type = mapscript.MS_SYMBOL_PIXMAP
new_symbol.setImage(image)
index = test_map.symbolset.appendSymbol(new_symbol)
test_map.symbolset.save('tests/output_symbols.txt')