wvp-GB28181-pro/src/main/java/com/genersoft/iot/vmp/utils/GpsUtil.java

76 lines
2.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.genersoft.iot.vmp.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Base64;
import com.genersoft.iot.vmp.gb28181.bean.BaiduPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class GpsUtil {
private static Logger logger = LoggerFactory.getLogger(GpsUtil.class);
public static BaiduPoint Wgs84ToBd09(String xx, String yy) {
try {
Socket s = new Socket("api.map.baidu.com", 80);
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
OutputStream out = s.getOutputStream();
StringBuffer sb = new StringBuffer("GET /ag/coord/convert?from=0&to=4");
sb.append("&x=" + xx + "&y=" + yy);
sb.append("&callback=BMap.Convertor.cbk_3976 HTTP/1.1\r\n");
sb.append("User-Agent: Java/1.6.0_20\r\n");
sb.append("Host: api.map.baidu.com:80\r\n");
sb.append("Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n");
sb.append("Connection: Close\r\n");
sb.append("\r\n");
out.write(sb.toString().getBytes());
String json = "";
String tmp = "";
while ((tmp = br.readLine()) != null) {
// logger.info(tmp);
json += tmp;
}
s.close();
int start = json.indexOf("cbk_3976");
int end = json.lastIndexOf("}");
if (start != -1 && end != -1 && json.contains("\"x\":\"")) {
json = json.substring(start, end);
String[] point = json.split(",");
String x = point[1].split(":")[1].replace("\"", "");
String y = point[2].split(":")[1].replace("\"", "");
BaiduPoint bdPoint= new BaiduPoint();
bdPoint.setBdLng(new String(decode(x)));
bdPoint.setBdLat(new String(decode(y)));
return bdPoint;
//return (new String(decode(x)) + "," + new String(decode(y)));
} else {
logger.info("gps坐标无效");
}
out.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* BASE64解码
* @param str
* @return string
*/
public static byte[] decode(String str) {
byte[] bt = null;
final Base64.Decoder decoder = Base64.getDecoder();
bt = decoder.decode(str); // .decodeBuffer(str);
return bt;
}
}