我有一个带有一些用于 KML 点的图标的网络服务器。
目前,每个 KML 点都将图标和标签引用到网络服务器中图像的位置。因此,在 Google 地球中查看数据时,这些点具有来自网络服务器的自定义图标。
理想情况下,我想导出 KML 数据,以便任何人都可以在 Google 地球中查看它,而无需访问网络服务器。
有没有办法使用 pykml 将图像嵌入到 KML 文件中?
我有一个带有一些用于 KML 点的图标的网络服务器。
目前,每个 KML 点都将图标和标签引用到网络服务器中图像的位置。因此,在 Google 地球中查看数据时,这些点具有来自网络服务器的自定义图标。
理想情况下,我想导出 KML 数据,以便任何人都可以在 Google 地球中查看它,而无需访问网络服务器。
有没有办法使用 pykml 将图像嵌入到 KML 文件中?
如果想要在 KML 文件中共享自定义图像或图标,而无需在可公开访问的 Web 服务器上托管这些图像,则需要将 KML 和图像打包到 KMZ 文件中。
您可以使用包含 KML 和引用图标的pykml(或simplekml )创建独立的 KMZ 文件。
from zipfile import ZipFile
from pykml.factory import KML_ElementMaker as KML
from lxml import etree
kml = KML.Placemark(
KML.name("Hello World!"),
KML.Style(
KML.IconStyle(
KML.scale(1.0),
KML.Icon(
KML.href("marker.png")
)
)
),
KML.Point(
KML.coordinates("-64.5253,18.4607")
)
)
# serialize KML to a string
kml = etree.tostring(kml, pretty_print=True, xml_declaration=True, encoding='UTF-8')
# create a ZipFile object
with ZipFile('IconStyle.kmz', 'w') as zipObj:
zipObj.writestr('doc.kml', kml) # Add doc.kml entry
zipObj.write('marker.png') # Add icon to the zip