span8
span4
域是定义属性允许值的一组规则。它们用于约束数据值,以确保数据完整性。域在地理数据库中定义为唯一的实体,可以应用于地理数据库中包含域定义的任何特性类中的任何属性。
有两种类型的地理数据库域(编码域和范围域),它们都受到FME的支持。编码域本质上是多个有效值的列表,而范围域是单个允许的数值范围。
读取地理数据库时,FME有一个解析域的选项。
当选中此选项时,将添加一个名为_的附加属性
请注意: 如果可以,我们建议使用前面描述的地理数据库模板在这里。这通常比在FME特性类型中定义域更容易、更灵活。
FME能够写入现有的或创建新的地理数据库表。因此,在编写地理数据库域时,工作流需求将趋向于以下三种情况之一:亚搏在线
这些场景将主要由以下作者参数控制:
-数据类型:coded_domain / range_domain
-验证功能写入参数值:是/否
尽管有下面提到的场景,但是应该注意,使用XML Workspace文档(包含所需的域定义)作为地理数据库编写器的模板,是一种高效的、强烈推荐的编写地理数据库域的方法。有关使用模式导入XML文档的更多信息,请参见Geodatabase作家文档。
场景1:使用现有域写入现有表
在默认情况下,写入现有域字段的任何数据都按正常方式插入。由于表已经存在,它的属性将已经与所需的域相关联,因此不需要设置任何参数来定义此连接。
但是,如果希望验证传入的数据—例如,将其与域定义进行比较以确保其具有有效的属性值—则必须将写入器参数“validate Features to Write”设置为Yes。如果将验证参数设置为No,则数据将毫无错误地传递到地理数据库,尽管有些数据值可能不符合域规则。
场景2:使用现有域写入新表
在创建要使用现有域的新表时,应该为需要与域关联的属性指定数据类型coded_domain或range_domain(取决于它的类型)。然后单击属性宽度字段中的Edit按钮,并在“domain name”部分输入现有域的名称。
场景3:写入新表并创建新域
应当指出的是,我们通常建议使用ArcGIS创建和定义域,插入新功能时使用FME来关联属性或验证数据。然而,域名注册是可能的FME。的方法是作为使用现有域,直到其中一个打开编辑对话框的点是相同的。在这一点上你勾选“创建域”参数,输入一个新的域名,并确定该域的值。
需要注意的是,所提供的“验证功能写”参数设置为Yes,进入功能将自动对任何新定义的域验证。
限制
有在问候域写一些限制的。
首先,它是不可能写入到现有的表,并可以创建与现有结构域的关联或创建一个全新的结构域。这是因为这种关联在表定义包裹起来,和现有的表定义不能用FME改变。你将需要删除现有的表,为了能够做到这一点完全重新创建它。
其次,由于上述同样的原因,创建域是一次性的翻译。您将设置数据类型coded_domain / range_domain初始过程,但随后的数据负载应改回实际的数据类型(字符,整数,等)的数据类型来完成
最后,这是不可能的,以动态创建域(即域定义应执行之前手动定义,并在工作区的过程没有定义)。
下面的示例演示场景3:写入新表并创建新域。
道路(Autodesk AutoCAD DWG/DXF)
在上图中,我们看到源路AutoCAD的DWG的可视化。将受到目标地理数据库域定义的值可以在autocad_layer格式属性中可以看出。
1.阅读源数据
道要素几何是从使用的Autodesk AutoCAD的DWG / DXF源AutoCAD的DWG文件中读出读者而将受地理数据库域值将从格式属性autocad_layer读取。当添加的Autodesk AutoCAD的DWG / DXF读者,一定要工作流程选项设置为一个合并的功能类型。亚搏在线这意味着,我们只会得到一个读取功能型读取所有的源数据。
此外,点击参数按钮,并在集团3520部分,选择属性架构。
一旦阅读器已经被添加到工作空间画布,在阅读器上双击,然后选择格式属性选项卡。向下滚动,选中旁边的复选框autocad_layer。单击确定。
2.将属性映射到域代码
该AttributeValueMapper用来映射从源DWG到我们将适用于域定义域代码里的值。在AttributeValueMapper添加到画布上,并打开参数对话框。选择autocad_layer作为源属性,并输入StreetCategory作为目的地属性。输入99作为默认值,因为这将是我们将使用未知街道类型的域代码。中的参数的对话框的值映射部中,输入值,如下面的屏幕截图所示:
2.(备用)将属性映射到已解析的域值
如上所述的步骤的替代,人们可以代替使用AttributeManager,采取从源DWG文件中的值并将其映射到基于解析值的域定义的域定义。要做到这一点,添加一个AttributeManager到工作区,并打开参数对话框。重命名autocad_layer到StreetCategory_resolved - 域名的解析版本(你将需要键入StreetCategory_resolved)。
上述往往当你的工作流程方案1下瀑布(写入使用现有的域定义现有表)或方案2(使用现有的域写在地理数亚搏在线据库中的新表)是最适用的。在这两种情况下,它会被假定一个不知道包含在域定义的实际域代码,而是知道解析值。但是,创建一个域时,以及这个过程会工作。
3.编写特性并创建域
添加ESRI地理数据库(文件地理数据库)作家到工作区,复制来自读取器的模式,并指定输出地理数据库到的数据将被写入(i.e.Domains)。单击参数选项卡,然后展开高级部分。设置验证功能写为是。此设置将确保传入源数据符合我们的域定义。一旦添加,连接AttributeValueMapper的输出(或者,这取决于工作流程工作区紧随其后,AttributeManager)到地理数据库的作家。亚搏在线
在笔者双击,并在常规选项卡下,输出要素类/表输入一个更有意义的名称(即街道)。接下来,单击用户属性选项卡,并在名称下,改变autocad_layer属性StreetCategory和Type设置为coded_domain。
点击编辑按钮和编码域对话框窗口将打开。域输入一个名称(即StreetType),请选中创建域,并输入您的域定义的数据类型。最后,输入域定义的代码和解析后的值。
最后,确保From_HBlock设置为char类型。
保存并运行工作区。
利用域码的工作空间
利用解析域值的工作空间
*上述示例中使用的ESRI地理数据库(文件Geodb)读写器/编写器要求用户能够使用ArcGIS的授权版本。有关所需ArcGIS许可级别的更多信息,请参见FME地理数据库格式需要ArcGIS许可类型。
©2019安全亚搏在线软件公司法律