span8
span4
以上视频涵盖了理论涵盖介绍如何使用地理数据库关系类,以及本文所涉及的示例。
地理数据库附件是将附加信息以特定文件(即图像、PDF或文本文档)。随着ArcGIS文档提到:
“例如,如果你有一个代表建筑物的功能,你可以使用附件来添加从多个角度拍摄的建筑物的多张照片,以及包含建筑物契约和税务信息的PDF文件。”
您可以将一个或多个文件附加到某个特性,然后使用ArcGIS中的查询工具检索信息。
*本文中使用的/提到的ESRI文件Geodatabase reader/writer需要ArcGIS的授权版本。有关所需ArcGIS许可级别的更多信息,请参见FME地理数据库格式需要ArcGIS许可类型。
附件和FME
因为附件是由关系类处理的,所以FME能够轻松地创建这种连接。但是,附件表是在ArcGIS中创建的。关键是读取要附加到属性中的文件内容,并将该属性写入attachments表中的数据字段。关系类必须事先在ArcGIS中创建。关键是读取要附加到属性中的文件内容,并将该属性写入attachments表中的数据字段。
可以使用AttributeFileReader转换器或数据文件阅读器将文件内容读入属性。对于数据文件读取器,请确保将读取器参数“一次读取整个文件”设置为Yes。reader可用于将文件的内容读入属性。对于数据文件读取器,请确保将读取器参数“一次读取整个文件”设置为Yes。
接下来的练习将演示如何在添加附件时写入关系类。
attachments.zip
注意:下载中提供的模板文件将允许我们向一个已经有特性类、附件表和关系设置的地理数据库写入。通常,这必须事先在ArcGIS中设置。当使用XML模板文件时,工作空间将只能运行一次,以后所有的翻译都需要从编写器中删除模板。
在下面的图像中,我们可以在数据检查器中看到包含消防厅、社区中心和图书馆数据的源GML文件的可视化。亚搏国际在线官网
使用地理标记语言(GML亚搏国际在线官网)的消防局、社区中心、图书馆
在下面的图像中,我们可以看到系统路径的可视化,其中有将用作附件的照片和PDF文件。
在PointsOfInterest文件夹中拍摄和pdf文件附件的路径。
对于本练习,提供了一个初始工作区。
您将立即注意到工作区已经部分设置好了。源模式对象和目标模式对象已经就绪,可以进行读写操作。还有一些转换器已经准备好映射Reader和Writer模式。唯一缺少的是建立关系所需的转换器—添加它们是本练习的主要任务。然而,我们将得到一些预定义的转换器的帮助,它们已经被设置并复制到书签中。
预定义的变形金刚
1.下载附件的文件夹
如上所述,不能通过FME创建关系类。因此,在运行翻译之前,有必要确定特性之间的关系。对于这个示例,已经提供了带有所需的空特性类和已定义关系的目标地理数据库(请参阅下载部分中的attachments.zip)。下载并解压缩此zip文件夹,因为它不仅包含所需的目标地理数据库,还包含将在工作流期间用作附件的必要文件。亚搏在线
2.阅读源数据
使用GML阅读器从感兴亚搏国际在线官网趣的地理标记语言文件源点读取消防厅、社区中心和图书馆几何图形。
目录和文件路径名阅读器用于将系统路径读取为附件的图像和PDF文件。虽然阅读器已经作为开始工作区的一部分添加了,但是要确保每个阅读器的源参数都指向正确的数据集。
3.设置源属性以匹配目标模式
为了修改每个源数据集的属性以使它们与目标模式匹配,需要进行一些额外的工作。
为FireHalls,这意味着使用AttributeManager重命名以下属性:
输入属性 | 输出属性 | 属性值 | 行动 |
的名字 | 描述 | 重命名 | |
HallNumber | 的名字 | 重命名 | |
地址 | 街 | 重命名 |
重命名FireHalls属性
为亚搏国际在线官网CommunityCentres,这意味着使用AttributeManager修改以下属性:
输入属性 | 输出属性 | 属性值 | 行动 |
CentreName | 的名字 | 重命名 | |
CentreAddress | 街 | 重命名 | |
CentreURL | 网站 | 重命名 | |
DocumentName | 描述 | 重命名 | |
PostalCode | 未知的 | 设置值 |
重命名Comm亚搏国际在线官网unityCentres属性
为库,这意味着使用AttributeManager修改以下属性:
输入属性 | 输出属性 |
属性值 | 行动 |
LibraryName | 的名字 | 重命名 | |
LibraryAddress | 街 | 重命名 | |
LibraryURL | 网站 | 重命名 | |
DocumentName | 描述 | 重命名 | |
PostalCode | 未知的 | 设置值 |
重命名库属性
4.添加关系相关属性
FME需要被告知这些特性参与了一个关系类。为此,我们将使用AttributeCreator转换器。此变压器可在“变压器使用”书签中找到。如果有两个数据流(兴趣点和附件),就需要AttributeCreator的两个实例。
复制/移动这个转换器到两个浅棕色的书签中,标题为“4”。添加关系相关属性”。对于感兴趣的点(壁炉、社区中心和图书馆的特性类型),将所有三个现有的Attri亚搏国际在线官网buteManager转换器连接到新的AttributeCreator。对于附件文件的路径(路径特性类型),只需将目录和文件路径名阅读器连接到第二个AttributeCreator。
添加并连接预定义的AttributeCreator之后的工作空间。
打开其中一个attributecreator的properties对话框,您将看到它所做的全部工作是设置一个名为geodb_feature_has_relationships的格式属性。将geodb_feature_has_relationships属性设置为yes,就可以告诉FME这些特性参与了关系。
属性geodb_feature_has_relationships设置为yes
每一组功能还需要一个ID号。假设一个还不存在,我们可以用一个反向转换器创建一个。同样,我们需要每个特性集有一个实例,在“使用的转换器”书签中已经有一个预定义的转换器。从书签中移动/复制计数器转换器,并在上一步中的每个AttributeCreator转换器之后连接它的一个实例。检查计数器参数,您会发现它正在创建一个名为geodb_oid的属性。
创建ID属性geodb_oid的计数器
5.连接模式
此时,特性已经准备好写入地理数据库,因此您可以创建从计数器转换器到现有的AttributeRenamer转换器和pointsofinterest_attach特性类型的连接。
完整的数据流
打开AttributeRenamer_POIType转换器的参数对话框。这里,我们需要将fme_feature_type属性重命名为POIType,这样做的原因是为了确保在属性中维护源特性。在这种情况下,我们仍然会有壁炉、社区中心和图书馆。亚搏国际在线官网参数设置如下:
6.添加关系相关属性
现在我们需要定义这两组特性之间的关系,我们通过创建源ID号和目标ID号来实现这一点。同样,每个特性集需要一个实例,而且已经有两个预定义的转换器可供使用。移动两个AttributeRenamer变压器(即AttributeRenamer_Origin和AttributeRenamer_Destination)从“变形器使用”书签变成黄色中间的书签。从兴趣点(消防厅、社区中心和图书馆的特性类型)到AttributeRenamer_Origin进行复制连接,从路径计数器到Attribu亚搏国际在线官网teRenamer_Destination进行复制连接:
添加关系相关属性后的工作区。
检查每个AttributeRenamer的参数。您将看到每个都将新创建的ID重命名为原始ID或目标ID。FME将使用它来编写关系类。
7.建立关系信息
添加一个特性更强的转换器。这就是建立关系的方式。将原始属性搪瓷器连接到请求者端口,将目标属性搪瓷器连接到供应商。打开FeatureMerger的参数对话框。将Requestor属性设置为Name,将Supplier属性设置为path_rootname。
这样做的结果是,数据被合并在附件的文件名(path_rootname)利息功能(名称)的点的名称相匹配。
例如,如果我有兴趣点被称为“大高像”(产地ID = 13),并有一个名为“大高Statue.jpg”(目的地ID = 22),那么结果将是一个单个特征(“大高像”,起源ID = 13,目的地ID = 22),它定义这些功能之间的关系。
在写这关系类,这将确定在PointsOfInterest和PointsOfInterest_ATTACH表这些功能之间的关系。
另一个悬而未决的问题采取的护理是有足够理由的特定兴趣点多个附件的情况。所以,虽然仍处于FeatureMerger参数对话框,改变“过程重复供应商”为Yes并输入文档的列表来创建。
FeatureMerger参数
现在,当运行工作区时,与多个附件的功能,多文件存储在一个列表,像这样:
文档{0} .path_filename
文档{0} .geodb_rel_destination_oid
文档{1} .path_filename
文档{1} .geodb_rel_destination_oid
我们现在需要做的是爆炸这个名单成独立的特征 - 以便有每个附件的关系记录 - 这与ListExploder变压器完成。插入FeatureMerger后ListExploder变压器和FeatureMerger的合并输出端口连接到ListExploder的输入端。打开ListExploder参数对话框,选择文件{}作为列表爆炸:
ListExploder参数
这被发送到一个FME作家的每个要素应具有指示几何类型的属性。在大多数情况下,你 - 用户 - 永远需要了解这个属性,不需要进行设置。然而,在这里将这些功能目前标记为点要素(即兴趣点),我们需要告诉FME他们实际上非几何,关系的特点。因此,ListExploder后面加一个AttributeCreator变压器和AttributeCreator连接到ListExploder的元素端口。
打开AttributeCreator的参数对话框,并用它来创建一个名为geodb_type新的属性。应当给予geodb_relationship的值。这将告诉FME写这些的地理数据库关系的特点。
列表爆炸器后面的AttributeCreator参数。
现在,您可以在AttributeCreator_3连接到PointsOfInterest__ATTACHREL作家特征类型。
8.设置附件表中的字段
目前,我们正在写特征之间的关系,但目标特征(附件),目前只是一个文件的引用,而不是文件本身。我们需要使用这些引用来读取附件文件内容。工作区的预定义的部分会为我们做到这一点。寻找书签“设置在附件表中的字段”。
检查一下这些变压器在做什么。该AttributeCopier做一些基本的架构映射而StringConcatenator是设置一个属性,告诉有关文件的类型ArcGIS的附着。最后,读属性数据的附件的内容,使用从原始路径阅读器获得的文件名。
此书签的内容连接成主工作区(即到附件计数器和写入特征类型(PointsOfInterest__ATTACH))之间的连接。删除任何现有的连接PointsOfInterest__ATTACH。
9.编写关系数据和附件
在这一点上,我们应该检查(Navigator窗口),交易类型设置为编辑会话。
注意:提供的模板文件将允许我们向一个已经有特性类、附件表和关系设置的地理数据库写入。通常,这必须事先在ArcGIS中设置。当使用XML模板文件时,工作空间将只能运行一次,以后所有的翻译都需要从编写器中删除模板。
关系类必须在编辑会话被写入。现在保存和运行工作区(确保的ArcGIS和数据检查被关闭,以避免任何数据锁定的问题)。当您检查在ArcGIS中PointsOfInterest功能(还记得他们是在要素数据集被称为市)与HTML弹出式工具对它们进行查询。
PointsOfInterest功能在ArcGIS查询与HTML弹出工具
嗨@adi
很抱歉给你回复晚了。我个人还没有测试过建立基于GlobalID的关系的关系。我怀疑如果这个功能被支持,它将在FME 2019。
就数据和附件的混合而言,这意味着您的两个功能部件的连接没有完全正确地配置。如果您可以尝试并测试单个附件及其目标特性,并尝试让它们正确地连接(这就是填充关系的方式),那么问题就会得到解决。这发生在FeatureMerger中。还要注意,这里显示的是什么类型的关系类?如下面的文章中介绍,一些关系类不需要写入关系表。在这里看到的关系背景部分:https://knowledge.亚搏在线safe.com/articles/28340/working-with-geodatabase-relationship-classes-atta.html
如果仍然有问题,如果你能来发表您的数据的采样/工作区,我可以来看看。
©2019安全亚搏在线软件公司法律