zoukankan      html  css  js  c++  java
  • 获取全国市以及地理坐标,各大坐标系北斗,百度,WGS-84坐标系的转换,有图,有代码

    1 先上坐标取到的值:

    获取到的坐标部分如下:

    '北京市':[116.39564503788,39.92998577808],
                '天津市':[117.21081309155,39.14392990331],
                '上海市':[121.48789948569,31.249161710015],
                '重庆市':[106.53063501341,29.544606108886],
                    
    '合肥市':[117.28269909168,31.866942260687],
    '芜湖市':[118.38410842323,31.366019787543],
    '蚌埠市':[117.35707986588,32.929498906698],
    '淮南市':[117.01863886329,32.642811823748],
    '马鞍山市':[118.51588184662,31.68852815888],
    '淮北市':[116.79144742863,33.960023305364],
    '铜陵市':[117.81942872881,30.940929694666],
    '安庆市':[117.05873877211,30.537897817381],
    '黄山市':[118.293569632,29.734434856163],
    '滁州市':[118.32457035098,32.317350595384],
    '阜阳市':[115.82093225905,32.90121133057],
    '宿州市':[116.98869241183,33.636772385781],
    '六安市':[116.50525268298,31.755558355198],
    '亳州市':[115.78792824512,33.871210565302],
    '池州市':[117.49447677159,30.660019248161],
    '宣城市':[118.75209631098,30.951642354296],
    '福州市':[119.33022110713,26.047125496573],
    '厦门市':[118.10388604566,24.489230612469],
    '莆田市':[119.07773096396,25.448450136734],
    '三明市':[117.64219393404,26.270835279362],
    '泉州市':[118.60036234323,24.901652383991],
    '漳州市':[117.67620467895,24.517064779808],
    '南平市':[118.18188294866,26.643626474198],
    '龙岩市':[117.01799673877,25.078685433515],
    '宁德市':[119.54208214972,26.656527419159],
    '广州市':[113.30764967515,23.120049102076],
    '韶关市':[113.59446110744,24.802960311892],
    '深圳市':[114.02597365732,22.546053546205],
    '珠海市':[113.56244702619,22.256914646126],
    '汕头市':[116.72865028834,23.383908453269],
    '佛山市':[113.13402563539,23.035094840514],
    '江门市':[113.07812534115,22.575116783451],
    '湛江市':[110.36506726285,21.257463103764],
    '茂名市':[110.93124533068,21.668225718822],
    '肇庆市':[112.47965336992,23.078663282929],
    '惠州市':[114.41065807997,23.113539852408],
    '梅州市':[116.12640309837,24.304570606031],
    '汕尾市':[115.3729242894,22.778730500164],
    '河源市':[114.71372147587,23.757250850469],
    '阳江市':[111.97700975587,21.871517304519],
    '清远市':[113.04077334891,23.698468550422],
    '潮州市':[116.63007599086,23.661811676517],
    '揭阳市':[116.37950085538,23.547999466926],
    '云浮市':[112.05094595865,22.937975685537],
    '贵阳市':[106.70917709618,26.629906741441],
    '六盘水市':[104.85208676007,26.591866060319],
    '遵义市':[106.93126031648,27.699961377076],
    '安顺市':[105.92826996576,26.228594577737],
    '毕节市':[105.33332337117,27.408562131331],
    '铜仁市':[109.16855802826,27.674902690624],
    '黔西南布依族苗族自治州':[104.90055779825,25.095148055927],
    '黔东南苗族侗族自治州':[107.98535257274,26.583991766542],
    '黔南布依族苗族自治州':[107.52320511006,26.264535997442],
    '海口市':[110.33080184834,20.022071276952],
    '三亚市':[109.52277128136,18.257775914897],
    '三沙市':[108.52277128136,17.257775914897],

    4个直辖市是手动添加上去的

    2 坐标系

      坐标系相关的知识;上面获取到的是百度坐标系 需要转换的如下方法:   网盘地址:http://pan.baidu.com/s/1huRBw  感兴趣的可以点击链接下载!

      国家规定,军队,国家机关的涉密数据。。。。。。不能使用WGS84坐标系,大家开发项目请注意。

      比较专业的坐标相互之间的转换如下:

    /*
     * Project Name:Hecha 
     * File Name:CommonCooder.java 
     * Package Name:com.example.hecha 
     * Date:2014-12-5下午2:39:09 
     * Copyright (c) 2014, chinhiyoshi@163.com 陈飞  Rights Reserved. 
     * 
     */
    package com.example.hecha;
    
    /*
     * ClassName:CommonCooder  
     * Function:   ADD FUNCTION.  
     * Reason:     ADD REASON.  
     * Date:     2014-12-5 下午2:39:09  
     * @author   cf 
     * @version   
     * @since    JDK 1.6   
     */
    public class CommonCooder {
    
        static double pi = 3.14159265358979324;
        static double a = 6378245.0;
        static double ee = 0.00669342162296594323;
        static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        
        //WGS84坐标系转成BD09
        public static String WGS84ToBd09(double gg_lat, double gg_lon) {
    
            String[] redbstring = transform(gg_lat, gg_lon).split(",");// WGS84 ===>GCj_02
    
            gg_lon = Double.parseDouble(redbstring[0]);
            gg_lat = Double.parseDouble(redbstring[1]);
    
            // gcj-02 to bd09  
            double bd_lat;
            double bd_lon;
            double x = gg_lon, y = gg_lat;
            double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
            double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
            bd_lon = z * Math.cos(theta) + 0.0065;
            bd_lat = z * Math.sin(theta) + 0.006;
    
            System.out.println("BD:" + bd_lat + "," + bd_lon);
    
            return bd_lon + "," + bd_lat;
        }
    
        // WGS84 ======> GCj_02
        private static String transform(double wgLat, double wgLon) {
            double mgLat;
            double mgLon;
            String resultString = null;
            if (outOfChina(wgLat, wgLon)) {
                resultString = wgLon + "," + wgLat;
                mgLat = wgLat;
                mgLon = wgLon;
                return resultString;
            }
    
            double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
            double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
            double radLat = wgLat / 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);
            mgLat = wgLat + dLat;
            mgLon = wgLon + dLon;
    
            return mgLon + "," + mgLat;
        }
    
        private 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;
        }
    
        private 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;
        }
    
        private 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;
        }
    }
    View Code

     

    3 获取坐标值的方法

    http://api.map.baidu.com/geocoder/v2/?ak=你在百度申请的KEY&output=json&address=城市名称&city=XX省   【百度的获取地址】

    上一篇提到了怎么获取全国的省市县镇乡村。。。。。想了解的请点击    【http://www.cnblogs.com/chinhi/p/jsoupgetdata.html】  不好意思。。。连接给错了  不过也可以点击

    [亮一下你的眼睛]

    有了数据如下:

    然后数据库查询一下:【select name from tab where name is not null and name !=''】

    读取到list集合  然后for循环执行百度坐标即可。。。。。。。。。。。。。。。。。。。。。。。。。

    然后就去到了最上面的地理坐标数据,你就可以猥琐欲为了

    哈哈 !

    另外附上北斗坐标系的转换。。。。。。。。。。。。。。。。。http://pan.baidu.com/s/1dDdkW7J

    最后看下我的平台。    www.10086bank.com

    要我能提供的源码,请在里面发邮箱获取。。。。。。

    以上!

  • 相关阅读:
    Cocos2d-x 3.0 屏幕触摸及消息分发机制
    stretchableImageWithLeftCapWidth气泡拉伸
    海量数据插入数据库效率对照測试 ---ADO.NET下SqlBulkCopy()对照LINQ 下InsertAllOnSubmit()
    银联+移动+三星PK微信、余额宝
    热力学三大定律与熵
    热力学三大定律与熵
    OpenGL(六) gluLookAt和gluPerspective函数解析
    特殊字符
    特殊字符
    函数的功能
  • 原文地址:https://www.cnblogs.com/chinhi/p/getcooder.html
Copyright © 2011-2022 走看看