斯潘8
斯潘4
以上视频涵盖了使用地理数据库关系类简介,以及本文中介绍的示例。
地理数据库附件是将附加信息以特定文件(即图像,一个PDF格式,或文本文档)。As theArcGIS documentationmentions:
“例如,如果你有一个代表建筑物的特征,您可以使用附件添加从多个角度拍摄的建筑物的多张照片,以及包含建筑契约和税务信息的PDF文件。”
您可以将一个或多个文件附加到功能,然后使用ArcGIS中的查询工具检索信息。
*本文中使用/提到的ESRI文件geodatabase reader/writer需要获得许可的Arcgis版本。有关所需ArcGIS许可级别的更多信息,please seeFME地理数据库格式所需的ARCGIS许可证类型。
附件和FME
Because attachments are handled by a relationship class,FME能够很容易地创建这种连接。However,附件表已预先在Arcgis中创建。关键是读取要附加到属性中的文件内容,并将该属性写入附件表中的数据字段。关系类必须事先在Arcgis中创建。关键是读取要附加到属性中的文件内容,并将该属性写入附件表中的数据字段。
可以使用attributeFileReader转换器或数据文件读取器将文件的内容读取到属性中。对于数据文件阅读器,be sure to set the reader parameter "Read Whole File at Once" to Yes.reader can be used to read the contents of a file into an attribute.对于数据文件阅读器,确保将读卡器参数“立即读取整个文件”设置为“是”。
接下来的练习将演示如何在添加附件时写入关系类。
附件.zip
Note: the template files provided in the download will allow us to write to a geodatabase that already has a feature class,附件表,关系建立起来了。通常,这必须事先在Arcgis中设置。使用XML模板文件时,the workspace will only be able to run once,所有将来的翻译都需要从编写器中删除模板。
在下图中,我们看到了包含Fire Hall的源GML文件的可视化,亚搏国际在线官网社区中心,以及数据检查器中的库数据。
消防大厅,亚搏国际在线官网社区中心,地理标记语言库(GML)
在下图中,我们看到了系统路径的可视化,其中照片和PDF文件将用作附件。
Paths to photograph and pdf file attachments in the PointsOfInterest folder.
对于这个练习,已提供开始工作区,.
You'll immediately notice that the workspace is already partially set up.源和目标架构对象已经就位,可以进行读/写操作。还有一些转换器已经到位,可以映射读写器模式。唯一缺少的是建立关系所需的变形金刚——添加它们是本练习的主要任务。However,我们将得到一些预定义的变压器的帮助,这些变压器已经设置并复制到书签中。
预定义的变压器
1.下载附件文件夹
As mentioned above,无法通过FME创建关系类。像这样的,在运行翻译之前,必须确定功能之间的关系。对于这个演示,已提供具有所需空功能类和已定义关系的目标地理数据库(请参阅下载部分中的attachments.zip)。Download and extract this zip folder as it not only contains the needed destination Geodatabase,它还包含必要的文件,这些文件将在工作流期间用作附件。亚搏在线
2。读取源数据
消防大厅,亚搏国际在线官网社区中心,使用GML阅读器从感兴趣的源点地理标记语言文件中读取库几何。
目录和文件路径名读取器用于读取将用作附件的图像和PDF文件的系统路径。虽然读卡器已经作为开始工作区的一部分添加,make sure that the source parameter for each reader is pointing to the proper dataset.
3.设置源属性以匹配目标架构
Some additional work is required in order to modify attributes for each of the Source Datasets so that they match the destination schema.
为了消防大厅,this means renaming the following attributes with the AttributeManager:
输入属性 | Output Attribute | 属性值 | 行动 |
名字 | 说明 | 重命名 | |
霍尔数 | 名字 | 重命名 | |
地址 | 街道 | 重命名 |
Rename FireHalls attributes
为了亚搏国际在线官网社区中心,this means modifying the following attributes with the AttributeManager:
输入属性 | Output Attribute | 属性值 | 行动 |
中心名称 | 名字 | 重命名 | |
中心地址 | 街道 | 重命名 | |
中心URL | 网站 | 重命名 | |
文档名称 | 说明 | 重命名 | |
PostalCode | 未知的 | 设定值 |
重命名社区中心亚搏国际在线官网属性
为了图书馆,this means modifying the following attributes with the AttributeManager:
输入属性 | Output Attribute |
属性值 | 行动 |
库名称 | 名字 | 重命名 | |
图书馆地址 | 街道 | 重命名 | |
库URL | 网站 | 重命名 | |
文档名称 | 说明 | 重命名 | |
PostalCode | 未知的 | 设定值 |
重命名库属性
4。添加关系相关属性
需要告诉FME特性参与了一个关系类。要做到这一点,我们将使用一个属性创建器变压器。This transformer can be found in the "Transformers to Use" bookmark.鉴于存在两个数据流(兴趣点和附件),需要两个attributeCreator实例。
Copy/move this transformer into both of the light brown bookmarks entitled "4.Add Relationship related attributes".对于兴趣点(消防厅,亚搏国际在线官网CommunityCentres和图书馆功能类型),将所有三个现有的attributeManager变压器连接到新的attributeCreator。对于附件文件的路径(路径功能类型),只需将目录和文件路径名读取器连接到第二个attributeCreator。
添加和连接预定义的attributeCreator后的工作区。
打开其中一个属性创建器的属性对话框,您将看到它所做的一切就是设置一个名为geodb_feature_has_relationships的格式属性。属性,geodb ou feature ou has ou relationships set to yes,是所有需要告诉FME这些特性参与关系。
属性geodb_feature_的_relationships设置为yes
每一组功能还需要一个ID号。Assuming that one does not already exist,我们可以用计数器变压器创建一个。再一次,每一组功能需要一个实例,“Transformers to use”书签中已经有一个预定义的Transformer。从书签中移动/复制计数器转换器,并在上一步的每个attributeCreator转换器之后连接一个实例。Inspect the Counter parameters and you'll find it is creating an attribute called geodb_oid.
计数器创建ID属性,地质数据库
5。连接架构
在这一点上,功能已准备好写入地理数据库,因此,可以创建从计数器变压器到现有属性名称变压器和兴趣点附加功能类型的连接。
完整的数据流
打开attributeranamer_-poitype变压器的参数对话框。这里我们需要将fme_feature_type属性重命名为poitype,确保功能名称的原因是源功能在属性中维护。In this case,我们会有消防大厅,亚搏国际在线官网社区中心和图书馆仍然存在。参数设置如下:
6。添加关系相关属性
我们现在需要定义两组特性之间的关系,我们通过创建起点和终点ID号来实现这一点。再一次,每一组功能需要一个实例,and there are already two pre-defined transformers we can use.移动两个属性名称变压器(即从“Transformers to use”(变压器使用)书签变为黄色,书签居中。从感兴趣的地方(消防厅,亚搏国际在线官网社区中心和图书馆的功能类型)与属性名称来源相对应,另一个从路径计数器到attributerenamer_目的地:
添加关系相关属性后的工作区。
检查每个属性名称的参数。You'll see that each is renaming the newly created ID to either an Origin or Destination ID.这就是FME用来编写关系类的方法。
7.建立关系信息
添加FeatureMerge Transformer。This is how the relationship will be built.将源属性名称连接到请求者端口,将目标属性名称连接到供应商。打开功能合并的参数对话框。将requestor属性设置为name,将supplier属性设置为path_rootname。
这样做的结果是,在附件的文件名(路径_rootname)与感兴趣点功能(名称)的名称匹配的位置合并数据。
例如,如果我有一个兴趣点叫做“大高雕像”(来源ID=13),并且有一个文件名为“big tall machine.jpg”(目的ID=22),那么结果将是一个单独的功能(“大高雕像”,Origin ID = 13,目标ID=22),定义这些功能之间的关系。
在写这个给关系类时,它将定义PointsOfInterest和PointsOfInterest_附加表中这些功能之间的关系。
另一个需要注意的问题是,对于特定的兴趣点,存在多个附件。So,在FeatureMerge参数对话框中,change "Process Duplicate Suppliers" to Yes and enter Docs as the list to create.
特征合并参数
现在,当工作区运行时,对于具有多个附件的功能,multiple files are stored in a list,就像这样:
Docs{0}.path_filename
Docs{0}.geodb_rel_destination_oid
docs 1.path _文件名
文档1.geodb_rel_destination_oid
我们现在需要做的是将这个列表分解成单独的特性——这样每个附件都有一个关系记录——这是通过一个列表分解器转换器完成的。在FeatureMerge之后插入一个ListExploder变压器,并将FeatureMerge的合并输出端口连接到ListExploder的输入。打开“列表分解器参数”对话框,选择“文档”作为要分解的列表:
ListExploder parameters
发送给FME编写器的每个特性都应该有一个指示几何类型的属性。在大多数情况下,您——用户——不需要知道这个属性,也不需要设置它。However,在这里,这些功能当前将标记为点功能(即我们需要告诉FME它们实际上是非几何的,关系特征。So,在ListExploder之后添加一个attributeCreator转换器,并将attributeCreator连接到ListExploder的elements端口。
打开attributeCreator的参数对话框,并使用它创建一个名为geodb_type的新属性。It should be given a value of geodb_relationship.这将告诉FME将这些作为关系特征写入地理数据库。
列表分解器后面的attributeCreator参数。
现在可以将attributeCreator_3连接到PointsOfInterest_uuAttachrel编写器功能类型。
8.Setup the fields in the Attachment Table
At the moment we're writing a relationship between features,但是目标特性(附件)当前只是对文件的引用,不是文件本身。我们需要使用这些引用来读取附件文件的内容。A pre-defined section of workspace will do this for us.查找“在附件表中设置字段”书签。
检查这些变压器在做什么。attributeCopier正在进行一些基本的模式映射,而StringConcatenator正在设置一个属性来告诉Arcgis正在附加的文件类型。最后,the AttributeFileReader reads the content of the attachment,使用从原始路径读取器获取的文件名。
将此书签的内容连接到主工作区(即连接到附件计数器和编写器功能类型(PointsOfInterest_uuu Attach))之间。移除与兴趣点的任何现有连接。
9。写入关系数据和附件
在这一点上,we should check (in the Navigator window) that the transaction type is set to Edit Session.
注意:提供的模板文件将允许我们写入已经具有功能类的地理数据库,附件表,关系建立起来了。通常,这必须事先在Arcgis中设置。使用XML模板文件时,the workspace will only be able to run once,所有将来的翻译都需要从编写器中删除模板。
Relationship classes must be written to in an edit session.现在保存并运行工作区(确保Arcgis和Data Inspector已关闭以避免任何数据锁定问题)。当您检查arcgis中的PointsOfInterest特性(记住它们在名为city的特性数据集中)时,使用HTML弹出工具查询它们。
使用HTML弹出工具查询arcgis中的PointsOfInterest功能
Writing Geodatabase Relationship Classes
我尝试过这个教程,我用我们的数据对它进行了测试,错误的照片被附加到了功能上。any idea what could the issue be,是否有工作流的排序顺序。亚搏在线
任何帮助都将不胜感激
谢谢你
您好!@adi
Apologies for the delay in getting back to you.我个人还没有测试建立基于Globalid的关系。I suspect if this functionality is supported it will be in FME 2019.
在数据和附件混淆的情况下,这表明您的两个功能的连接配置不完全正确。如果您可以尝试使用单个附件及其目标功能进行测试,并尝试让他们正确地加入(这就是如何填充关系)来解决这个问题。这发生在特征合并中。Also to note,存在什么类型的关系类?As outlined in the following article,某些关系类不需要写入关系表。请参见此处的关系背景部分:https://knowledge.亚搏在线safe.com/articles/28340/working-with-geodatabase-relationship-classes-atta.html网站
如果仍然有问题,if you are able to post a sample of your data/workspace I could take a look.
?2019安全亚搏在线软件公司|合法的