斯潘8
斯潘4
有各种限制区,multiple terminals,时间限制,导航机场对任何人都是一个挑战。乘客,特别地,需要快速高效地到达目的地。苹果的室内地图计划可以帮助乘客导航大型机场综合设施,但要添加此类地图,需要将数据转换为苹果的室内地图数据格式。(IMDF)
在这种情况下,您将了解如何将维多利亚机场(ESRI地理数据库)的地图数据转换为IMDF。At the end of this example,您将执行数据转换步骤,以生成一个准备发布到苹果地图的数据集。
Note:这个例子展示了如何处理来自维多利亚机场的数据。您自己的源数据可能在结构和格式上有所不同,因此需要不同的转换技术。
FME 2018.1 +
已安装python
atb-publicdata.zip文件Data is ©Victoria Airport Authority
中级FME技能水平
了解IMDF规范
提供的数据包含在三个不同的地理数据库中,机场每层一个。这些地理数据库包含整个机场结构的数据。因为我们只对机场的布局图感兴趣,以及重要功能(如安全区,check-in counters,以及行李传送带)我们可以减少我们阅读的特征类型(特征类)的数量。
The feature types we are interested in are:
处理前在FME数据检查器中查看的上述特征类型
This scenario goes into as much detail as possible,同时保持可读性。要进一步了解每个变压器的特定参数,please refer to the completed workspace.
源数据概述下列出的功能类型已使用文件geodatabase(文件geodb open api)读卡器添加到工作区。For some feature types there is only one instance of it (i.e.ATB_SURROUND) for others there are two or three;this is because those features exist on multiple floors.
在准备写入IMDF之前,需要清除每个功能类型。清洁包括地理参考,清洁几何结构,创建IDS,以及操作属性。以下部分将详细说明为每种功能类型完成的步骤。
亚搏在线ATB_环绕的数据清理工作流
建筑ID是根据ATB U环绕数据创建的。采样器选择单个环绕特征,UuidGenerator创建ID,variablesetter创建一个名为building的变量,并给它id值。
这个变量在整个工作区中被引用。如果稍后在工作区中使用带有功能缓存的运行,ensure that the VariableSetter is part of any partial run,否则,工作区将失败。
在ID变量创建的独立流上,溶解器用于将周围区域溶解为单个多边形。然后,使用DonutholeExtractor,从建筑中创建的甜甜圈孔将被移除。最后,数据通过applygeoReferencing自定义转换器运行,该转换器旋转,偏移量,缩放并设置坐标系。此自定义转换器将在整个工作区中多次使用。
在ApplygeoReferencing自定义转换器中,参数为:
ATB U环绕的前后数据清理。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线安全/安全线路数据清理工作流程
第一,使用弧击变压器将弧几何转换为线,然后用几何滤波器对几何图形进行压缩。下一步,该除泥器用于破碎集料线并封闭小间隙。A combination of the Snapper and the LineCloser are used to combine lines into a single line,每层一个。最后,使用applygeoReferencing自定义转换器对数据进行地理引用。
安全/安保线路的前后数据清理。粉红线是一楼的安全线,and the purple line is for the second floor.三楼没有安全线。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线用于打开数据清理的工作流
For the OPENING,最初,所有需要做的是,所有三个楼层的开口都需要使用适用的定制变压器进行地理参考。
亚搏在线建筑/墙多边形和建筑/房间的数据清理工作流
所有三种建筑/墙多边形特征类型都连接到一个属性创建器转换器,以创建具有结构值的类别属性。然后使用applygeoReferencing自定义转换器对其进行地理引用。下一步,几何图形使用Arcstroker组合进行清理,解聚器,几何定义器,笛鲷。Then any gaps or overlaps are removed using the AreaGapAndOverlayCleaner and another Deaggregator.使用空间滤波器和测试仪,任何单独的墙壁或非公共区域都会被过滤掉。
使用取样器组合为每个房间创建另一个变量,UUIDGenerator以及变阻器变压器。此变量使用了fme_basename值,which is the level of the airport (ATB1,ATB2和ATB3)。在第二个数据流,attributeValueMapper用于压缩房间(单元)类别基于notes属性。房间类型如下:
在属性值管理器之后,the data is connected to the ARCHITECTURAL/WALL POLYGON 亚搏在线workflow via the ApplyGeoreferencing custom transformer.
建筑前/墙多边形和建筑前/房间数据清理以及合并多边形后数据清理。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线架构/计数器的数据清理工作流
柜台是机场每个值机柜台的详细图纸。Each needs the attributes of the room they reside in,最好使用简化的几何图形。第一,几何量角器变压器记录原始(详细)数据的副本,然后使用CenterPointReplacer为每个计数器创建一个简单的中心点。下一步,使用空间过滤器,房间属性合并到每个登记柜台上。几何置换器用于从几何拉伸器中检索存储的几何图形。
VertexCounter和AggregateFilter用于对数据进行排序以进行筛选。然后使用testfilter按以下方式筛选数据:
Once the data is filtered,使用attributeCreator为testfilter上的每个输出端口创建一个新类别。
The Checkin Kiosk and Immigration Desk are both sent to a custom transformer called MakePolygon,which makes polygons using several geometry transformers.The Checkin Desk and Security Equipment are sent to a BoundingBoxReplacer to simplify the geometry into a rectangle.最后,使用applygeoReferencing自定义转换器对计数器进行地理引用。
亚搏在线建筑/传送带的数据清理工作流
A Tester transformer is used to extract only the baggage pickup carousels from all of the different carousel features.然后使用attributeCreator创建类别和名称。然后使用Arcstroker,鲷鱼,和区域建设者,为每个传送带创建多边形。传送带被路由到与计数器工作流连接的同一个applygeoReferencing自定义转换器。亚搏在线最后,中央传送带用于国际和国内行李,根据一个固定的时间表,需要添加此信息。AreaBuilder_2还连接到建筑/公共设施数据清理工作流以添加此计划信息。亚搏在线
建筑/计数器和建筑/传送带的前后数据清理。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线架构/公共设施的数据清理工作流
中央行李提取区,通过移动墙在国内和国际之间切换。维多利亚机场提供了转盘使用时间表。
To model this,为组合式旋转木马设计了两个便利设施:一个供家庭使用,另一个供国际使用。日程安排是为每种使用类型提供适当的便利设施。
attributekeeper只保留行李传送带名称和fme_basename属性。然后,PointOnAreaOverlayer用于在行李传送带多边形上覆盖行李传送带便利设施并合并属性。测试仪用于查找组合的国际/国内传送带。然后使用attributeCreator设置国内日程。一个剪纸器用于创建第二个便利设施,以包含国际日程,which is created using the AttributeCreator.最后,所有建筑/公共设施功能类型都使用ApplygeoReferencing自定义转换器进行地理参考。
使用锚定器,安全线,开放,建筑/柜台和建筑/旋转木马都被合在一起。建筑/墙多边形和建筑/房间特征是其他数据捕捉到的定位点。这将把安全线和固定装置扣到装置上。
然后用按扣,使用分段捕捉将安全顶点捕捉到单元边界。所有多边形功能之间的公共顶点可确保在导航应用程序中查看数据时以及在写入IMDF时将数据重新投影到纬度/经度时,数据以可视方式对齐。
在基址图关闭的情况下查看的捕捉特征
使用按扣,security vertices will be snapped to unit boundaries using segment snapping.在捕捉器之后,然后使用FeatureTypeFilter将这些特性过滤回各自的类型。
一旦数据是干净的,在编写之前,需要根据IMDF规范进行准备。这意味着需要向每个功能添加唯一的ID,几何类型必须正确,and all attributes follow the appropriate naming convention.写入IMDF时,FME编写器自动将数据重新投影到LL84坐标系。
Due to the complex nature of the following section,the process description might reference feature types and transformers that have not been mentioned yet.为了清晰起见,建议在阅读时打开示例工作区。
亚搏在线准备向IMDF写出场地的工作流程
这个地点 包含建筑的边界,必须具有ID并且必须是多边形。
To create the venue,a unique ID is created using the UUIDGenerator.然后使用attributeCreator创建关于场地的特定属性。These attributes include the name of the building,类别,网站,更名,小时和电话号码。设置类别时,必须遵循特定的命名约定。见苹果室内地图数据格式单元类别文档更多信息。
下一步,使用FeatureMerger将地址_ID合并到场地ID中。然后使用CenterPointextractor,创建一个中心点。然后使用室内地图数据格式(IMDF)编写器编写场地。
在FME数据检查员中查看的场地输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线Workflow to prepare to write out address and building out to IMDF
这个地址是必须具有ID且必须具有空几何体的邮政地址。
要创建地址,使用UuidGenerator创建唯一的地址_id。Then the address_id is renamed to id,使用属性名称,这是为了与场馆ID合并。下一步,地址属性是用attributeCreator创建的,包括街道地址,地点(城市或城镇名称)省(州)国家,和邮政编码(或邮政编码)。Then the address is written out to the same IMDF writer,as the venue.通过转到“编写器>添加功能类型”,然后在“功能类型”对话框中将功能类型名称重命名为“地址”,并确保选择了IMDF编写器,可以轻松完成此操作。
在FME数据检查器中查看的地址输出
这个建筑是包含在场地内的物理建筑,必须具有ID并且必须具有空几何图形。此功能类型仅存储属性信息,the actual building polygon is stored in the footprint feature type.
使用之前创建的地址\u id,属性创建器用于创建建筑名称和类别。然后使用变量检索器,the building id,它是用ATB ound创建的,is retrieved.使用CenterPointextractor转换器创建中心点,它将作为一个属性存储,然后使用同一个编写器将建筑写出给IMDF。
在FME数据检查器中查看的建筑物输出
亚搏在线准备向IMDF写入级别的工作流
这个水平表示建筑的每个级别(或楼层)。级别必须具有ID并且必须是多边形。
From the FeatureTypeFilter,使用溶解器将所有单元溶解成水平;在这种情况下,创建三个级别。然后使用两个可变检索器,将检索级别ID和建筑ID。使用StringSearcher,从fme_basename中提取级别号;这是因为每个初始地理数据库都代表一个级别(atb1,ATB2ATB3)。
属性创建器用于创建特定于每个级别的属性,这包括类别,是否在室外(是/否)序数,级别名称和短名称。然后提取中心点,将空名称和短名称属性映射到
在FME数据检查器中查看的级别的输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备向IMDF写出足迹的工作流
这个footprint 是建筑物的近似多边形。示意图必须具有ID并且必须是多边形。
连接到创建级别属性的attributeCreator,属性移动器用于删除级别名称。Then using the TestFilter,级别按顺序组织(空中,地面和地下)。连接到天线和地面输出端口的分解器用于将级别分解为足迹。然后,使用油炸圈拔取器删除创建的所有油炸圈孔。然后使用一个属性创建者来给脚印提供航空的类别。
下一步,一个attributeCreator连接到testfilter上的接地输出端口,以向封装外形提供接地类别。
最后,另一个溶解器,Donuthole提取器,and AttributeCreator are connected to the subterranean output port on the TestFilter,脚印是地下的一种。
然后,所有三个属性创建器都连接到一个UuidGenerator以创建一个封装外形\u id,然后写给IMDF。
在FME数据检查器中查看的足迹输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备向IMDF写入地理围栏的工作流
一geofence通过设置限制分隔一个或多个区域。如果是机场,这将是前后安全措施。The geofence must have an ID and must be a polygon.
交叉转换器连接到创建级别属性的attributeCreator,该属性用于通过安全线分隔单元。然后,一个区域生成器用于为安全线任一侧的每个级别创建新的多边形。然后使用geometryextactor保存几何体;这样做是为了在不影响几何体的情况下操纵属性并将其与其他属性合并。CenterPointReplacer用于创建包含每个多边形的所有属性的单个点。然后,使用裁剪器裁剪该点,以使新多边形保持在级别内。A LeftRightSpatialCalculator is used to determine which side of the security line each of the polygons fall,这是按fme_basename分组的,因此它使每个级别保持独立。使用ListSearcher对多边形进行分类;如果多边形在直线的右侧,它是预先安全的,如果在左边,这是邮政安全。然后使用attributeCreators设置类别。
最后,几何置换器用于恢复多边形,and then an AttributeRemover is used to remove any of the level specific attributes.使用两个可变检索器检索ID,并使用UuidGenerator创建地理围栏ID。创建一个中心点,然后将地理围栏写入IMDF。
在FME数据检查器中查看的地理围栏输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备向IMDF写出开口的工作流
An开放表示房间或建筑的入口,可以是门或门槛。开口必须具有ID,并且必须具有作为几何图形的线字符串。
要创建洞口,a UUIDGenerator is connected to the FeatureTypeFilter,然后连接一个变量检索器来创建和检索ID。几何取样器连接到产生水平的溶解器;this is used to coerce level boundaries to opening lines.A SpatialFilter is then connected to both the GeometryCoercer and the VariableRetriever to find openings on level boundaries;this will determine whether the opening is internal or external.然后,使用两个attributeCreator来创建pedestrian(内部)或pedestrian.principal(外部)的类别。然后计算出中点作为显示点;这是通过使用几何量角器来实现的,Snipper坐标量角器和几何代替器。创建显示点后,空名称属性设置为
在FME数据检查器中查看的打开输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备向IMDF写出单元的工作流
一单元表示房间或走廊,是封闭空间。一个单元必须有一个ID,并且必须是一个多边形。
A UUIDGenerator is used to create an ID,并连接到FeatureTypeFilter。然后使用attributeCreator创建一个名为_predicate的属性,该属性将在spacerelator中使用;这与用于创建洞口的变量检索器相连。空间中继连接到UuidGenerator和attributeCreator,并使用谓词属性测试关系。变量检索器用于获取级别ID。另一个attributeCreator用于将notes属性复制到名为name的属性;这将是每个单元的名称。创建一个中心点,空名称属性设置为
在FME数据检查器中查看的机组输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备编写便利设施并锚定到IMDF的工作流
An舒适性is a feature that is provided as a convenience service like a washroom or a water fountain.便利设施必须有一个ID和一个点几何。
使用UuidGenerator创建便利设施ID,然后将便利设施覆盖在单元顶部,以使用PointOnAreaOverlayer获取单元ID。姓名,category and unit_id attributes are then created using the AttributeCreator.空名称属性设置为
在FME数据检查器中查看的便利性输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
An锚是用于显示特定地址或不可寻址位置的指定点。定位点用作另一个功能可以继承定位点属性的点。
锚遵循与便利性相同的工作流,除了测试人员用于测试亚搏在线类别。任何未指定的便利设施,服务,食品服务,或角叉被认为是锚。
在FME数据检查器中查看锚点的输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线准备向IMDF写出占用者的工作流程
An乘员提供商品或服务的企业所在地。这些乘客由锚代表。
一旦确定锚定,将重命名并创建唯一ID,然后使用attributeValueMapper将属性重新映射到特定的IMDF类别。databasejoiner用于将包含业务信息的csv文件与锚合并以创建占用者。创建一个包含数据有效性的属性。修改日期,然后将空属性映射到
在FME数据检查员中查看的乘员输出
亚搏在线准备向IMDF写出部分的工作流
一section是为特定目的服务的区域。例如,机场会有行李领取处,办理登机手续,门和安全部分。节必须具有ID并且必须是多边形。
一个attributeValueMapper连接到FeatureTypeFilter以将单元重新映射到一个区段类别,对于这个例子,这些是:
Once the names have been remapped,检测仪用于删除任何没有节类别的单元。然后,使用溶解器为每个部分创建一个多边形来溶解具有一个部分的单元的边界。然后使用UuidGenerator和VariableRetriever创建和检索ID。使用CenterpointReplacer和DonutholeExtractor创建一个中心点并删除所有多边形孔。最后,空名称属性设置为
在FME数据检查器中查看的部分的输出。背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
亚搏在线Workflow to prepare to write fixture out to IMDF
一fixture表示包含在可以移动或半永久的单元中的物理对象。对于这个例子,这代表行李传送带或登记柜台。设备必须具有ID并且必须是多边形。
通过使用另一个FeatureTypeFilter来分离转盘和计数器,在FeatureTypeFilter之后再次过滤设备。测试仪用于确定夹具是非公共的还是结构的。然后用剪刀剪出任何非公共的传送带部件。然后创建和检索ID,以及创建一个中心点。一旦空名称属性重命名为
Output for fixture viewed in the FME Data Inspector.背景图平铺方式雄蕊设计,在下面CC 3.数据通过OpenStruts地图,在下面ODbL.
一关系是两个映射元素之间的关联,可选择包含中间元素。在这个例子中,这是一部电梯,楼梯或自动扶梯,连接多个层次。此外,增加了一个横向关系来定义当中央行李传送带在国际或国内之间切换时可以移动的分区。关系必须具有ID,并且必须包含空几何体。
亚搏在线准备将电梯关系写入IMDF的工作流
电梯关系首先通过使用测试仪只提取电梯单元来创建。然后用邻居探测器,电梯通过在一个堆栈中创建一个ID列表链接在一起。ListSorter和ListConcatenator按级别对电梯列表排序,然后创建堆栈ID。A DuplicateFilter is then used to remove duplicate stacks.pythoncaller用于创建从列表中提取关系信息的函数。最后,attributeCreator用于创建方向属性。
亚搏在线准备写出楼梯和扶梯与IMDF关系的工作流程
自动扶梯和楼梯的关系比电梯更复杂,通过使用测试仪仅提取楼梯来创建。和自动扶梯单元。然后使用attributeCreator设置特征类型(楼梯或自动扶梯),然后设置洞口ID。邻居查找器用于链接堆栈并创建ID列表,就像以前对电梯所做的那样。自动扶梯方向使用attributeValueMapper映射。然后,列表从下到上(楼梯或自动扶梯)或从上到下(自动扶梯)排序。然后,为每个级别的唯一组合创建一个堆栈副本,将列表切片以仅覆盖这些级别以及它们之间的任何级别。下一步,每一个堆栈拷贝都被转换成一个关系特性,顶部和底部的开口作为源和目标。所有横向单元都设置为中介。
亚搏在线准备将移动分区关系写出到IMDF的工作流
移动分区关系根据行李传送带时间表控制人员流动。The partitions are extracted using the Tester failed port from the stair and escalator relationships.然后使用ListExploder,使用“洞口”列表元素展开关系。然后,通过使用聚合器连接开口将单元分组在一起。列表搜索器用于搜索国际/国内行李提取的单位列表元素,然后再由国内的行李托运,最后由到达大厅。然后使用attributeCreators设置操作小时数。最后,the IMDF attributes are added.
一旦电梯的关系,自动扶梯,楼梯,并创建分区,它们被赋予一个唯一的ID,然后被写出给IMDF。
在FME数据检查器中查看的关系输出
运行翻译后,完整的IMDF文件可以使用安全软件IMDF验证页面进行验证,该页面将通过电子邮件向您发送一份报告,指出亚搏在线任何警告或错误。This file should validate without any errors but there will be some warnings.这些警告主要是由于线段短于规范阈值。也会有关于不在建筑示意图中的特征的警告。这是由于足迹检查中的坐标舍入,可以忽略。
For more information about IMDF Validation,please see theValidating IMDF Datasets文章。
Data is ©Victoria Airport Authority
© 2019 亚搏在线Safe Software Inc |Legal