1

我有一个带有一些用于 KML 点的图标的网络服务器。

目前,每个 KML 点都将图标和标签引用到网络服务器中图像的位置。因此,在 Google 地球中查看数据时,这些点具有来自网络服务器的自定义图标。

理想情况下,我想导出 KML 数据,以便任何人都可以在 Google 地球中查看它,而无需访问网络服务器。

有没有办法使用 pykml 将图像嵌入到 KML 文件中?

4

1 回答 1

2

如果想要在 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
于 2021-08-27T18:06:16.837 回答