根据设计,您可以在单个 KMZ 文件中包含多个 KML 文件。这样,您可以将许多 KML 文件捆绑在一个 KMZ 文件中,然后通过电子邮件下载、发送或离线访问。
Google 地球可以扩展到大量功能(50,000 或更多)位于单个 KMZ 文件中,前提是要素被拆分为多个 KML 文件,并且 KML 的定义使得所有子 KML 文件不会同时显示。 KML 提供了使用时间、区域或海拔高度过滤来控制显示哪些要素或子 KML 文件的机制。
大型 KML 文件可以使用以下任意技术进行缩放:
- 网络链接 https://developers.google.com/kml/documentation/kmlreference#networklink
- Regions https://developers.google.com/kml/documentation/kmlreference#region
- 文件夹单选样式或显式可见性=0
- 每个特征的点数和几何简化
网络链接
您可以在根 KML 文件中拥有任何级别的 NetworkLink,从平面(具有到 KMZ 内所有其他 KML 文件的网络链接的单个 KML 文件)到深层(每个 KML 文件都具有到其他 KML 文件的 NetworkLink,每个文件都有自己的 NetworkLink) 。取决于您需要如何构建 KML 以及数据有多大。
关键是 Google 地球选择第一个 KML 作为根 KML 文件,因此您必须确保第一个文件(通常名为 doc.kml)是通过网络链接加载其他 KML 文件的根 KML 文件。常见的结构是在“kml”子文件夹中包含其他 KML 文件,以将其与根 KML 文件区分开来。
下面是一个包含 4 个文件条目的 KMZ 示例:根 KML 文件 (doc.kml),其中包含指向“的 NetworkLink”kml/sub1.kml” 另一个到“kml/sub2.kml”,它又具有一个到“的 NetworkLink”sub3.kml”也在“kml”子文件夹中。
== 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 file:
<?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,则添加<TimeSpan>
NetworkLinks 元素,包括该功能集合的完整时间范围,否则 Google 地球将在启动时自动加载整个文件。
<NetworkLink>
<TimeSpan>
<begin>2007-01-14T01:00:00Z</begin>
<end>2007-01-14T02:00:00Z</end>
</TimeSpan>
<Link>
<href>...</href>
</Link>
</NetworkLink>
Regions
A Region https://developers.google.com/kml/documentation/kmlreference#region影响地标几何形状或叠加层图像的可见性。区域与 NetworkLink 相结合,可以访问 KML 文件中的大量数据。区域可以选择具有最小和最大海拔以进行海拔水平过滤。
有关更多详细信息,请参阅有关 KML 中的区域的教程
https://developers.google.com/kml/documentation/regions https://developers.google.com/kml/documentation/regions
收音机文件夹
您可以使用以下命令进一步限制在给定时间显示的内容收音机文件夹 https://developers.google.com/kml/documentation/kmlreference#listItemType.
下面是一个单选文件夹示例,允许用户一次仅选择一个 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 https://https//qgis.org/打开 KML 文件,然后对多边形应用简化算法。在 QGIS 中,选择矢量菜单 -> 几何工具 -> 简化,然后保存结果。