fme:AIXM4.5和5.1读取、写出和验证

AIXM是航空信息交换模型格式。FME支持读取和写入AIXM版本4.5(XML)和AIXM版本5.1(GML)。AIXM5.1读写需要FME2014或更高版本。下面描述了这些版本中的每一个。还包括一个编写AIXM5AirportHeliports的示例。

AIXM4.5XML

AIXM4.5是一种基于XML的复杂格式,旨在支持航空信息服务(AIS)。AIXM4.5不包含显式几何,而是建立在非几何要素与具有geoLong和geoLat属性的要素之间的关系之上。鉴于结构的复杂性和地理信息的存储方式,典型GIS数据和AIXM4.5之间的数据转换涉及许多转换步骤,并且通常需要FME专家和熟悉AIXM数据模型复杂性的专家的帮助。读取AIXM4.5很简单,但只会产生从geoLong和geoLat属性值派生的非几何要素和点要素。不会生成可以从父对象关系派生的线性和面要素。

AIXM5GML

AIXM5取代了AIXM4.5并且基于GML。因此,最好将其视为与4.5完全不同的格式。这也意味着所有的几何图形都由有效的GML结构组成。GML对象可以使用现有的GML库进行读写。这极大地简化了处理AIXM数据以及在GIS和AIXM数据结构之间转换的过程。AIXM5仍然是一个非常复杂的结构,因此写入这种格式仍然需要熟悉AIXM标准的专家的支持。读取AIXM5.1很简单,选择源数据集并选择AIXM5读模块。请注意,AIXM5.0和5.1版本都受支持。

读取AIXM通常只涉及指向源数据并选择AIXM格式。如果方向不正确,您可能需要选择轴顺序。您还可以选择将复杂属性映射为XML片段,然后使用展平选项(用空字符串替换列表大括号)以更轻松地从多个嵌套元素映射到GIS等关系结构。要保留XML结构,请将MapComplexProperties的默认读模块设置保留为”嵌套属性”。对于架构显示要素类型来自:”仅具有从架构合并的属性的数据集”通常会产生最佳结果。

要写入AIXM5数据,请添加AIXM5写模块并选择要写入的主题。FME基于AIXM结构将这些目标要素类型放置在工作空间中。然后是FME数据重组和结构映射以支持该目标AIXM结构。您的第一步是决定要写入的目标要素类型。从简单开始并选择一些元素类型通常是个好主意。例如,如果您尝试创建机场AIXM数据集,您可以从跑道以及支持它所需的要素类型开始。为此,您需要添加AIXM写模块,然后导入与跑道关联的所有要素类型。因此,您可以从写入Runways、RunwaysTimeslice以及作为文档容器的AIXMBasicMessage开始。请注意,您不能创建用户定义的字段或要素类型。您必须导入目标架构并重组数据以精确匹配。

要成功完成此转换,您需要了解AIXM结构要求,包括必填字段、ID、父/子关系、可空字段等。通常AttributeCopier用于进行结构字段映射,AttributeCreators用于定义默认值,以及用于值映射的AttributeValueMapper。SchemaMapper可以使用存储在csv或excel表中的外部人行横道表跨多种要素类型完成所有这些工作。然后是构建正确几何结构的挑战。GeometryPropertySetters用于设置正确的几何名称、要素(如gml_ids)和聚合器以组装复杂的几何聚合。请参阅随附的欧盟机场编写示例。读取AIXM5数据并将其写回的工作空间恰好需要0个转换器。AIXM5读模块/写入器支持AIXM所需的所有复杂性,例如嵌入式几何要素(用于ids材料类型等)、每个要素的多个几何、嵌套要素、重复元素、可空元素。我们还简化了GUI和工作区参数,使其更易于使用。请注意,如果您希望使用新的草案结构,您可以使用更新的结构覆盖FME随附的结构,或者只使用GML写模块。请注意,GML读模块将检查任何给定GML文件上的名称空间并使用它来确定要使用的读模块,因此GML读模块也可用于读取AIXM数据。FME的AIXM读模块/写入器还支持AIXM扩展,这些扩展由通常来自主要航空当局(例如FAA或EUROCONTROL)的附加应用程序结构实现。

如果您无法验证输出,那么编写AIXMGML就没有多大意义。在FME中,我们使用XMLValidator转换器来执行此操作。这使用ApacheXerces库进行验证,因此您知道结果是客观的。最简单的方法是创建一个新工作区,添加一个Creator,然后是XMLValidator。将XMLValidator指向要测试的XML文件和要验证的AIXM应用程序结构的XSD文件。将XMLValidator的输出连接到Loggers。运行工作区并查看日志以查看您的XML是否有效。如果没有,您将获得一份完整报告,其中列出了与AIXM结构相关的XML问题。请注意,XMLValidator还具有仅语法验证结构。
在构建新工作区时,您通常会首先遇到大量验证错误。为了帮助您解决这个问题,将输出限制为一个或两个要素是一个好主意。

需要注意的一些问题:
-确保每个要素和几何图形都有唯一的ID。
-gml_ids必须以字母字符开头。一般建议是使用简短的对象类型缩写出为根要素gml_id的前缀。例如,如果您的根id=101,您可以将ah_101用于机场直升机场要素gml_id,将ahts_101用于机场直升机场时间片gml_id,将aharp_101用于机场直升机场时间片ARP点gml_id。
-如上所述,在大多数情况下,几何图形也需要gml_ids。
-在AIXMBasicMessage和您正在编写的任何元素之间定义正确的父/子id关系。
-可能需要大写名称
-添加任何缺失/必需的属性和几何要素
-警告消息可能会显示”不允许元素”,而实际上这意味着您缺少需要先出现的元素,或者无法写入一个必需的父元素。
放在这里,还没有研究

Original: https://blog.csdn.net/weixin_43229258/article/details/124415873
Author: 天南地北飞
Title: fme:AIXM4.5和5.1读取、写出和验证

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/676760/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球