基于FME的SHP与CASS属性数据转换的研究
- 格式:doc
- 大小:29.50 KB
- 文档页数:5
基于FME的SHP与CASS属性数据转换的研究
本论文主要介绍了FME的转换机制及CASS属性数据的存储方式,研究了如何利用FME的语义转换机制解决SHP与CASS属性数据相互转换中的问题。以某地籍数据为例,建立基于FME的SHP与CASS属性数据转换模型,为地籍数据共享和数据建库提供解决方案。
标签:FME CASS 数据转换SHP
近年来,在各地地理信息化系统建设的过程中,CASS软件和ARCGIS软件运用较为普遍。前者是南方公司基于CAD开发的数据采集软件,数据格式为dwg,制图功能强大,在测量及数据采集市场上占有较大份额;后者是ESRI公司的地理信息管理方案,主要矢量数据格式是.shp,拥有强大的空间分析和数据统计能力,成为各地信息化建设的主流平台。由于各自的特点,这两种软件分别广泛运用于外业测量单位和各地、市国土单位的信息中心,两者数据格式的转换就成为了地理信息系统建设中最为重要的一环。数据转换主要包括空间数据的转换和属性数据的迁移。当前,空间数据的转换,也就是点、线、面、曲线、圆弧等图形元素的转换已经能够通过相关平台很好的完成,但是属性数据的迁移还很难做到无损迁移[1]。本文就是通过FME这一工具,研究SHP与CASS属性数据的相互转换,为数据共享和数据建库提供解决方案。
1CASS属性结构介绍
南方CASS是基于CAD二次开发的地形、地籍成图软件,由于其制图功能强大,操作简单,在测绘行业有着广泛的运用。CASS的图形数据和属性数据是按照一定的数据结构经过特殊的压缩记录在dwg文件当中的[2]。CASS数据不按照层类型严格划分要素的几何类型,几何要素的扩展属性信息存储在单个几何实体的扩展属性(XDATA)中,它是附加在图形要素上的一组数据块,一个CASS 空间实体能够存储64k大小的扩展属性[3]。CASS的扩展属性在存储过程中没有字段名的概念,它是通过不同的注册用户名将多条属性存放在XDTA中,各条数据互不影响。利用CAD的扩展工具Expresstools中xdlist可以查看CASS中数据的存储情况,以某一宗地的数据为例,如下:
* Registered Application Name:SOUTH
* Code 1000,ASCII string:300000
* Registered Application Name:QLR_QLRMC
* Code 1000,ASCII string:王胜强
* Registered Application Name:QLR_DJH
* Code 1000,ASCII string:0010040071000
* Registered Application Name:TDZL
* Code 1000,ASCII string:洪山镇郑桥村
第一条记录的注册名为“SOUTH”,其值为“300000”,表示的是宗地在CASS 中的编码;第二条记录的注册名为“QLR_QLRMC”(權利人名称),其值为“王胜强”;第三条记录的注册名为“QLR_DJH”,其值为“0010040071000”。其它属性数据也是按照这种结构存储在CASS的XDATA中。
2FME介绍
FME(Feature Manipulate Engine)是加拿大Safe Software公司的一套空间数据转换方案,现在已经支持超过300种数据格式的转换,不仅支持主流的空间数据格式转,还可以通过开发组件增加新的自定义数据格式,现在已经广泛用于空间数据整理方面[3]。FME不同于以往的单一数据格式转换,不只是一个封闭式的输入、输出接口,而是基于语义的转换方式。在语义转换模式下,用户可以通过自己的意愿编辑和修改数据,使之成为新的数据元素[5]。FME在转换过程中,通过视图的方式读取源数据和写入目标数据,在源数据和目标数据间建立映射关系,并且可以通过FME提供的一些函数工具,对空间数据和属性数据在转换过程中进行一些编辑和干预,使之达到数据转换的目的,FME数据转换模型如图1所示。
3CASS与SHP属性数据转换技术路线
FME包含了大量的数据结构,其中包括了CAD与SHP的数据结构和模型[6]。因此基于CAD开发的CASS数据可以通过FME的语义转换方式,达到其属性数据与SHP属性数据相互无损转换的目的。本文讨论的CASS与SHP属性数据转换包括两个方面,一个方面是CASS属性数据向SHP的转换;另一方面是SHP属性数据向CASS数据转换。因为FME无法直接支持CASS数据,所以在CASS属性数据向SHP数据转换的过程中,要通过曝露属性的方式来解析CASS属性数据;同样,在SHP属性数据向CASS数据转换的过程中要在CAD 的扩展属性中创建注册运用名,写入相应字段名和属性数据,使得最后成果能被CASS软件识别。
4CASS与SHP属性数据相互转换,以某地籍宗地数据为例
4.1CASS属性数据转SHP数据,解析CASS属性数据
由于CASS将实体的属性存储在扩展属性(XDATA)中,FME对CASS属性数据无法直接解析,而是通过extended_data{N}.application_name和extended_data{N}.string{0}这样两组字段来读取CASS的属性数据(N代表自然数),通过FME的浏览模块FME Universal View我们可以方便查询到FME读取
CASS属性的方式,以某一宗地为例如图2:
如图2所示,extended_data{N}.application_name代表了CASS属性中的一个字段名,紧接着的字段extended_data{N}.string{0}代表了相应字段名的内容。图2表示此宗地的信息如下:QLR_QLRMC(权利人名称):王胜强
TDZL(土地坐落):洪山镇郑桥村
QLR_DJH(权利人地籍号):0010040071000
extended_data{N}.application_name中的N代表了字段名在某个实体记录中的序列号,通常跟extended_data{N}.string{0}一起用相同的序列号来分别表示一条记录中的字段名和内容,但是由于在CASS软件操作中的顺序和内容不同,属性字段名在每一个实体中对应的字段名序列号是不同的,例如QLR_QLRMC在图2中显示的序列号是15,但是在其他宗地中显示的序列号就不一定是15。
4.2CASS属性数据转SHP数据具体操作
通过分析FME读取CASS属性后,可以运用FME Workbench创建CASS到SHP的映射关系。由于CASS中字段名在每一个实体中的extended_data{N}.application_name所处的序列号不一样,所以需要通过ListSearcher函数来搜索出需要转换的字段名,如图3所示,搜索字段名QLR_QLRMC,并将它赋值给AppNameMatch1这个字段,然后通过ListIndexer 函数,精确指定元素列表属性,如图4所示。
在转换的过程中,因为ListIndexer一次只能指定一条属性,因此在转换多条属性的情况下,需要将宗地的面状数据转成点,分条转换,然后再利用PointOnAreaOverlayer函数,采用空间挂接的方式,将分条属性数据挂接到指定的宗地面数据上,转换全视图如图5所示,转换为SHP数据的宗地属性如图6所示。
4.3SHP属性数据转CASS数据
由以上分析得知,CASS数据存储时,注册名对应SHP数据的字段名,紧跟注册名的数据内容对应SHP数据字段的内容,因此,SHP属性数据转CASS的关键在于要将SHP数据的字段名写入到CASS扩展属性中的注册名。但是,FME 只支持每次向CAD文件写入一个注册名,即默认注册名。通过此方式直接从SHP 属性数据转到CASS数据,只能保留一个注册名,其他的属性则以扩展属性形式,直接写入到XDATA中,如下所示:
* Registered Application Name:SOUTH
* Code 1000,ASCII string:QDJG=0