九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
WGS84,GCJ02, BD09坐標(biāo)轉(zhuǎn)換 (轉(zhuǎn))

/**
 * 各地圖API坐標(biāo)系統(tǒng)比較與轉(zhuǎn)換;
 * WGS84坐標(biāo)系:即地球坐標(biāo)系,國際上通用的坐標(biāo)系。設(shè)備一般包含GPS芯片或者北斗芯片獲取的經(jīng)緯度為WGS84地理坐標(biāo)系,
 * 谷歌地圖采用的是WGS84地理坐標(biāo)系(中國范圍除外);
 * GCJ02坐標(biāo)系:即火星坐標(biāo)系,是由中國國家測繪局制訂的地理信息系統(tǒng)的坐標(biāo)系統(tǒng)。由WGS84坐標(biāo)系經(jīng)加密后的坐標(biāo)系。
 * 谷歌中國地圖和搜搜中國地圖采用的是GCJ02地理坐標(biāo)系; BD09坐標(biāo)系:即百度坐標(biāo)系,GCJ02坐標(biāo)系經(jīng)加密后的坐標(biāo)系;
 * 搜狗坐標(biāo)系、圖吧坐標(biāo)系等,估計(jì)也是在GCJ02基礎(chǔ)上加密而成的。 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 火星坐標(biāo)系 (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);
 }

 /**
  * * 火星坐標(biāo)系 (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);
 }

 /**
  * 火星坐標(biāo)系 (GCJ-02) 與百度坐標(biāo)系 (BD-09) 的轉(zhuǎn)換算法 將 GCJ-02 坐標(biāo)轉(zhuǎn)換成 BD-09 坐標(biāo)
  *
  * @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);
 }

 /**
  * * 火星坐標(biāo)系 (GCJ-02) 與百度坐標(biāo)系 (BD-09) 的轉(zhuǎn)換算法 * * 將 BD-09 坐標(biāo)轉(zhuǎn)換成GCJ-02 坐標(biāo) * * @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;

 }

 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;
 }

 public static void main(String[] args) {

  // 北斗芯片獲取的經(jīng)緯度為WGS84地理坐標(biāo) 31.426896,119.496145
  Gps gps = new Gps(31.426896, 119.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  :" + bd);
  Gps gcj2 = bd09_To_Gcj02(bd.getWgLat(), bd.getWgLon());
  System.out.println("gcj :" + gcj2);
 }
}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#實(shí)現(xiàn)地圖坐標(biāo)系的轉(zhuǎn)換(WGS-84、GCJ-02、BD-09)
GPS糾偏算法,不同地圖之間的坐標(biāo)轉(zhuǎn)換
各類坐標(biāo)轉(zhuǎn)換不完全說明
python基于高德地圖坐標(biāo)拾取系統(tǒng)獲取地址坐標(biāo)
數(shù)據(jù)清洗告一段落了
最全面的百度地圖JavaScript離線版開發(fā)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服