1

我正在使用SimpleKML创建一个包含约 600 张地理标记图片的列表(其中每个图钉都有一个图像作为描述。所以我单击地图上的一个图钉,它会显示我在该坐标处拍摄的图片)。

KMZ 文件大约为 1GB,似乎无法在 Google 地球专业版中打开。我一直在网上四处寻找,似乎文件太大而无法打开。但是,我已经看到地球能够显示超过一百万个坐标。如果我不添加图像作为描述,文件将缩小到 ~5kb 并且能够工作。

如何打开将图像保留为描述的文件?文件大小确实有上限吗?

(注意:我不确定它是 Python/编程问题,还是 Google 地球问题,所以现在我假设它是一个通用的 Google 地球问题)。

4

1 回答 1

2

Google 地球专业版有 32 位和 64 位版本。32 位版本限制对 2GB 内存的访问,并且 1-2 GB 的 KMZ 文件在未压缩时很可能大于 2 GB,这超出了 Google 地球可用的内存。

Google 地球本身可以处理许多 GB 的数据,但不能同时处理所有数据。将这么多数据提供给 Google 地球的唯一方法是让 KML 文件一次加载图片的一个子集。

如果地理标记的图片在物理上是可分离的,那么您可以创建多个 KML,其中每个 KML 代表一个区域以及该区域中的照片。父 KML 文件可以通过NetworkLink引用每个 KML 文件。NetworkLink 需要一个 Region 元素来指定何时加载具有给定区域中地理标记图片的 KML 文件。Region 包含一个边界框 ( <LatLonAltBox>),它描述了由地理坐标和高度定义的感兴趣区域。此外,一个区域包含一个 LOD(详细程度)范围,该范围根据投影屏幕大小(以像素为单位)定义相关区域的有效范围。

您的根 KML 的结构如下:

<Document>
 <NetworkLink>
  <Region>
    ...
  </Region>
  <Link>
    <href>1.kml</href>
  </Link>
 </NetworkLink>
 ...
</Document>

让区域工作需要反复试验。您可以使用此KML 屏幕标尺测量区域的“屏幕”像素尺寸。

以下是使用区域的两个教程:

或者,您可以创建多个 KMZ 文件,每个文件都有一个地理标记图片的子集。您可以将子 KMZ 文件与具有 radioFolder List 样式的父 KML 文件和每个 KMZ 文件的 NetworkLinks 绑定在一起。这允许您选择任何带有照片的子 KMZ 文件,但一次只能选择一个,以防止内存过载。

<Document>
    <Style id="radioStyle">
        <ListStyle>
            <listItemType>radioFolder</listItemType>
        </ListStyle>
    </Style>
    <styleUrl>#radioStyle</styleUrl>
    <NetworkLink>
        <visibility>0</visibility>
        <Link>
            <href>1.kml</href>
        </Link>
    </NetworkLink>
    <NetworkLink>
        <visibility>0</visibility>
        <Link>
            <href>2.kml</href>
        </Link>
    </NetworkLink>
</Document>

如果您希望其中一个 KML 文件在 Google 地球中打开时默认可见,则将其可见性更改为“1”并将其他文件保留为“0”。

SimpleKML API 支持网络链接、区域、KMZ 等,因此最好尝试不同的 KML 输出,看看哪种效果更好。

于 2017-09-23T01:42:28.633 回答