西班牙
斯潘4
建立翻译没有标准的方法,这完全取决于模式源数据和输出数据集中所需的结构。
如果通常情况下是这样,则对于autocad map 3d对象数据来说是双重正确的。。对象数据允许将属性存储在数据表中,但在处理数据结构的方法上特别自由,数据集中的任何特定空间特征(或实体)可以在任何数量的数据表(或根本没有)中拥有任意数量的属性记录。
有鉴于此,我们在fme中采用的方法是提供许多不同的读取模式,以便用户可以更广泛地选择工作区布局来查看workbench中的数据模式。
下面是一些示例工作区。这些工作区的示例数据集是德克萨斯州的地图。该地图包括州和县的边界以及代表州公路网的一些特征。
示例数据集的说明。
州轮廓为黑色,县界线为红色,道路为蓝色。数据坐标系为纬度/经度NAD83。
边界要素存储在名为“边界”的图层上,并具有到名为“县”和“州”的数据表的链接。
道路要素存储在称为道路的图层上。道路网仅为空间数据,没有属性或对象数据表。
关于源数据的重要一点是,所有特征都是直线几何,两个县(或一个县和州轮廓线)之间的每个边界是一个具有两个数据记录的单一特征-一个县(或一个县和一个州)。
特写镜头这个特别曲折的部分是一行,在县数据表中有两条记录;一个给圣萨巴县,一个给兰帕萨县。
三种不同的阅读模式是按实体分组“,”原始关系,和按对象数据分组“。
将源数据集添加到工作区(或查看器)时,将在“设置”对话框中选择模式。
以上:正在创建新工作区。单击“设置”按钮以获取“对象数据设置”对话框
以上:对象数据设置对话框。注意对话框顶部三种不同模式的选择。
显然,因为这些设置对新工作区的布局有直接的影响——在创建工作区之后,不可能改变读取模式(或者一旦将其添加到现有工作区中,就改变了阅读器的布局)。
“按实体分组”模式使用数据集中每一层数据的一个特征类型。
与每个要素相关的数据表属性都附加到要素,这使得将数据写入到与gis相关的格式(如mif/mid或shape)中成为非常有用的模式。这是不使用保留原始模式结构良好的模式,所以是不是去,如果你想要写回到同一格式的方法。
然而,由于对象数据格式很大的灵活性,一些注意事项需要进行。
考虑# 1):如果每个实体(功能)拥有多个记录(尤其是同一表中的多个记录),则创建列表结构。
例如,鉴于此设置有两个记录在同一个表中的单个功能:
特征数据表字段
1个表A FieldA1,FieldA2,FieldA3
1个表A FieldA1,FieldA2,FieldA3
...输出功能将包括它的模式列表属性:
TableAData {0} .FieldA1
TableAData {0} .FieldA2
TableAData {0} .FieldA3
TableAData {1} .FieldA1
TableAData {1} .FieldA2
TableAData {1} .FieldA3
考虑# 2):因为不同的功能可能在不同的数据表中拥有记录,所以源功能类型的属性列表将是详细的,并包含所有可能的属性。
例如,鉴于此设置:
图层要素数据表字段
层1. 1 TableA的FieldA1,FieldA2,FieldA3
层1. 2表B FieldB1,FieldB2,FieldB3
......为层1.源要素类型将包括属性:
FieldA1
FieldA2
FieldA3
FieldB1
FieldB2
FieldB3
即退出此功能类型的所有功能都将附加所有可能的属性,无论它们是否包含值。
考虑# 3):因为不同的数据表可能拥有相同的字段名,所以可以选择在所有属性前面加上表名来区分它们。
例如,鉴于此设置:
图层要素数据表字段
层1. 1 TableA的字段1,字段2,字段3
层1. 2表B字段1,字段2,字段3
...的前置选项将确保不冲突的领域命名的,并提供:
TableA_Field1
TableA_Field2
TableA_Field3
TableB_Field1
TableB_Field2
TableB_Field3
以上:设置对话框中的prepend选项。
在我们的例子中数据集,没有表名的冲突,但该模式将同时拥有州和县字段(即使不是所有的功能都会有状态记录),加上功能,是两个县之间的边界将有一个列表属性 store the names of the two counties.
如你所料,道路特征有一个特征类型,但由于他们没有属性数据没有相关的数据表。
以上:工作台中的源架构
以上:数据(在FME查看器中)显示特定功能的列表结构和列表内容。
以上:因为形状数据集不接受列表结构中的数据,所以我们的最终工作区被调整为将fme列表转换为逗号分隔的属性(使用ListConcatenator变压器)。州/县边界绕过此步骤,因为它们不包含列表。
以上:因此,在输出形状数据集中,州/县边界功能如下所示。
以上:…一个县/县边界特征看起来是这样的。注意空状态属性的存在。
“原始关系”模式本质上吐出来的是空间实体和数据库记录作为单独的功能,每个都有一个属性链接,将它们标记为相关的。
为每个数据层提供一种功能类型,为每个对象数据表提供另一种功能类型。
实际上,这是对用户的原始数据,以利用在哪个方式最适合自己。此模式是用于写入数据库格式,其中的空间数据是特别有用的和属性数据被保存在单独的表中(这就是为什么我们称之为“关系”模式,因为像一个“关系”数据库它是由一个主相关的表表示 key) and also for writing data to certain CAD formats where attributes are traditionally held separately to the spatial features.
在这种模式下,我们不必担心任何“集团通过实体”模式的考虑,因为分配给单个功能的多个记录只会导致通过数据库表功能类型的多个记录。同样,每个表获得一个单独的功能型所以有过详细的方案没有问题,也没有场甚至在不同的表具有相同的字段名的冲突。然而,这些问题当然会,重新出现,如果用户随后试图将属性记录合并回到工作区中的功能。
以上:在此示例工作区中,我们选择将数据写入Oracle数据库。
以上:在“原始关系”模式下,初始工作区如下所示。请注意,每个图层(边界、道路)和每个表(countyData、stateData)都有一个要素类型。还要注意格式属性autocad_od_entity_key,它是在空间数据和属性表之间充当查找键的属性。注意:layer0是所有autocad数据库中存在的默认图层。
以上:如果没有要连接的Oracle数据库,则只能将数据路由到检查器。这将显示一个没有用户属性,但有一个表列表(autocad_map_odtable{})的功能,该实体在其中有记录,并且有一个实体键可以匹配这两个。
以上:表记录显然是作为fme非几何特征读取的。这是一个StateData表记录,它与上述空间特性相关。
这也是你想用它来读取对象数据,并将其写回到同一格式的数据集的模式。表(非几何)记录将得到回写为一个表,而实体(几何)功能会得到回写为一个层。由于格式属性(autocad_od_entity_key)是同一个的对象数据的作家寻找,链接会自动进行。这样的任务的一个例子是在重新投影的数据从一个坐标系到另一个,而想改变格式,或谁愿意加入或分表的用户。
“组按对象数据”模式是“实体”模式的几乎相反,在而不是获取每一个层特征类型,每个数据都有一个特性类型的表,和进入工作区数据是在每个表中的每个记录中的一个特征。
由于这个原因,附加到多个记录每个的AutoCAD实体将在数据出现多次。
例如,鉴于此设置中,其中一个特征是与两个记录:
特征数据表字段
1个表A FieldA1,FieldA2,FieldA3
1表B FieldB1,FieldB2,FieldB3
...读者会输出两个特点:
特征1(属性= FieldA1,FieldA2,FieldA3)
特征1(属性= FieldB1,FieldB2,FieldB3)
正如你可以看到这是要在FME低效的,因为你可以最终处理多次在源数据的实际实体的数量。在另一方面这是当(如在我们的样品数据集)的单个实体代表多于一个的地理特征(在我们的情况下,两个县和国家边界)来使用的有用模式。
但是,数据表功能类型仅一半的图片。实体没有相关记录(即没有对象数据)需要被输出也,所以一个新的工作区还具有包含非对象数据实体的每一层的特性类型。此外,由于读取层上的某些实体(不带对象数据的实体)和忽略某些实体(带对象数据的实体)可能会让用户感到困惑,因此将输出该层上的所有要素,无论它们是否已通过对象数据要素类型输出。
这显然会导致更多重复的功能和效率低下,但正如我们的开发人员告诉我的那样,这样做是为了清晰而不是高效,并确保与以前的autodesk_map object data reader向后兼容。
以上:我们的示例数据被添加到工作空间的“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)读/写器。
问)使用AUTOCAD_OD需要什么级别的FME许可证?
一)与autocad dwg/dxf一样,fme基本版也提供了这种新格式。
问)这个新的对象数据读取器在UNIX上可用吗?
一)不,只在微软的windows平台上[同样,可能是因为sdk的缘故]。
问)当我引爆属性数据时,会发生什么情况来阻止它们?
一)啊-这很复杂。块可以对整个块有一条记录,也可以对块中的每个实体(部分)有一条记录,或者两者都有!如果块参照具有关联的对象数据,则它将附着到块的插入点。如果块参照的零件具有关联的对象数据,并且块被分解,则与块零件关联的对象数据将附着到为块零件创建的所有特征上。通常,在执行对象数据>对象数据转换时,您不太可能希望分解块,因为可能存在实体/记录键冲突。
?2019安全亚搏在线软件公司|合法的