构建大型KML文件

Ste*_*bbi 3 partitioning kml google-earth kmz

我生成的KML文件可能有50,000个或更多的地标,根据特定于域的分组排列在文件夹中.KML文件使用打包到KMZ文件中的自定义图像.

我正在寻找将单个KML文件分解为多个文件,根据分组进行分区,因此我没有一个包含文件夹的大文档,而是有一个根/索引KML文件,文件夹链接到较小的KML文件.

这可能吗?我认为KMZ文件在zip中只能包含1个KML文件,无论它位于何处或其名称.此外,我不确定KML文件如何链接到另一个KML文件.是将它作为<NetworkLink>本地文件的唯一方法吗?可以<NetworkLink>链接到同一KMZ中的本地文件吗?

Jas*_*nM1 9

通过设计,您可以在单个KMZ文件中包含多个KML文件.这样,您就可以将许多KML文件捆绑在一个KMZ文件中,该文件通过电子邮件发送或离线访问.

如果将功能拆分为多个KML文件并定义KML,以便不会同时显示所有子KML文件,则Google地球可以在单个KMZ文件中扩展为大量功能(50,000或更大).KML提供了使用时间,区域或高度级别过滤来控制显示哪些要素或子KML文件的机制.

大型KML文件可以使用以下任何技术进行扩展:

  1. NetworkLink一起
  2. 地区
  3. 文件夹无线电样式或显式可见性= 0

NetworkLink一起

您可以从根KML文件中将任何级别的NetworkLinks从平面(具有Networklinks的单个KML文件到KMZ中的所有其他KML文件)深入(每个带有NetworkLink的KML文件到其他KML文件,每个文件都有自己的NetworkLink) .取决于您需要如何构建KML以及数据的大小.

关键是Google Earth选择第一个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
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

如果您在父KML文件中包含多个具有基于时间的功能的NetworkLink,那么最佳做法是<TimeSpan>向NetworkLinks 添加一个元素,包括该功能集合的全部时间,否则Google Earth将在启动时自动加载整个文件.

<NetworkLink>
  <TimeSpan>
    <begin>2007-01-14T01:00:00Z</begin>
    <end>2007-01-14T02:00:00Z</end>
  </TimeSpan>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>
Run Code Online (Sandbox Code Playgroud)

地区

一个地区 影响地标几何或重叠的图像的可见性.与NetworkLinks结合使用的区域可以访问KML文件中的大量数据.区域可以可选地具有用于高度水平过滤的最小和最大高度.

有关详细信息,请参阅KML中的区域教程
https://developers.google.com/kml/documentation/regions

无线电文件夹

您可以使用无线电文件夹进一步限制在给定时间显示的内容.

这是一个无线电文件夹示例,允许用户一次只选择一个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>
Run Code Online (Sandbox Code Playgroud)