wkid=4326, 4490,cgcs2000,坐标系总结(高德爬取的坐标叠加到84上是什么样)

 高德爬取的坐标叠加到84上是什么样

 坐标是偏移的,要转一下哈,这里给一个流行的python

# -*- coding: utf-8 -*-
import json
import math
import arcpy
import os

x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 长半轴
ee = 0.00669342162296594323  # 扁率

def gcj02towgs84(lng, lat):
    """
    GCJ02(火星坐标系)转GPS84
    :param lng:火星坐标系的经度
    :param lat:火星坐标系纬度
    :return:
    """
    if out_of_china(lng, lat):
        return lng, lat
    dlat = transformlat(lng - 105.0, lat - 35.0)
    dlng = transformlng(lng - 105.0, lat - 35.0)
    radlat = lat / 180.0 * pi
    magic = math.sin(radlat)
    magic = 1 - ee * magic * magic
    sqrtmagic = math.sqrt(magic)
    dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)
    dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)
    mglat = lat + dlat
    mglng = lng + dlng
    return [lng * 2 - mglng, lat * 2 - mglat]


def transformlat(lng, lat):
    ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 
        0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng))
    ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
            math.sin(2.0 * lng * pi)) * 2.0 / 3.0
    ret += (20.0 * math.sin(lat * pi) + 40.0 *
            math.sin(lat / 3.0 * pi)) * 2.0 / 3.0
    ret += (160.0 * math.sin(lat / 12.0 * pi) + 320 *
            math.sin(lat * pi / 30.0)) * 2.0 / 3.0
    return ret


def transformlng(lng, lat):
    ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 
        0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng))
    ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
            math.sin(2.0 * lng * pi)) * 2.0 / 3.0
    ret += (20.0 * math.sin(lng * pi) + 40.0 *
            math.sin(lng / 3.0 * pi)) * 2.0 / 3.0
    ret += (150.0 * math.sin(lng / 12.0 * pi) + 300.0 *
            math.sin(lng / 30.0 * pi)) * 2.0 / 3.0
    return ret


def out_of_china(lng, lat):
    """
    判断是否在国内,不在国内不做偏移
    :param lng:
    :param lat:
    :return:
    """
    if lng < 72.004 or lng > 137.8347:
        return True
    if lat < 0.8293 or lat > 55.8271:
        return True
    return False


if __name__ == '__main__':
    # [lng,lat]=[120.769927,32.042828]
    # [dstlng, dstlat] = gcj02towgs84(lng, lat)
    # print(dstlng, dstlat)

    #创建featureclass poi3

    #添加字段
    path=r'E:
anxxx_gcj02.gdbpoi3'
    spatialref=arcpy.SpatialReference(4326)
    fc=arcpy.CreateFeatureclass_management(os.path.dirname(path), os.path.basename(path),
        "POINT", "", "", "",spatialref)
    arcpy.AddField_management(fc, "name", "TEXT","","",250,"","NULLABLE")
    arcpy.AddField_management(fc, "type1", "TEXT","","",50,"","NULLABLE")
    arcpy.AddField_management(fc, "type2", "TEXT","","",50,"","NULLABLE")
    arcpy.AddField_management(fc, "type3", "TEXT","","",50,"","NULLABLE")
    arcpy.AddField_management(fc, "address", "TEXT","","",150,"","NULLABLE")
    cur2=arcpy.da.InsertCursor(fc, ["SHAPE@","name","type1","type2","type3","address"])
    

    gcj02=r'E:
antonxxxgcj02.gdbpoi2'
    with arcpy.da.SearchCursor(gcj02,["SHAPE@XY","name","type1","type2","type3","address"]) as cursor:
        for row in cursor:
            x,y=row[0]
            [lng, lat] = gcj02towgs84(x, y)
            point = arcpy.Point(lng, lat)
            cur2.insertRow([point,row[1],row[2],row[3],row[4],row[5]])

    del cur2

print 'over'
View Code

国内的常用坐标系

1、WGS-84坐标系:地心坐标系,GPS原始坐标体系
在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。

2、GCJ-02 坐标系:国测局坐标,火星坐标系
1)国测局02年发布的坐标体系,它是一种对经纬度数据的加密算法,即加入随机的偏差。
2)互联网地图在国内必须至少使用GCJ-02进行首次加密,不允许直接使用WGS-84坐标下的地理数据,同时任何坐标系均不可转换为WGS-84坐标。
3)是国内最广泛使用的坐标体系,高德、腾讯、Google中国地图都使用它。

3、CGCS2000坐标系:国家大地坐标系
该坐标系是通过中国GPS 连续运行基准站、 空间大地控制网以及天文大地网与空间地网联合平差建立的地心大地坐标系统。

4、BD-09坐标系
百度中国地图所采用的坐标系,由GCJ-02进行进一步的偏移算法得到。

5、搜狗坐标系
搜狗地图所采用的坐标系,由GCJ-02进行进一步的偏移算法得到。

6、图吧坐标系
图吧地图所采用的坐标系,由GCJ-02进行进一步的偏移算法得到。

 原文:

https://blog.csdn.net/m0_37738114/article/details/80452485

高德坐标点获取

https://lbs.amap.com/console/show/picker

https://wenku.baidu.com/view/572e2a70b14e852459fb57a5.html

 

知乎回答:

https://www.zhihu.com/question/35775670?sort=created

很开心发现了这样一个问题,于是我抱着重拾大地测量学这一非常冷门学科的态度开启了一波拜大神文献操作,尝试用比较通俗的方式去解释一个非常干货的问题。我把时间轴推向2008年,在2008年前后和2015-2018年两个节点检索大地测量学大家们的若干文献,以期通过CGCS2000坐标系启用之初的设想以及当前发展两个角度阐释建立和维持CGCS2000坐标系的意义。为了响应题目,本文将采用逻辑上的倒叙,即先说两种坐标系的异同,再说2000系的意义,最后分享一下我国坐标系的发展经历。个人学识所限,不严谨之处欢迎指正。

1、CGCS2000坐标系与WGS84坐标系的差异

CGCS2000坐标系正式名称为2000国家大地坐标系,是以国际地球框架ITRF1997为参考,采用2000历元建立的区域性地心坐标系统,于2008年正式启用。WGS84为全球卫星定位系统(GPS)建立的一个全球地心坐标系统,WGS84是一个动态维持的坐标系统,几经修正后当前的WGS84(G1674)与ITRF2008在历元2005.0处一致。

我找到了2008年-2009年的两篇论文,分别是魏子卿院士的《2000中国大地坐标系及其与WGS84的比较》和程鹏飞院长等著的《2000 国家大地坐标系椭球参数与GRS80和WGS84的比较》,然后参考论文内容尝试分析一下CGCS2000和WGS84存在多大区别。

大地坐标系有4个主要几何参数,两者有3个相同,分别是长半轴 [公式] ,地心引力常数 [公式] ,自转角速度 [公式] 。只有扁率f不同,CGCS2000是f=1/298.257222101,WGS84是1/298.257223563。由此看出两者之间参数定义的区别是很小的,而这一点区别到底有多影响呢,程院长的论文给出的一个数字是:“给定点位在某一框架和某一历元下的空间直角坐标,投影到CGCS2000椭球和WGS84椭球上所得的纬度的最大差异相当于0.11mm。”

需要注意的是,论文中比较的WGS84应该是2002年启用的WGS84(G1150),对应ITRF2000的2001.0历元。那么不同版本的WGS84之间差多少呢,这里有个参考,魏子卿院士论文中分析WGS84与ITRF2000的符合度为每分量1cm,进而分析出CGCS2000与WGS84是相容的,在坐标系实现精度范围内二者坐标是一致的。

这里有一些难整明白,补充一点个人说明。首先,WGS84和CGCS2000的初始参数都来源于GRS80椭球,而后分别于ITRF坐标框架进行了对应,因此二者在基本定义上是非常接近的;其次,ITRF不同框架间有极微小的差异,这个差异是可以采用7参数法进行转换的。所谓7参数是指两个大地坐标系可以通过x轴平移,y轴平移,z轴平移,x轴旋转,y轴旋转,z轴旋转,尺度比例7个参数进行转换,之前分析的每分量1cm可以近似理解为以地心为原点,椭球长半轴误差不到1cm,对比一下6378137m的长半轴长度,这个误差影响是非常微小的。

2、CGCS2000坐标系的意义

刚才分析了一通CGCS2000和WGS84的误差小到可以忽略,那为什么还要建立CGCS2000坐标系呢?直接用人家的不就完了!这其中还是有一些问题的。我参考了陈俊勇院士2003年发表的《关于中国采用地心3维坐标系统的探讨》,这篇论文是CGCS2000建设前期的一篇重要论文,文中对建立CGCS2000的必要性和可行性作了探讨,结合我个人体会聊一聊这个意义。

第一,当时我国迫切需要地心3维框架。大地坐标系表面上只是一堆坐标数字,但其背后深层次的意义在于为我国各项科学生产活动提供一个位置基准。在此之前,我国采用西安80坐标系,是非地心系,一般只能用作二维平面坐标使用,高程由85高程基准提供。在陆地使用尚可,对海域几乎是空白(海上不能作水准测量);彼时,国内作为基准控制的5万多个天文大地控制点也存在很多损毁,坐标基准难以维持;此外由于卫星定位、实时定位的需求,西安80坐标系都显得不够用了。所以,我们建立一个自己的地心坐标框架是很必要的。

第二,坐标框架必须从底层开始建立。把西安80直接换成WGS84坐标行不行呢?当然是可以,但不科学。WGS84是通过GPS卫星及地面站观测维持的,这些观测数据都掌握在美国及一些国际组织手中。如果我们采用联测的方法建立WGS84国家控制网来做全国基准,会造成坐标框架基础数据的缺失。这样的缺失可能对于一般用途而言无所谓,但对于高精度、实时观测以及未来很多年之后的坐标框架发展就有影响了。因而我们采用原生的参数,覆盖全国的控制点以及持续动态的观测模式维系了一个能够完全为我们掌握的坐标框架,这是符合科学发展规律的。

第三,现代地心三维坐标系统必须要持续维持更新。大家都知道地球的表面是很复杂,地壳内部有着复杂的变动。一套坐标系统建立后,作为维系其基准的地面控制点不断的发生着微小变化,日积月累就足以影响实现精度。作为我国自行建立的坐标系及坐标框架,我们有能力持续维护这一系统,不断提高其精度。

第四,我们需要符合我国国情的坐标系统。WGS84是全球的,具体来说是为美国服务顺便服务全球。相对应的CGCS2000就是要专心为我国服务。在建立CGCS2000的过程中,我们维持了我国国土陆域、海域内的高精度,观测了全国范围的重力异常值,建立了高精度的全国似大地水准面(3维坐标系中获取的高程是大地高,需要通过似大地水准面精化后的高程异常来获得正常高,我国法定高程系统为正常高系统),相当于是对全国的一次全方位测绘,这一切都具有非常重要的意义。

第五,CGCS2000坐标系代表了大国自信。随着北斗定位系统从中国走向全球,CGCS2000坐标系也在探索建立全球框架。未来为什么大家都要用GPS呢?也可以都用北斗啊,用北斗当然就要用2000坐标系啊,我们来为你们维护高精度坐标基准,为你们提供实时定位服务,为你们进行坐标转换,这是大国科技发展的一种必然。

3、CGCS2000坐标系的发展

这一节我参考了2015年宁津生院士等著的《2000 国家大地坐标系框架体系建设及其进展》以及2018年蒋志浩、刘经南院士等著的《全球 CGCS2000 坐标框架的构建理论研究》两篇论文,聊聊CGCS2000坐标系的发展。

(1)CGCS2000框架精化。CGCS2000于2008年启用,但参考历元是2000.0. 当前历元距离参考历元的时间差越长,框架点位的坐标变化也越大。在十年间,国家开展多次框架加密和精化工作,不久的将来可以把历元向前发展,提高整体框架的密度和精度。

(2)CGCS2000的动态维持。在2000坐标系启用后的十年间,我国先后开展了板块模型、速度场模型和非线性速度场模型研究,这些模型研究的精度都非常高,多达毫米级,可以为坐标框架点的运动提供参考,维持坐标系统的高精度实现。

(3)CGCS2000框架更新。在建立了板块模型、速度场模型等基础上,就可以开展对CGCS2000坐标框架的更新。但坐标系统是一个基础性工程,什么时候更新也是有所要求,目前我国已经掌握误差监测手段和更新技术,待误差影响到用户需求时就可以启动更新工作。

(4)测绘成果坐标转换。我国境内大量测绘成果还在使用80坐标系甚至54坐标系,随着CGCS2000坐标系的建成完善,不同区域的坐标转换模型也已建立完毕。各地正在开展测绘成果向2000系转换的工作,先从基础国土数据开始,进而逐渐发展到各行各业。

(5)建立全球CGCS2000坐标框架。目前CGCS2000只是满足我国区域性坐标参考框架应用服务,随着北斗卫星全球化应用的逐步开展,必须要有中国独立自主的全球坐标参考框架做为基础。国内已经开始有了相关的理论和实现技术研究,相信CGCS2000必然可以伴随北斗走向全球。

4、我国坐标系统沿革

作为结尾,我想常识性的回顾一下我国使用过的坐标系统。平面坐标系主要有1954北京坐标系,西安1980坐标系;高程系统有1956黄海高程系和1985国家高程基准。

1954北京坐标系是基于苏联克拉索夫斯基椭球建立的参心坐标系。这一坐标系解决了建国之初缺少统一国家大地基准的问题,很多地区的第一代测绘成果都采用此坐标系统测制。但是1954北京坐标系的观测不严密,坐标原点甚至在苏联境内,很快暴露出精度问题。现在除少数行业和地区成果外,1954坐标基本停用。

1956黄海高程系是我国第一个高程系统。我国一直采用正常高系统作为高程基准(常说的海拔就是绝对高程,高程的一种),以1954为代表的参心坐标系一般在陆地采用其平面坐标的实现,高程则利用高程基准通过水准测量来实现。1956黄海高程系是根据青岛验潮站1950年到1956年的黄海验潮资料确定的平均海平面作为高程基准,水准原点高程为72.289米。

西安1980坐标系是我国第一个自主建立的大地坐标系统,其坐标原点的陕西省泾阳县永乐镇。西安1980坐标系采用1975国际椭球参数,也是一个参心坐标系。该椭球精度比克拉索夫斯基椭球精度高很多,更加符合我国国情。目前,大量的测绘成果还在使用西安1980坐标系。

1985国家高程基准是1956黄海高程系的发展,以青岛验潮站1952年~1979年的潮汐观测资料为计算依据,水准原点设在青岛观象山,原点高程为72.260米。目前,国内绝大多数成果都使用1985国家高程基准。由于,我国法定正常高系统,在80坐标系转换成2000坐标系后,地面高程依然采用1985国家高程基准。

PS:对高程系统感兴趣的小盆友可以钻这个传送门:怎样测量海拔高度? - 测绘小河马的回答

可以说我国大地坐标系统的发展呈现了从二维到三维,从静态到动态,从参心到地心,从外国援助到自主测绘的发展历程。大地测量学好像与大家都很遥远,其实它一直在默默为全国服务。

 

参考文献:

1.蒋志浩,刘经南,等.全球CGCS2000坐标框架的构建理论研究[J].武汉大学学报·信息科学版,2018.43(2):167-174.

2.魏子卿.2000中国大地坐标系及其与WGS84的比较[J].大地测量与地球动力学,2008.28(5):1-5.

3.程鹏飞,文汉江,等.2000国家大地坐标系椭球参数与GRS80和WGS84的比较[J].测绘学报.2009,38(3):189-194.

4.陈俊勇.关于中国采用地心3维坐标系统的探讨[J].测绘学报.2003.32(4):283-288.

5.宁津生,王华,等.2000国家大地坐标系框架体系建设及其进展[J]. 武汉大学学报·信息科学版,2015.40(5):569-573.


原文地址:https://www.cnblogs.com/yansc/p/14212761.html