span8
span4
随着各种禁区,多个终端,和时间的限制,导航机场可以为任何人的挑战。乘客,尤其需要得到在那里它们被迅速和有效地去。苹果的室内映射方案可以帮助乘客导航大型机场复杂,但要加这样的地图需要转换数据,苹果的室内映射数据格式(IMDF公司)。
在这种情况下,您将学习维多利亚机场(ESRI的地理数据库)的地图数据是如何被改造成IMDF。在这个例子的最后,你会都进行了数据转换步骤产生的数据集准备发布到苹果地图。
注意:此示例显示如何处理维多利亚机场的数据。您自己的源数据可能在结构和格式上有所不同,因此需要不同的转换技术。
FME 2018.1+
安装了Python
ATB-PublicData.zip数据是©维多利亚机场管理局
中级FME技术水平
在IMDF规格的知识
所提供的数据被包含在三个不同的地理数据库,一个用于机场的各楼层。这些地理数据库包含整个机场结构的数据。由于我们只在映射机场的布局和重要的功能有兴趣(如安全区域,值机柜台和行李转盘),我们可以减少要素类型(要素类),我们读到的数量。
我们感兴趣的特征类型是:
处理前在FME数据检查器中查看的上述特征类型
这种情况下进入尽可能多的细节尽可能,同时仍保持可读性。要了解更多关于每台变压器的具体参数,请参阅完成工作区。
下源数据概述中列出的特征类型已经使用文件地理数据库(文件地理数据库开放API)读取器添加到工作空间。对于一些特征类型只有它的一个实例(即一个TB_SURROUND)对他人有两个或三个;这是因为在多个楼层存在这些功能。
每个要素类型的需要清洁他们可以准备写出来前IMDF。清洗包括地理坐标,清洁的几何形状,创建一个ID,和操作的属性。以下部分将详细哪些步骤完成对每个要素类型。
亚搏在线ATB U环绕的数据清理工作流程
一种建筑ID从ATB_SURROUND数据创建的。采样选择单个环绕特征,UUIDGenerator创建ID和VariableSetter创建一个建筑物变量命名并给予它id的值。
这个变量是整个工作区引用。如果稍后在工作区中使用runwithfeaturecaching,请确保variablesetter是任何部分运行的一部分,否则,工作区将失败。
在ID变量创建的单独流中,使用分解器将周围区域分解为单个多边形。然后,使用donutholeextractor删除从建筑中创建的甜甜圈孔。最后,数据通过applygeoinferences自定义转换器运行,该转换器旋转、偏移、缩放并设置坐标系。此自定义转换器将在整个工作区中多次使用。
在applyGeoReferences自定义转换器中,参数为:
ATB U环绕声的前后数据清洗。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线安全/安全线路数据清理工作流程
首先,使用arcstroker变换器将圆弧几何图形转换为直线,然后使用geometryrefiner压缩几何图形。接下来,使用deaggregator来分解聚合线并闭合小间隙。snaper和linecloser的组合用于将线合并为一条线,每层一条。最后,使用applygeoreferences自定义转换器对数据进行地理参考。
安全/安全线路的数据清洗前后。粉色线是一楼的安全线,紫色线是二楼的。三楼没有安全线。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线打开的数据清理工作流
对于洞口,最初需要做的就是使用applygeofreering自定义转换器对所有三层楼板上的洞口进行地理参照。
亚搏在线建筑/墙多边形和建筑/房间的数据清理工作流
所有三种建筑/墙多边形要素类型都连接到attributecreator转换器,以创建具有structure值的category属性。然后使用applygeoreferences自定义转换器对其进行地理参考。接下来,使用arcstroker、deaggregator、geometryrefiner和snapper的组合清理几何体。然后,使用AreaGa和OverlayCycleaner和另一个解集器去除任何间隙或重叠。使用空间过滤器和测试仪,过滤掉任何单独的墙或非公共区域。
使用采样器、UuidGenerator和variableSetter变压器的组合为每个房间创建另一个变量。此变量使用fme_basename值,即机场级别(atb1、atb2和atb3)。在第二个数据流中,attributeValueMapper用于压缩房间(单元)类别基于notes属性。房间类型如下:
在attributeValueMapper之后,数据通过applyGeoReferences自定义转换器连接到建筑/墙多边形工作流。亚搏在线
建筑前/墙多边形&建筑前/房间数据清理和合并多边形后数据清理。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线架构/计数器数据清理工作流
柜台是机场每个值机柜台的详细图纸。每个房间都需要它们所在房间的属性,这最好使用简化的几何体来完成。首先,geometryExtractor转换器记录原始(详细)数据的副本,然后使用centerpointreplacer为每个计数器创建一个简单的中心点。接下来,使用spatialfilter,将房间属性合并到每个值机柜台上。geometryReplacer用于从geometryExtractor检索存储的几何体。
vertexcounter和aggregatefilter用于对要筛选的数据进行排序。然后使用testfilter筛选数据:
过滤数据后,将为testfilter上的每个输出端口使用attributecreator创建一个新类别。
报到亭和移民服务台都被发送到名为makepolygon的自定义转换器,该转换器使用多个几何体转换器生成多边形。登记台和安全设备被发送到boundingboxreplacer,以将几何图形简化为矩形。最后,使用applygeoinferences自定义转换器对计数器进行地理参考。
亚搏在线建筑/旋转木马数据清理工作流程
测试变压器用于从所有不同的行李提取转盘功能中仅提取行李提取转盘。然后使用attributecreator创建类别和名称。然后使用arcstroker、snapper和areabuilder为每个旋转木马创建多边形。传送带被路由到连接到计数器工作流的相同applygeoreference自定义转换器。亚搏在线最后,根据设定的时间表,国际和国内行李都使用中央行李传送带,需要添加此信息。一个reaBuilder_2还连接到建筑/公共设施数据清理工作流,以添加此计划信息。亚搏在线
建筑/柜台和建筑/旋转木马的数据清理前后。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线建筑/公共设施数据清理工作流程
中央行李提取区通过移动墙在国内和国际之间切换。维多利亚机场已经提供了使用旋转木马的时间表。
为此,为组合式旋转木马创建了两个便利设施:一个供国内使用,一个供国际使用。时间表是针对每种使用类型的适当设施。
attributekeeper只保留行李传送带名称和fme_basename属性。然后使用PointOnAreaOverlayer将行李传送带便利设施覆盖在行李传送带多边形上并合并属性。测试仪用于查找国际/国内组合旋转木马。然后使用attributecreator来设置家庭日程。offetter用于创建第二个设施,以包含使用attributecreator创建的国际日程表。最后,所有建筑/公共设施功能类型都使用applygeoferencement自定义转换器进行地理参照。
使用锚定捕捉器,安全/安全线、开口、建筑/柜台和建筑/旋转木马都被捕捉在一起。建筑/墙多边形和建筑/房间功能是其他数据捕捉到的定位点。这会把安全线和固定装置卡在装置上。
然后使用捕捉器,使用分段捕捉将安全顶点捕捉到单位边界。所有多边形功能之间的公共顶点确保在导航应用程序中查看数据时以及在向imdf写入数据时将数据重新投影到纬度/经度时,数据在视觉上对齐。
关闭基本地图时查看的快照要素
使用捕捉器,将使用分段捕捉将安全顶点捕捉到单位边界。在snaper之后,使用featuretypefilter将特征过滤回各自的类型。
一旦数据是干净的,就需要在编写之前按照imdf规范进行准备。这意味着需要向每个特征添加唯一的id,几何体类型必须正确,并且所有属性都遵循适当的命名约定。当写入IMDF时,FME写入程序自动将数据重新投影到LL84坐标系。
由于下一节的复杂性,过程描述可能会引用尚未提及的特征类型和变压器。为了清楚起见,建议在阅读时打开示例工作区。
亚搏在线准备向IMDF报告场地的工作流程
这个聚会地点是包含必须具有ID且必须是多边形的建筑的边界。
要创建场地,将使用UuidGenerator创建唯一的ID。然后使用attributecreator创建关于场地的特定属性。这些属性包括建筑物的名称、类别、网站、备用名称、小时和电话号码。设置类别时,必须遵循特定的命名约定。见苹果室内地图数据格式单元类别文档更多信息。
接下来,地址id使用featuremerger合并到场馆id上。然后使用centerpointextractor创建一个中心点。然后使用室内地图数据格式(imdf)编写器写出场地。
在FME数据检查器中查看的场馆输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF写出地址和构建的工作流
这个地址必须具有ID且必须具有空几何体的邮政地址。
要创建地址,将使用UuidGenerator创建唯一的地址ID。然后将地址id重命名为id,使用attributenamer,这是为了与场馆id合并。接下来,使用attributecreator创建address属性,这包括街道地址、地点(城市或城镇名称)、省(或州)、国家和邮政编码(或邮政编码)。然后把地址写给同一个imdf作者,作为地点。这可以通过转到writers>add feature type,然后在featuretype对话框中将featuretype名称重命名为address,并确保选择了imdf writer来轻松完成。
在FME数据检查器中查看地址的输出
这个建筑是包含在场馆内的物理建筑,必须具有ID并且必须具有空几何体。此要素类型仅存储属性信息,实际建筑多边形存储在示意图要素类型中。
使用先前创建的地址id,attributecreator用于创建建筑名称和类别。然后使用variablereriever检索用atb_surround创建的建筑id。使用centerpointextractor transformer创建一个中心点,它将作为属性存储,然后使用同一个writer将建筑写入imdf。
在FME数据检查器中查看建筑物的输出
亚搏在线准备向IMDF写入级别的工作流程
这个水平表示建筑的每一层(或楼层)。级别必须具有ID并且必须是多边形。
在特征型过滤器中,所有单元使用溶解器溶解成水平;在这种情况下,将创建三个级别。然后使用两个变量检索器,检索级别ID和建筑ID。使用StringSearcher,从fme_basename中提取级别号;这是因为每个起始的地理数据库代表一个级别(atb1、atb2、atb3)。
attributecreator用于创建特定于每个级别的属性,包括类别、级别是否在室外(是/否)、序号、级别名称和短名称。然后提取中心点并将空名称和短名称属性映射到
在FME数据检查器中查看级别的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF写入内存占用的工作流程
这个足迹是建筑物的近似多边形。封装外形必须有一个ID,并且必须是多边形。
连接到创建级别属性的AttributeCreator,使用AttributeRemover删除级别名称。然后使用TestFilter,将层次按序数(空中、地面和地下)组织起来。一个连接到空中和地面输出端口的溶解器被用来将水平面溶解成脚印。然后用一个油炸圈饼提取器来去除任何炸出的洞。然后使用一个AttributeCreator来给出航迹的类别。
接下来,将AttributeCreator连接到TestFilter上的地面输出端口,以向足迹提供地面的类别。
最后,将另一个溶解器DonutHoleExtractor和AttributeCreator连接到TestFilter上的地下输出端口,并将足迹指定为地下类别。
然后将所有三个AttributeCreators连接到UUIDGenerator,创建一个footprint_id,然后将其写入IMDF。
在FME数据检查器中查看内存占用的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF发送geofence的工作流程
一个geofence通过设置限制分隔一个或多个区域。就机场而言,这将是安检前和安检后的工作。geofence必须有一个ID,并且必须是一个多边形。
一个扇区之间的转换器被连接到创建级别属性的AttributeCreator,该属性用于通过安全线分隔单元。然后使用一个AreaBuilder为安全线两边的每一层创建新的多边形。然后使用GeometryExtactor保存几何图形;这样做可以在不影响几何形状的情况下操作属性并与其他属性合并。CenterPointReplacer用于创建一个包含每个多边形的所有属性的单点。然后使用裁剪器裁剪该点,只保留级别内的新多边形。LeftRightSpatialCalculator用于确定每个多边形落在安全线的哪一侧,这是根据fme_basename进行分组的,因此它将每个级别分隔开来。使用列表检索器对多边形进行分类;如果多边形在直线的右边,则为安全前,如果在左边,则为安全后。然后使用AttributeCreators设置类别。
最后,使用GeometryReplacer返回多边形,然后使用AttributeRemover删除任何级别特定的属性。使用两个VariableRetrievers检索id,使用UUIDGenerator创建一个geofence id。创建一个中心点,然后将geofence写入IMDF。
在FME数据检查器中查看geofence的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备写开放到IMDF的工作流程
一个开放表示房间或建筑物的入口,既可以是门,也可以是门槛。一个开头必须有一个ID,并且必须有一个作为几何图形的行字符串。
为了创建开口,UUIDGenerator被连接到FeatureTypeFilter,然后VariableRetriever被连接到创建和检索id。几何强制器连接到创建水平的溶解器;这是用来强制水平边界的开放行。然后将SpatialFilter连接到geometrycoer和VariableRetriever,以在水平边界上找到开口;这将决定开口是内部的还是外部的。然后使用两个AttributeCreators来创建行人(内部)或行人的类别。主要的(外部)。然后计算一个中点作为显示点;这是通过使用GeometryExtractor、Snipper、CoordinateExtractor和GeometryReplacer来完成的。一旦创建了显示点,就将空名称属性设置为
在FME数据检查器中打开显示的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF写单元的工作流程
一个单位表示一个房间或走廊,是一个封闭的空间。一个单位必须有一个ID并且必须是一个多边形。
UUIDGenerator用于创建ID,并连接到FeatureTypeFilter。然后使用AttributeCreator创建一个名为_predicate的属性,该属性将在SpatialRelator中使用;这是连接到VariableRetriever用于创建开口。SpatialRelator连接到UUIDGenerator, AttributeCreator和_predicate属性用于测试关系。VariableRetriever用于获取level_id。另一个AttributeCreator用于将NOTES属性复制到名为name的属性;这是每个单元的名称。创建一个中心点,将空名称属性设置为
在FME数据检查器中查看的单元的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备写舒适和锚出IMDF的工作流程
一个美化市容是一种提供方便服务的功能,如洗手间或饮水机。设施必须有一个ID,必须有一个点几何。
设施id是使用UUIDGenerator创建的,然后设施被覆盖在单元的顶部,从而使用PointOnAreaOverlayer获得单元id。然后使用AttributeCreator创建名称、类别和unit_id属性。空名称属性被设置为
在FME数据检查器中查看舒适性的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
一个锚是用于显示特定地址或不可寻址位置的指定点。锚点作为另一个特性可以继承锚点属性的点。
锚点遵循与便利设施相同的工作流程,但测试人员用于亚搏在线测试类别。任何未指定的便利设施、服务、餐饮服务或餐饮服务都被视为锚。
在FME数据检查器中查看的锚的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF填写乘员信息的工作流程
一个主人是提供商品或服务的企业所在地。这些居住者由锚代表。
确定定位点后,将重命名并创建唯一ID,然后使用AttributeValueMapper将属性重新映射到特定的IMDF类别。databasejoiner用于将包含业务信息的csv文件与锚连接起来以创建占用者。创建一个包含数据有效性的属性。modified date,然后将空属性映射到
在FME数据检查器中查看居住者的输出
亚搏在线准备向IMDF写入部分的工作流程
一个部分是为特定目的服务的区域。例如,机场有行李领取处、值机区、登机口和安检区。节必须具有ID并且必须是多边形。
AttributeValueMapper连接到FeatureTypeFilter以将单位重新映射到节类别,例如:
重新映射名称后,将使用测试仪删除没有分区类别的任何单元。然后,使用分解器为每个部分创建一个多边形来分解具有部分的单元的边界。然后使用UuidGenerator和variableRetriever创建和检索ID。使用centerpointreplacer和donutholeextractor创建中心点并删除所有多边形孔。最后,空名称属性设置为
在FME数据检查器中查看的部分的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
亚搏在线准备向IMDF写夹具的工作流程
一个夹具表示包含在可以移动或半永久的单元中的物理对象。对于本例,这将表示行李传送带或值机柜台。设备必须具有ID并且必须是多边形。
fixture在featuretypefilter之后通过使用另一个featuretypefilter来分离carousel和counters再次被过滤。测试仪用于确定夹具是非公共的还是结构的。然后,使用剪辑器剪辑出任何非公开的旋转木马部件。然后创建和检索id,并创建一个中心点。一旦空名称属性重命名为
在FME数据检查器中查看夹具的输出。背景地图平铺方式雄蕊设计,在CC 3.0是的。数据依据开放地图,在ODbL是的。
一个的关系是两个映射元素之间的关联,具有包含中间元素的选项。在本例中,这将是连接多个楼层的电梯、楼梯或自动扶梯。此外,还添加了一个横向关系来定义当中央行李传送带在国际或国内之间切换时可以移动的分区。关系必须具有ID并且必须包含空几何体。
亚搏在线准备写电梯关系到IMDF的工作流程
电梯关系首先是通过使用测试仪仅提取电梯单元来创建的。然后使用neighborfinder,通过在堆栈中创建一个id列表将电梯链接在一起。listsorter和listconcatenator按级别对电梯列表进行排序,然后创建堆栈id。然后使用DuplicateFilter移除重复堆栈。pythoncaller用于创建从列表中提取关系信息的函数。最后,使用attributecreator创建方向属性。
亚搏在线准备写楼梯和扶梯的关系到IMDF的工作流程
自动扶梯和楼梯的关系比电梯更复杂,是通过使用测试仪仅提取楼梯和自动扶梯单元来创建的。然后使用AttributeCreator设置要素类型(楼梯或自动扶梯),然后设置洞口ID。neighborfinder用于链接堆栈并创建一个id列表,就像以前对电梯所做的那样。自动扶梯方向使用AttributeValueMapper进行映射。然后列表按从下到上(楼梯或自动扶梯)或从上到下(自动扶梯)排序。然后为每个级别的唯一组合创建堆栈的副本,并将列表切片以仅覆盖这些级别及其之间的任何级别。接下来,每个堆栈副本都将转换为一个关系特征,顶部和底部的开口将作为源和目标。所有横向单元都被设置为中介。
亚搏在线准备将移动的分区关系写入IMDF的工作流程
移动分区关系根据行李传送带时间表控制人员流动。使用测试仪故障端口从楼梯和自动扶梯关系中提取分区。然后使用listexploder,使用openings列表元素展开关系。然后通过使用聚合器连接open将这些单元分组在一起。listsearchers用于搜索国际/国内行李提取的units list元素,然后进一步搜索国内行李提取,最后搜索到达大厅。然后使用属性创建器设置操作时间。最后,添加imdf属性。
一旦创建了电梯、自动扶梯、楼梯和分区的关系,就会给它们一个唯一的id,然后将其写入imdf。
在FME数据检查器中查看关系的输出
运行转换后,可以使用安全软件imdf验证页验证已完成的imdf文件,该页将通过电子邮件向您发送报告,指出任何警告或错误。亚搏在线此文件应在没有任何错误的情况下进行验证,但会出现一些警告。这些警告主要是由于线段短于规范阈值。也会有警告,功能不在建筑足迹内。这是由于封装外形检查中的坐标舍入,可以忽略。
有关IMDF验证的更多信息,请参见验证IMDF数据集文章
数据是©维多利亚机场管理局
©2019安全亚搏在线软件公司|法律