我和一位同事最近发布了一个名为Mapoteca的开源项目,该项目是与GDAL / FWTools安装集成的一组Python脚本,允许对目录进行完整的遍历,以查找空间数据并提取范围,几何形状,元素数量,投影和用户将其写入csv文件。我们正在研究描述相关DBF文件的部分,并且我们想生成每个shapefile的缩略图,您知道一种使用Python生成jpeg或png缩略图的方法吗?
我和一位同事最近发布了一个名为Mapoteca的开源项目,该项目是与GDAL / FWTools安装集成的一组Python脚本,允许对目录进行完整的遍历,以查找空间数据并提取范围,几何形状,元素数量,投影和用户将其写入csv文件。我们正在研究描述相关DBF文件的部分,并且我们想生成每个shapefile的缩略图,您知道一种使用Python生成jpeg或png缩略图的方法吗?
Answers:
最简单的方法是使用subprocess.call()调用gdal_rasterize,但我怀疑它没有进行任何内插,因此如果直接从数据生成缩略图大小的图像,它将混淆到难以辨认的程度。因此,您应该生成一个“合理大小” *的临时图像,并使用Python图像库将其缩放至所需大小。
但是我希望最大的问题将是您将样式基于哪个属性?如我所知,Shapefile没有固有的显示信息,因此您将需要找到一种确定使用哪种颜色的方法。gdal_rasterize确实具有执行此操作的能力,但是选择通常基于特定于领域的知识。要拥有通用工具,您将必须具有通用样式方案。
*您也可能需要为此制定一些硬编码规则。也许从理想的像素大小开始(例如,每个像素10m),如果生成的图像太大而无法实际使用,则增加像素大小。
Mapnik和gdal_rasterize是不错的选择。我通常会创建一个样式简单的mapfile,然后使用Mapserver的shp2img可执行文件。关于创建映射文件,有很好的教程。
另一个相关的问题:重复自动映射的平台? 建议使用mapserver。