这次练习的第一部分主要目标是完成对地域名和地域码的完善。
调用百度地图API来进行地域名和地域码的获取。
Data.java
package bao;
public class Data {
String acode="";
String diyv="";
}
DBUtil.java
package bao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author zm
*
*/
public class DBUtil {
public static String db_url = "jdbc:mysql://localhost:3306/数据库名?&useSSL=false&serverTimezone=UTC";
public static String db_user = "用户名";
public static String db_password = "数据库密码";
public static Connection getConn() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(db_url, db_user, db_password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void close(Statement state, Connection conn) {
if(state!=null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement state, Connection conn) {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(state!=null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
getregion.java
package bao;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class getregion{
public Data getLocation(String lat,String lng){
Data data=new Data();
String location1="";
String location2="";
String location3="";
String location4="";
String url="http://api.map.baidu.com/reverse_geocoding/v3/?ak=您申请的ak&output=xml&coordtype=wgs84ll&location="+lat+","+lng;
//System.out.println(url);
Document doc = null;
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);
Element root=doc.getRootElement();
String docXmlText=doc.asXML();
Element e=root.element("result");
Element location=e.element("addressComponent");
location1=location.asXML();
Element adcode=location.element("adcode");
location2=adcode.asXML();
Element province=location.element("province");
location3=province.asXML();
Element district=location.element("district");
location4=district.asXML();
location2=location2.replace("<adcode>","").replace("</adcode>", "");
location3=location3.replace("<province>","").replace("</province>", "");
location4=location4.replace("<district>","").replace("</district>", "");
data.acode=location2;
data.diyv=location3+location4;
System.out.println(location2);
System.out.println(location3);
System.out.println(location4);
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 data;
}
public Data getlocation1(String loc){
String location3="";
Data data = new Data();
String url="http://api.map.baidu.com/geocoding/v3/?address="+loc+"&output=xml&ak=您申请的ak&callback=showLocation";
Document doc = null;
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);
Element root=doc.getRootElement();
// String docXmlText=doc.asXML();
//System.out.println(docXmlText);
Element e=root.element("result");
Element e1=root.element("status");
String check=e1.asXML().replace("</status>", "").replace("<status>","");
System.out.println(check);
if(check.equals("0")) {
Element location=e.element("location");
Element lng=location.element("lng");
Element lat=location.element("lat");
String lng1=lng.asXML();
String lat1=lat.asXML();
//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);
//location2=getLocation(lat1,lng1);
data=getLocation(lat1,lng1);}
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 data;
//return location2;
}
}
YiDao.java
package bao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class YiDao
{
//int num_i=0;
public void select_city()
{
getregion getregion=new getregion();
Data data=new Data();
Connection conn = DBUtil.getConn();
Statement state = null;
String str=new String();
//String newStr=str;
int i=0;
try {
state = conn.createStatement();
ResultSet rs = state.executeQuery("select * from test2");
while(rs.next()) {
//如果有结果,是认为是通过验证了
str=rs.getString("wanchengdanwei");
//newStr=str;
//int i = str.indexOf(" ");
//if(i!=-1)
// {
// newStr = str.substring(0,i);
// }
// city=getregion.SELECT(newStr);
data=getregion.getlocation1(str);
update_city(data.acode,data.diyv,str);
i++;
System.out.println("执行了"+i);
}
} catch (Exception e)
{
e.printStackTrace();
}finally {
DBUtil.close(state, conn);
}
}
public void update_city(String acode,String diyv,String wanchengdanwei) {
String sql = "update test2 set diyvma ='"+acode+"',biaozhundiyv = '"+diyv+"' where wanchengdanwei ='"+wanchengdanwei+"'";
Connection conn = DBUtil.getConn();
Statement state = null;
try {
state = conn.createStatement();
state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(state, conn);
}
}
public static void main(String[] args) {
YiDao yindao=new YiDao();
yindao.select_city();
}
}
部分结果图


浙公网安备 33010602011771号