精华内容
下载资源
问答
  • 用布尔沙七参数,首先得计算七参数,获取已知点计算,这个coord软件有,不用多说 布尔沙七参转换代码 /// <summary> /// 布尔莎七参转换 /// </summary> /// <param name="X">空间直角X...

    用布尔沙七参数转,首先得计算七参数,获取已知点计算,这个coord软件有,不用多说

    布尔沙七参转换代码

    /// <summary>
            /// 布尔莎七参转换
            /// </summary>
            /// <param name="X">空间直角X</param>
            /// <param name="Y">空间直角Y</param>
            /// <param name="Z">空间直角Z</param>
            /// <param name="dx">平移参数x</param>
            /// <param name="dy">平移参数y</param>
            /// <param name="dz">平移参数z</param>
            /// <param name="rpx">旋转参数x</param>
            /// <param name="rpy">旋转参数y</param>
            /// <param name="rpz">旋转参数z</param>
            /// <param name="k">尺度参数k</param>
            /// <returns></returns>
            public double[] BursaTF(double X, double Y, double Z, double dx, double dy, double dz, double rpx, double rpy, double rpz, double k)
            {
                var rho = 206264.806247096355;// %角度转弧度常数    
              
                var newX = X + dx - (Z / rho) * rpy + (Y / rho )* rpz + X / 1000000 * k;
                var newY = Y + dy + (Z / rho) * rpx - (X / rho) * rpz + (Y / 1000000) * k;
                var newZ = Z + dz - (Y / rho) * rpx + (X / rho) * rpy + (Z / 1000000) * k;
    
                double[] result = { newX, newY, newZ };
    
                return result;
            }

    与coord软件对比

    X差32,Y差4,基本没问题

    展开全文
  • 西安80坐标系_WGS84坐标 西安80坐标系_WGS84坐标 西安80坐标系_WGS84坐标
  • 西安80坐标系与WGS-84坐标系转换模型的确定 西安80坐标系与WGS-84坐标系转换模型的确定
  • “北京54坐标系西安80坐标系”“北京54坐标系西安80坐标系”“北京54坐标系西安80坐标系
  • 利用七参数进行CGCS2000坐标系西安80坐标系的转换

    万次阅读 多人点赞 2016-01-22 18:50:34
     因为工作,需要把CGCS2000坐标系下的坐标西安80坐标系下,中间由于用到了七参数,所以要进经过到空间直角坐标系的转换,然后再转换到西安80大地坐标下,最后再投影到西安80坐标的某度带。  要求是输入CGCS...

    问题

    因为工作,需要把CGCS2000坐标系下的坐标转到西安80坐标系下,中间由于用到了七参数,所以要进经过到空间直角坐标系的转换,然后再转换到西安80大地坐标下,最后再投影到西安80坐标的某度带。
      要求是输入CGCS2000下的大地坐标,最后输出西安80下的平面坐标。那么这项工作可以分为以下几个步骤:
      1.CGCS2000下的大地坐标到CGCS2000下的空间直角坐标的转换;
      2.CGCS2000下的空间直角坐标经过七参数转换,得到西安80下的空间直角坐标;
      3.西安80下的空间直角坐标向西安80下的大地坐标转换;
      4.西安80下的大地坐标进行高斯投影,得到平面坐标。

    大地坐标到空间直角坐标的转换

    根据转换公式:
    图片来源于互联网

      private double[] dd2kjzj(double[] dd){
            double a=6378137,b=6356752.314;
            double ee=(a*a-b*b)/(a*a);
            double L=Math.toRadians(dd[0]),B=Math.toRadians(dd[1]),H=dd[2];
            double N=a/Math.sqrt(1-ee*Math.sin(B)*Math.sin(B));
            double X=(N+H)*Math.cos(B)*Math.cos(L);
            double Y=(N+H)*Math.cos(B)*Math.sin(L);
            double Z=(N*(1-ee)+H)*Math.sin(B);
            return new double[]{X,Y,Z};
        }
    

    注:函数里面的a,b的值是CGCS2000(和WGS84相同)下的。其他坐标系下的大地坐标向空间直角坐标的转换公式都是相同的,只是ab的值需要改动。

    利用七参数进行坐标转换

    得到空间直角坐标后就可以利用七参数进行坐标转换了。具体的七参数求解这里不进行讨论,有意向的网友可以自行百度。转换公式如下图所示:
      图片来源于互联网
      经 猫醉 提醒,上图中a1为缩放因子,a2, a3, a4分别为xyz的旋转量(感谢)。

        /*七参数运算*/
        private double[] qicanshu(double[] source){
            double tX,tY,tZ;
    
            tX=dx+source[0]*(1+k)+Oz*source[1]-Oy*source[2];
            tY=dy+source[1]*(1+k)-Oz*source[0]+Ox*source[2];
            tZ=dz+source[2]*(1+k)+Oy*source[0]-Ox*source[1];
    
            return new double[]{tX,tY,tZ};
        }
    

    方法中的source数组是CGCS2000坐标系下的空间直角坐标
      dx,dy,dz是偏移量
      Ox,Oy,Oz是旋转量
      k是缩放因子

    空间直角坐标到大地坐标的转换

    这个转换就是前面所示的逆运算,如下图
    图片来源于互联网
      转换比较复杂,需要进行迭代运算。

        private double[] kjzj2dd(double[] kjzj){
            double X=kjzj[0],Y=kjzj[1],Z=kjzj[2];
            double a=6378140;
            double f=1/298.257;
            double e2=2*f-f*f; //e^2;
            double L=Math.toDegrees(Math.atan(Y/X)+Math.PI);
            double B2=Math.atan(Z/Math.sqrt(X*X+Y*Y));
            double B1;
            double N;
            while (true){
                N=a/Math.sqrt(1-f*(2-f)*Math.sin(B2)*Math.sin(B2));
                B1=Math.atan((Z+N*f*(2-f)*Math.sin(B2))/Math.sqrt(X*X+Y*Y));
                if(Math.abs(B1-B2)<0.0000000001)
                    break;
                B2=B1;
            }
            double H=Z/Math.sin(B2)-N*(1-e2);
            double B=Math.toDegrees(B2);
            
            return new double[]{L,B,H};
        }
    

    高斯投影(正算)

    在得到西安80坐标下的大地坐标后,需要进行高斯投影,这样才能够得到平面坐标。由于这个计算公式更加的复杂,公式什么的就不再列了。

    	//只适用于西安80下的坐标投影,代码来源于互联网,经测试还不错
        private double[] dd2pm(double[] dd){
            double L=Math.toRadians(dd[0]),B=Math.toRadians(dd[1]);
    
            //辅助量
            double cosB = Math.cos(B);
            double sinB = Math.sin(B);
            double cosB_2 = cosB * cosB;
            double l = L - Math.toRadians(Lo);
            double ll = l * l;
    
            //计算系数
            double N = 6399596.652 - (21565.045 - (108.996 - 0.603 * cosB_2) * cosB_2) * cosB_2;
            double a0 = 32144.5189 - (135.3646 - (0.7034 - 0.0041 * cosB_2) * cosB_2) * cosB_2;
            double a4 = (0.25 + 0.00253 * cosB_2) * cosB_2 - 0.04167;
            double a6 = (0.166 * cosB_2 - 0.084) * cosB_2;
            double a3 = (0.3333333 + 0.001123 * cosB_2) * cosB_2 - 0.1666667;
            double a5 = 0.00878 - (0.1702 - 0.20382 * cosB_2) * cosB_2;
    
            //计算高斯平面坐标值
            double x = 6367452.1328 * B - (a0 - (0.5 + (a4 + a6 * ll) * ll) * ll * N) * cosB * sinB;
            double y = (1 + (a3 + a5 * ll) * ll) * l * N * cosB + 500000;
    
            double[] xy = new double[2];
            xy[0] = x;
            xy[1] = y;
            return xy;
        }
    

    这段代码只适用于IAG75(即西安80)下的高斯投影,其他的坐标系下的投影需要修改下参数。

    总结

    至此,左右的转换已经完成。用了大概一周吧(中间有很长一段时间纠结于误差大的惊人,今天才知道甲方给的测试数据有问题),算是复习了下专业知识。
      下载源代码

    	链接:https://pan.baidu.com/s/1sdglmFpIOhjTZvvp4zX_SQ 
    	提取码:cmyz
    

    使用方法

    (补充自2018年4月19日)
    程序是用java写的,封装成了CoordsTransformer 类。如果要用于C#、Python语言需要自行修改。

       	 // 首先获取该类的实例
           CoordsTransformer coordsTransformer=CoordsTransformer.getInstance();
       	// 然后获取运行结果
       	double[] resutls=coordsTransformer.fromCgcs2Xian80(119.8774232,28.44428546,112.66);
    

    如果数据量比较多的话,后面这句可以放在一个循环里面。

    展开全文
  • 西安80坐标系转北京54坐标系 在ArcGIS中的西安80坐标系转北京54坐标系 一、数据说明 本次投影变换坐标的源数据采用的是采用1980西安的地理坐标系统,1985国家高程基准的1:50000的DLG数据。 ...

    在ArcGIS中的西安80坐标系转北京54坐标系

    一、数据说明

    本次投影变换坐标的源数据采用的是采用1980西安的地理坐标系统,1985国家高程基准的1:50000的DLG数据。

     

    二、投影变换基础知识准备

    北京54坐标系和西安80坐标系之间的转换其实是两种不同的椭球参数之间的转换。

    在ArcGIS中定义了两套坐标系:地理坐标系(Geographic coordinate system)和投影坐标系(Projected coordinate system)。

    1、地理坐标系,是以经纬度为地图的存储单位的,是球面坐标系统。地球是一个不规则的椭球,为了将数据信息以科学的方法放到椭球上,这就需要有一个可以量化计算的椭球体。具有长半轴,短半轴,偏心率。一下几行是GCS_Xian_1980椭球及其相应的参数。

    Geographic Coordinate System: GCS_Xian_1980

    Datum: D_Xian_1980

    Prime Meridian: Greenwich

    Angular Unit: Degree

    每个椭球体都需要一个大地基准面将这个椭球定位,因此可以看到在坐标系统中有Datum: D_Xian_1980的描述,表示,大地基准面是D_Xian_1980。

    2、有了椭球体和基准面这两个基本条件,地理坐标系便可以定义投影坐标系统了。以下是已定义Beijing_1954坐标的投影坐标系统的参数:

    Projected Coordinate System: Beijing_1954_GK_Zone_19

    Projection: Gauss_Kruger

    False_Easting: 19500000.00000000

    False_Northing: 0.00000000

    Central_Meridian: 111.00000000

    Scale_Factor: 1.00000000

    Latitude_Of_Origin: 0.00000000

    Linear Unit: Meter

     

    Geographic Coordinate System: GCS_Beijing_1954

    Datum: D_Beijing_1954

    Prime Meridian: Greenwich

    Angular Unit: Degree

        投影坐标系统,实质上是平面坐标系统,其地图单位是米。将球面坐标转化为平面坐标的过程便称为投影,即投影的条件一是有球面坐标,二是要有转化的算法。因此,从参数中可以看出,每一个投影坐标系统都必定会有Geographic Coordinate System。

    3、关于坐标偏移量的问题

    (1)偏移量的由来

    不同国家由于采用的参考椭球及定位方法不同,因此同一地面点在不同坐标系中大地坐标值也不相同。北京1954坐标系的原点在原苏联西部的普尔科夫,采用的是克拉索夫斯基椭球体;西安1980坐标系选用的是1975年国际大地测量协会推荐的参考椭球,其坐标原点设在我国中部的西安市附近的泾阳县境内。

    因此,通常情况下,直接转换过来的数据会有一定的误差存在,所以为了保证数据的精度,在转换的过程中通过设置横坐标和纵坐标的偏移量来修正转换后的坐标值。

    由西安1980坐标系转换成北京1954坐标系,那么它们的偏移量就是北京1954坐标系相对于WGS84椭球体的偏移量减去西安1980坐标系相对于WGS84偏移量。

    (2)偏移量的计算方法

    在测区附近选择一国家已知点(X1,Y1),在该已知点上用GPS测定WGS84坐标经纬度,将此坐标视为有误的西安80坐标系,并将其转换为西安80的平面直角坐标X,Y,然后与已知坐标相比较则课计算出偏移量。

    即△X1=X- X1

       △Y1= Y- Y1

        同理可求得北京54坐标系相对于WGS84坐标的偏移量△X2,△Y2,所以由西安80坐标转换成北京54坐标的偏移量即是:△X=△X2-△X1,△Y=△Y2-△Y1

     

    三、“西安80坐标系”转“北京54坐标系”的操作步骤

    1、启动ArcMAP,载入coverage数据层,加载arctoolbox工具箱,选择Data Management Tools—>projections and transformations—>feature—>project,打开project对话框,a、在Input Dataset or Feature Class中选择需要进行转换的数据,b、在Output Dataset or Feature Class中选择输出路径和输出的文件名,c、在Output Coordinate System中输入需要定义的地理坐标类型Xian 1980.prj。

    其中地理坐标系统在Geographic Coordinate Systems中定义,投影坐标系在Projected Coordinate Systems中选择。

    2、上述的coverage数据在定义了西安1980的地理坐标后就转换成了.shp格式的文件,如同上述操作打开project对话框,选择此.shp格式的文件进行投影,投影类型选择Xian 1980 GK Zone 19.prj。

    为了区分不同带间的点位,在每个点位的横坐标前加上所在的带号,如Xian 1980 GK Zone 19.prj,即是表示六度分带法的西安80坐标系,分带号为19,横坐标前加带号。

    3、为了将数据能够正确的转换为北京54坐标系,需要对以定义西安80坐标系的数据进行平移纠偏。

    载入第二步的结果数据,加载Editor工具条,打开Editor—>start editing,让此数据处于编辑状态。加载Spatial Adjustment工具条,选择new displacement link图标,在图像上选择四个Link点,然后打开Link Tabel表修正坐标,纠正公式是X.destination=X.source+66,Y.destination=Y.source+53,66和53是已经计算出来的坐标偏移量,若计算正确,则计算完后可以看到residual error全部变为零,关闭Link Tabel表,

        4、已进行了平移纠偏的数据就可以直接转换成北京54坐标了,同样是在arctoolbox工具箱中选择Data Management Tools—>projections and transformations—>Define Projection,当数据量比较大时,可以用批处理操作,速度会快很多,在Samples工具中选择Data Management—>Projections—>Batch Define Coordinate System。

    posted on 2013-10-31 23:34  OTL 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/xialinxin/p/3400572.html

    展开全文
  • 北京54坐标系西安80坐标系”的操作步骤
  • 西安80坐标批量WGS84坐标,怎么?因为数据量较大,用工具一个一个比较慢
  • 如何将下载的影像变换为西安80坐标?...注意:投影转换成80坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准。 第一步:选择无偏移地图源,下载你所需要的卫...

     如何将下载的影像变换为西安80坐标?

     

                    利用ARCGIS进行自定义坐标系和投影转换

     

                    ARCGIS种通过三参数和其参数进行精确投影转换

         注意:投影转换成80坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准。

         第一步:选择无偏移地图源,下载你所需要的卫星图像。

         第二步:选择BIGEMAP软件右边工具栏,选择【投影转换】,如下图所示:

    c1.png

          2.1   选择说明:

                   1. 源文件:选择下载好的卫星图像文件(下载目录中后缀为tiff的文件)

                   2. 源坐标系:打开的源文件的投影坐标系(自动读取,不需要手动填写)

                   3. 输出文件:选择转换后你要保持文件的文件路径和文件名

                   4. 目标坐标系:选择你要转换成的目标坐标系,如下图:

    c2.png

         选择上图的更多,如下图所示:

    221.png

              1:选择 -Xi'an 1980  2:选择地区   3:选择分度带对应的带号(一般默认,也可以手动修改)

              选择对应的分度带或者中央子午线(请参看:如何选择分度带?),点击【确定】

          5. 重采样算法:投影转换需要将影像的像素重新排列,一次每种算法的效率不一样,一般选择【立方卷积采样】,以达到最好的效果。如下图:

    c5.png

         6. 指定变换参数:在不知道的情况下,可以不用填此处信息,如果√上,则如下图:

    c6.png

            此参数为【三参数】或者【七参数】,均为国家保密参数,需要到当地的测绘部门或者国土部门,以单位名义签保密协议进行购买,此参数各地都不一样,是严格保密的,请不要随便流通。

       

        第三步:点击【确定】,开始转换,如下图:

    c7.png

        第四步:完成后,打开你刚才选择的输出文件夹,里面就是转换后的卫星图像。

        第五步:如果你需要套合你手里已经有的矢量文件,请参看:【BIGEMAP无偏移影像叠加配准

    转载于:https://www.cnblogs.com/Rachellll/p/5980051.html

    展开全文
  • 需求:西安80投影坐标系(平面坐标)转为WGS84地理坐标系(球面坐标) 这其中涉及的问题主要有以下两点: 1、一个是投影坐标系,一个是地理坐标系,而七参数指的是两个地理坐标系之间的转换,因此需要把投影坐标系...
  • “北京54坐标系西安80坐标系”的操作步骤.rar
  • 北京54坐标系西安80坐标系工具。
  • 二、投影变换基础知识准备北京54坐标系西安80坐标系之间的转换其实是两种不同的椭球参数之间的转换。在ArcGIS中定义了两套坐标系:地理坐标系(Geographic coordinate system)和投影坐标系(Projected coord...
  • 1、我国常用坐标系:WGS84坐标系西安80坐标系。 WGS84坐标系:World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统。它的几何意义是:坐标系的原点位于地球质心,z轴指向(国际时间局)BIH...
  • 北京54坐标系与西安80坐标系坐标转换方法探讨
  • 西安80坐标系和国家2000坐标系之间的转换是两种不同的椭球参数之间的转换,一般而言比较严密的是用七参数布尔莎模型,即X平移,Y平移,Z平移,X旋转(WX),Y旋转(WY),Z旋转(WY),尺度变化(DM)。每个地区的七...
  • 西安80坐标系转换工具

    千次阅读 2016-10-18 14:44:13
    西安80坐标系转换工具  利用ARCGIS进行自定义坐标系和投影转换  ARCGIS种通过三参数和其参数进行精确投影转换  注意:投影转换成80坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将...
  • 三、北京54坐标系西安80坐标系

    千次阅读 2019-07-03 07:52:25
    北京54坐标系(BJZ54)是指北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。1954年北京坐标系可以认为是前苏联1942年坐标...
  • 提示:点击上方"壹伴编辑器"↑免费订阅本刊1、在实施GIS项目中,我们常常会遇到坐标系转换的问题,对于地方坐标系,如果没有提供转换参数,经常需要用控制点来进行坐标几何纠正,下面就介绍如何利用控制坐标点对来...
  • GPS如何设置北京54或西安80坐标系
  • 1、在实施GIS项目中,我们常常会遇到坐标系转换的问题,对于地方坐标系,如果没有提供转换参数,经常需要用控制点来进行坐标几何纠正,下面就介绍如何利用控制坐标点对来进行几何纠正,从而达到坐标转换的目的。...
  • 1、在实施GIS项目中,我们常常会遇到坐标系转换的问题,对于地方坐标系,如果没有提供转换参数,经常需要用控制点来进行坐标几何纠正,下面就介绍如何利用控制坐标点对来进行几何纠正,从而达到坐标转换的目的。...
  • 北京54坐标系西安80坐标系之间的转换,编程的详细方式是什么
  • 北京54坐标系与西安80坐标系坐标转换公式与算法
  • 几种常用软件中54北京坐标系图形转80西安坐标系的方法
  • 文中利用甘肃省临泽县已有的1980西安坐标系控制点作为与CGCS2000坐标系转换的公共点,采用基于甘肃省卫星连续运行基准站的静态观测模式,求取公共点的CGCS2000坐标,根据公共点确定临泽县1980西安坐标系与CGCS2000坐标...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,849
精华内容 1,139
关键字:

西安80坐标系转84坐标系