2024-05-19 00:24:45 发布
网友
是否有任何开源库(最好是python)可以将kml文件转换为图像文件?
我有一个开源的基于web的应用程序,允许用户在Google Earth地图上绘制形状,我想为他们提供一个pdf文件,其中包含他们绘制的形状的地图。
现在,用户可以使用打印屏幕或导出kml,但前者看起来有点蹩脚,后者不会给他们一个图像,除非他们可以使用其他软件。
这是白日梦吗?
参见http://mapnik.org/faq/,它支持OGR格式(KML是其中之一)。Mapnik具有python绑定,并且易于使用。
Cairo渲染器支持PDF和SVG,您只需要正确设置所有内容。
其实这不是一个“转换”的问题;KML可以保存各种各样的东西——多边形、图标、链接、信息等等
但是,KML是XML,所以没有理由不能用expat或etree之类的东西来解析KML文件来提取多边形定义。从那里你可以(例如)在PDF上绘制它们。
我最近对Mapnik做了类似的事情。使用所有可选包installingMapnik之后,此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,您只需要正确设置所有内容。
其实这不是一个“转换”的问题;KML可以保存各种各样的东西——多边形、图标、链接、信息等等
但是,KML是XML,所以没有理由不能用expat或etree之类的东西来解析KML文件来提取多边形定义。从那里你可以(例如)在PDF上绘制它们。
我最近对Mapnik做了类似的事情。使用所有可选包installingMapnik之后,此Python脚本可以将路径从KML文件导出到PDF或位图图形:
相关问题 更多 >
编程相关推荐