精华内容
下载资源
问答
  • ***库,可以在火星坐标系、百度坐标系WGS84坐标系CGCS2000坐标系之间互,部署也很简单。 使用过程 部署PostGIS(已有直接下一步) 直接把github )上的sql拿下来运行一下,然后就可以用了 -- 如果转换后结果为...
  • 基于PostgreSQL和PostGIS的坐标转换函数,支持点、线、面的WGS84和CGCS2000与GCJ02和BD09坐标系与之间互转。 Example -- 如果转换后结果为null,查看geom的srid是否为4326或者4490 WGS84转GCJ02 select geoc_wgs84...
  • GPS坐标WGS84)和中国大地坐标CGCS2000的JAVA程序,工程基于MAVEN,结果精确,可接受各种验证。
  • cgcs2000wgs84坐标系

    千次阅读 热门讨论 2021-02-13 10:31:03
    二、wgs84转cgcs2000的转换矩阵如下 虽然cgcs2000wgs84差别很小,但是我比较较真,还是做了两个坐标系的转换。 一、经纬高转直角坐标系互转 此处可参考链接(百度文库用手机浏览器可以打开看全部的): (1)...

    目录

    目录

    一、经纬高与直角坐标系互转

    1.1 python代码

    二、wgs84转cgcs2000的转换矩阵如下


    虽然cgcs2000与wgs84差别很小,但是我比较较真,还是做了两个坐标系的转换。

    一、经纬高与直角坐标系互转

    此处可参考链接(百度文库用手机浏览器可以打开看全部的):

    (1)第四章地球椭球及其数学详解

    (2)第四章椭球数学变换16节

    (3)大地测量学基础[1](7)(控制)

    转换公式如下:

    LBH转XYZ:

    a为半长轴,e为偏心率

    N = a / \sqrt{1 - e^{2}*sin^{2}B}
    X = (N + H)*cosB*cosL
    Y = (N + H)*cosB*sinL
    Z = [N*(1 - e^{2}) + H]*sinB

    XYZ转LBH:

    a为半长轴,e为偏心率

    N = a / \sqrt{1 - e^{2}*sin^{2}B}
    L = arctan(Y/X)
    B=arctan((Z + N*e^{2}sin(B)) / \sqrt{X^{2} + Y^{2}})     //此处为超越方程,需要迭代求解
    H = Z / sin(B) - N*(1 - e^{2})

    1.1 python代码

    import math
    
    def LBH2XYZ(L:float, B:float, H:float, coorSys:str):
        """
        经纬高转地心XYZ
        :param L: 经度,单位°
        :param B: 纬度(地理纬度),单位°
        :param H: 高度,单位m
        :param coorSys 坐标系选择,参数可以为"wgs84"、"cgcs2000",
        两种坐标系所采取的椭圆半长轴均为6378137m,扁率不同,
        wgs84的扁率为1/298.257223564,半短轴为6356752.314245251,偏心率e为0.08181919084248535
        cgcs2000的扁率为1/298.257222101,半短轴为6356752.314140356,偏心率e为0.08181919104281517
        :return: 地心XYZ 单位m
        """
        L = L/180 * math.pi   # 先转为弧度
        B = B/180 * math.pi   # 先转为弧度
    
        a = 6378137   # 半长轴
        if coorSys == "wgs84":
            e = 0.08181919084248535
        elif coorSys == "cgcs2000":
            e = 0.08181919104281517
        N = a/math.sqrt(1 - math.pow(e, 2) * math.pow(math.sin(B), 2))
    
        X = (N + H) * math.cos(B) * math.cos(L)
        Y = (N + H) * math.cos(B) * math.sin(L)
        Z = (N * (1 - math.pow(e, 2)) + H) * math.sin(B)
    
        return X, Y, Z
    
    def XYZ2LBH(X:float, Y:float, Z:float, coorSys:str):
        """
        地心非惯性坐标系(地固系)XYZ转换为LBH
        :param X: X轴刻度值,单位m
        :param Y: Y轴刻度值,单位m
        :param Z: Z轴刻度值,单位m
        :param coorSys: 坐标系选择,参数可以为"wgs84"、"cgcs2000",
        :return: LBH  单位°、m
        """
    
        a = 6378137  # 半长轴
        if coorSys == "wgs84":
            e = 0.08181919084248535
        elif coorSys == "cgcs2000":
            e = 0.08181919104281517
    
        L = math.atan(Y / X) / math.pi * 180
    
        tB = 0
        N = a / math.sqrt(1 - math.pow(e, 2) * math.pow(math.sin(tB), 2))
        B = math.atan((Z + N * math.pow(e, 2) * math.sin(tB)) / math.sqrt(X*X + Y*Y))
        while B - tB > 0.00000001:
            tB = B
            N = a / math.sqrt(1 - math.pow(e, 2) * math.pow(math.sin(tB), 2))
            B = math.atan((Z + N * math.pow(e, 2) * math.sin(tB)) / math.sqrt(X * X + Y * Y))
    
        H = Z/math.sin(B) - N * (1 - e*e)
        B = B/math.pi * 180
    
        return L, B, H

    二、wgs84转cgcs2000的转换矩阵如下

    convert = \begin{bmatrix} 0.999997079 & 3.47778126e-07 & -2.6082455e-07\\ 3.21041821e-08& 1 & 2.14655547e-08\\ 2.13904843e-07& -3.436997e-08 & 1 \end{bmatrix}

    想得到cgcs2000转wgs84的转换矩阵,求逆即可。从convert可以看出来,convert基本上接近单位矩阵E,所以wgs84与cgcs2000的差别是真的小。这个矩阵是我通过地表三个分别在cgcs2000与wgs84坐标下的点,计算得到的。设wgs84下点A(x1, y1, z1),A点在cgcs2000系下坐标为(x2, y2, z2)。那么(x1, y1, z1)* convert = (x2, y2, z2)

     

     

    展开全文
  • } /** * CGCS2000坐标转换成WGS84地理坐标系 * @param x纬度 * @param y经度 */ public void xyTowgs84(double x,double y) { double L0 = gaussLongToDegreen(x, y, 6); double a = 6378137.0D; double efang = 0....
    1.以下位代码直接调用就可以,中央子午线需要查看网址经纬度中央子午线对照表。需要geotools和opengis和kotlin需要的jar包。下载链接:https://pan.baidu.com/s/1AZnt3YHk9CyofYdvgLRaHQ 
    提取码:ak47 
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package org.fh.controller.fhoa;
    
    import cn.hutool.core.lang.Tuple;
    import org.apache.shiro.authz.annotation.RequiresPermissions;
    import org.geotools.geometry.jts.JTS;
    import org.geotools.referencing.CRS;
    import org.geotools.referencing.crs.DefaultGeographicCRS;
    import org.junit.Test;
    import org.opengis.geometry.MismatchedDimensionException;
    import org.opengis.referencing.FactoryException;
    import org.opengis.referencing.crs.CoordinateReferenceSystem;
    import org.opengis.referencing.operation.MathTransform;
    import org.opengis.referencing.operation.TransformException;
    import kotlin.jvm.internal.Intrinsics;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.validation.constraints.NotNull;
    import java.awt.geom.Point2D;
    import java.util.Date;
    /**
     * @Description  84坐标转china2000
     * @Author 未知人员
     * @Date 2021/8/27 11:21 
     * @Param 
     * @return 
     **/
    @Controller
    @RequestMapping(value="/Geo")
    public class Geo {
    
        private  double p = 206264.80624709636D;
        /**WGS84地理坐标系转换成CGCS2000坐标
         * @throws Exception
         */
        @RequestMapping(value="/list")
        @ResponseBody
        public  double [] xytolatlon() {
            double lat ,lon;
            double Y=612508.8925;//平面坐标Y
            double X=4998860.4083;//平面坐标X
            double L0=123D;//中央子午线,结合这个网址进行查找,目前用的EPSG:4532中的123D。https://wenku.baidu.com/view/e219e246e3bd960590c69ec3d5bbfd0a7856d530.html
            Y-=500000;
            double []  result  = new double[2];
            double iPI = 0.0174532925199433;//pi/180
            double a = 6378137.0; //长半轴 m
            double b = 6356752.31414; //短半轴 m
            double f = 1/298.257222101;//扁率 a-b/a
            double e = 0.0818191910428; //第一偏心率 Math.sqrt(5)
            double ee = Math.sqrt(a*a-b*b)/b; //第二偏心率
            double bf = 0; //底点纬度
            double a0 = 1+(3*e*e/4) + (45*e*e*e*e/64) + (175*e*e*e*e*e*e/256) + (11025*e*e*e*e*e*e*e*e/16384) + (43659*e*e*e*e*e*e*e*e*e*e/65536);
            double b0 = X/(a*(1-e*e)*a0);
            double c1 = 3*e*e/8 +3*e*e*e*e/16 + 213*e*e*e*e*e*e/2048 + 255*e*e*e*e*e*e*e*e/4096;
            double c2 = 21*e*e*e*e/256 + 21*e*e*e*e*e*e/256 + 533*e*e*e*e*e*e*e*e/8192;
            double c3 = 151*e*e*e*e*e*e*e*e/6144 + 151*e*e*e*e*e*e*e*e/4096;
            double c4 = 1097*e*e*e*e*e*e*e*e/131072;
            bf = b0 + c1*Math.sin(2*b0) + c2*Math.sin(4*b0) +c3*Math.sin(6*b0) + c4*Math.sin(8*b0); // bf =b0+c1*sin2b0 + c2*sin4b0 + c3*sin6b0 +c4*sin8b0 +...
            double tf = Math.tan(bf);
            double n2 = ee*ee*Math.cos(bf)*Math.cos(bf); //第二偏心率平方成bf余弦平方
            double c = a*a/b;
            double v=Math.sqrt(1+ ee*ee*Math.cos(bf)*Math.cos(bf));
            double mf = c/(v*v*v); //子午圈半径
            double nf = c/v;//卯酉圈半径
    
            //纬度计算
            lat=bf-(tf/(2*mf)*Y)*(Y/nf) * (1-1/12*(5+3*tf*tf+n2-9*n2*tf*tf)*(Y*Y/(nf*nf))+1/360*(61+90*tf*tf+45*tf*tf*tf*tf)*(Y*Y*Y*Y/(nf*nf*nf*nf)));
            //经度偏差
            lon=1/(nf*Math.cos(bf))*Y -(1/(6*nf*nf*nf*Math.cos(bf)))*(1+2*tf*tf +n2)*Y*Y*Y + (1/(120*nf*nf*nf*nf*nf*Math.cos(bf)))*(5+28*tf*tf+24*tf*tf*tf*tf)*Y*Y*Y*Y*Y;
            result[0] =retain6(lat/iPI);
            result[1] =retain6(L0+lon/iPI);
            System.out.println(result[1]+","+result[0]);
            //GetXY(result[0],result[1],6.0D);
            return result;
        }
        private  double retain6(double num) {
            String result = String.format("%.10f", num);//小数点后面保留10位小数
            return Double.valueOf(result);
        }
    
        /**
         * CGCS2000坐标转换成WGS84地理坐标系
         * @param x纬度
         * @param y经度
         */
        public  void xyTowgs84(double x,double y) {
            double L0 = gaussLongToDegreen(x, y, 6);
            double a = 6378137.0D;
            double efang = 0.0066943799901413D;
            double e2fang = 0.0067394967422764D;
            y = y - (double)500000;
            double m0 = 0.0D;
            double m2 = 0.0D;
            double m4 = 0.0D;
            double m6 = 0.0D;
            double m8 = 0.0D;
            m0 = a * ((double)1 - efang);
            m2 = 1.5D * efang * m0;
            m4 = efang * m2 * 5.0D / 4.0D;
            m6 = efang * m4 * 7.0D / 6.0D;
            m8 = efang * m6 * 9.0D / 8.0D;
            double a0 = 0.0D;
            double a2 = 0.0D;
            double a4 = 0.0D;
            double a6 = 0.0D;
            double a8 = 0.0D;
            a0 = m0 + m2 / 2.0D + m4 * 3.0D / 8.0D + m6 * 5.0D / 16.0D + m8 * 35.0D / 128.0D;
            a2 = m2 / 2.0D + m4 / 2.0D + m6 * 15.0D / 32.0D + m8 * 7.0D / 16.0D;
            a4 = m4 / 8.0D + m6 * 3.0D / 16.0D + m8 * 7.0D / 32.0D;
            a6 = m6 / 32.0D + m8 / 16.0D;
            a8 = m8 / 128.0D;
            double FBf = 0.0D;
            double Bf0 = x / a0;
    
            for(double Bf1 = 0.0D; Bf0 - Bf1 >= 1.0E-4D; Bf0 = (x - FBf) / a0) {
                Bf1 = Bf0;
                FBf = -a2 * Math.sin((double)2 * Bf0) / (double)2 + a4 * Math.sin((double)4 * Bf0) / (double)4 - a6 * Math.sin((double)6 * Bf0) / (double)6 + a8 * Math.sin((double)8 * Bf0) / (double)8;
            }
    
            double Wf = Math.sqrt((double)1 - efang * Math.sin(Bf0) * Math.sin(Bf0));
            double Nf = a / Wf;
            double Mf = a * ((double)1 - efang) / Math.pow(Wf, 3.0D);
            double nffang = e2fang * Math.cos(Bf0) * Math.cos(Bf0);
            double tf = Math.tan(Bf0);
            double B = Bf0 - tf * y * y / ((double)2 * Mf * Nf) + tf * ((double)5 + (double)3 * tf * tf + nffang - (double)9 * nffang * tf * tf) * Math.pow(y, 4.0D) / ((double)24 * Mf * Math.pow(Nf, 3.0D)) - tf * ((double)61 + (double)90 * tf * tf + (double)45 * Math.pow(tf, 4.0D)) * Math.pow(y, 6.0D) / ((double)720 * Mf * Math.pow(Nf, 5.0D));
            double l = y / (Nf * Math.cos(Bf0)) - ((double)1 + (double)2 * tf * tf + nffang) * Math.pow(y, 3.0D) / ((double)6 * Math.pow(Nf, 3.0D) * Math.cos(Bf0)) + ((double)5 + (double)28 * tf * tf + (double)24 * Math.pow(tf, 4.0D)) * Math.pow(y, 5.0D) / ((double)120 * Math.pow(Nf, 5.0D) * Math.cos(Bf0));
            double L = l + L0;
            double[] array_B = this.rad2dms(B);
            double[] array_L = this.rad2dms(L);
            double Bdec = this.dms2dec(array_B);
            double Ldec = this.dms2dec(array_L);
            System.out.println(Bdec+":"+Ldec);
            //return new Tuple(Bdec, Ldec);
        }
        public  double gaussLongToDegreen(double B, double L, int N) {
            double L00 = (double)Math.round(L / (double)3) * (double)3;
            return L00 / (double)180 * 3.1415926D;
        }
    
        public  double[] rad2dms(double rad) {
            double[] a = new double[]{0.0D, 0.0D, 0.0D};
            double dms = rad * p;
            a[0] = Math.floor(dms / 3600.0D);
            a[1] = Math.floor((dms - a[0] * (double)3600) / 60.0D);
            a[2] = (double)((int)Math.floor(dms - a[0] * (double)3600)) - a[1] * (double)60;
            return a;
        }
    
        public  double dms2dec( double[] dms) {
            Intrinsics.checkNotNullParameter(dms, "dms");
            double dec = 0.0D;
            dec = dms[0] + dms[1] / 60.0D + dms[2] / 3600.0D;
            return dec;
        }
    }

    展开全文
  • 批量转换.img格式影像,(WGS84坐标系CGCS2000坐标系
  • 本软件为博主本人开发,转换精度已验证,目前仅支持百度、高德火星坐标CGCS2000WGS84之间的互相转换,可以实现单点转换和批量转换。
  • 经纬度WGS84地理坐标系转换成CGCS2000坐标系步骤

    万次阅读 多人点赞 2020-07-11 18:28:31
    4、WGS84坐标转换为地理坐标系-world-ITRF2000 5、打开ArcCatalog,找到上一步中已经成ITRF2000坐标系的shp文件,单击右键-属性,将图层坐标重新定义成GCGS2000地理坐标系 6、重新打开arcmap,重新打开已经...

    来源于 GIS前沿 微信公众号

    1、 将图层从奥维中导出成shp文件,
    在这里插入图片描述
    2、 打开arcgis-arcmap
    在这里插入图片描述
    3、地理处理-arctoolbox-数据管理工具-投影和变换-要素-投影
    在这里插入图片描述
    在这里插入图片描述
    4、WGS84坐标转换为地理坐标系-world-ITRF2000
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5、打开ArcCatalog,找到上一步中已经成ITRF2000坐标系的shp文件,单击右键-属性,将图层坐标重新定义成GCGS2000地理坐标系
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    6、重新打开arcmap,重新打开已经重新定义坐标系的shp文件,按照地理处理-arctoolbox-数据管理工具-投影和变换-要素-投影
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7、关于带号计算方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果不用带带号的,采用所在区域中央经度,
    在这里插入图片描述
    均为3度带中央经度线
    在这里插入图片描述
    如果前面加带号,采用6度带或三度带带号,均为三度带带号

    8、计算
    上一步将GCGS2000地理坐标系转换为GCGS2000投影坐标系后,打开上一步转换成投影坐标系后的shp文件,单击图层,右键属性,常规里,将十进制单位改成米。
    再右键单击shp图层,打开属性表,添加字段,添加x,y坐标字段

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    *这里需要注意一个事项,前面我们在选带号是,有带带号,也有没带带号,如果带带号,那么计算出来的y(对应经度)是8位,如果不带带号,对应的y(对应经度)是6位;x(对应纬度)是7位,不变。

    展开全文
  • 栅格影像WGS84转CGCS2000坐标
  • 七参数坐标转换工具(可在WGS84、北京54、西安80、CGCS2000坐标系中任意两个转换),也可以自定义参数转换
  • 遥感影像WGS84投影批量转换到CGCS2000的3度带坐标系
  • CGCS2000坐标系WGS84坐标系的比较及采用
  • WGS84 CGCS2000 北京54 西安80 大地坐标精确转换工具。含计算工具和实例文本,坐标转换主要应用在工程测量以及GIS相关的很多领域。不用的领域对其转换的精度要求也不一样,在使用GOOLE EARTH时或者GIS地图中,精度在...
  • JavaScript版本(JS )地方独立坐标系转84坐标系(近似200坐标系),误差0.1米左右。代码是JS版本,prij4库。
  • 请移步github,可以说,真nb https://github.com/geocompass/pg-coordtransform

    请移步github,可以说,真nb,有帮助,记得点赞
    https://github.com/geocompass/pg-coordtransform

    展开全文
  • 此脚本文件详细提供了WGS-84坐标系转换到大地坐标系的过程
  • WGS84CGCS2000的转换

    千次阅读 2020-12-30 14:48:27
    1.自定义坐标转换工具。 工具是: 具体选择依照下图设置,点击确定等待完成。 2.投影转换,步骤和工具如常规一样。就是在转换界面的这个框里会自动跳出我们上步自定义方法,再转换就可以了。 ...
  • Java实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
  • cesium加载WGS84坐标系,而计算软件中使用的是CGCS2000坐标,在python中实现坐标转换,后生成geojson用于web端展示 解决: python中引入: from pyproj import Transformer from pyproj import CRS 代码: 其中: ...
  • 程序与2018年12月更新,增加了CGCS2000坐标系。程序可以实现 WGS84 大地坐标 UTM投影坐标 北京54 大地坐标 高斯克吕格投影坐标 西安80 大地坐标 高斯克吕格投影坐标 CGCS2000大地坐标 高斯克吕格投影坐标之间的布尔...
  • 因为工作需要,将GCS_WGS_1984地理坐标系的DEM转为CGCS2000_GK_CM_105E投影坐标系,中间碰了很多坑,利用arcgis“数据管理工具”-“投影和变换”下的“定义投影”和“投影”都做了尝试,转换前本来重合的影像,转换...
  • 今天给大家带来的是《经纬度WGS84地理坐标系转换成CGCS2000坐标系步骤》,为了大家更好的找到我,点击关注本微信号《测绘之家》,下次查找不迷路!欢迎大家收藏查阅!1、将图层从奥维中导出成shp文件2、打开arcgis-...
  • 功能:本工具可将百度坐标系的XY(经纬度)坐标转换到WGS84下的XY(经纬度)坐标并生成SHP图层。 注:内附使用说明。
  • 用于百度坐标系、谷歌高德坐标系WGS84坐标系之间的相互转换
  • WGS84CGCS2000坐标系

    千次阅读 2019-10-04 17:40:42
    1.WGS84WGS是世界大地测量系统World GeodeticSystem的缩写,84是说此坐标系是1984年建立的; 2.GPS数据:一般是WGS84坐标,以大地坐标(经纬度)的形式展现,无投影。 3.WGS84坐标系是一种国际上采用的...
  • QGIS 3中如何将WGS84转换为国家2000大地坐标系? 今天来回答一位朋友在后台留言提出的问题:怎么将WGS84坐标转换为国家2000大地坐标系。 01工程坐标系 从地图窗口右下角的状态栏可以看到当前地图窗口的坐标...
  • 参考: https://www.zhihu.com/question/35775670
  • 支持GPS WGS84 国家2000 西安80 北京54坐标系的大地、经纬度坐标和平面坐标之间的转换,换带计算,不同坐标系之间的7参数、4参数转换 注意:运行时,杀毒软件可能会提示存在木马,这是授权机制引起的,请忽略,或者...
  • CGCS2000坐标系WGS84的相互投影转换

    万次阅读 2016-10-20 11:10:00
    注意:投影转换成cgcs2000坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准。 第一步:选择无偏移地图源,下载你所需要的卫星图像。 第二步:选择BIGEMAP软件...

空空如也

空空如也

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

wgs84坐标系转cgcs2000