如何解决cad坐标转换换,坐标偏移

【高德地图API】如何解决坐标转换,坐标偏移? - DreamSea - 博客园
/thread-.html#rd?sukey=cbbc36ac2b0baceaddf5bf3a144e9ae715c2253b0bba87b05dcc82d6c0e74
摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题。最后给出坐标拾取工具。
---------------------------------------------------------------------------------------------------------------------------
一、坐标体系
首先我们要明白,开发者能接触到哪些坐标体系呢?
第一种分类:
1、&&GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度:
2、&&GCJ-02,国测局02年发布的坐标体系。又称&火星坐标&。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、&&其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
第二种分类:
首先明白,所有坐标体系的原点,都是非洲。
1、&&经纬度。这个是球面坐标,对于北京来说,就是(116.961)这样的坐标。比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。
如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。
2、&&墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(26.)
墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。
搜狗地图API就是直接使用的墨卡托坐标。
二、坐标转换
在各种web端平台,或者高德、腾讯、百度上取到的坐标,都不是GPS坐标,都是GCJ-02坐标,或者自己的偏移坐标系。
比如,你在谷歌地图API,高德地图API,腾讯地图API上取到的,都是GCJ-02坐标,他们三家都是通用的,也适用于大部分地图API产品,以及他们的地图产品。
例外,百度API上取到的,是BD-09坐标,只适用于百度地图相关产品。
例外,搜狗API上取到的,是搜狗坐标,只适用于搜狗地图相关产品。
例外,谷歌地球,google earth上取到的,是GPS坐标,而且是度分秒形式的经纬度坐标。在国内不允许使用。必须转换为GCJ-02坐标。
1、度分秒坐标转换为经纬度
比如,在GPS记录仪,或者google earth上采集到的是39&31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。
2、&&GPS转换为GCJ-02坐标
谷歌,高德,腾讯的地图API官网上,都不直接提供这样的坐标转换。如果要得到GCJ-02坐标,最好在他们的地图上直接取点,或者通过地址解析得到。(这个工具我后续会贴出来的。我就爱干这样的事情,哈哈。)
不过,在网上搜到了这样的接口,该接口的type=1就是GPS转到GCJ-02的墨卡托坐标。请大家对接口保密,哈哈。详见:
/api/documentation/javascript/api2.5/interface_translate.html#late_intro
3、GCJ-02与BD-09之间互转
国测局GCJ-02坐标体系(谷歌、高德、腾讯),与百度坐标BD-09体系的转换,在CSDN上有很详细的讲解:
http://blog.csdn.net/coolypf/article/details/8569813
不过也有更简单的算法,线性算法(lat和lng是经纬度,球面坐标):
To_B是转到百度,To_G是转到GCJ-02。
var TO_BLNG = function(lng){return lng+0.0065;};
var TO_BLAT = function(lat){return lat+0.0060;};
var TO_GLNG = function(lng){return lng-0.0065;};
var TO_GLAT = function(lat){return lat-0.0060;};
4、经纬纬度转成墨卡托
网上也有详细讲解:
http://bbs./esri/viewthread.php?tid=78245
5、各家API公司坐标转换接口的申请
一般需要将您的公司名称、项目名称、项目简介、联系人和联系方式,发邮件至地图API公司的商务部,经过申请,才能使用。
下面是他们的联系方式:
这个,国内没有公交接口,大家应该不会再使用了吧。  
(大家发现没,高德是api,腾讯和百度是mapapi,说明什么?)
三、坐标偏移
如果您的坐标在转换之后,还有偏移,那么考虑以下几个方面。
A、原始坐标系弄错,比如以为自己是GPS坐标,但其实已经是GCJ-02坐标。
解决方案:请确保采集到的数据是哪个坐标体系,需要转换到哪个坐标系,再进行坐标转换。
B、原始坐标准确度不够
解决方案:如果您是GPS坐标,请确保采集GPS数据时,搜到至少4颗以上的卫星。并且GPS数据准不准,还取决于周围建筑物的高度,越高越不准,因为有遮挡。
如果本来就是GCJ-02坐标,在不同地图放大级别的时候,看到的地方可能不一样。比如你在地图级别4(国家)取到的坐标,放大到地图12级(街道)时,坐标就偏了。请确保在地图最大放大级别时,拾取坐标。
C、度分秒的概念混淆
比如,在google earth上采集到的是39&31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。
D、经纬度顺序写反了
有些公司(比如高德,百度,腾讯)是先经度,再纬度,即Point(lng lat)。但谷歌坐标的顺序恰好相反,是(lat lng)。
四、坐标拾取工具
既然在国内必须至少使用GCJ-02的坐标系,而GCJ-02,&火星坐标&是在国内最广泛使用的坐标体系。那么,我们就来看看,如何直接获取到GCJ-02坐标呗。
请大家把这段代码保存到记事本里,然后后缀名改为.html,记得用UTF-8编码来保存。然后双击这个文件,就能打开网页了。
&!DOCTYPE HTML&&html&&head&&meta&http-equiv="Content-Type"&content="text/ charset=utf-8"&&title&火星坐标拾取&/title&&script&language="javascript"&src="/maps?v=1.2&key=c146a76f7c210c2786aec9"&&/script&&style&#iMap{height:500px;width:600px;float:left;}.info{float:left;margin:0 0 0 10px;}label{width:80px;float:left;}&/style&&/head&&bodyonLoad="mapInit()"&& &&&div&id="iMap"&&/div&& &&&div&class="info"&& && &&&&p&&label&火星坐标:&/label&&span&id="lnglat"&&&/span&&/p&& && &&&&p&&label&地址:&/label&&span&id="iAddress"&&&/span&&/p&& && &&&&/br&& && &&&&p&说明:&/p&& && &&&&p&1、鼠标滚轮可以缩放地图,拖动地图。&/p&& && &&&&p&2、点击地图,即可获得GCJ-02的经纬度坐标,地址。&/p&& &&&/div&&/body&&script&language="javascript"&varmapOvar&lnglatXY;//初始化地图function&mapInit(){& &&var&opt&=&{& && && & level:&13&//设置地图缩放级别& &&& && &&&center:&newAMap.LngLat(116.397428&39.90923)&//设置地图中心点& && & }& && &mapObj&=&new&AMap.Map("iMap"&opt);& && && & AMap.event.addListener(mapObj'click'getLnglat);&//点击事件}function&geocoder() {& &&var&MG& &&//加载地理编码插件& & mapObj.plugin(["AMap.Geocoder"]&function() {& && && && && & MGeocoder&=&new&AMap.Geocoder({& && && && & radius:&1000& && && && &extensions:&"all"& && &&&});& && &&&//返回地理编码结果&& && &&&AMap.event.addListener(MGeocoder&"complete"&geocoder_CallBack);& && && &//逆地理编码& && &&&MGeocoder.getAddress(lnglatXY);& &&&});& &&//加点& &&var&marker&=&new&AMap.Marker({& && &&&map:mapObj& && &&&icon:&new&AMap.Icon({& && && && &image:&"/Public/images/js/mark.png"& && && && &size:new&AMap.Size(5830)& && && && &imageOffset:&new&AMap.Pixel(-32&-0)& && &&&})& && &&&position: lnglatXY& && &&&offset:&new&AMap.Pixel(-5-30)& & });& & mapObj.setFitView();}//回调函数function&geocoder_CallBack(data) {& &var&& &&//返回地址描述& & address&=&data.regeocode.formattedA& &&//返回结果拼接输出& & document.getElementById("iAddress").innerHTML&=&}&&//鼠标点击,获取经纬度坐标&&function&getLnglat(e){& && &&&mapObj.clearMap();& &&var&x&=&e.lnglat.getLng();& &&var&y&=&e.lnglat.getLat();& &&&document.getElementById("lnglat").innerHTML&=&x&+&""&+&y;& && &&&lnglatXY&=&new&AMap.LngLat(xy);& & geocoder();}&/script&&/html&
打开之后,是这样的:
点击一下地图,即可获得GCJ-02坐标,地址:
demo地址:常用软件:
行业应用:
地图下载:
当前位置: →
坐标转换相关知识
Tags:&&&&来源:本站整理&&&&发布时间: 09:58:46&&&&&&&&
&1. 坐标系统之间的转换
(1)坐标系分类
& & & & & & & & 不同参心坐标系之间的转换、不同地心坐标系之间的转换
& & & & & & & & 参心坐标系与地心坐标系之间的转换
& & & & & & & & 相同坐标系的直角坐标与大地坐标之间的坐标转换
& & & & & & & & 大地坐标与高斯平面坐标之间的转换
& & & &在两个空间角直坐标系中,假设其分别为O-XYZ和o-xyz,如果两个坐标系的原点相同,通过三次旋转,就可以两个坐标系重合;如果两个直角坐标系的原点不在同一个位置,通过坐标轴的平移和旋转可以取得一致;如果两个坐标系的尺度也不尽一致,就需要再增加一个尺度变化参数。
& & & & 对于大地坐标和高斯投影平面坐标之间的转换,则需要通过高斯投影正算、高斯投影反算,通过使用中央子午线经度、不同的参考椭球、不同投影面的选择来实现坐标的转换。
2. 三参数、四参数、七参数
(1)七参数: & & &平移变量(Dx、Dy、Dz)、旋转变量(Rx、Ry、Rz)、 尺度缩放(K)
& & & & &三参数: & & &平移变量(Dx、Dy、Dz)、旋转变量= 0、 尺度缩放=1
& & & & & & & & & & & & & & &三参数就是七参数的特例
& & & & & & & & & & & & & & &三参数和七参数都是两个空间坐标系之间转换-椭球转换(不同椭球体)
(2)四参数: & & &暂无统一标准
& & & & & & & & & & & & & & &两个平面坐标系之间转换-平面转换(同一椭球体)
& & & &WGS84、BJ54是两种不同的大地基准面,采用不同的参考椭球体,因而两种坐标系下,同一个点的坐标,无论是三度带、六度带坐标、还是经纬度坐标都是不同。当要把GPS接收到的点(WGS84)叠加到BJ54坐标系统的底图上,这些GPS点不能准确的定位到它该在的地方,即&与实际地点发生了偏移&。因此要把GPS点从WGS84坐标系统转换成BJ54坐标系统。
& & & 在不同的椭球之间的转换是不严密的,一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即3个平移因子(X平移、Y平移、Z平移),3个旋转因子(X旋转、Y旋转、Z旋转),一个比例因子(也叫尺度变化K)。在工作区内找三个以上的已知点,利用已知点的BJ54坐标和所测WGS84坐标,通过一定的数学模型,求解七参数。若多选几个已知点,通过平差的方法可以获得较好的精度。
& & & 如果区域范围不大,最远点间的距离不大于30Km(经验值),可以用三参数(莫洛登斯基模型),即只考虑3个平移因子,而将旋转因子视为0、比例因子视为1,所以三参数只是七参数的一种特例。GPS导航时一般使用三参数就可以达到较高精度,七参数太麻烦而且不实用。
& & & 同一个椭球里的转换都是严密的,在同一个椭球的不同坐标系中转换需要用到四参数转换,如深圳既有北京54坐标又有深圳坐标,在这两种坐标之间转换就用到四参数。计算四参数需要两个已知点。 &
3. &地形图坐标系
& & 我国的地形图采用高斯-克吕格平面直角坐标系。
& & 在该坐标系中: & &横轴- 赤道,用Y表示;
& & & & & & & & & & & & & & & & 纵轴- 中央经线,用X表示;
& & & & & & & & & & & & & & & & 坐标原点- 中央经线与赤道的交点,用O表示。
& & & &赤道以南为负,以北为正;中央经线以东为正,以西为负。我国位于北半球,故纵坐标均为正值,但为避免中央经度线以西为负值的情况,将坐标纵轴西移500公里(500,000米)。
& & & 1954年我国在北京设立了大地坐标原点,采用克拉索夫斯基椭球体,依此计算出来的各大地控制点的坐标,称为北京54坐标系。
4. 6度带、3度带、中央经线
& & & & 我国采用6度分带和3度分带。
  1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,&&表示.即东经0~6度为第一带,其中央经线的经度为东经3度,东经6~12度为第二带,其中央经线的经度为9度。
  1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,&&表示,全球共划分120个投影带,即东经1.5~4.5度为第1带,其中央经线的经度为东经3度,东经4.5~7.5度为第2带,其中央经线的经度为东经6度。
  地形图上公里网横坐标前2位就是带号,例如:1:5万地形图上的某个横坐标,其中20即为带号,345486为横坐标值。
5.中央经线计算的方法
(1)六度带中央经线经度的计算: & 当地中央经线经度=6&&当地带号-3&
& & & & & & & & & & & & & & & & & & & & & & & & & & & & (适用于1∶2.5万和1∶5万地形图)
& & & & & & & & & & & & & & & & & & & & & & & &如: & 地形图上的横坐标为20345,其所处的六度带的中央经线经度为:6&&20-3&=117&
(2)三度带中央经线经度的计算: & 中央经线经度=3&&当地带号
& & & & & & & & & & & & & & & & & & & & & & & & & & & & &(适用于1∶1万地形图)
按字母检索
按声母检索
&&&&&&Copyright (C)
. All Rights Reserved百度坐标与GPS坐标转换 -
- ITeye技术网站
博客分类:
官网这么说的
4.3 百度坐标为何有偏移?
国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。
百度地图API中,有GPS坐标转百度坐标的功能 /map/wiki/index.php?title=androidsdk/guide/tool这个转换算法百度是不会公开的,而且百度也没有提供百度坐标转成GPS坐标功能,这里我用了取巧的办法。 百度坐标和GPS坐标转换在很近的距离时偏差非常接近。 假设你有百度坐标:x1=116.397428,y1=39.90923 把这个坐标当成GPS坐标,通过接口获得他的百度坐标:x2=116.,y2=39. 通过计算就可以得到GPS的坐标: x = 2*x1-x2,y = 2*y1-y2 x=116.01 y=39.
convertBaiduToGPS befour:(30..577475)
convertBaiduToGPS after:(30..565995)
转换方法如下:
public static LatLng convertGPSToBaidu(LatLng sourceLatLng) {
// 将GPS设备采集的原始GPS坐标转换成百度坐标
CoordinateConverter converter
= new CoordinateConverter();
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标
converter.coord(sourceLatLng);
LatLng desLatLng = converter.convert();
return desLatL
public static LatLng convertBaiduToGPS(LatLng sourceLatLng) {
// 将GPS设备采集的原始GPS坐标转换成百度坐标
CoordinateConverter converter = new CoordinateConverter();
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标
converter.coord(sourceLatLng);
LatLng desLatLng = converter.convert();
double latitude = 2 * sourceLatLng.latitude - desLatLng.
double longitude = 2 * sourceLatLng.longitude - desLatLng.
BigDecimal bdLatitude = new BigDecimal(latitude);
bdLatitude = bdLatitude.setScale(6, BigDecimal.ROUND_HALF_UP);
BigDecimal bdLongitude = new BigDecimal(longitude);
bdLongitude = bdLongitude.setScale(6, BigDecimal.ROUND_HALF_UP);
return new LatLng(bdLatitude.doubleValue(), bdLongitude.doubleValue());
浏览 14612
浏览: 88407 次
来自: 鄂州
写的很好,谢谢分享
在Fragment中使用布局怎么显示不出来
Mybeautiful 写道显然有问题,return Bitm ...
显然有问题,return BitmapFactory.deco ...
加入我工程的时候有个诡异的bug,下拉刷新布局就会覆盖主Vie ...利用ArcGIS进行地图投影和坐标转换的方法
利用AcGIS进行地图投影和坐标转换的方法1、动态投影(AcMap)所谓动态投影指,AcMap中的Data的空间参考或是说坐标系统是默认为第一加载到当前工作区的那个文件的坐标系统,后加入的数据,如果和当前工作区坐标系统不相同,则AcMap会自动做投影变换,把后加入的数据投影变换到当前坐标系统下显示!但此时数据文件所存储的数据并没有改变,只是显示形态上的变化!因此叫动态投影!表现这一点最明显的例子就是,在ExpotData时,会让你选择是按thislaye'ssoucedata(数据源的坐标系统导出),还是按照theData(当前数据框架的坐标系统)导出数据!2、坐标系统描述(AcCatalog)大家都知道在AcCatalog中可以一个数据的坐标系统说明!即在数据上鼠标右键-Popeties-XYCoodinateSystem选项卡,这里可以通过modify,Select、Impot方式来为数据选择坐标系统!但有许多人认为在这里改完了,数据本身就发生改变了!但不是这样的!这里缩写的信息都对应到该数据的.aux文件!如果你去把该文件删除了,重新查看该文件属性时,照样会显示Unknown!这里改的仅仅是对数据的一个描述而已,就好比你入学时填写的基本资料登记卡,我改了说明但并没有改变你这个人本身!因此数据文件中所存储的数据的坐标值并没有真正的投影变换到你想要更改到的坐标系统下!但数据的这个描述也是非常重要的,如果你拿到一个数据,从AcMap下所显示的坐标来看,像是投影坐标系统下的平面坐标,但不知道是基于什么投影的!因此你就无法在做对数据的进一不处理!比如:投影变换操作!因为你不知道要从哪个投影开始变换!因此大家要更正一下对AcCatalog中数据属性中关于坐标系统描述的认识!3、投影变换(AcToolBox)上面说了这么多,要真正的改变数据怎么办,也就是做投影变换!在AcToolBox-DataManagementTools-PojectionsandTansfomations下做!在这个工具集下有这么几个工具最常用,1、DefinePojection2、Featue-Poject3、Raste-PojectRaste4、CeateCustomGeogaphicTansfomation
& 果果文库所有资源均来源于互联网,仅供网友学习交流,若侵犯了您的权益,请联系我们予以删除。
6126&&人浏览
8134&&人浏览
2954&&人浏览
13310&&人浏览
16792&&人浏览
10359&&人浏览
7258&&人浏览
7156&&人浏览
10486&&人浏览
2329&&人浏览
1548&&人浏览
11239&&人浏览
4202&&人浏览
11196&&人浏览
15543&&人浏览
本文标题:利用ArcGIS进行地图投影和坐标转换的方法 链接地址:
copyright@ 2013- Inc. All Rights Reserved 果果文库 版权所有 联系站长: ; 经营许可证编号:浙ICP备号你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。

我要回帖

更多关于 xy坐标转换经纬度 的文章

 

随机推荐