由对应关系数据库里各个对应表的内容可以知道,各要素的对应关系是可以人为控制的,修改各个对应表里面的内容如层、颜色以及线宽等的对应设置,就可以得到不同的转换结果。对于不同比例尺或者不同要求的数据转换,可通过建立或修改不同的对应关系数据库即可达到目的。
3.编写语义映射程序
对应关系数据库为数据转换提供要素对应关系,在FME通用数据转换平台下需要编写语义映射程 序文件,来实现要素对应关系。FME提供专门的程序语言,简单方便,程序文件不需编译,文件后缀
为*.fme,可以使用任何文本编辑器编辑,函数简单易用,易于掌握。
程序按照要素类型来读取源数据,然后按照类型分别处理各类要素,处理时需要指定AutoCAD模 板文件。程序语句如下:
……
DWG_TEMPLATEFILE "*****.dwg"
……
程序通过读取数据库各个表内容得到源数据与目标数据的对应关系,使用@Relate函数来实现, 并使用@SQL函数处理未在对应表中找到对应的要素。对于未在对应表里定义对应关系的要素,标示出来,然后在目标数据中采用特殊符号或者特定线形以及颜色层次,便于查看和修改。程序对于cell到block的处理实现语句如下:
……
Relate TABLE_LOCATION cell2block "dyb"
Relate TABLE_DEF cell10k DATABASE
DATABASE_SERVER_TYPE ODBC
DATABASE_USER_NAME ""
DATABASE_PASSWORD ""
DATABASE_NAME ""
cellname char(8)
blockname char(8)
Relate RELATION_DEF cell_block 1:1
TABLE cell2block
UNIQUE(cellname)
JOIN cellname TO igds_cell_name
TRANSFER blockname TO block_name
SQL look4cell SERVER_TYPE ODBC SERVER_NAME "dyb"
FACTORY_DEF * TestFactory
INPUT FEATURE_TYPE *
igds_type igds_cell
@SQL(look4cell, @Concatenate("SELECT count(*) as
Expr1000 from cell12block where cellname = '", &igds_cell_name,
"'"), extended_data_list{})
TEST &extended_data_list{0}.Expr1000 == 0
OUTPUT PASSED FEATURE_TYPE unlink
OUTPUT FAILED FEATURE_TYPE link
FACTORY_DEF * TeeFactory
INPUT FEATURE_TYPE link
igds_type igds_cell
OUTPUT FEATURE_TYPE link
@Relate(cell_block, Read)
……
线形、文本等要素的处理与cell到block的处理类似。按照类型得到各类要素的对应关系后,程 序按照对应关系来对应源数据和目标数据,结束转换,实现语句:
……
IGDS link
igds_type igds_cell
block_name %block_name
igds_rotation %igds_rotation
cadcolor %cadcolor
dwglayer %dwglayer
DWG "*"
autocad_entity autocad_insert
autocad_attributes $(_ATTRKIND)
autocad_block_name %block_name
autocad_rotation %igds_rotation
autocad_color %cadcolor
@FeatureType(%dwglayer)
……
4.程序批处理设计:
FME提供通用数据转换界面FME Universal Translator,用户需选择编写的fme文件,然后选择源数据,进行转换。可以进行批处理,但比较繁琐,对于不熟悉FME的用户不是很方便。因此需要更
方便的程序界面,进行不同比例尺的数据转换操作以及批量处理的能力。FME提供编写批处理文件*. bat在DOS下进行批处理的功能,用户可以编写批处理文件,将大批量的数据转换采用命令行的方式写入批处理文件,然后在DOS窗口下运行。因此可以编写程序自动生成批处理文件来达到批处理的目的。
5.转换前数据准备及结果数据的检查
Autocad和MicroStation作为两个不同的数据采集平台,其各自不同数据元素的定义格式和方式以及功能方面的差异使得两者的数据转换不能做到完全一致的对应。譬如MicroStation的自定义线形的功能要强于Autocad,某些复杂的线形在Autocad下不能直接定义;在3D下Autocad的线形显示也不如MicroStation;这些差异要求我们在转换前必须对数据进行一些处理。
转换数据前需保证dgn数据为2D,若为3D,要将其转为2D文件,否则转换后的AutoCAD数据将
不能显示线形。Dgn数据里的复杂线形在AutoCAD下不能定义,因此需进行打散处理。
在转换过程中,程序将在对应表里找不到对应关系或者不符合转换要求的要素特别标示在转换后的AutoCAD数据中,对于在AutoCAD模板文件或者对应表里未定义对应关系的块,在AutoCAD数据中以特定的块来表示,在AutoCAD模板文件或者对应表里未定义对应关系的线以特定的线表示,在AutoCAD模板文件或者对应表里未定义对应关系的字体以特定的字体表示,这些特定的块、线、字体
放在特定的层,这样用户可以查看被错误标示的要素,检查是否数据错误或者对应关系表错误,并修改。
结 论
采用FME来进行数据转换,转换结果数据较以前采用MicroStation本身的转换功能转换的数据零碎的情况有根本改善,不仅保证数据的完整性和可使用性,且转换效率也有很大提高,能够进行大批量的自动处理。但仍有不足之处,对于复杂的在AutoCAD下无法直接定义的线形采用打散后再转出,这样就影响了数据的完整性和质量,所以还有待商酌,在以后的改进中可以考虑将其用特定层色转出后在AutoCAD下编写程序生成复杂线形。从而实现复杂线型从dgn到dwg的无损转换。
|