使用python进行 mapscript图像生成¶
- 作者
肖恩吉利斯
- 最后更新
2008/07/15
介绍¶
mapscript howto文档旨在用特定主题的用法示例来补充API引用。本文档中的所有示例都是指与MapServer 4.2+一起分发并在MapServer/Tests下找到的 Mapfile 和测试层。
伪码¶
所有示例都将使用与语言无关的API引用一致的伪代码。每行都是一个语句。对于对象属性和方法,我们使用点,'.'运算符。对象的创建和删除将用“new”和“del”关键字表示。除此之外,伪代码看起来很像Python。
图像概述¶
mapserver和mapscript最常用的用法是使用内置的gd格式驱动程序创建地图图像:gd/gif、gd/png、gd/png24和gd/jpeg。这些图像可以保存到磁盘上的文件中,或者直接传输到其他设备。
ImageObj类¶
图像在mapscript中由imageobj类表示。有关类属性和方法的详细信息,请参阅API引用(mapscript.txt)。
从mapobj创建imageobj¶
mapobj类有两个返回imageobj实例的方法:“draw”和“PrepareImage”。第一个返回一个完整的地图图像,就像从mapserv cgi程序中获得的一样
test_map = MapScript.mapObj('tests/test.map')
map_image = test_map.draw()
“PrepareImage”将生成一个大小合适、格式正确的空白图像,没有任何层、符号或标签。
blank_image = test_map.prepareImage()
创建新的ImageObj¶
ImageObj类构造函数创建新实例而不需要映射
format = MapScript.outputFormatObj('GD/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, NULL, 'tests/test.png')
图像输出¶
在磁盘上创建文件¶
使用“保存”方法将图像保存到磁盘。通过访问图像格式的“扩展名”属性,可以在不做任何假设的情况下使用正确的文件扩展名
filename = 'test.' + map_image.format.extension
map_image.save(filename)
如果图像使用基于gdal/gtiff的格式,则可以通过将mapobj作为第二个可选参数添加到“save”来在磁盘上创建geotiff文件。
map_image.save(filename, test_map)
直接输出¶
可以使用“write”方法将图像转储到打开的文件句柄。默认情况下,文件句柄为“stdout”
# Send an image to a web browser
print "Content-type: " + map_image.format.mimetype + "\n\n"
map_image.write()
对于所有的swig mapscript语言,此方法都不是完全正常的。有关详细信息,请参阅API参考(mapscript.txt)。“写入”方法是4.4中的新方法。
图像和符号¶
symbolobj::getimage()方法将返回pixmap符号的imageobj实例
symbol = test_map.symbolset.getSymbolByName('home-png')
image = symbol.getImage()
有一种对称的“setimage”方法将图像加载到符号中,允许动态创建pixmap符号
new_symbol = MapScript.symbolObj('from_image')
new_symbol.type = MapScript.MS_SYMBOL_PIXMAP
new_symbol.setImage(image)
index = test_map.symbolset.appendSymbol(new_symbol)
get/setimage方法在MapServer 4.4中是新的。