你在这里: 流行格式 > 谷歌KML阅读器/写入器 > 资源遍历

资源遍历

当KML阅读器使用资源引用检索当前KML文件外部的文件时,将发生资源遍历。KML阅读器能够遍历以下类型的资源引用:

  • < NetworkLink > <链接> < href >
  • < GroundOverlay > <图标> < href >
  • < ScreenOverlay > <图标> < href >
  • < PhotoOverlay > <图标> < href >
  • < SchemaData @schemaUrl >
  • < Placemark > <模型> <链接> < href >

此时,不被遍历。

资源位置

资源可以是本地的,也可以是远程的。本地资源位于本地文件系统或挂载的网络驱动器上。本地资源的例子有" C: emp\foo.jpg "或\\FILES\data\bar.kml。远程资源是通过internet协议访问的资源。KML阅读器支持ftp和http协议。

读取器的TRAVERSE_NETWORKLINK指令的值决定了如何处理资源引用。

所有:遍历所有资源引用

当地的:只遍历对资源的本地引用。例如,对本地文件的NetworkLink引用会被遍历,但是对远程web服务器上的文件的引用不会被遍历。

没有一个:没有资源引用被遍历。这可能会限制阅读器的某些功能。

相对引用

资源引用通常引用相对于引用资源位置上的资源。一个例子就是道路。kml引用模式。通过schemaUrl的kml。KML阅读器通过维护获取引用资源的位置记录,试图将相对引用解析为绝对引用。例如道路。从http://example.com/roads.kml检索kml, kml读取器将尝试加载模式。kml从http://example.com/schema.kml

远程资源下载

通过遍历远程资源引用下载的文件都存储在$(FME_TEMP)中唯一的文件夹中。唯一的下载位置确保具有相似文件名的文件不会相互覆盖。翻译完成后,所有下载的文件将被删除。要覆盖这个行为,KML阅读器的DELETE_DOWNLOADED_FILES指令可以设置为no'。

还可以从远程web服务下载资源,例如http://example.com/mapdata.php?图层=道路,可能返回KML数据。作为下载过程的一部分,阅读器执行两个动作:

  1. 将服务器响应的mime类型与一组预期的mime类型进行比较。即验证它是KML数据(或覆盖的图像数据)。
  2. 结果文件名中的任何非字母数字字符都被下划线替换。还根据需要提供适当的文件扩展名。例如,如果上面的服务用KML数据响应,它将存储在mapdata_php_layer_roads.kml中

遍历深度

KML阅读器能够限制资源遍历深度。该选项允许用户控制KML阅读器在给定翻译中检索多少数据。例如,如果从web服务读取复杂的数据集,a.kml可以引用b.kml, b.kml引用c.kml,等等。默认情况下,遍历深度的上限为5,但是可以根据需要使用KML阅读器的MAX_NETWORKLINK_TRAVERSAL_DEPTH指令来增加。

对遍历宽度(即每个文件的遍历次数)没有限制。

网络错误

KML阅读器可以忽略在转换过程中遇到的网络错误,但是要记录这些错误。服务提供者问题或临时网络中断可能会导致此类错误。默认情况下,网络错误不会导致致命错误;FAIL_ON_NETWORK_ERROR读取器指令可以用来改变默认行为。