zoukankan      html  css  js  c++  java
  • 进度日报(二)

    今天可以提取关键字,输出详细的省市县(区),并调用百度地图接口输出准确的经纬度,并输出所在的市县。

    关键代码:

    public static String addressResolution(String address){
            String regex="(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县|.+区|.+市)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)";
            Matcher m=Pattern.compile(regex).matcher(address);
            String province=null,city=null,county=null;
            String str="";
            while(m.find()){
                province=m.group("province");
                city=m.group("city");
                county=m.group("county");
                str = province + city + county;
            }
            return str;
        }
    

      

    public static String getlocation1(String loc){
            String location2="";
              String url="http://api.map.baidu.com/geocoding/v3/?address="+loc+"10号&output=xml&ak=ld0uqubVfSTAUlXH5qIMN2F3Snsp16LU&callback=showLocation";
              //System.out.println(url);
              Document doc = null;
               java.net.HttpURLConnection conn = null;
               InputStream ins = null;
               SAXReader reader = null;
               try{
                //HttpTimeoutHandler hth = new HttpTimeoutHandler(600000);
                URL conURL = new URL(null,url);
                conn = (HttpURLConnection) conURL.openConnection();
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setUseCaches(false);
                ins = conn.getInputStream();
                reader =new SAXReader();
                doc= reader.read(ins);
                //System.out.println(url);
                Element root=doc.getRootElement();
                String docXmlText=doc.asXML();
                //System.out.println(docXmlText);
                Element e=root.element("result");
                Element location=e.element("location");
                Element lng=location.element("lng");
                Element lat=location.element("lat");
                String lng1=lng.asXML();
                String lat1=lat.asXML();
    lng1=lng1.substring(lng1.indexOf("<lng>")+5,lng1.indexOf("</lng>"));
                
               
                lat1=lat1.substring(lat1.indexOf("<lat>")+5,lat1.indexOf("</lat>"));
     
                System.out.println("lng:"+lng1);
                System.out.println("lat:"+lat1);
                location2=getLocation(lat1,lng1);
                List<Element> list = root.elements("location");
                //System.out.println(url);
                for (Element object : list) {
                    //System.out.println(url);
                    //System.out.println(object.getName());
                    for (Element element : (List<Element>) object.elements()) {
                        //System.out.print(((Element) element).getName() + ":");
                        //System.out.print(element.getText() + " ");
                    }
                    //System.out.println();
    
                }
                ins.close();
                conn.disconnect();
               }catch (MalformedURLException e) {
                e.printStackTrace();
               } catch (IOException e) {
                e.printStackTrace();   
               } catch (DocumentException e) {
                e.printStackTrace();
               }catch(Exception e){
                e.printStackTrace();
               }finally {
                try {
                 if (ins != null) {
                  ins.close();
                  ins = null;
                 }
                } catch (IOException e1) {
                 e1.printStackTrace();
                }
                try {
                 if (conn != null) {
                  conn.disconnect();
                  conn = null;
                 }
                } catch (Exception e2) {
                 e2.printStackTrace();
                }
               }
               return location2;
            }
    

      

    public static String getLocation(String lat,String lng){
             String location1="";
            String url="http://api.map.baidu.com/reverse_geocoding/v3/?ak=ld0uqubVfSTAUlXH5qIMN2F3Snsp16LU&output=xml&coordtype=wgs84ll&location="+lat+","+lng;
            //System.out.println(url);
            Document doc = null;
             java.net.HttpURLConnection conn = null;
             InputStream ins = null;
             SAXReader reader = null;
             try{
              //HttpTimeoutHandler hth = new HttpTimeoutHandler(600000);
              URL conURL = new URL(null,url);
              conn = (HttpURLConnection)conURL.openConnection();
              conn.setDoInput(true);
              conn.setDoOutput(true);
              conn.setUseCaches(false);
              ins = conn.getInputStream();
              reader =new SAXReader();
              doc= reader.read(ins);
              //System.out.println(url);
              Element root=doc.getRootElement();
              String docXmlText=doc.asXML();
              //System.out.println(docXmlText);
              Element e=root.element("result");
              Element location=e.element("formatted_address");
              location1=location.asXML();
              location1=location1.substring(location1.indexOf("address>")+8,location1.indexOf("</formatted_address>"));
             /* System.out.println("lng"+lng1);
              System.out.println("lat"+lat1);
             // System.out.println("location"+location.asXML());
              //System.out.println("xiayukun"+e.asXML());
              lng1=lng1.substring(lng1.indexOf("<lng>")+5,lng1.indexOf("</lng>"));
              
              System.out.println(lng1);
              lat1=lat1.substring(lat1.indexOf("<lat>")+5,lat1.indexOf("</lat>"));
              System.out.println(lat1);*/
              List<Element> list = root.elements("location");
              //System.out.println(url);
              for (Element object : list) {
                  //System.out.println(url);
                  //System.out.println(object.getName());
                  for (Element element : (List<Element>) object.elements()) {
                      //System.out.print(((Element) element).getName() + ":");
                      //System.out.print(element.getText() + " ");
                  }
                  System.out.println();
    
              }
    
              ins.close();
              conn.disconnect();
             }catch (MalformedURLException e) {
              e.printStackTrace();
             } catch (IOException e) {
              e.printStackTrace();   
             } catch (DocumentException e) {
              e.printStackTrace();
             }catch(Exception e){
              e.printStackTrace();
             }finally {
              try {
               if (ins != null) {
                ins.close();
                ins = null;
               }
              } catch (IOException e1) {
               e1.printStackTrace();
              }
              try {
               if (conn != null) {
                conn.disconnect();
                conn = null;
               }
              } catch (Exception e2) {
               e2.printStackTrace();
              }
             }
             return location1;
          }
    	public static void main(String[] args) throws IOException
        {
          System.out.println(addressResolution(getlocation1(addressResolution("河北省沧州市临港经济技术开发区规划一号路南"))));
        }
    

      截图:

  • 相关阅读:
    html 入门 "地表最强"干货 你值得拥有
    python信号量
    死锁 与 递归锁
    互斥锁
    进程之间的通讯
    进程与多道技术
    进程对象常用属性
    开启子进程的方式2
    牛客多校赛2K Keyboard Free
    省选刷题小记 (06~10)
  • 原文地址:https://www.cnblogs.com/jccjcc/p/12488776.html
Copyright © 2011-2022 走看看