信管家平台恒指期货开户怎么交易开户

百度坐标与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());
浏览 14755
浏览: 88672 次
来自: 鄂州
写的很好,谢谢分享
在Fragment中使用布局怎么显示不出来
Mybeautiful 写道显然有问题,return Bitm ...
显然有问题,return BitmapFactory.deco ...
加入我工程的时候有个诡异的bug,下拉刷新布局就会覆盖主Vie ...&&& &&& &&
&局部平面坐标 & & & & & & & & & & & & & & & & & & & & & & 平移纠正到常用平面坐标系下的坐标 & & & & & &转换后的地理坐标
采用两种方法实现局部平面坐标到地理坐标系的转换:
1.直接进行配准纠正(需要多个控制点,即转换之后点对应的地理坐标);
2.平移转换纠正方法(需要一个控制点);
方法1具体步骤如下:
1.选择控制点,准备配准txt文件;
& 选择多个控制点,并找到其原始坐标和对应的经纬度坐标。
2. 用ArcMap中的&空间校正&工具条进行配准;
& &矢量数据用&空间校正&,栅格数据用&地理配准&
& &首先,在&编辑器&中开始编辑,
& &然后,在&空间校正&中找到&连接线&&&&打开连接线文件&,
& & & & & & 打开准备好的txt文件。打开txt后如下图:
& & & & & &&
& &接着,用&编辑器&中的选择工具选择要配准的要素后,
& & & & & & 点击&空间校正&中的&校正&,实现矢量数据配准。
3. 把配准后的数据定义为地理坐标系即可。
方法2具体步骤:
1.准备一个控制点,即图上某点的原始坐标和对应的经纬度坐标;
& &本例中:
& &原始坐标: &
& &对应经纬度坐标:116..904985
2.根据所在投影带,计算控制点经纬度坐标的平面坐标系,
& &本例中,
& &为把116..904985转换到esriSRProjCS_WGS1984UTM_50N带的平面坐标系;
& &转换后的平面坐标:72
& &转换代码:& &
IPoint pt = new PointClass();
pt.X = 116.425972;
pt.Y = 39.904985;
geo = pt as IG
ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();
geo.SpatialReference = pSRF.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
geo.Project(pSRF.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_WGS1984UTM_50N));//适合北京的wgs84带
IPoint ptGeo = new PointClass();
ptGeo = geo as IP
3. 在ArcMap中把原始数据平移到正确的平面坐标值;
& & 本例中,
& & 原始点: &
& & 要平移到的位置点:72
& & 计算出移动增量:-3893, -76052
& & 用&编辑器&的&移动&工具实现对原始数据的位置移动,
4. 平移后的数据定义为平面坐标,然后转换为经纬度坐标;
& & 定义为
& & 然后转换为。
阅读(...) 评论()相关软件 /英文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /英文/ /中文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
700KB/中文/2.4
27.3M/多国语言[中文]/6.9
1.21G/英文/7.1
597.0M/中文/6.1
157.2M/中文/4.0
27.6M/中文/5.6
109.4M/中文/6.0
Coord坐标转换工具,用于各个球面坐标和平面坐标之间的转换,支持文件格式,它可以实现不同椭球之间的坐标转换,同一椭球的直角坐标、地理坐标和平面坐标相互转换。如北京54到西安80坐标的转换,西安80到地方坐标的转换,西安80坐标系下的直角坐标到地理坐标转换等等,非常容易使用,而且此工具有帮助实例,可以让新手轻松上手,是款相当不错的软件。COORD坐标转换使用说明:本软件采用坐标系统库管理,用户可以将一种转换在系统库里保存下来,下次使用时从文件菜单中选择打开库文件来调用所有已有的转换参数。实例一:转换要求:用户在一个佛山测区内使用RTK G接收机接受了一些点的WGS-84的坐标,现在希望将其转换为北京54和佛山坐标系下的坐标。用户有佛山测区的一些控制点,这些控制点有WGS-84坐标,也有北京-54坐标也有佛山坐标。分析:WGS-84坐标和北京54坐标是不同两个椭球的坐标转换,所以要求得三参数或七参数,而北京54和佛山坐标都是同一个椭球,所以他们之间的转换是地方坐标转换,需要求得地方转化四参数,因为要求得到的北京54是平面坐标所以需要设置投影参数。:步骤:1.& 新建坐标转换文件,便于下次使用转换是不用重新输入,直接打开即可。2.& 设置投影参数。3.& 用一个已知点(WGS84坐标和北京54坐标),计算不同椭球转换的三参数(或七参数)。4.& 确定转换参数。5.& 打开七参数转换,完成WGS84到北京54的转换。6.& 利用多个已知点(北京54坐标和佛山坐标),计算同一个椭球的地方坐标转换(四参数)。7.& 确定转换参数8.& 同时打开七参数和平面转换。完成WGS-84到佛山的转换。北京54的坐标转换为国家80坐标:转换要求:用户在一个测区内有一些点的北京54的坐标,现在希望将其转换为国家80坐标。用户有测区的一些控制点,这些控制点既有北京-54坐标也有国家80坐标。文件转换用户如果需要转换的是一个文件里的所有的点,可以用文件转换来完成。1.& 确定转换关系:按照上面的步骤完成1~8步的操作,这样就确立了转换关系,也就是说文件里所有的点都按照上面确定的转换关系来完成转换。2.& 确定转换格式:在主界面中选择文件转换,点击格式按钮。新建格式:在名称,扩展名中输入相应的内容,然后自己选择数据列表中的内容并添加来确定格式,如果列表中没有的就用其他来表示,完成后点击完成新建。&&&&&&&&&&&&& 选择格式:在格式列表中选择格式&&&&&&&&&&&&& 文件转换方式:转换后的文件有三种方式,如原来的文件是C:\File.txt文件,用户选择其中的一种,这样转换后就会根据这个方式来完成新建文件。却省是在文件扩展名后+1,即转换后会新生成一个C:\File.txt1文件。&&&&&&&&&&&&& 在上述工作完成后,单击确定按钮即可。3.& 选择转换文件并完成转换单击浏览按钮,打开文件选择对话框,选择文件并确定,在左边会显示文件,用户单击 =〉按钮即可完成转换,右边会显示出转换后的文件名和路径,用户可以通过双击列表中的文件即可查看文件内容。
安卓官方手机版
IOS官方手机版
COORD坐标转换 4.2 绿色免费版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。& & 利用谷歌地图,将经纬度转换为xy坐标,导入CAD制图。1、打开谷歌地图,找到要制作的区域,比如这个水库:2、找到标尺图标,因为是制作一个封闭的水库,所以选择&多边形&,如果是制作道路,就选择&路径&:& & 3、用鼠标勾选……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程6530人阅读
几个概念的说明:
WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地理坐标系(中国范
& & &&围除外);
GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系;&
备注:谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系,搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
java代码如下
public class Gps {
private double wgL
private double wgL
public Gps(double wgLat, double wgLon) {
setWgLat(wgLat);
setWgLon(wgLon);
public double getWgLat() {
return wgL
public void setWgLat(double wgLat) {
this.wgLat = wgL
public double getWgLon() {
return wgL
public void setWgLon(double wgLon) {
this.wgLon = wgL
public String toString() {
return wgLat + &,& + wgL
* 各地图API坐标系统比较与转换;
* WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,
* 谷歌地图采用的是WGS84地理坐标系(中国范围除外);
* GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
* 谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系; BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系;
* 搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。 chenhua
public class PositionUtil {
public static final String BAIDU_LBS_TYPE = &bd09ll&;
public static double pi = 3.;
public static double a = ;
public static double ee = 0.;
* 84 to 火星坐标系 (GCJ-02) World Geodetic System ==& Mars Geodetic System
* @param lat
* @param lon
public static Gps gps84_To_Gcj02(double lat, double lon) {
if (outOfChina(lat, lon)) {
double dLat = transformLat(lon - 105.0, lat - 35.0);
double dLon = transformLon(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 *
double magic = Math.sin(radLat);
magic = 1 - ee * magic *
double sqrtMagic = Math.sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
double mgLat = lat + dL
double mgLon = lon + dL
return new Gps(mgLat, mgLon);
* * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return
public static Gps gcj_To_Gps84(double lat, double lon) {
Gps gps = transform(lat, lon);
double lontitude = lon * 2 - gps.getWgLon();
double latitude = lat * 2 - gps.getWgLat();
return new Gps(latitude, lontitude);
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标
* @param gg_lat
* @param gg_lon
public static Gps gcj02_To_Bd09(double gg_lat, double gg_lon) {
double x = gg_lon, y = gg_
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
double bd_lon = z * Math.cos(theta) + 0.0065;
double bd_lat = z * Math.sin(theta) + 0.006;
return new Gps(bd_lat, bd_lon);
* * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 * * 将 BD-09 坐标转换成GCJ-02 坐标 * * @param
* bd_lat * @param bd_lon * @return
public static Gps bd09_To_Gcj02(double bd_lat, double bd_lon) {
double x = bd_lon - 0.0065, y = bd_lat - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
double gg_lon = z * Math.cos(theta);
double gg_lat = z * Math.sin(theta);
return new Gps(gg_lat, gg_lon);
* (BD-09)--&84
* @param bd_lat
* @param bd_lon
public static Gps bd09_To_Gps84(double bd_lat, double bd_lon) {
Gps gcj02 = PositionUtil.bd09_To_Gcj02(bd_lat, bd_lon);
Gps map84 = PositionUtil.gcj_To_Gps84(gcj02.getWgLat(),
gcj02.getWgLon());
return map84;
public static boolean outOfChina(double lat, double lon) {
if (lon & 72.004 || lon & 137.8347)
if (lat & 0.8293 || lat & 55.8271)
public static Gps transform(double lat, double lon) {
if (outOfChina(lat, lon)) {
return new Gps(lat, lon);
double dLat = transformLat(lon - 105.0, lat - 35.0);
double dLon = transformLon(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 *
double magic = Math.sin(radLat);
magic = 1 - ee * magic *
double sqrtMagic = Math.sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
double mgLat = lat + dL
double mgLon = lon + dL
return new Gps(mgLat, mgLon);
public static double transformLat(double x, double y) {
double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y
+ 0.2 * Math.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
public static double transformLon(double x, double y) {
double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1
* Math.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0
* pi)) * 2.0 / 3.0;
public static void main(String[] args) {
// 北斗芯片获取的经纬度为WGS84地理坐标 31..496145
Gps gps = new Gps(31.9.496145);
System.out.println(&gps :& + gps);
Gps gcj = gps84_To_Gcj02(gps.getWgLat(), gps.getWgLon());
System.out.println(&gcj :& + gcj);
Gps star = gcj_To_Gps84(gcj.getWgLat(), gcj.getWgLon());
System.out.println(&star:& + star);
Gps bd = gcj02_To_Bd09(gcj.getWgLat(), gcj.getWgLon());
System.out.println(&bd
Gps gcj2 = bd09_To_Gcj02(bd.getWgLat(), bd.getWgLon());
System.out.println(&gcj :& + gcj2);
上面的代码实现,可以改成在javascript代码,基本上是抄一遍,我就不处理了。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:29789次
排名:千里之外
转载:10篇
(1)(6)(1)(1)(1)(2)(1)(1)(1)(1)(3)

我要回帖

更多关于 原油恒指开户平台 的文章

 

随机推荐