arcgis坐标转换

大地水准面与大地基准面

大地水准面


  地质学范畴,是指平均海平面通过大陆延伸勾画出的一个封闭连续的封闭曲面。

  大地水准面是由静止海水面并向大陆延伸所形成的不规则的封闭曲面。它是重力等位面,即物体沿该面运动时,重力不做功(如水在这个面上是不会流动的)。大地水准面是描述地球形状的一个重要物理参考面,也是海拔高程系统的起算面。大地水准面的确定是通过确定它与参考椭球面的间距--大地水准面差距(对于似大地水准面而言,则称为高程异常)来实现的。大地水准面和海拔高程等参数和概念在客观世界中无处不在,在国民经济建设中起着重要的作用。

    其实,大地水准面也是一个很不规则的曲面,

  大地水准面包围的球体称为大地球体。大地球体的长半轴为6378.245公里,短半轴为6356.863公里。从大地水准面起算的陆地高度,称为绝对高度或海拔

 

大地基准面

    用于尽可能与大地水准面密合的一个椭球曲面,是人为确定的。椭球体与大地基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面,如前苏联的Pulkovo 1942、非洲索马里的Afgooye基准面都采用了Krassovsky椭球体,但它们的大地基准面显然是不同的。

    理解:椭球面和地球肯定不是完全贴合的,因而,即使用同一个椭球面,不同的地区由于关心的位置不同,需要最大限度的贴合自己的那一部分,因而大地基准面就会不同。

    地图坐标系由大地基准面和地图投影确定,大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的IAG 75地球椭球体建立了我国新的大地坐标系--西安80坐标系, 目前GPS定位所得出的结果都属于WGS84坐标系统,WGS84基准面采用WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心的坐标系。因此相对同一地理位置,不同的大地基准面,它们的经纬度坐标是有差异的。 

    一般我们所说的WGS84就是指那个基准面。

 

 

 

 

常用到的地图坐标系有2种,即地理坐标系和投影坐标系。
地理坐标系是以经纬度为单位的地球坐标系统,地理坐标系中有2个重要部分,即地球椭球体(spheroid)和大地基准面(datum)。由于地球表面的不规则性,它不能用数学公式来表达,也就无法实施运算,所以必须找一个形状和大小都很接近地球的椭球体来代替地球,这个椭球体被称为地球椭球体

 

 

大地坐标,在地面上建立一系列相连接的三角形,量取一段精确的距离作为起算边,在这个边的两端点,采用天文观测的方法确定其点位(经度、纬度和方位角),用精密测角仪器测定各三角形的角值,根据起算边的边长和点位,就可以推算出其他各点的坐标。这样推算出的坐标,称为大地坐标。

 

 

 

 

我国三大常用坐标系区别(北京54、西安80和WGS-84)

 

我国三大常用坐标系区别(北京54、西安80和WGS-84)
Gis应用 2009-09-27 10:06 阅读13 评论0 字号: 大大   中中   小小 我国三大常用坐标系区别(北京54、西安80和WGS-84)
1、北京54坐标系(BJZ54)
北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。
1954年北京坐标系的历史:
新中国成立以后,我国大地测量进入了全面发展时期,再全国范围内开展了正规的,全面的大地测量和测图工作,迫切需要建立一个参心大地坐标系。由于当时的“一边倒”政治趋向,故我国采用了前苏联的克拉索夫斯基椭球参数,并与前苏联1942年坐标系进行联测,通过计算建立了我国大地坐标系,定名为1954年北京坐标系。因此,1954年北京坐标系可以认为是前苏联1942年坐标系的延伸。它的原点不在北京而是在前苏联的普尔科沃。
北京54坐标系,属三心坐标系,长轴6378245m,短轴6356863,扁率1/298.3;
2、西安80坐标系
1978年4月在西安召开全国天文大地网平差会议,确定重新定位,建立我国新的坐标系。为此有了1980年国家大地坐标系。1980年国家大地坐标系采用地球椭球基本参数为1975年国际大地测量与地球物理联合会第十六届大会推荐的数据,即IAG 75地球椭球体。该坐标系的大地原点设在我国中部的陕西省泾阳县永乐镇,位于西安市西北方向约60公里,故称1980年西安坐标系,又简称西安大地原点。基准面采用青岛大港验潮站1952-1979年确定的黄海平均海水面(即1985国家高程基准)。
西安80坐标系,属三心坐标系,长轴6378140m,短轴6356755,扁率1/298.25722101
3、WGS-84坐标系
WGS-84坐标系(World Geodetic System)是一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向国际时间局(BIH)1984.0定义的协议地极(CTP)方向,X轴指向BIH1984.0的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系。这是一个国际协议地球参考系统(ITRS),是目前国际上统一采用的大地坐标系。GPS广播星历是以WGS-84坐标系为根据的。
WGS84坐标系,长轴6378137.000m,短轴6356752.314,扁率1/298.257223563。

由于采用的椭球基准不一样,并且由于投影的局限性,使的全国各地并不存在一至的转换参数。对于这种转换由于量较大,有条件的话,一般都采用GPS联测已知点,应用GPS软件自动完成坐标的转换。当然若条件不许可,且有足够的重合点,也可以进行人工解算。

附:
我国常用高程系
“1956年黄海高程系”,是在1956年确定的。它是根据青岛验潮站1950年到1956年的黄海验潮资料,求出该站验潮井里横按铜丝的高度为3.61 米,所以就确定这个钢丝以下3.61米处为黄海平均海水面。从这个平均海水面起,于1956年推算出青岛水准原点的高程为72.289米。
国家85高程基准其实也是黄海高程基准,只不过老的叫“1956年黄海高程系统”,新的叫“1985国家高程基准”,新的比旧的低0.029m
我国于1956年规定以黄海(青岛)的多年平均海平面作为统一基面,为中国第一个国家高程系统,从而结束了过去高程系统繁杂的局面。但由于计算这个基面所依据的青岛验潮站的资料系列(1950年~1956年)较短等原因,中国测绘主管部门决定重新计算黄海平均海面,以青岛验潮站1952年~1979年的潮汐观测资料为计算依据,并用精密水准测量接测位于青岛的中华人民共和国水准原点,得出1985年国家高程基准高程和1956年黄海高程的关系为: 1985年国家高程基准高程=1956年黄海高程-0.029m。1985年国家高程基准已于1987年5月开始启用,1956年黄海高程系同时废止。
各高程系统之间的关系:
56黄海高程基准:+0.000
85高程基准(最新的黄海高程):56高程基准-0.029
吴淞高程系统:56高程基准+1.688
珠江高程系统:56高程基准-0.586
我国目前通用的高程基准是:85高程基准

 

 

 

 

 

arcengine坐标转换[转]  

2011-09-15 10:55:55|  分类: ArcGIS|字号 订阅

arcengine坐标转换[]

ref http://www.cnblogs.com/njlhb/archive/2007/08/04/843111.html
 
现在好多人在使用ArcObject的时候都可能需要作经纬度和平面坐标的相互转换。由于经纬度是球面坐标,平面坐标是X-Y的笛卡尔坐标系统,所以这是一个看起来比较难的问题。

      
好多人一上来就搬出地图学、地图投影学或者测绘学中的投影公式(如高斯投影  墨卡托投影),又是基准坐标又是角度的搞的人头都大了。

      
实际上要想实现这个功能非常easy ARC Engine中的IPoint就可以进行投影和反投影运算了。

投影过程(C#):

///  flatref 
投影的坐标系统,这里的54013是世界投影  ,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N      对应数值21483  仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。

        flatref = pfactory.CreateProjectedCoordinateSystem(54013);



//
没什么说的,标准大地经纬度,可以将X-Y逆投影为经度和纬度

  earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);


        /// 
将经纬度点转换为平面坐标。
      
        private IPoint GetProject(double x, double y)
        {

            IPoint pt = new PointClass();
           
            pt.PutCoords(x, y);

            IGeometry geo = (IGeometry)pt;
            geo.SpatialReference = earthref;
            geo.Project(flatref);

         
            return pt;
        }



           /// 
将平面坐标转换为经纬度。
         private IPoint GetGeo(double x, double y)
        {

            IPoint pt = new PointClass();

            pt.PutCoords(x, y);

            IGeometry geo = (IGeometry)pt;
            geo.SpatialReference = flatref;
            geo.Project(earthref);
            double xx = pt.X;
            return pt;
        }

 

 

 

 

北京54坐标和经纬度坐标换算(转)

分享
标签: 坐标换算  分类: 灰石学习 2008-03-14 11:41
北京54坐标和经纬度坐标换算(转)
 

//坐标正算
lbxy(double l, double b, double *x, double *y, int l0)
{
double sa,sb,sep,sn,sy2,st,sm,sx,hb;
double xx,yy,hd,sd;

//判断值的范围
if (l > 360 || l < 0 || b > 360 || b < 0)
{
   *x = l;
   *y = b;
   return;
}

l = l-l0;
sa = 6378245;   
sb = 6356863.019;
sep= 0.006738525415;
hd = b*PI;
hb = hd/180.0;
st = tan(hb);
       
sn=pow(sa,(double)2)/sqrt(pow(sa,(double)2)*pow(cos(hb),(double)2)
   +pow(sb,(double)2)*pow(sin(hb),(double)2));

sy2=sep*pow(cos(hb),(double)2);
sd = cos(hb)*l*PI;
sm = sd/180.0;
sx = 111134.861*b-(32005.78*sin(hb)+133.924*pow(sin(hb),(double)3)+0.697*pow(sin(hb),(double)5))*cos(hb);
xx = sx+sn*st*(0.5*pow(sm,(double)2)+1.0/24.0*(5.0-pow(st,(double)2)+9.0*sy2)*pow(sm,(double)4));
yy = sn*(sm+1.0/6.0*(1.0-pow(st,(double)2)+sy2)*pow(sm,(double)3)+1.0/120.0*(5.0-18.0*pow(st,(double)2)+pow(st,(double)4))*pow(sm,(double)5));
*x = xx;
*y = yy+500000;
}

//坐标反算
xylb(double l0, double x, double y, double *l, double *b)
{
double bf,vf,nf,ynf,tf,yf2,hbf;
double sa,sb,se2,sep2,mf;
double w1,w2,w,w3,w4;
double pi = 3.1415926;

x = x/1000000.0;
y = y - 500000.0;

bf = 9.04353692458*x-0.00001007623*pow(x,2.0)-0.00074438304*pow(x,3.0)-0.00000463064*pow(x,4.0)+0.00000505846*pow(x,5.0)-0.00000016754*pow(x,6.0);
hbf = bf * pi/ 180.0;
sa = 6378245.0;
sb = 6356863.019;
se2 = 0.006693421623;
sep2 = 0.006738525415;

w1 = sin(hbf);
w2 = 1.0 - se2 * pow(w1,(double)2);
w = sqrt(w2);
mf = sa*(1.0-se2)/pow(w,(double)3);
w3 = cos(hbf);

w4 = pow(sa,(double)2)*pow(w3,(double)2) + pow(sb,(double)2)*pow(w1,(double)2);
nf = pow(sa,(double)2) / sqrt(w4);

ynf = y/nf;
vf = nf/mf;
tf = tan(hbf);

yf2 = sep2 * pow(w3, (double)2);

*b = bf - 1.0/2.0 * vf * tf * (pow(ynf,(double)2)-1.0/12.0*(5.0+3.0*pow(tf,(double)2)+yf2-9.0*yf2*pow(tf,(double)2))*pow(ynf,(double)4))*180.0/pi;
*l = 1.0/w3*ynf*(1.0-1.0/6.0*(1.0+2.0*pow(tf,(double)2)+yf2)*pow(ynf,(double)2)+1.0/120.0*(5.0+28.0*pow(tf,(double)2)+24.0*pow(tf,(double)2)+6.0*yf2+8.0*yf2*pow(tf,(double)2))*pow(ynf,(double)4))*180.0/pi;
*l = l0 + *l;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值