测绘地理信息   2020, Vol. 45 Issue (6): 141-144
0
基于GDAL库和Teigha库的坐标转换系统设计与实现[PDF全文]
王友昆1,2, 余章蓉3, 时盛春3    
1. 昆明市测绘研究院,云南 昆明,650051;
2. 武汉大学测绘学院,湖北 武汉,430079;
3. 昆明理工大学津桥学院,云南 昆明,650106
摘要: 坐标转换是空间地理数据应用的常用功能,由于部门及应用场景不同,不同坐标系成果的相互转换工作将长期存在。目前的坐标转换不仅需要脱离ArcGIS和AutoCAD等软件,还要实现主流矢量数据和栅格数据的坐标转换。为此提出了基于GDAL(geospatial data abstraction library)和Teigha库底层开发的通用坐标转换方法,给出了系统架构,实现了参数管理、参数计算、坐标转换、数据读写等功能。该方法大大提高了转换效率和保密性。实践表明,该系统转换结果正确可靠。
关键词: GDAL(geospatial data abstraction library)    Teigha    坐标转换    转换参数计算    转换参数管理    通用坐标转换系统    
Design and Implementation of Coordinate Transformation System Based on GDAL and Teigha
WANG Youkun1,2, YU Zhangrong3, SHI Shengchun3    
1. Kunming Surveying and Mapping Institute, Kunming 650051, China;
2. School of Geodesy and Geomatics, Wuhan University, Wuhan 430079, China;
3. Kunming University of Science and Technology Oxbridg College, Kunming 650106, China
Abstract: Coordinate transformation is a common function of spatial geographic data application. Due to different departments and application scenarios, the mutual transformation of different coordinate systems will exist for a long time. The current coordinate transformation needs to be separated from the platform software such as ArcGIS and AutoCAD, but also can realize the coordinate transformation of mainstream vector data and raster data. In this paper, a general coordinate transformation method based on GDAL(geospatial data abstraction library) and Teigha is proposed, and the system architecture is given. The functions of parameters management, parameters calculation, coordinate transformation, data reading and writing are realized. This method greatly improves the transformation efficiency and confidentiality. The practice shows that the transformation result of the system is correct and reliable.
Key words: GDAL(geospatial data abstraction library)    Teigha    coordinate transformation    transformation parameters calculation    transformation parameters management    general coordinate transformation system    

中国自主建立及使用过的坐标系统包括1954北京坐标系、1980西安坐标系、2000国家大地坐标系(China Geodetic Coordinate System 2000,CGCS2000)等。并从2018-07-01起全面使用2000国家大地坐标系。为满足城市坐标系投影变形小于25 mm/km的要求[1],以及大型工程项目投影变形的特殊要求(如轨道交通投影变形要求小于10 mm/km),全国大部分城市及大型工程项目(如轨道交通、机场、水库等工程建设)均建立有独立坐标系。因此,尽管全国国土资源系统已经全面开展了CGCS2000的转换和使用工作,但不同坐标系成果的相互转换工作将长期存在,独立坐标系同CGCS2000的坐标转换工作仍然不可避免。

目前,坐标转换的实现主要包括基于底层开发、利用平台软件自有功能模块转换和基于平台软件二次开发3种方式。基于底层开发的坐标转换软件(如coord、transform等)一般功能单一,只能进行文本坐标的转换。主流的GIS矢量数据(shp/gdb)和栅格数据(tif)一般基于ArcGIS自有功能模块或基于其平台进行二次开发进行坐标转换[2-6]。常用的AutoCAD工程数据(dwg)一般基于AutoCAD二次开发坐标转换插件进行坐标转换[7-9]。以上转换方法,针对不同的数据类型需要安装不同的平台软件或坐标转换系统,无法同时对多种数据类型成果进行坐标转换。虽然FME(feature manipulate engine)具有强大的数据读取和坐标转换功能[10-12],能够同时实现GIS、AutoCAD矢量数据以及栅格数据的转换,但FME软件的价格昂贵、操作复杂、转换参数保密问题等缺陷限制了该软件在各GIS部门的推广。为此,本文基于GDAL(geospatial data abstraction library)和Teigha库,开发设计了通用坐标转换系统,能够脱离ArcGIS和AutoCAD平台,实现主流矢量数据和栅格数据的坐标转换工作,极大提高了转换效率。

1 系统总体设计

未来坐标转换软件应当具备齐全的转换方法,涵盖丰富的数据内容。它不依赖于专业平台软件,基于开源的底层库开发,不仅能应用于国土行业,还能在其他GIS部门快速推广应用。因此,系统设计开发时,不仅要考虑常用数据格式成果数据坐标转换,还要考虑矢量数据(shp/dwg)和栅格数据(tif)的转换问题。由于利用GDAL能够实现对这些格式文件的读写和坐标转换[13];利用Teigha类库能实现脱离AutoCAD平台对其进行读写[14]和坐标转换。因此,本系统在GDAL库和Teigha库的基础上设计开发,实现通用坐标转换。系统总体架构如图 1所示。

图 1 系统主要功能 Fig.1 Main Functions of System

1.1 参数计算

参数计算模块主要根据同名点的两套成果坐标,采用常用的平面四参数模型计算平面4参数,适用于小范围的高斯平面坐标的转换;采用经典的布尔莎7参数模型计算布尔莎7参数,适用于大范围的地理坐标的转换。

转换参数的计算主要是利用同名点的两套坐标系成果,采用相应的转换模型来计算其转换参数。平面4参数转换模型包括2个坐标平移参数(Δx,Δy),1个尺度参数m,1个角度旋转参数α,其转换关系如下:

$ \left[\begin{array}{l} x_{k} \\ y_{k} \end{array}\right]=\left[\begin{array}{l} \Delta x \\ \Delta y \end{array}\right]+(1+m)\left[\begin{array}{cc} \cos \alpha & \sin \alpha \\ -\sin \alpha & \cos \alpha \end{array}\right]\left[\begin{array}{l} x_{j} \\ y_{j} \end{array}\right] $ (1)

式中,(xjyj)为源坐标;(xkyk)为目标坐标。

布尔沙7参数模型包括3个坐标平移参数(Δx,Δy,Δz),3个坐标轴旋转参数(ωXωYωz),1个尺度参数m,其转换关系如下:

$ \left[ {\begin{array}{*{20}{c}} {{X_k}}\\ {{Y_k}}\\ {{Z_k}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\Delta X}\\ {\Delta Y}\\ {\Delta Z} \end{array}} \right] + (1 + m)\left[ {\begin{array}{*{20}{c}} 1&{{\omega _Z}}&{ - {\omega _Y}}\\ { - {\omega _Z}}&1&{{\omega _X}}\\ {{\omega _Y}}&{ - {\omega _X}}&1 \end{array}} \right]\left[ {\begin{array}{*{20}{l}} {{X_j}}\\ {{Y_j}}\\ {{Z_j}} \end{array}} \right] $ (2)

式中,(XjYjZj)为源坐标;(XkYkZk)为目标坐标。

根据最小二乘原理,将同名点成果按照式(1)和式(2)列出误差方程,组成法方程,解算得到转换参数,并对解算参数的精度进行评估。式(1)中若源坐标或目标坐标不是高斯平面坐标,需要利用投影变化模块将其转换为高斯平面坐标后才能计算4参数。同样,式(2)中若源坐标或目标坐标不是空间直角坐标,需要利用投影变化模块将其转换为空间直角坐标后才能计算布尔莎7参数。利用同名点源坐标和目标坐标计算参数的流程如图 2所示。

图 2 参数计算流程 Fig.2 Parameter Calculation Process

1.2 参数管理

参数管理模块主要实现参数文件的打开、保存及加密、解密功能。参数文件除采用文本文件保存外,还可以通过加密的方式存储于软件狗。参数管理主要实现平面4参数和布尔莎7参数的读写、加密和存储。一套转换参数主要包括源坐标系名称、目标坐标系名称、参数类型、平移参数、旋转参数、尺度参数等。根据用户需求,系统提供了3种参数存储的方法:①明码文本存储,不同的区域的转换参数按照明码字符的方式存储于文本文件;②加密文本存储,即采用加密算法对参数文件进行加密后存储;③软件狗加密存储,对参数文件加密后,将其存储于软件狗,通过密匙认证的方式实现参数的读取,保密性更高,“一人、一机、一狗”的方式提高了坐标转换的保密性。

1.3 坐标转换

坐标转换模块主要包括大地坐标、高斯平面坐标、空间直角坐标3种不同坐标类型成果的相互变换,以及利用平面4参数和布尔莎7参数对成果坐标进行坐标转换。坐标转换的过程主要包括:①将源成果读取到的源坐标投影变换为对应的坐标形式(高斯平面坐标、空间直角坐标);②利用平面4参数和布尔莎7参数将源坐标转换为目标坐标;③利用投影变换将目标坐标转换为对应的坐标形式;④将其写入目标成果图元。

对于矢量数据的坐标转换,OGR库和Teigha库的读写流程和方法基本一致。不同的是,它们调用不同的方法读取数据文件、获取图元坐标、保存数据文件。

栅格数据的坐标转换同矢量数据的转换方法和流程略有不同。矢量数据是遍历图形的每个图元,并对图元的所有节点坐标进行转换后重新赋值到图元。栅格数据除调用相应的坐标转换接口进行坐标转换外,还需要创建栅格数据转换后的6个属性参数(X方向最小值、X方向分辨率、X方向旋转值、Y方向最大值、Y方向旋转值、Y方向分辨率)[13]。这6个参数,是根据转换前的栅格数据的6参数和坐标转换参数计算得到的。

1.4 数据读写模块

数据读写模块基于GDAL类库和Teigha类库编制,主要实现对不同格式成果数据的读取和写入。为脱离AutoCAD、ArcGIS等平台,实现对主流的矢量数据成果(dwg/shp/gdb)和栅格数据成果(tif)的坐标转换,首先应实现成果数据的图元坐标的读写。一种方式是基于GDAL的OGR库实现shp/gdb等GIS数据的读写;另一种方式是基于Teigha库实现dwg/dxf等AutoCAD数据的读写。

GDAL库是跨平台开源库,包括ArcGIS在内的大部分GIS软件都将GDAL作为底层库。GDAL库由OGR和GDAL项目合并而来,OGR主要用于矢量数据的解析,GDAL主要用于栅格数据的读写。因此,可以采用GDAL库实现shp/gdb等GIS矢量数据和tif/dem等栅格数据的数据读取。Teigha库是由开放设计协会(Open Design Alliance)设计开发,可以脱离AutoCAD平台运行,支持dwg文件直接读写的类库。它具有较高的开发效率和强大的操控功能。因此,可以采用Teigha类库实现dwg/dxf等AutoCAD矢量数据的读取。

2 系统实现

系统基于Visual Studio 2012平台.Net Framework框架,采用C#开发语言底层开发编制。系统软件的界面设计简洁,参数设置(管理)、参数计算、坐标转换3个功能模块界面在同一对话框下由不同面板实现,不用弹出多余对话框操作。

1) 参数计算。首先导入同名点的源坐标和目标坐标成果,再选择计算方式(4参数计算或7参数计算)。计算的模型平面残差和高程残差可在成果表中显示。对于残差较大的同名点,可设置是否“采用”后,再重新计算。内符合精度达到要求后,可对转换参数按照一定的命名规则进行保存。参数文件下拉菜单中可以选择参数文件的加密方式,对参数文件进行加密。

2) 参数管理。参数设置(管理)面板不仅能够设置源坐标和目标坐标的椭球参数、坐标类型(大地坐标、高斯平面坐标、空间直角坐标)、投影信息(中央经线、带号、X/Y加常数),还可以设置管理需要用到的转换参数,如图 3所示。图中区域1主要实现文本(含加密)参数文件的打开、增加、删除和保存,区域2主要对存放于软件狗的转换参数进行调用和设置。当采用软件狗内的转换参数时,需要在图中区域2的复选框打钩,用户只需要选择转换区域、源坐标名称、目标坐标名称,以及选择转换方式,点击坐标转换即可调用加密狗内转换参数实现坐标转换操作。加密、解密以及坐标转换的过程均在加密狗内进行,转换参数不会显示出来,并且计算的过程也均在加密狗内完成,保密性和安全性较高。

图 3 参数管理界面 Fig.3 Parameter Management Interface

3) 坐标转换。坐标转换模块主要实现文本坐标(区域1)和成果文件的坐标转换。文本坐标文件通过源坐标文件或剪贴板导入表格,然后选择坐标转换方式,再点击文本转换,转换结果将显示在目标坐标表格中,最后可以导出目标坐标转换结果。为达到保密的效果,可以对目标坐标的小数保留位数进行设置。

成果图形文件的转换,选择坐标转换方式后,点击文件选择按钮,系统会弹出对话框,设置转换文件的类型,系统将自动调用相应的接口实现不同数据类型的转换。如果是批量文件转换,系统界面下方的文件转换进度条会显示文件转换的进度,便于用户掌握转换进度。转换完成后,系统还会自动保存文件转换日志,便于用户查看。

3 结束语

该系统已经成功运用于昆明市国土和规划部门的成果数据转换工作中,转换成果的精度符合要求,正确可靠,转换效率较传统方式大大提高。系统汲取了专业平台软件坐标转换功能的优点,基于开源库开发,集参数管理、参数计算、坐标转换功能于一身。它不仅能够实现文本文件的坐标转换,还支持常用的GIS、AutoCAD矢量数据和栅格影像的坐标转换。本文创新地将转换参数加密存储于软件狗,实现了“一人、一机、一狗”的保密转换方式。该方式大大提高了转换参数的保密性,降低了软件的应用成本,且适用于向其他GIS部门的推广,能够在信息化建设项目中发挥重要作用。

参考文献
[1]
马亶佑. 城市独立坐标系的投影变形检核技术研究与实践——以贵阳2000坐标系建立为例[J]. 测绘通报, 2016(S2): 40-43.
[2]
刘佰琼, 周卫, 戴相喜. 基于ArcGIS Engine的矢栅基础地理数据空间转换方法研究[J]. 测绘通报, 2011(12): 54-57.
[3]
李娜, 黎波, 杨志敏, 等. 基于ArcGIS的CGCS2000坐标转换[J]. 城市勘测, 2016(6): 97-99.
[4]
邱本立, 周青青, 李淑军. 基于ArcGIS平台的三调外业新增图斑的2000坐标转换[J]. 中国金属通报, 2019(7): 273-274.
[5]
顾秀梅, 杨斌, 高德政, 等. ArcGIS空间数据投影坐标转换方法研究[J]. 测绘科学, 2012, 37(4): 164-166.
[6]
贠法长, 曾传俊, 李旺民, 等. MXD/MDB文件基准转换方法研究及软件实现[J]. 测绘地理信息, 2019, 44(3): 117-121.
[7]
邹学海, 杨敏, 吴柏宣. AutoCAD平台下基于.net实现坐标系统转换[J]. 淮海工学院学报(自然科学版), 2011, 20(S1): 110-111.
[8]
张予东, 王瑞芳, 吕宝奇. 基于AutoCAD平台的坐标系统转换的设计与实现[J]. 测绘通报, 2011(11): 57-58.
[9]
汪燕麟, 刘鸿飞, 王利华, 等. 基于DWG文件的图件坐标转换方法研究与实现[J]. 测绘地理信息, 2016, 41(6): 82-85.
[10]
曾传俊, 李莲芳, 褚睿涛. 基于FME的DWG图形转换[J]. 测绘通报, 2019(S2): 275-277.
[11]
张黎, 唐辉, 肖勇, 等. 基于FME的多格式多基准坐标转换平台研究[J]. 地理空间信息, 2017, 15(5): 60-62.
[12]
余咏胜, 彭艳丽, 秦思娴. 面向FME Objects的地理国情普查影像坐标转换技术研究[J]. 测绘科学技术学报, 2017(1): 49-52.
[13]
谢艳玲, 夏正清, 黄萍. 基于GDAL的GIS产品坐标系统批量转换[J]. 地理空间信息, 2015, 13(5): 102-104.
[14]
豆喜朋, 王志军. 基于Teigha的复杂水利AutoCAD数据的读取[J]. 河南水利与南水北调, 2016(2): 53-54.