【发布时间】:2019-10-23 16:56:10
【问题描述】:
我的目标是创建一个 KML,其中包含指向一组网络驱动器上带有 GPS 信息的照片的链接。使用 Python 生成文件并使用 pathlib.Path(...).as_uri() 创建路径。
例如,这将被创建:
<Placemark>
<name>IMG_0089</name>
<description>
<![CDATA[
<img src="file:////share/folder%201/folder2/IMG_0089.JPG" width="600"/>
]]>
</description>
<styleUrl>#simpleBalloon</styleUrl>
<Point>
<coordinates>-122.5,37.2</coordinates>
</Point>
</Placemark>
我有几个问题:
首先,pathlib 提供的 URI 以 file:// 开头,但 Google 地球似乎希望路径以 file://// 开头。 Chrome 会打开 file:// 就好了。
其次,并非所有图像都由 Google 地球显示。我可以在 KML 中获取路径并在 Chrome(或 Windows 资源管理器)中打开它并显示图像。最令人困惑的是,它只发生在某些图像上。创建 KML 时,路径由 Jinja2 引用。
基于此comment,看来这可能与应如何转义某些字符有关。至少有一些有问题的路径中有撇号。
【问题讨论】:
-
如果您将 KML 文件放在“共享”驱动器中,则可以通过相对链接引用图像,并且不需要 file: 前缀。
-
文件前缀不是问题,而是 Google 地球如何处理 URI。有些 URI 有效,有些则无效。
-
发布图像未显示的问题路径示例。在路径名中包含特殊字符(空格、撇号等)可能会很棘手。您是否可以选择将文件夹名称重命名为不包含特殊字符?
-
这里有两种情况:1) 网络驱动器上的 KML 引用,绝对 URL 为 file:// vs file:/// 等;和 2) 文件夹名称中的特殊字符(例如空格和撇号)。建议您先将 KML 放在与网络驱动器相同的级别;使文件夹具有简单的名称;使 KML 中的图像引用相对;然后验证所有图像都可以访问。之后可以处理特殊情况。
-
@JasonM1 我同意。不幸的是,这是一个由一群人组织的共享驱动器,所以我不想移动文件来解决这个问题。我正在考虑的解决方案是创建具有可由 Google 地球处理的简单路径的图像缩略图,然后提供可使用 Windows 资源管理器打开的指向全分辨率图像的链接。最令我惊讶的是,当 Chrome 没有问题时,Google 地球无法处理复杂的路径名。
标签: python kml google-earth