package ss;
/**
* gis 地图展示工具类
*
* @author zhangss
* @version 1.0 2017-3-21 15:04:21
* */
public class GisUtil {
private final static double M_PI = Math.PI;
/**
* WGS84经纬度转web Mercator
*
* @param double lon 经度
* @param double lat 纬度
*
* @return double[]
* */
public static double[] lonLat2Mercator(double lon, double lat){
double[] xy = new double[2];
double x = lon *20037508.342789/180;
double y = Math.log(Math.tan((90+lat)*M_PI/360))/(M_PI/180);
y = y *20037508.34789/180;
xy[0] = x;
xy[1] = y;
return xy;
}
/**
* web Mercator转WGS84经纬度
*
* @param double mercatorX
* @param double mercatorY
*
* @return double[]
* */
public static double[] mercator2LonLat(double mercatorX, double mercatorY){
double[] xy = new double[2];
double x = mercatorX/20037508.34*180;
double y = mercatorY/20037508.34*180;
y= 180/M_PI*(2*Math.atan(Math.exp(y*M_PI/180))-M_PI/2);
xy[0] = x;
xy[1] = y;
return xy;
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("WGS84经纬度转web Mercator");
System.out.println("mercatorX: " + GisUtil.lonLat2Mercator(100, 29)[0]);
System.out.println("mercatorY: " + GisUtil.lonLat2Mercator(100, 29)[1]);
System.out.println("web Mercator转WGS84经纬度");
System.out.println("lat: " + GisUtil.mercator2LonLat(1.1131949079327224E7, 3375646.035778616)[0]);
System.out.println("lon: " + GisUtil.mercator2LonLat(1.1131949079327224E7, 3375646.035778616)[1]);
}
}