七参数服务在电网环保地理信息系统中的应用与研究摘要:目前,协调输变电工程与各类环境敏感区的关系已成为输变电工程规划、设计时优先考虑的问题之一。
基于国网GIS平台研发的输变电工程环境敏感区地理信息系统可以有效提高环境敏感区识别的工作效率和质量,提高电网环保管理信息化水平。
在系统研发工作中,采集的环境敏感区等各类数据往往基于西安80坐标系,与国网GIS平台采用的大地2000坐标系存在一定差异,因此需要对原始数据坐标进行转换,以整合到国网GIS平台中。
本文研究基于七参数转换模型原理,以WebService为依托,利用高斯反算实现坐标转换并发布成七参数服务,最终实现了环境敏感区坐标与现有电网GIS平台的完美融合。
关键词:WebService;环保GIS系统;七参数;坐标转换;国网GIS平台一、引言近年来,由于输变电工程违法跨越法律严禁的环境敏感区以及由于公众担心工程电磁环境影响引发的环保投诉、纠纷屡见不鲜,这也是公司电网环保管理需要面对和解决的一个重要课题,而环保前期介入是一种重要的、行之有效的手段,输变电工程环境敏感区地理信息系统正是是实现环保前期介入的有效工具。
此外,国网公司系统内已完成了配网GIS 系统的研发,构建了国家电网公司统一数字化电网,包括了发电、输电、变电、配电、用电、公共设施等所有涉网内容的相关基础地理信息,已可为相关业务提供基础数据支撑。
因此,将如何将环境敏感区地理信息系统与现有电网GIS平台进行系统整合,使环境敏感区空间数据能够应用在SGGIS 平台,研究基于现有电网GIS平台的输变电工程环境敏感点的自动识别、分类技术和输变电工程电磁、噪声影响自动预测分析技术,更好的发挥电网GIS平台对工程建设的指导作用,对促进“环境友好型”绿色电网的建设就显得十分有益和必要了。
目前,环境敏感区空间数据的获取一般是通过工程测量在西安80坐标系统下进行的,而国网GIS平台使用的是国家大地2000坐标系。
为了能够使环境敏感区空间数据在国网GIS平台得到应用,就需要对西安80坐标系与国家大地2000坐标系进行坐标转换,通常情况下的解决办法是通过测绘仪器公司提供的单机版坐标转换软件进行转换,但是用第三方软件进行坐标系转换无法使环境敏感区数据与国网GIS平台进行整合和应用,更不能满足系统高效、自动化、动态实时坐标系转换的要求。
为此,本文通过引入Web Service这种当前主流的互联网技术,设计了利用已知的布尔莎模型七参数进行空间坐标转换的服务,使环保地理信息系统中的环保数据与国网GIS平台进行无缝整合,实现更进一步的应用。
二、基本概念(1)西安80坐标系西安80坐标系是1980年国家大地坐标系,是一种参心大地坐标系,原点为我国陕西省泾阳县永乐镇,利用多点定位,采用地球椭球基本参数为1975年国际大地测量与地球物理联合会第十六届大会推荐的数据(长轴6378140m,短轴6356755m,扁率1/298.25722101)[1]。
(2)CGCS2000国家大地坐标系该坐标系是一种采用地球质量中心作为原点的地心坐标系,2000国家大地坐标系的原点为海洋和大气的整个地球的质量中心[2],地球椭球参数为:长半轴a=6378137m,扁率f=1/298.257222101,地心引力常数GM=3.9886004418×1014m3/s2,自转角速度w=7.292115×10-5r/s。
(3)webserviceWeb Service(简称Web服务)是一种目前比较流行的面向标准组件或者面向服务的架构(Service-OrientedArchitecture)的技术[3]。
目前,在C/S和B/S架构应用非常广泛。
它是通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作,实现异构系统间的远程调用(也称之为分布式调用),或者理解为使异构系统之间实现消息传递。
Web Service之所以能在不同语言环境、不同操作系统之间调用服务接口,使用各种组合服务功能,是因为它使用了W3C(万维网联盟)发布的统一标准性的XML(可扩展标记语言)格式进行数据的传输,正因为XML的跨平台性,跨语言性,使不同语言的应用程序对象能够实现在网络环境中远程相互调用出现了可能,例如:在Java语言实现的应用程序端可以调用另一端可能是任何地方、任何环境下的C#语言实现的服务,甚至可以调用该服务端的组合服务完成应用程序的逻辑,开发者以最少的工程量就能实现应用程序的功能开发。
当然,请求服务者是不能看到远程服务的具体实现过程,只能提供远程服务接口所需要的参数,而被调用服务者则会封装服务的接口,只提供接口的详细功能描述,参数描述,数据格式传输的描述以及协议的版本,这些数据描述都是基于强大的可扩展标记语言存储并通过Web协议进行传输的。
Web Service的实现原理大致如下:首先,开发服务提供者向UDDI中心部署并注册,并且发布服务,这样用户就能查找和发现该服务,一旦用户能够在网络上查找到该服务后,当发送请求使用服务时,UDDI中心就会先验证用户能否使用服务,通过验证后,UDDI中心就会发送一个基于XML的专门显示服务信息格式的WSDL(Web Services Description Language),向用户提供服务组成的详细特征,与传输html格式的http协议不同,传输XML的协议时通过SOAP协议来传输的,这样就实现了用户首次访问并注册使用服务成功,接下来用户就可以自由使用服务,只需要根据服务器传输过来的格式提供相应的数据就能得到结果[4]。
三、坐标转换原理本文研究将西安80平面直角坐标转换为2000国家大地坐标,按下述方法进行:第一步,将平面直角坐标根据投影变换中的高斯反算转换为椭球面上的大地坐标;第二步,基于西安80同一椭球体下进行大地坐标与空间直角坐标的转换;第三步,根据布尔莎七参数模型将坐标从西安80空间直角坐标系转换为2000国家大地空间直角坐标系;第四步,2000国家大地同一椭球体下进行空间直角坐标与大地坐标的转换。
2.1投影变换--高斯反算高斯反算是一种在基于高斯-克吕格投影模型下进行的将高斯平面坐标换算到椭球面上的大地坐标的方法。
从几何意义上看,就是假想用一个椭球柱套在地球外面,并与某一子午线相切,相切的子午线称为中央经线,椭球柱的中心过椭球中心并垂直于包含中央经线的子午面,再按高斯投影条件,将中央经线两边各一定经差范围内的经纬线投影到椭圆面上,并将此椭圆柱面展为平面,即为本投影。
高斯反算坐标公式[5]如下:2.2椭球坐标转换西安80坐标系和2000国家大地坐标系是不同的参考椭球体,不同的大地基准面,需要选择合适的坐标转换模型可以使坐标转换精度和转换效率得到保证,常用的转换模型有:布尔莎模型、平面四参数模型、多项式回归模型。
一般而言,比较严密的是用布尔莎七参数模型。
本文运用的是布尔莎七参数模型,具体转换步骤为:首先,西安80经纬度坐标转换成西安80空间直角坐标;其次,西安80空间直角坐标转换成CGCS2000空间直角坐标;最后,CGCS2000空间直角坐标转换成CGCS2000经纬度坐标。
2.2.1不同椭球体下的空间直角坐标系转换西安80空间直角坐标转换成CGCS2000空间直角坐标,本文采用的是布尔莎七参数模型[6]。
其中,,为两个坐标系间的3个平移参数,,,为3个旋转因子,m为比例因子。
2.2.2同一椭球体下空间直角坐标与经纬度坐标转换在相同的椭球体下,设地球表面某一点M在大地坐标系的坐标为(L,B,H),空间直角坐标系中的坐标为(X,Y,Z),空间大地坐标转换成空间直角坐标公式[7]如下:所以,空间直角坐标转换成经纬度坐标采用的公式如下:三、坐标系转换服务的设计与实现3.1服务设计与实现流程利用七参数服务实现投影变换和椭球体坐标转换将西安80平面坐标转换为2000国家大地坐标整体流程为:1.数据输入:服务需要接收传输的必要参数,包括待转换西安80坐标、西安80与2000国家大地椭球体参数(长半轴、扁率);2.高斯反算:将已知的西安80椭球参数通过实现高斯反算算法实现从西安80平面坐标转换为西安80大地坐标;3. 同一椭球体大地坐标转换空间直角坐标模型:将已知的西安80椭球参数实现同一椭球体大地坐标转换空间直角坐标模型算法将西安80大地坐标转换为西安80空间直角坐标;4.布尔莎七参数模型转换:将已知的七参数通过实现布尔莎七参数模型实现从西安80空间直角坐标转换为2000国家大地空间直角坐标;5. 同一椭球体空间直角坐标转换大地坐标模型:将已知的2000国家大地椭球参数实现同一椭球体空间直角坐标转换大地坐标模型算法将2000国家大地空间直角坐标转换为2000国家大地坐标。
具体流程图如下:3.2数据准备已知的陕西省环境敏感区七参数,如表1,待转换的西安80坐标,如表2。
3.3 服务的实现使用Eclipse开发工具建立webservice项目,编写和发布web服务。
3.3.1高斯反算输入参数为:x为西安80平面x坐标,y为西安80平面y坐标,B为西安80纬度,l为西安80经度,a为长半轴,f 为扁率的倒数private static void xy_Bl(double x,double y,out double B,out double l,double a,double f){if (y > 1000000){throw new System.Exception("坐标类型错误,应使用自然坐标");return;}double ee = (2 * f - 1)/ f / f;//第一偏心率的平方double ee2 = ee / (1 - ee);//第二偏心率的平方double cA,cB,cC,cD,cE;cA = 1 + 3 * ee / 4 + 45 * ee * ee / 64 + 175 * Math.Pow (ee,3)/ 256 + 11025 * Math.Pow(ee,4)/ 16384;//相当于公式中a0cB = 3 * ee / 4 + 15 * ee * ee / 16 + 525 * Math.Pow(ee,3)/ 512 + 2205 * Math.Pow(ee,4)/ 2048;//相当于公式中a2cC = 15 * ee * ee / 64 + 105 * Math.Pow(ee,3)/ 256 + 2205 * Math.Pow(ee,4)/ 4096;//相当于公式中a4 cD = 35 * Math.Pow(ee,3)/ 512 + 315 * Math.Pow (ee,4)/ 2048;//相当于公式中a6cE = 315 * Math.Pow(ee,4)/ 131072;//相当于公式中a8double Bf = x / (a * (1 - ee)* cA);//底点纬度初始值do {B = Bf;Bf = (x + a * (1 - ee)* (cB * Math.Sin(2 * Bf)/ 2 - cC * Math.Sin(4 * Bf)/ 4 + cD * Math.Sin(6 * Bf)/ 6)- cE * Math.Sin(8 * Bf)/ 8)/ (a * (1 - ee)* cA);}while (Math.Abs(B - Bf)> 0.00000000001);//迭代成功条件double N = a / Math.Sqrt(1 - ee * Math.Pow(Math.Sin(Bf),2));double V2 = 1 + ee2 * Math.Pow(Math.Cos(Bf),2);double it2 = ee2 * Math.Pow(Math.Cos(Bf),2);double tB2 = Math.Pow(Math.Tan(Bf),2);B = Bf - V2 * Math.Tan(Bf)/ 2 * (Math.Pow(y / N,2)- (5 + 3 * tB2 + it2 - 9 * it2 * tB2)* Math.Pow(y / N,4)/ 12 + (61 + 90 * tB2 + 45 * tB2 * tB2)* Math.Pow(y / N,6)/ 360);l = (y / N - (1 + 2 * tB2 + it2)* Math.Pow(y / N,3)/ 6 + (5 + 28 * tB2 + 24 * tB2 * tB2 + 6 * it2 + 8 * it2 * tB2)* Math.Pow(y / N,5)/ 120)/ Math.Cos(Bf);B = B * 180 / Math.PI;l = l * 180 / Math.PI;}3.3.2 同一椭球下经纬度坐标转到空间直角坐标输入参数为:blhCoordinate 为Coordinate类封装的西安80大地坐标(B,L,H),Datum为西安80椭球体参数public static XYZCoordinate BLHtoXYZ(Coordinate blhCoordinate,Datum datum){if (titude 90 ||blhCoordinate.Longitude 180 || blhCoordinate.Altitude <-datum.MajorAxis){return new XYZCoordinate(-1,-1,-1);}XYZCoordinate xyzCoordinate = new XYZCoordinate(0,0,0);Double a,e2,B,L,H,N;a = datum.MajorAxis;//椭球长半轴e2 = datum.E2;//第一偏心率的平方B = titude * PI / 180;L = blhCoordinate.Longitude * PI / 180;H = blhCoordinate.Altitude;N = a / Math.Sqrt(1 - e2 * Math.Pow(Math.Sin(B),2));//卯酉圈曲率半径xyzCoordinate.X = (N + H)* Math.Cos(B)* Math.Cos (L);xyzCoordinate.Y = (N + H)* Math.Cos(B)* Math.Sin (L);xyzCoordinate.Z = (N * (1 - e2)+ H)* Math.Sin(B);return xyzCoordinate;}3.3.3利用布尔莎七参数模型在不同参考椭球之间空间直角坐标的转换输入参数为:xyzCoordinate为类XYZCoordinate封装的待转换的空间直角坐标(X,Y,Z),deltaX为x方向上的平移,deltaY为y方向上的平移,deltaZ为z方向上的平移,Ax为绕x轴方向上的旋转角度,Ay为绕y轴方向上的旋转角度,Az为绕z轴方向上的旋转角度,S为比例因子public static XYZCoordinate para7(XYZCoordinate xyzCoordinate,Double deltaX,Double deltaY,Double deltaZ,Double Ax,Double Ay,Double Az,Double S){XYZCoordinate xyzC = new XYZCoordinate(0,0,0);Double X,Y,Z;X = xyzCoordinate.X;Y = xyzCoordinate.Y;Z = xyzCoordinate.Z;xyzC.X = deltaX + S * (X + Az * Y - Ay * Z);xyzC.Y = deltaY + S * (Y - Az * X + Ax * Z);xyzC.Z = deltaZ + S * (Ay * X - Ax * Y + Z);return xyzC;}3.4 结果和分析应用以上方法,通过实现高斯反算、同一椭球下经纬度坐标转换空间直角坐标,七参数转换等算法,发布并调用webservice,计算结果见表3:四、结论(1)利用七参数服务实现环境敏感区在国网GIS平台的应用,灵活的改善了现有使用单机版软件进行坐标转换的操作复杂、应用局限的弊端,继承了Web Service的功能松耦合性、高效、开放式、并行化、可分布式的特性。