问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用AutoCAD Map 3D Object Data读模块

发布网友 发布时间:2022-04-24 06:26

我来回答

1个回答

热心网友 时间:2022-06-16 19:44

如何设置转换方式没有固定标准,它取决于源数据模式和目标数据的结构。

一般情况下,AutoCAD Map 3D Object Data毫无疑问是Auto CAD的三维地图对象数据。对象数据允许属性存放在数据表中,但数据结构却非常自由。在数据集中,任何特定的空间要素(或实体)都可以在不限数量的数据表(或空表)中无*地存放属性记录。

因此,FME提供了很多不同的读取模式。这样用户就有更多的选择来布局工作空间的,然后在Workbench中查看数据模式。
示例数据
以下是一些示例。这些工作空间的示例数据是一张德克萨斯州的地图,其包含州、县边界线以及许多的道路网络。

上图为示例数据。该州的边界线为黑色,县边界线为红色,道路为蓝色。参考的坐标系统为LL83。边界要素存放在“Boundaries”图层,并与“County ”和“State”数据表连接。
数据源最重要的是所有要素为线要素,县与县之间的边界线(或县和州的外边界线)为含有两条记录的单一要素——记录为县边界(或一条记录为县边界,另一条记录为州边界)。

如上图所示:特写位置。箭头所指的弯曲部分是“county”数据表中一条包含两条记录的单线;一条记录为“San Saba”县,一条记录为Lampasas县。
运行模式
这三种不同的读模式为“按实体分组”,“原关系”,和“用对象数据分组”。当将数据集增加到工作空间(或Inspector)时,在参数设置对话框中选择模式。

如上所示:生成一个新的工作空间。点击“参数设置”按钮,弹出数据对象设置对话框。

如上所示:对象数据设置对话框。在对话框顶部选择三种不同的模式。

显然,这些设置会直接影响新生成空间的版面,因此在工作空间生成以后就不能再更改读模式(或一旦读模块被添加到工作空间,就不能再更改)。
“按实体分组”模式

在创建工作空间时,对于数据集中的每一个数据图层,“按实体分组”模式会将其分为不同的类型。
数据表属性与相关的每个特性依附于要素,这种方式是一种很好的模式,用于向GIS相关的数据格式写入数据,如Mif/Mid 或Shape。但对于保留数据源模式结构,这种方式效果不好,因此如果想回写相同的数据格式,就不能使用这种方式。
然而,由于对象数据格式的巨大灵活性,需要考虑一些问题:
考虑 #1):是否每个实体(要素)包含的记录大于1,特别是在同一张表中多于1条记录——那么就可以生成表结构。例如,以下是单个要素的同一张表中包含两条记录的情况:
要素# 数据表 字段
1 TableA FieldA1, FieldA2, FieldA3
1 TableA FieldA1, FieldA2, FieldA3
输出要素的模式中会包含列表属性
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
数据源要素类A图层包含的属性:
FieldA1
FieldA2
FieldA3
FieldB1
FieldB2
FieldB3
要素类中存在的所有要素将拥有所有可能附加的属性,不管其是否为空值。

考虑 #3)因为不同的数据表包含相同字段名是可能的,因此用一个“前置表名称”的选项来区分它们。
例如,考虑一下方案:
图层 要素 # 数据表 字段
LayerA 1 TableA Field1, Field2, Field3
LayerA 2 TableB Field1, Field2, Field3
前置表选项将会确保无命名冲突字段:
TableA_Field1
TableA_Field2
TableA_Field3
TableB_Field1
TableB_Field2
TableB_Field3

如上所示:参数设置对话框的前置表选项
在我们的示例数据中,不存在表名冲突。然而模式将会有州和县字段(尽管有些要素不具有州字段),加上要素是两个县之间的边界线,因此其会有列表属性来存放这两个县的名称。
如同边界要素,道路要素也有要素类,但是没有数据,因为其没有关联的数据表。

如上所示:Workbench中的源模式。

如上所示:在FME Viewer中的数据显示了指定的列表的结构和内容。

如上所示:由于Shape数据不能接收列表结构的数据,调整工作空间,将列表属性变成用逗号分割的单个属性(可以用转换器ListConcatenator变为列表属性)。

如上所示:在输出Shape数据集中,州、县边界如图所示。

如上所示:县之间的边界如图所示。注意此处州属性为空值。

“原关系”模式
“原关系”模式将基于相同空间实体和数据库记录的对象作为单独的要素,用一个属性来标记它们作为相关的要素,每个要素类会分到各个数据层。
事实上,使用原关系数据模式对于用户来讲是最适合的。由于其空间数据和属性数据是存放在独立的表中,因此写入数据库很有用。也称此种模式为“关系”模式。此模式也适合将数据写入到特定的CAD格式,比如当属性数据和空间数据是单独存放在CAD数据中时。
在此模式中,我们没有必要担心任何“按实体分类”模式的考虑,因为分配多条记录到单一要素,仅仅会存放到数据库表要素类。类似于每个表存放一个单独的要素类,所以处理复杂的模式不会出现问题,尽管不同的表中存在同名字段,这也不会出现冲突字段。然而,在工作空间中当用户频繁地合并属性记录返回到要素中时,可能会出现。

如上所示:在示例工作空间中,将数据写入到Oracle数据库中。

如上:在“原关系”模式的初始工作空间就像这样。注意每一个图层为一个要素类,每一个图层对应一张表(CountyData,,StateData)。也要注意格式属性autocad_od_entity_key,它是标记属性数据和空间数据的标志。Layer0是所有AutoCAD数据的默认图层。

如上所示:如果没有连接Oracle数据库,就只能放到VisualLizer中查看数据。它将会显示没有用户属性的要素,但会有一个列表(autocad_map_odtable{}),加上entity key。

如上所示:该表的记录很明显是作为FME非几何要素的读取。它是与以上空间要素相关的StateData表的记录。

这是较为合适的模式,用于读取对象数据和将对象数据写入相同的格式。非几何要素的表记录可以作为一张表来写入,实体要素可以作为一个图层来写入。由于格式属性(autocad_od_entity_key)对于对象数据写模块是一样的,因此会自动连接。举个例来说,执行重投影而不希望改变格式,或执行表的连接或分割。

“用对象数据分组”模式

“用对象数据分组”模式几乎与“按实体分组”刚好相反,不需要获取每个图层的要素类,而是得到每张表的要素类,进入工作空间的数据是每张表的要素类的每条记录。正是由于此原因,每个对应很多条记录的AutoCAD实体会在数据中重复出现很多次。
例如,下面的情况,一个要素连接两条记录:
要素 # 数据表 字段
1 TableA FieldA1, FieldA2, FieldA3
1 TableB FieldB1, FieldB2, FieldB3
读模块就会输出两个要素:
要素1 (Attributes = FieldA1, FieldA2, FieldA3)
要素1 (Attributes = FieldB1, FieldB2, FieldB3)
这样的处理在FME中是很低效的,因为实际上会出现很多实体,需要处理很多次。另一方面来讲,当对于简单数据集中的单一实体存在多种地理对象(比如数据中的州县边界线)的情况,这又是一个很适用的模式。
然而,数据表要素类只是问题的一部分。对于没有关联记录的实体(即没有对象数据)也需要输出,因此新的工作空间中也有包含无对象数据实体的要素类。进一步来说,用户可能在一个图层上疑惑哪些需要读入而哪些需要忽略,因此让图层上的所有对象都输出,无论它们是否已经通过对象数据要素类输出。
这样明显可能会出现重复对象并做无用功,但是如同我们的开发人员所讲,这并不是无效的,它能够在处理目前的AUTODESK_MAP对象数据读模块时,确保向后兼容。

如上所示:“用对象数据分组”模式向工作空间中添加数据。注意每张表(CountyData, StateData)的要素类都包含属性,每个图层(Roads, Boundaries)的要素类都不包含属性——尽管一些实体可能关联了对象数据——用数据表要素类来区分它们。

如上所示:在该例中,如果不希望重复输出边界数据,将该要素类设为无效。

如上所示:输出结果在此处有两个要素;州边界和县边界。但这是正确的,因为它们被写入到了两个要素类。事实上还可以:

同上: ...添加转换器AreaBuilders 到工作空间,它可以:

同上:...分割每个要素类的面要素。如果没有重复要素,就不能达到此结果。
该读模式对于读取对象数据类型再回写到相同格式的数据集也是适用的(例如执行坐标系统的重投影)。重复要素并不是问题,因为写对象数据时,含有重复实体关键字的空间要素会被丢弃。输出结果可能是一个实体,但是包含很多条记录——满足该规则:每一行只匹配一个实体。然而我们仍然推荐使用“原关系模式”。

Q+A
Q)FME的哪个版本可以使用该功能?
A)FME 2008以及更新的版本

Q)为什么如今的安装程序会询问Autodesk RealDWG许可协议?
A)是的。我们使用AUTOCAD_OD 读模块之下的Autodesk RealDWG 2008 SDK。用户需要接受该协议才能获得AUTOCAD_OD格式的使用权。

Q)是否可以使用这种格式读取非对象的DWG/DXF数据集?
A)可以。除非有具体原因,不然我们还是建议用AutoCAD DWG/DXF (aka ACAD)读模块和写模块。

Q)什么级别的FME许可才能使用AUTOCAD_OD?
A)就像AutoCAD DWG/DXF,FME Base Edition中可以使用新格式。

Q)新的对象数据读模块适用于UNIX系统吗?
A)否,仅仅适用于Microsoft Windows平台(大概是因为SDK)。

Table Of Contents

Q)当执行打散操作时,具有属性数据的块要素会发生什么?
A)哦-这是复杂的。整个块可以只含有一条记录或块中的每个实体只包含同一条记录,或两者皆是。如果块参照关联对象数据,它就会附加到块的插入点。如果块参照被分成了多个部分,并且每个部分关联了对象数据,那么块就会被打散,块的每部分关联的对象数据将会附加到所有由块的各部分生成的要素。通常在执行对象数据转换时,用户不想打散块,因为这样会导致entity/record keys的冲突。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? C语言按模块的方式对文件进行读写,一般针对什么文件? 六年级上册英语苏教版模块三到模块四的单词怎么读 模块 用英语怎么说 “模板”“模块”中的“模”读音是什么? 模样 模型 模范 劳模 模块哪个读音不同 vivozl参数 房产继承要办理哪些手续?? vivox20和vivoz1分别多厚,差多少 继承房产过户需要什么手续 房屋继承及过户流程 vivoz1机身厚度多少 房产继承过户需要什么手续?房产继承过户所需费用 怎么办理房产继承更名过户手续 房产继承过户流程有哪些 房产继承过户手续办理流程是什么 房产继承过户需要什么手续办理 法院判决继承房产过户流程 继承房产过户手续如何办理 怎么把微信内容打印出来? 法院判决书房产继承怎么过户 SD卡读写模块的操作功能 易语言模块读内存数据问题 S7-200PLC第二个模块Q0.7在程序里应该怎么读? arduino怎么读取模块ttl的数据 青岛星联航空货运代理有限公司怎么样? 广西壮族自治区专用版三年级英语课本上册第六单元第一模块怎么读 青岛顺翔飞航空货运代理有限公司怎么样? 广西壮族自治区专用版三年级英语课本上册第四单元第二模块怎么读 三菱PLC特殊模块读写指令缓冲区BFM地址是怎么定义的呢? 青岛中远海运航空货运代理有限公司怎么样? RFID模块怎么读写id卡 青岛机场顺达货运有限公司怎么样? macbook air开机后黑屏 Rfid读写模块有什么作用? 青岛道合道通航空货运代理有限公司怎么样? 同等学力加试科目是什么意思? 怎样阅读一个python程序,很多模块不知道怎么读 源诚(青岛)国际货运有限公司怎么样? 山西省比较有名的旅游景点,你了解多少? 用这种sd卡读写模块可不可以做mp3?