有些偏到河里可能与  丢失精度有关

这个是很早就认定的事情,百度也会出来一堆结果的。
1.代码纠偏 2.查询纠偏数据库。
第1种方便些。

可能中国的地图是不会准了。。。

http://blog.csdn.net/gatr/article/details/9569189

巧妙解决百度地图加偏纠偏问题

/*** 各地图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.1415926535897932384626;public static double a = 6378245.0;public static double ee = 0.00669342162296594323;/*** 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System** @param lat* @param lon* @return*/public static Gps gps84_To_Gcj02(double lat, double lon) {if (outOfChina(lat, lon)) {return null;}double dLat = transformLat(lon - 105.0, lat - 35.0);double dLon = transformLon(lon - 105.0, lat - 35.0);double radLat = lat / 180.0 * pi;double magic = Math.sin(radLat);magic = 1 - ee * magic * 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 + dLat;double mgLon = lon + dLon;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_lat;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* @return*/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;}/*** 84-->(BD-09)** @param lat* @param lon* @return*/public static Gps gps84_To_Bd09(double lat, double lon) {Gps gcj02 = PositionUtil.gps84_To_Gcj02(lat, lon);Gps bd09 = PositionUtil.gcj02_To_Bd09(gcj02.getWgLat(),gcj02.getWgLon());return bd09;}public static boolean outOfChina(double lat, double lon) {if (lon < 72.004 || lon > 137.8347)return true;if (lat < 0.8293 || lat > 55.8271)return true;return false;}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 * pi;double magic = Math.sin(radLat);magic = 1 - ee * magic * 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 + dLat;double mgLon = lon + dLon;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;return ret;}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;return ret;}/*** 计算两点之间的距离 单位千米** @param lon1 longitude1* @param lat2 latitude1* @param lon2 longitude2* @param lat2 latitude2* @return 距离*/public static float calculateLineDistance(double lon1, double lat1, double lon2, double lat2) {double d2 = lon1;double d3 = lat1;double d4 = lon2;double d5 = lat2;d2 *= 0.01745329251994329D;d3 *= 0.01745329251994329D;d4 *= 0.01745329251994329D;d5 *= 0.01745329251994329D;double d6 = Math.sin(d2);double d7 = Math.sin(d3);double d8 = Math.cos(d2);double d9 = Math.cos(d3);double d10 = Math.sin(d4);double d11 = Math.sin(d5);double d12 = Math.cos(d4);double d13 = Math.cos(d5);double[] arrayOfDouble1 = new double[3];double[] arrayOfDouble2 = new double[3];arrayOfDouble1[0] = (d9 * d8);arrayOfDouble1[1] = (d9 * d6);arrayOfDouble1[2] = d7;arrayOfDouble2[0] = (d13 * d12);arrayOfDouble2[1] = (d13 * d10);arrayOfDouble2[2] = d11;double d14 = Math.sqrt((arrayOfDouble1[0] - arrayOfDouble2[0]) * (arrayOfDouble1[0] - arrayOfDouble2[0]) + (arrayOfDouble1[1] - arrayOfDouble2[1]) * (arrayOfDouble1[1] - arrayOfDouble2[1]) + (arrayOfDouble1[2] - arrayOfDouble2[2]) * (arrayOfDouble1[2] - arrayOfDouble2[2]));return (float) (Math.asin(d14 / 2.0D) * 1.27420015798544E7D);}public static void main(String[] args) {// 北斗芯片获取的经纬度为WGS84地理坐标 31.426896,119.496145//113.37122,23.102846Gps bdGps = PositionUtil.gcj_To_Gps84(31.426896,119.496145);System.out.println(bdGps.getWgLat() + ", " + bdGps.getWgLon());}public static class Gps {private double wgLat;private double wgLon;public Gps(double wgLat, double wgLon) {setWgLat(wgLat);setWgLon(wgLon);}public double getWgLat() {return wgLat;}public void setWgLat(double wgLat) {this.wgLat = wgLat;}public double getWgLon() {return wgLon;}public void setWgLon(double wgLon) {this.wgLon = wgLon;}@Overridepublic String toString() {return wgLat + "," + wgLon;}}
}

关于GPS与GIS的一些思考相关推荐

  1. 对国内GIS行业的思考

    首先说明本文不针对也不攻击任何单位.公司和个人,仅代表个人意见.       看到博客园有个GIS讨论组,所以写一些文字和大家交流.来MS之前我做了很长时间的(地理信息系统)GIS工作,用ESRI s ...

  2. 随着互联网的深化,世间万物都将如何学会思考?

    随着互联网的深化,世间万物都将如何学会思考? 2015-04-19 eNet&Ciweek/白伦 在每一年的年末,世界互联网巨头IBM都会发布最新的"5 in 5"技术预测 ...

  3. GIS是个什么鬼,真的开眼了。感谢好学生的奉献。

    1.      地理信息系统(南大95.南大96.南大03.中科院03.中科院04.华东师00.中南03.浙大99)GIS作为信息技术的一种,是以计算机技术为依托,以具有空间内涵的地理数据为处理对象, ...

  4. 地理信息系统专业考研 GIS专业考研 名词解释大全[转]

    转载:http://www.cnblogs.com/sunliming/archive/2010/05/28/1746047.html 地理信息系统专业考研 GIS专业考研 名词解释大全 1.    ...

  5. GIS基础知识-名词解释

    地理信息系统 GIS 地理信息系统(Geographic Information System,GIS):作为信息技术的一种, 是在计算机硬.软件的支持下,以地理空间数据库( Geospatial D ...

  6. [GIS热点] 数字智慧工程-数字城市、数字中国、数字地球、智慧城市、智慧地球

    文章目录 数字智慧时代 城市信息化工程 数字城市 智慧城市 数字与智慧的对比 GIS的地位 GIS的作用(机遇) GIS的挑战 应用 中国 数字中国 地球 数字地球 智慧地球 数字智慧时代 城市信息化 ...

  7. 地理信息系统专业考研 GIS专业考研 名词解释大全

    地理信息系统专业考研 GIS专业考研 名词解释大全(自己考研时候搜集的..晒出来) 1.    地理信息系统(南大95.南大96.南大03.中科院03.中科院04.华东师00.中南03.浙大99)GI ...

  8. gis根据范围批量分开图斑_基于BIM-GIS技术的公路预防性养护研究

    多年来,国内外学者陆续将BIM技术及GIS技术引入到公路信息化管理,在公路建设.路政执法和资产管理方面取得较好的效果.美国联邦公路局将GPS.GIS及多媒体视频等技术应用到公路资产管理,可以迅速的定位 ...

  9. 具有测绘专业背景的学生的GIS学习规划

    具有测绘专业背景的学生的GIS学习规划 摘要:近几年,GIS在我国的发展可谓是方兴未艾,作为一门由计算机科学.地理学.测绘科学技术的学科组成的现代交叉型学科,在我国国民经济建设中的作用日益突出,对于人 ...

最新文章

  1. 程序员的个人发展注意事项
  2. linux i2c ioctl错误,关于读写I2C总线的时候出错的有关问题
  3. 矢量合成和分解的法则_高考复习整理力的合成和分解
  4. (新聞) 友達光電 A+種子暑期實習計畫 埋下希望的光電種子 (日記)
  5. MyBatis核心配置文件详解
  6. sql2005 分页 ROW_NUMBER()
  7. 二叉查找树--插入、删除、查找
  8. 【转】HTTP幂等性概念和应用
  9. 中画图title函数_Matlab对量子力学中的一维无限深势阱的模拟计算
  10. linux 罗技摄像头驱动下载,罗技bcc950驱动下载-罗技bcc950摄像头驱动下载 v1.1.87.0官方版--pc6下载站...
  11. QThread的用法
  12. QQ玩一玩广告与音效使用总结
  13. wps怎么统一修改标点符号_标点符号采用宋体全角 wps标点统一全角
  14. HTTPS(三)之JAVA 不校验HTTPS服务器证书
  15. C#编写的winform程序绑定comboBox成功,添加一个默认的文字选项请选择
  16. vue中的一个子组件如何在父组件中调动另一个子组件中的方法
  17. 苹果高通 5G 开战!
  18. Neat算法讲解(遗传拓扑神经网络)
  19. 常见室内观赏植物的管理技术大全
  20. 摄像头在线测试_Leez学院| 面部检测 精准可靠 Leez P515 OpenCV工程测试

热门文章

  1. remi php ssh2,星梦随缘
  2. 永中Office2012青年版下载用户反馈(节选二)
  3. 实时数仓 | 你需要的是一款强大的 OLAP 引擎
  4. Android中Paint画图
  5. 结对编程I - 3D跳棋
  6. mysql进行mof提权_MySQL数据库Root权限MOF方法提权研究
  7. 应届毕业生谈毕业的故事
  8. 年度报告|Hologres重点功能年终大盘点
  9. matlab——simulink从工作空间导入数据作为输入信号进行仿真
  10. 性能监控(一)-Jprofiler安装与使用