根据设计,您可以在一个 KMZ 文件中包含多个 KML 文件。通过这种方式,您可以将多个 KML 文件捆绑在一个 KMZ 文件中,以便下载、通过电子邮件发送或离线访问。
Google 地球可以扩展到单个 KMZ 文件中的大量要素(50,000 个或更多),前提是这些要素被拆分为多个 KML 文件,并且 KML 的定义使得所有子-KML 文件不会立即显示。 KML 提供了使用时间、区域或海拔级别过滤来控制显示哪些要素或子 KML 文件的机制。
大型 KML 文件可以使用以下任何技术进行缩放:
- NetworkLinks
- Regions
- 文件夹单选样式或显式可见性=0
- 每个要素的点数和几何简化
网络链接
您可以在根 KML 文件中拥有任何级别的网络链接,从平面(具有网络链接的单个 KML 文件到 KMZ 中的所有其他 KML 文件)到深度(每个 KML 文件都有一个 NetworkLink 到其他 KML 文件,每个文件都有自己的自己的 NetworkLink)。取决于您需要如何构建 KML 以及数据有多大。
关键是 Google 地球选择第一个 KML 作为根 KML 文件,因此您必须确保第一个文件(通常命名为 doc.kml)是通过网络链接加载其他 KML 文件的根 KML 文件。一种常见的结构是在“kml”子文件夹中包含其他 KML 文件,以将其与根 KML 文件区分开来。
这是一个包含 4 个文件条目的 KMZ 示例:根 KML 文件 (doc.kml),其中包含一个指向“kml/sub1.kml”的 NetworkLink,另一个指向“kml/sub2”。 kml”,它又在“kml”子文件夹中具有指向“sub3.kml”的 NetworkLink。
== test.kmz ==
+doc.kml
NetworkLink > kml/sub1.kml
NetworkLink > kml/sub2.kml
+kml/sub1.kml
+kml/sub2.kml
NetworkLink > sub3.kml
+kml/sub3.kml
下面是这样一个doc.kml文件的结构:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<NetworkLink>
<name>NetworkLinked sub-item</name>
<Link>
<href> kml/sub1.kml </href>
</Link>
</NetworkLink>
<NetworkLink>
<name>NetworkLinked sub-item</name>
<Link>
<href> kml/sub2.kml </href>
</Link>
</NetworkLink>
...
</Document>
</kml>
如果您在父 KML 文件中包含多个具有基于时间的功能的 NetworkLink,则最佳做法是向 NetworkLink 添加一个 <TimeSpan> 元素,包括该功能集合的完整时间范围,否则 Google 地球将自动在启动时加载整个文件。
<NetworkLink>
<TimeSpan>
<begin>2007-01-14T01:00:00Z</begin>
<end>2007-01-14T02:00:00Z</end>
</TimeSpan>
<Link>
<href>...</href>
</Link>
</NetworkLink>
地区
Region
影响地标的几何图形或叠加层图像的可见性。区域与 NetworkLink 相结合,可以访问 KML 文件中的大量数据。区域可以选择具有用于高度级别过滤的最小和最大高度。
更多详细信息,这里有一个关于 KML 区域的教程
https://developers.google.com/kml/documentation/regions
电台文件夹
您可以使用radio folders 进一步限制在给定时间显示的内容。
这是一个单选文件夹示例,允许用户一次只选择一个 NetworkLink。
当内容互斥并且在任何给定时间只应出现一组功能时使用此选项。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="rf">
<ListStyle>
<listItemType>radioFolder</listItemType>
</ListStyle>
</Style>
<Folder>
<name>One at a time example</name>
<open>1</open>
<description>Link 1 visible by default</description>
<styleUrl>#rf</styleUrl>
<NetworkLink>
<name>NetworkLinked sub-item-1</name>
<Link>
<href> kml/sub1.kml </href>
</Link>
</NetworkLink>
<NetworkLink>
<name>NetworkLinked sub-item-2</name>
<visibility>0</visibility>
<Link>
<href> kml/sub2.kml </href>
</Link>
</NetworkLink>
</Folder>
</Document>
</kml>
每个特征的点数和几何简化
KML 文件的大小和要素数量并不是唯一需要考虑的问题。具有 350K 点和 7000 个内孔的单个高分辨率多边形的 KML 文件可能会导致 Google 地球性能问题。这种几何形状需要简化并减少点的数量。您可以使用 QGIS 打开 KML 文件,然后对多边形应用简化算法。在 QGIS 中,选择 Vector menu -> Geometry tools -> Simplify 然后保存结果。