是否有任何开源库(最好是 python)可以将 kml 文件转换为图像文件?
我有一个基于 Web 的开源应用程序,允许用户在 Google 地球地图上绘制形状,我想为他们提供一个 pdf,其中包含他们绘制的形状的地图。
现在,向用户提供了使用 Print Screen 或导出 kml 的说明,但前者似乎有点蹩脚,后者不会给他们图像,除非他们可以访问其他软件。
这是白日梦吗?
是否有任何开源库(最好是 python)可以将 kml 文件转换为图像文件?
我有一个基于 Web 的开源应用程序,允许用户在 Google 地球地图上绘制形状,我想为他们提供一个 pdf,其中包含他们绘制的形状的地图。
现在,向用户提供了使用 Print Screen 或导出 kml 的说明,但前者似乎有点蹩脚,后者不会给他们图像,除非他们可以访问其他软件。
这是白日梦吗?
我最近用Mapnik做了类似的事情。在使用所有可选包安装 Mapnik 后,此 Python 脚本可以将路径从 KML 文件导出到 PDF 或位图图形:
#!/usr/bin/env python
import mapnik
import cairo
m = mapnik.Map(15000, 15000, "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs") # end result: OpenStreetMap projection
m.background = mapnik.Color(0, 0, 0, 0)
bbox = mapnik.Envelope(-10000000, 2000000, -4000000, -19000000) # must be adjusted
m.zoom_to_box(bbox)
s = mapnik.Style()
r = mapnik.Rule()
polygonSymbolizer = mapnik.PolygonSymbolizer()
polygonSymbolizer.fill_opacity = 0.0
r.symbols.append(polygonSymbolizer)
lineSymbolizer = mapnik.LineSymbolizer(mapnik.Color('red'), 1.0)
r.symbols.append(lineSymbolizer)
s.rules.append(r)
m.append_style('My Style',s)
lyr = mapnik.Layer('path', '+init=epsg:4326')
lyr.datasource = mapnik.Ogr(file = './path.kml', layer = 'path')
lyr.styles.append('My Style')
m.layers.append(lyr)
# mapnik.render_to_file(m,'./path.png', 'png')
file = open('./path.pdf', 'wb')
surface = cairo.PDFSurface(file.name, m.width, m.height)
mapnik.render(m, surface)
surface.finish()
请参阅http://mapnik.org/faq/,它支持 OGR 格式(KML 就是其中之一)。Mapnik 具有 python 绑定并且易于使用。
Cairo 渲染器支持 PDF 和 SVG,您只需正确设置所有内容。
您可以想象使用 Matplotlib 及其工具包 Basemap 在地图上绘制图像(如果您可以检索用户想要的背景地图图像......)。
查看这篇文章“使用 HTML5、JavaScript 和 Canvas 进行交互式映射”。它是关于使用 HTML5 画布元素呈现 KML。
希望能帮助到你。
http://indiemaps.com/blog/2010/06/interactive-mapping-with-html5-javascript-and-canvas/