span8
span4
设置翻译没有标准的方法,这完全取决于模式源数据和输出数据集中所需的结构。
如果这在一般情况下是正确的,则AutoCAD Map 3D对象数据的正确性加倍.对象数据允许将属性存储在数据表中,但它对数据结构的处理方法特别灵活,数据集中的任何特定空间特征(或实体)都可以在任意数量的数据表中拥有任意数量的属性记录(或根本没有属性记录)。
鉴于此,我们在FME中采用的方法是提供许多不同的读取模式,以便用户有更广泛的工作区布局选择来查看Workbench中的数据模式。
下面是一些示例工作区。这些工作区的示例数据集是德克萨斯州的地图。该地图包括州和县的边界以及代表州公路网的一些特征。
示例数据集的说明。
州的轮廓是黑色的,县界线是红色的,道路是蓝色的。数据的坐标系统为Lat/Long NAD 83。
边界特征存储在一个名为“边界”的层上,并与名为“县”和“州”的数据表相连。
道路特征存储在一个称为道路的层中。道路网络仅是空间数据,没有属性或对象数据表。
源数据的重要的事情是,所有特性线的几何图形,两县之间,每个边界(或一个县和国家大纲)是一个功能,两个数据记录——一个为每个县(或一个县和一个用于状态)。
特写镜头。这个特别曲折的部分是一条单行线,在县数据表中有两条记录;一个是圣萨巴县,一个是兰帕萨县。
三种不同的阅读模式是集团的实体", "原始关系“、和”按对象数据分组".
将源数据集添加到工作区(或查看器)时,将在“设置”对话框中选择模式。
以上:创建一个新的工作空间。单击设置按钮以获得对象数据设置对话框
以上:对象数据设置对话框。注意对话框顶部的三种不同模式的选择。
显然,由于这些设置对新工作区的布局有直接的影响,所以在工作区的创建之后(或者在阅读器被添加到现有工作区的时候改变它的布局)是不可能改变读取模式的。
“按实体分组”模式将使用数据集中的每一层数据都有一种特性类型。
与每个功能相关的数据表属性都附加到该功能上,这使其成为将数据写入与GIS相关格式(如Mif/Mid或Shape)的一种非常有用的模式。这不是用来保存原始模式结构的好模式,也是不如果你想用同样的格式写回信,这是一个方法。
但是,由于Object Data格式具有很大的灵活性,因此需要考虑一些问题。
考虑(1):当每个实体(特性)拥有多条记录——特别是在同一个表中有多条记录——则创建一个列表结构。
例如,给定在同一个表中具有两条记录的单个功能的设置:
特性#数据表字段
1 TableA FieldA1, FieldA2, FieldA3
1 TableA FieldA1, FieldA2, FieldA3
...输出特性将在其模式中包含一个list属性:
TableAData{0}。FieldA1
TableAData{0}。FieldA2
TableAData{0}。FieldA3
TableAData{1}。FieldA1
TableAData{1}。FieldA2
TableAData{1}。FieldA3
考虑#2)由于不同的特性可能拥有不同数据表中的记录,源特性类型的属性列表将是冗长的,包括所有可能的属性.
例如,给定以下设置:
层特性#数据表字段
LayerA 1 TableA FieldA1, FieldA2, FieldA3
LayerA 2 TableB FieldB1, FieldB2, FieldB3
…LayerA的源要素类型将包括以下属性:
FieldA1
FieldA2
FieldA3
字段B1
字段B2
字段B3
即,所有退出该特性类型的特性将有所有可能的属性附加,无论它们是否包含一个值。
考虑# 3):因为不同的数据表可能具有相同的字段名,所以可以在所有属性前面加上表名来区分它们。
例如,给定以下设置:
层特性#数据表字段
LayerA 1 TableA Field1, Field2, fiel3
第2层表B字段1、字段2、字段3
…prepend选项将通过提供以下内容确保字段命名不冲突:
TableA_Field1
表2
TableA_Field3
表B_字段1
表2
表3
以上:设置对话框中的前置选项。
在我们的示例数据集,没有冲突的表名,然而模式均州和县字段(尽管不是所有的功能将状态记录),加上功能两县之间的界限将会有一个属性列表存储两县的名称。
如您所料,道路特性有一个特性类型,但没有属性数据,因为它们没有相关的数据表。
以上:工作台中的源架构
以上:数据(在FME查看器中)显示特定功能的列表结构和列表内容。
以上由于Shape数据集不接受列表结构中的数据,我们的最终工作区被调整为将FME列表转换为逗号分隔的属性(使用列表串联器变压器)。州/县边界绕过此步骤,因为它们不包含列表。
以上:所以在输出的Shape数据集中,州/县的边界特征是这样的。
以上:...县与县的边界是这样的。注意,存在空的State属性。
“Raw Relational”模式本质上是将空间实体和数据库记录作为单独的特征提取出来,每个特征都有一个属性链接,将它们标记为相关的。
为每一层数据提供一种特性类型,为每个对象数据表提供另一种特性类型。
实际上,这是供用户以最适合他们的方式使用的原始数据。这种模式对于将空间数据和属性数据保存在单独的表中的数据库格式的写入特别有用(这就是为什么我们称之为“关系”模式,因为像“关系”数据库一样,它是一个由主键关联的表表示),也用于将数据写入特定的CAD格式,在这些格式中,属性通常与空间特征分开保存。
在这种模式下,我们不必担心“按实体分组”模式的任何考虑因素,因为分配给单个功能的多个记录只会通过数据库表功能类型产生多个记录。类似地,每个表都有一个单独的功能类型,因此过度详细的模式没有问题,即使不同的表具有相同的字段名,也不会出现字段冲突。但是,如果用户随后尝试将属性记录合并回工作区内的功能,这些问题当然会再次出现。
以上:在这个示例工作区中,我们选择将数据写入Oracle数据库。
以上:在“Raw Relational”模式下,初始工作区如下所示。注意,每个层(Boundaries, Roads)和每个表(CountyData, StateData)都有一个特性类型。还要注意格式属性autocad_od_entity_key,该属性充当空间数据和属性表之间的查找键。注:Layer0是所有AutoCAD数据库中的默认层。
以上:没有Oracle数据库连接,您只能将数据路由到检查器。这将显示一个没有用户属性的特性,但有一个表列表(autocad_map_odtable{}),其中这个实体有记录,加上一个能够匹配这两个实体的实体键。
以上:表记录显然是作为FME非几何特征读取的。这里有一个与上述空间特性相关的StateData表记录。
这也是您想要使用的模式来读取对象数据并将其写回相同格式的数据集。表(非几何)记录将作为表被写回,实体(几何)特性将作为层被写回。因为格式属性(autocad_od_entity_key)与对象数据写入器所寻找的属性相同,所以链接将自动生成。这种任务的一个例子是将数据从一个坐标系统重投影到另一个坐标系统,而不需要更改格式,也不需要用户连接或分割表。
“按对象数据分组”模式几乎与“实体”模式相反,即不是每层获取一种要素类型,每个数据都有一个特性类型表,进入工作区的数据是每个表中每个记录的一个特性。
因此,每个附加到多个记录的AutoCAD实体将在数据中出现多次。
例如,给定这样的设置,其中一个特性链接到两个记录:
特性#数据表字段
1 TableA FieldA1, FieldA2, FieldA3
1 TableB FieldB1, FieldB2, FieldB3
...读者将输出两个特性:
Feature1 (Attributes = FieldA1, FieldA2, FieldA3)
Feature1 (Attributes = FieldB1, FieldB2, FieldB3)
正如您所看到的,在FME中这将是低效的,因为您最终可以处理源数据中实际实体数的许多倍。另一方面,当一个实体代表多个地理特征(在我们的例子中是县和州边界)时(就像在我们的样本数据集中),这是一种有用的模式。
然而,数据表特性类型只是问题的一半。没有相关记录的实体(即没有对象数据)也需要输出,所以新的工作空间也有包含非对象数据实体的每一层的特性类型。此外,因为读取某一层上的一些实体(没有对象数据的实体)和忽略某一层上的一些实体(有对象数据的实体)可能会让用户感到困惑,所以该层上的所有特性都将被输出,无论它们是否已经通过对象数据特性类型输出。
这显然会导致更多重复的特性和效率低下,但正如我们的开发人员告诉我的,这个选择是为了清晰而不是效率,并确保与以前的AUTODESK_MAP对象数据读取器向后兼容。
以上:我们的示例数据以“按对象分组数据”模式添加到工作区。注意包括属性的每个表(CountyData、StateData)的要素类型,以及每个图层(道路、边界)的要素类型;这些属性不包括属性(即使某些实体可能具有相关的对象数据),以便与对象数据表功能区分。
以上因为在这个例子中,我不希望获得两次边界数据,我可以简单地禁用该特性类型。
以上:毫不奇怪,输出在此位置显示两个功能;这是州边界和县边界。但这没关系,因为它们在工作区中被划分,并被写入两种不同的功能类型。事实上这很有帮助,因为我可以。。。.
以上: ...添加AreaBuilders到我的工作空间,这给了我…
以上: ...为每个特征类型单独的区域特征。如果没有重复的功能,我就做不到这一点。
如果要读取对象数据并将其写回相同格式的数据集(例如执行坐标系重投影),也可以使用此读取模式。重复的要素不是问题,因为在写入对象数据时,将丢弃具有重复实体关键点的空间要素。结果将是一个实体,但多个记录-符合规则,即每一行只匹配一个实体,并为您提供刚刚开始的内容!不过,我们仍然建议将“原始关系”作为用于此场景的模式。
问)我可以在哪个版本的FME中找到这个功能?
一)FME2008或更新版本。
问)这就是安装程序现在询问Autodesk RealDWG许可协议的原因吗?
一)是的。我们在AUTOCAD_OD读取器下面使用Autodesk RealDWG 2008 SDK。这是必需的,用户必须接受此协议才能使用AUTOCAD_OD格式。
问)我应该使用这种格式来读取非对象DWG/DXF数据集吗?
一)你可以,但除非你有特殊的原因,建议继续使用AutoCAD DWG/DXF(又名ACAD)读取/写入这些文件。
问)使用AUTOCAD_OD需要什么级别的FME许可证?
一)和AutoCAD DWG/DXF一样,这个新格式在FME基础版中可用。
问)这个新的对象数据读取器在UNIX上可用吗?
一)不,只在微软Windows平台上(又一次,可能是因为SDK的缘故)。
问)分解具有属性数据的块要素时,会发生什么情况?
一)啊,这很复杂。块可以有一个记录为整个块或一个记录的每个实体(部分)在块-或两者!如果块引用有关联的对象数据,它将被附加到块的插入点上。如果块引用的部分具有关联的对象数据,并且块被分解,与块部分关联的对象数据将被附加到为块部分创建的所有特性上。通常在进行对象数据>对象数据转换时,您不太可能想要爆炸块,因为可能会有实体/记录键的冲突。
©2019 S亚搏在线afe Software Inc |法律