1. 程式人生 > >百度座標轉WGS84(即GPS)座標

百度座標轉WGS84(即GPS)座標

        此座標轉換用的是GPSspg的API,如果您需要轉幾個的話還是線上轉效率比較高;如果量比較大的話,轉換不超過2000次/天,可以用此方法(免費);如果量很大的話,推薦訂閱較高階的套餐。

單個線上轉換:

地址:http://www.gpsspg.com/maps.htm


引數說明:

    GPS 座標 / WGS84,適用於谷歌地球 Google Earth。 
    Google 座標,適用於 Google Maps 地圖模式。 
    百度座標,適用於百度地圖。 
    高德座標 / 騰訊座標,適用於高德地圖 / 騰訊地圖。 

    Mapbar 圖吧座標,適用於圖吧地圖。

以下是批量轉換:

    serviceimpl層:

        /**
	 * 轉換座標百度座標--->WGS84座標系
	 */
	@Override
	public Map<String, Object> baiduToGPS(Map<String, Object> mapParam) throws ServiceLocatorException {
		String convertUrl = "http://api.gpsspg.com/convert/coord/?oid=****&key=*****************&from=2&to=0&latlng=";
		try {
			Map map = new HashMap();
			List<Map<String, Object>> DemoGPSlist = serviceDemo.selectDemo(map);
			for (Map<String, Object> BaiduGPSMap : DemoGPSlist) {
				String id = (String) BaiduGPSMap.get("ID");
				String gisX = (String) BaiduGPSMap.get("GIS_X");
				String gisY = (String) BaiduGPSMap.get("GIS_Y");

				if (StringUtils.isNotBlank(gisY) && StringUtils.isNotBlank(gisX)) {
					String[] bzb = { gisY, gisX };
					String url = convertUrl + StringUtils.join(bzb, ",");
					String bjson = JoddHttpUtils.postForm_1(url);
					if (StringUtils.isNotBlank(bjson)) {
						JSONObject bJSONObject = JSONObject.parseObject(bjson);
						int status = (int) bJSONObject.get("status");
						if (status == 200) {
							JSONArray result = (JSONArray) bJSONObject.get("result");
							if (result != null && result.size() > 0) {
								JSONObject zbObject = (JSONObject) result.get(0);
								String x = "";
								String y = "";
								if (zbObject.get("lng") != null) {
									x = zbObject.get("lng") + "";
								}
								;
								if (zbObject.get("lat") != null) {
									y = zbObject.get("lat") + "";
								}
								;
								if (!"null".equals(x) && !"null".equals(y) && StringUtils.isNotBlank(x)
										&& StringUtils.isNotBlank(y)) {
									Map updateMap = new HashMap();
									updateMap.put("ID", id);
									updateMap.put("GPSX84", x);
									updateMap.put("GPSY84", y);
									iDao.updateDemo(updateMap);
								}
							}
						}
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage());
		}
		return null;
	}

    util類:

package com.demo.util;
import java.util.Map;
import jodd.http.HttpRequest;
import jodd.http.HttpResponse;
public class JoddHttpUtils {
	public static String postForm_1(String URL) {
		String json="";
		try {
			HttpResponse response = HttpRequest
			        .get(URL)
			        .send();
			if (response!=null) {
				json= response.bodyText();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return json;
	}
}

serviceimpl層中的這句程式碼中的oid與key參考下圖

http://api.gpsspg.com/convert/coord/?oid=****&key=*****************&from=2&to=0&latlng=


oid和key需要註冊GPSspg賬號才有,from=2&to=0參考以下說明:


API地址:http://www.gpsspg.com/api/convert/latlng/

測試類:

@Test
public void baiduToGPS(){
    try {
        Demo.baiduToGPS(null);	
    } catch (Exception e) {
	e.printStackTrace();
    }
}