• 清洗数据之地理纬度


    今天的一大半时间都在和百度api打交道。解析一个地址都花费了很长时间,主要是思路不知道怎么从哪儿开始。

    最后在网上看到了经纬度的一篇内容,突然有了启发,可以通过先查找地方在经纬度上,然后在根据经纬度查找省市区。

    有了这个启示,思路就通畅了起来,接下来就是一直在细节上完善,最后清洗出来了地域维度,之后的行政区划还没有用时良好的

    的方法,之后会努力思考。

    package area;    
    
    import java.io.BufferedReader;
    
    import java.io.InputStreamReader;
    
    import java.net.URL;
    
    import java.net.URLConnection;
    
    import java.util.HashMap;
    
    import java.util.Map;
    
    import net.sf.json.JSONObject;
    
     
    
    /** 
    
     * @author 作者 : 
    
     * @createDate 创建时间:
    
     * 类说明 -- 百度地图经纬度和地址相互转换的工具类
    
     */
    
    public class BaiduMapUtils {
    
        /**
    
         * 百度地图通过经纬度来获取地址,传入参数纬度lat、经度lng
    
         * @param lat
    
         * @param lng
    
         * @return
    
         */
    
        public static String getCity(String lat, String lng) {    
    
    
            JSONObject obj = getLocationInfo(lat, lng).getJSONObject("result").getJSONObject("addressComponent");
            String province,city,district;
            province=obj.getString("province");
            city=obj.getString("city");
            district=obj.getString("district");    
            if(province.equals(city))
                return city+district;
            else
                return province+city+district;
    
        }    
    
        public static JSONObject getLocationInfo(String lat, String lng) {
            
            String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=gLqsnc20FauWMcSsu3kWgo0iUi61cYDr&output=json&coordtype=wgs84ll&location="+ lat + "," + lng ;
            JSONObject obj = JSONObject.fromObject(loadJSON(url));
    
    
            return obj;
    
        }
    
     
    
        /**
    
         * 百度地图通过地址来获取经纬度,传入参数address
    
         * @param address
    
         * @return
    
         */
    
        public static Map<String,Double> getLngAndLat(String address){
    
            Map<String,Double> map=new HashMap<String, Double>();
    
            String url = "http://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak=gLqsnc20FauWMcSsu3kWgo0iUi61cYDr&coordtype=wgs84ll";
            JSONObject obj = JSONObject.fromObject(loadJSON(url));
            //System.out.println(obj);
            if(obj.get("status").toString().equals("0")){
    
                double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
    
                double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
    
                map.put("lng", lng);
    
                map.put("lat", lat);
    
                //System.out.println("经度:" + lng + "--- 纬度:" + lat);
    
            }else{
    
                map.put("lng", 0.00);
                map.put("lat", 0.00);
            }
    
            return map;
        }
    
        public static String loadJSON (String url) {
    
            StringBuilder json = new StringBuilder();
    
            try {
    
                URL oracle = new URL(url);
    
                URLConnection yc = oracle.openConnection();
    
                BufferedReader in = new BufferedReader(new InputStreamReader(
    
                        yc.getInputStream()));
    
                String inputLine = null;
    
                while ( (inputLine = in.readLine()) != null) {
    
                    json.append(inputLine);
    
                }
    
                in.close();
    
            } catch (Exception e) {
    
            }
            return json.toString();
           
    
        }
     
    
        /*public static void main(String[] args)
        {
            String area="";
             Map<String,Double> map=new HashMap<String, Double>();
             map=getLngAndLat(area);
        }*/
    
    }

    参考代码:https://blog.csdn.net/a497785609/article/details

  • 相关阅读:
    MFC的自定义消息(用户消息)的定义与使用
    队列的使用
    接私活平台
    下载图标网站
    C#对象序列化
    C#中控件对比(DataGridView,ListView,TreeView,ComboBox)
    C#反射
    C#可选实参和命名实参
    C#扩展方法
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/Evak/p/12481954.html
Copyright © 2020-2023  润新知