高德地图 省市区 地理编码

package test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.china317.publicclass.common.HttpClientDownload;
import com.china317.publicclass.database.ConnectionPool;
import com.china317.rrs.cache.NewAreaCache;

public class FindNewArea {
	
	static final String key = "******************";
	
	static String provinceCode = "320000";
	
	static final int[] provinceCodeList =  {120000, 450000, 140000, 710000, 630000, 440000, 430000, 620000, 640000, 230000, 410000, 330000, 510000, 810000, 210000, 530000, 130000, 340000, 820000, 500000, 350000, 320000, 220000, 310000, 650000, 150000, 610000, 540000, 360000, 420000, 520000, 370000, 110000, 460000};
	
	static int batchCount = 0;
	
	public static void find(){
		Connection conn = null;
		String sql = "insert into NEWEST_AREA (areaid,areaname,parentid) values (?,?,?)";
		try {
			HttpClientDownload httpDown ;
			conn =ConnectionPool.getConnection();
			conn.setAutoCommit(false);
			
			String adcode ;
			String name ; 
			String parentid = "0";
			PreparedStatement ps = conn.prepareStatement(sql);
			
			for(int code : provinceCodeList){
				provinceCode = String.valueOf(code);
				
				httpDown = new HttpClientDownload();
				httpDown.setFileUrl(geturl(provinceCode));
				
				if (httpDown.download()) {
					byte[] httpb = httpDown.getData();
					String data = new String(httpb, "utf-8");
					if(data!=null && !"".equals(data)){
						Map map = (Map) JSON.parse(data);
						if (map.get("status") != null&& !map.get("status").equals("")) {
							if (map.get("status").equals("1")) {
								JSONArray provinceArry =  (JSONArray)map.get("districts");
								JSONObject provinceObj = provinceArry.getJSONObject(0);
								if(provinceArry != null){
									adcode = provinceObj.getString("adcode");
									name = provinceObj.getString("name");
									addBatch(adcode, name, parentid, ps);
									JSONArray cityArray = (JSONArray) provinceObj.get("districts");
									System.out.println("省:   "+adcode+"--"+name);
									
									for(Object cityObj : cityArray){
										JSONObject cityJSON = (JSONObject)cityObj;
										adcode = cityJSON.getString("adcode");
										name = cityJSON.getString("name");
										addBatch(adcode, name, provinceCode, ps);
										parentid = adcode;
										System.out.println("市:   "+adcode+"--"+name);
										JSONArray districtArray = (JSONArray) cityJSON.get("districts");
										for(Object districtObj : districtArray){
											JSONObject districtJSON = (JSONObject)districtObj;
											adcode = districtJSON.getString("adcode");
											name = districtJSON.getString("name");
											addBatch(adcode, name, parentid, ps);
											System.out.println("区:   "+adcode+"--"+name);
											
										}
									}
								}
							} 
						}
					}	
				}
			}
		 if(batchCount%50==0){
	    	ps.executeBatch(); // insert remaining records
			ps.clearBatch();
		}
		 conn.commit();
		} catch (Exception e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	public static String geturl(String provinceCode){
		
		return  "http://restapi.amap.com/v3/config/district?subdistrict=2&extensions=base&key="+key+"&s=rsv3&level=province&keywords="+provinceCode+"&platform=JS&logversion=2.0&sdkversion=1.3";
	}
	
	public static void addBatch(String adcode , String name , String parentid ,PreparedStatement ps) throws SQLException{
		ps.setString(1, adcode);
		ps.setString(2, name);
		ps.setString(3, parentid);
		
		ps.addBatch();
	    batchCount++;
	    if(batchCount%50==0){
	    	ps.executeBatch(); // insert remaining records
			ps.clearBatch();
	    }
	}
	
	public static void main(String[] args) {
		FindNewArea.find();
	}
	
	
}


转载于:https://my.oschina.net/marsal/blog/630463

你可能感兴趣的:(高德地图 省市区 地理编码)