15.采用通用数据转换平台(FME)进行

dgn-dwg数据转换的探讨


严晓华 张 岳

(浙江省第二测绘院)



摘 要

  本文介绍采用通用数据转换平台FME将MicroStation的dgn数据格式转换到AutoCAD下的dwg数 据格式的方法,并就dgn数据到AutoCAD的转换作一些探讨。

关键字
  FME 数据转换

引 言
  目前省1:1万基础地理信息数据采集、编辑以及入库均采用Bently的MicroStation平台,数据 格式为dgn格式。但许多规划、城建部门和土地管理部门等用户单位都要求提供AutoCAD下的dwg格 式的数据,所以需要经常将dgn数据转换到AutoCAD的dwg数据,FME作为一个通用数据转换平台,在不同数据格式之间相互转换的功能非常强大,因此,基于FME的dgn数据到AutoCAD转换的研究很有 必要。

  采用通用数据转换平台(FME)进行dgn-dwg数据转换的目的是将我局采用的Mapstation2001数据生产平台编辑生产的dgn数据方便、无损的转换到AutoCAD的dwg数据格式,提供给用户使用。基于FME的数据转换研究将改变以往数据转换复杂且转换后数据零碎、线形和cell被打散的现象,保证数据的完整性和可使用性,并实现批处理,提高转换效率和质量。


技术方案
  FME作为一个通用数据转换平台,在不同格式数据之间相互转换功能非常强大,本文介绍使用FME通用数据转换平台,编写语义映射程序文件,建立dgn数据类型与AutoCAD数据类型各类要素的对应关系,通过建立的对应关系来对应源数据和目标数据的各要素类型,从而达到dgn数据到AutoCAD数据转换的目的。

1.AutoCAD下符号库线形库的建立
  为保证转换后数据的完整性以及数据使用的方便,需要在AutoCAD环境下建立与dgn数据相对应 的符号库和线形库以及字体类型。不同的比例尺需要建立各自不同的符号库线形库以及字体类型。这 样转换的数据采用AutoCAD环境下的符号线形,保证了数据的完整性和可识别性。同时在AutoCAD下 建立各个比例尺的模板文件,模板文件应包含全部的符号和线形以及字体,并按结果数据的要求设置好分层。

2.对应关系数据库的建立
  FME通用数据转换平台在数据转换时需要建立源要素到目标要素的对应关系,包括要素颜色、层 次、线形类型(或cell名称)、线形宽度(或cell比例)、字体类型和大小以及其他属性信息的对应。对于不同的转换需要建立不同的对应关系数据库。

  下面以1:10000转换为例,说明对应关系数据库的建立。数据库采用access的mdb数据库,分 别建cell到block对应表、color对应表、font对应表、layer对应表、line(线形)对应表、 linewidth(线宽)对应表。

  各对应表内容如下:



  cell到block对应表:

  color对应表:


  font对应表


  layer对应表:


  linetype(线形)对应表:

  linewidth(线宽)对应表:


  line代码对应表:


  由对应关系数据库里各个对应表的内容可以知道,各要素的对应关系是可以人为控制的,修改各个对应表里面的内容如层、颜色以及线宽等的对应设置,就可以得到不同的转换结果。对于不同比例尺或者不同要求的数据转换,可通过建立或修改不同的对应关系数据库即可达到目的。

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的无损转换。