span8
span4
还有就是去建立一个翻译没有标准的方式,这一切都取决于架构的是在输出数据集所需的源数据和结构。
如果是一般的真,那么它是加倍的的AutoCAD Map 3D对象数据真实。对象数据允许属性被存储在数据表中,但在它的方法的数据结构特别自由,和一个数据集内的任何特定的空间特征(或实体)可以在任何数量的数据表的具有任何数量的属性记录(或无 at all).
鉴于此,我们采取在FME的方法是提供多个不同的读取模式,使得用户具有工作区的布局的更广泛的选择以查看数据模式在工作台。
一些例子的工作区跟随。对于这些工作区的样本数据集是地图德克萨斯州的。该地图包括州和县界外加一些代表国家路网功能。
示例数据集的说明。
国家大纲是黑色,县界红色和道路blue.The数据的坐标系纬度/龙NAD 83。
边界特征存储在一个名为层边界和有联系的所谓县和状态数据表。
路的功能是存储在名为道路层上。路网是仅空间数据,没有属性或对象的数据表。
有关源数据,重要的是,所有的功能都线的几何形状,和两个县(或一个县和国家轮廓)之间的边界是有两个数据记录的一个功能 - 每个县(或一个县 and one for the state).
一个特写镜头。这个特别曲折的部分是县数据表中有两个记录的单行;一个是圣萨巴县,一个是兰帕斯县。
这三种不同的阅读模式“集团的实体“”生关系“和”按对象分组数据”。
的模式的选择是在设置对话框制成当源数据集添加到工作区(或到Viewer)。
以上:创建一个新的工作区。单击“设置”按钮以获得“对象数据设置”对话框
以上:对象数据设置对话框。注意对话框顶部三种不同模式的选择。
很明显 - 因为这些设置对新的工作空间的布局产生立竿见影的效果 - 这是不可能的工作区创建之后改变阅读模式(或者改变读者的布局,一旦它被添加到现有工作区)。
该集团通过实体模式建立与工作区数据集中每一层数据的一个特征类型。
与每个特征数据表属性附接到所述特征,这使得该用于将数据写入到GIS有关的格式如米夫/中或形状的非常有用的模式。要使用这种模式来保存原始的模式结构并不好,也不太好不如果你想写回相同的格式。
但是,由于对象数据格式具有很大的灵活性,因此需要进行一些考虑。
考虑# 1):如果每个实体(特性)拥有多条记录—特别是同一表中的多条记录—则创建列表结构。
例如,给定在同一个表中有两个记录的单个特性的设置:
特性#数据表字段
1个表,1个表,2个表,3个表
1个表,1个表,2个表,3个表
…the output feature will include a list attribute on its schema:
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
FieldB1, FieldB2, FieldB3
…the source feature type for LayerA will include the attributes:
FieldA1
FieldA2
FieldA3
FieldB1
FieldB2
FieldB3
即。退出此功能部件类型的所有功能部件都将附加所有可能的属性,无论它们是否包含值。
考虑# 3):因为不同的数据表可能具有相同的字段名,所以可以在所有属性之前加上表名,以区分它们。
例如,给定这样的设置:
层特性#数据表字段
LayerA 1 TableA Field1, Field2, Field3
LayerA 2 TableB Field1, Field2, Field3
…the prepend option will ensure non-conflicting field naming by giving:
TableA_Field1
TableA_Field2
TableA_Field3
TableB_Field1
TableB_Field2
TableB_Field3
以上:设置对话框中的prepend选项。
在我们的示例数据集,没有冲突的表名,然而模式均州和县字段(尽管不是所有的功能将状态记录),加上功能两县之间的界限将会有一个属性列表存储两县的名称。
正如您可能期望的那样,道路特性有一个特性类型,但是没有属性数据,因为它们没有相关的数据表。
以上:工作台中的源模式
以上:数据(在FME查看器中)显示特定功能的列表结构和列表内容。
以上:因为形状数据集不接受列表结构中的数据,所以我们的最终工作区进行了调整,将FME列表转换为逗号分隔的属性(使用aListConcatenator变压器)。州/县边界绕过这一步,因为它们不包含列表。
以上:因此,在输出形状数据集中,州/县边界特征是这样的。
以上:…and a County/County boundary feature looks like this.请注意空状态属性的存在。
“原始关系”模式本质上是将空间实体和数据库记录作为单独的特性,每个特性都有一个属性链接将它们标记为相关的。
为每个数据层提供一种功能类型,为每个对象数据表提供另一种功能类型。
实际上,这是用户可以以最适合他们的方式使用的原始数据。这种模式对于编写数据库格式尤其有用,空间数据和属性数据保存在不同的表中(这就是为什么我们称它为“关系”模式,因为就像一个“关系”数据库相关表表示主键)和写入数据对某些传统CAD格式属性在哪里举行单独的空间特性。
在这种模式下,我们不必担心“Group By Entity”模式的任何问题,因为分配给单个特性的多个记录只会通过数据库表特性类型产生多个记录。类似地,每个表都有一个单独的特性类型,因此不会出现过于冗长的模式问题,即使不同的表具有相同的字段名,也不会出现字段冲突。但是,如果用户随后试图将属性记录合并回工作区中的特性,那么这些问题当然会重新出现。
以上:在这个示例工作区中,我们选择将数据写入Oracle数据库。
以上:在“原始关系”模式下,初始工作空间是这样的。注意,每个层(边界、道路)都有一个特性类型,每个表(CountyData、StateData)也有一个。还要注意format属性autocad_od_entity_key,该属性充当空间数据和属性表之间的查找键。注意:Layer0是所有AutoCAD数据库中的默认层。
以上:没有要连接的Oracle数据库,您只能将数据路由到检查器。这将显示一个没有用户属性的特性,但是有一个表列表(autocad_map_odtable{}),其中这个实体有记录,加上一个实体键来匹配这两个表。
以上:表记录显然被读取为FME的非几何特性。这是一个StateData表记录,它与上述空间特性相关。
这也是您希望用于读取对象数据并将其写入相同格式的数据集的模式。表(非几何)记录将作为一个表被写回,实体(几何)特性将作为一个层被写回。因为format属性(autocad_od_entity_key)与对象数据写入器查找的是同一个属性,所以会自动生成链接。此类任务的一个例子是,在不希望更改格式的情况下将数据从一个坐标系统重新投影到另一个坐标系统,或者希望连接或拆分表的用户。
“按对象数据分组”模式几乎与“实体”模式相反,因为它不是为每层获取一个特征类型,每个数据都有一个特性类型工作空间中的数据是每个表中的每个记录的一个特性。
因此,每个附加到多个记录的AutoCAD实体将在数据中出现多次。
例如,在这个设置中,一个特性链接到两个记录:
特性#数据表字段
1个表,1个表,2个表,3个表
1 TableB FieldB1, FieldB2, FieldB3
…the reader will output two features:
特性1(属性= FieldA1、FieldA2、FieldA3)
特性1(属性= FieldB1, FieldB2, FieldB3)
如您所见,这在FME中是低效的,因为您最终可能要处理许多倍于源数据中实际实体的数量。另一方面,当单个实体表示多个地理特征(在我们的示例数据集中)时,这是一种有用的模式。
然而,数据表的特性类型只是其中的一半。没有相关记录的实体。没有对象数据)也需要被输出,所以一个新的工作空间也有包含非对象数据实体的每一层的特性类型。此外,由于在一个层上读取一些实体(没有对象数据的实体)和忽略一些实体(有对象数据的实体)可能会让用户感到困惑,所以该层上的所有特性都将被输出,不管它们是否已经通过对象数据特性类型输出。
这显然会导致更多的重复特性和低效率,但是正如我们的开发人员告诉我的,这个选择是为了清晰而不是效率,并确保与以前的AUTODESK_MAP对象数据阅读器的向后兼容性。
以上:我们的示例数据被添加到工作空间的“Group by Object data”模式。注意每个表(CountyData、StateData)的特征类型(包括属性)和每个层(道路、边界)的特征类型;这些不包括属性(尽管一些实体可能具有相关的对象数据),以将它们与对象数据表特性区分开来。
以上:由于-在这个例子中-我不希望得到边界数据两次,我可以简单地禁用该功能类型。
以上:不出所料,该位置的输出显示两个特性;这个州的边界和一个县的边界。但这没关系,因为它们在工作空间中被划分为两种不同的功能类型。事实上,这很有帮助,因为我可以……。
以上:…add AreaBuilders to my workspace, which gives me...
以上:…separate area features for each feature type.如果没有重复的特性,我就无法做到这一点。
如果希望读取对象数据并将其写回相同格式的数据集(例如执行坐标系统重投影),也可以使用此读取模式。重复的特征不是问题,因为在编写对象数据时,具有重复实体键的空间特征会被丢弃。结果将是一个实体,但有多个记录——符合每行只匹配一个实体的规则,并且只提供您开始时的内容!但是,我们仍然建议使用“原始关系型”作为该场景的模式。
问)我能在什么版本的FME中找到这个功能?
一)FME2008或更新。
问)这就是安装程序现在询问Autodesk RealDWG许可协议的原因吗?
一)是的。我们在AUTOCAD_OD阅读器下面使用Autodesk RealDWG 2008 SDK。这是必需的,用户必须接受此协议才能使用AUTOCAD_OD格式。
问)我应该使用这种格式来读取非对象DWG/DXF数据集吗?
一)可以,但是除非您有特定的理由,否则建议继续使用AutoCAD DWG/DXF(即ACAD) reader/writer来处理这些文件。
问)使用AUTOCAD_OD需要什么级别的FME许可证?
一)与AutoCAD DWG/DXF一样,这种新格式也可用于FME基本版。
问)这个新的对象数据读取器在UNIX上可用吗?
一)不,只在Microsoft Windows平台上(可能也是因为SDK)。
问)当我引爆属性数据时,会发生什么情况来阻止它们?
一)这很复杂。块可以对整个块有一个记录,也可以对块中的每个实体(部分)有一个记录——或者两者都有!如果块引用具有关联的对象数据,则将其附加到块的插入点。如果块引用具有具有关联对象数据的部分,并且块被分解,那么与块部分关联的对象数据将被附加到为块部分创建的所有特性上。通常,在进行对象数据>对象数据转换时,您不太可能想要爆炸块,因为可能存在实体/记录键的冲突。
©2019安全亚搏在线软件公司|法律