我生成的KML文件可能有50,000个或更多的地标,根据特定于域的分组排列在文件夹中。 KML文件使用打包到KMZ文件中的自定义图像。
我正在寻找将单个KML文件分解为多个文件,根据分组进行分区,因此我没有一个包含文件夹的大文档,而是有一个根/索引KML文件,文件夹链接到较小的KML文件。
这可能吗?我认为KMZ文件在zip中只能包含1个KML文件,无论它位于何处或其名称。此外,我不确定KML文件如何链接到另一个KML文件。将它作为<NetworkLink>
到本地文件的唯一方法是什么? <NetworkLink>
可以链接到同一个KMZ中的本地文件吗?
是的,您可以使用网络链接来完成此操作,据我所知,这是您做出要求的唯一方法。是的,您可以在网络链接中引用本地文件
请参阅:http://code.google.com/intl/nl-NL/apis/kml/documentation/kml_tut.html(搜索“网络链接”),其中说:
网络链接包含带有(超文本引用)的元素,用于加载文件。可以是本地文件规范或绝对URL。尽管名称如此,<NetworkLink>不一定从网络加载文件。链接中的<href>指定以下任何位置:
•图标样式,地面叠加层和屏幕叠加层中的图标使用的图像文件 •元素中使用的模型文件 •由Network Link加载的KML或KMZ文件
不,你不能引用kmz内的另一个文件。 kmz只能包含1 kml文件(它可以包含其他类型的文件)你可以找到kmz文件的布局以及可能放在其中的内容here具体说明以下部分:
2.在此文件夹的顶层放置默认的KML文件(doc.kml或您要提供的任何名称)。仅包含一个.kml文件。 (当Google地球打开KMZ文件时,它会扫描文件,查找此列表中的第一个.kml文件。它会忽略存档中所有后续.kml文件(如果有)。如果存档包含多个.kml文件,则无法确定首先会找到哪一个,所以你只需要包含一个。)
最后一句话是,如果您需要这些50.000个地标作为脱机文件,那么您的问题不会告诉任何内容。如果您可以动态地为它们提供服务,您可以使用基于区域的链接,GE将告诉您客户端的查看区域,这样您就可以返回一小部分路径点(只有用户视图中的路径点)更多信息this是点击链接。
通过设计,您可以在单个KMZ文件中包含多个KML文件。这样,您就可以将许多KML文件捆绑在一个KMZ文件中,该文件通过电子邮件发送或离线访问。
如果将功能拆分为多个KML文件并定义KML,以便不会同时显示所有子KML文件,则Google地球可以在单个KMZ文件中扩展为大量功能(50,000或更大)。 KML提供了使用时间,区域或高度级别过滤来控制显示哪些要素或子KML文件的机制。
大型KML文件可以使用以下任何技术进行扩展:
NetworkLink一起
您可以从根KML文件中将任何级别的NetworkLinks从平面(具有Networklinks的单个KML文件到KMZ中的所有其他KML文件)深入(每个KML文件带有NetworkLink到其他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
这是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,则向网络链接添加<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会影响地标的几何图形或叠加图像的可见性。与NetworkLinks结合使用的区域可以访问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>