資源簡介
1.CGCS2000下的大地坐標到CGCS2000下的空間直角坐標的轉換;
2.CGCS2000下的空間直角坐標經過七參數轉換,得到西安80下的空間直角坐標;
3.西安80下的空間直角坐標向西安80下的大地坐標轉換;
4.西安80下的大地坐標進行高斯投影,得到平面坐標。
詳情請參照:http://blog.csdn.net/dahongdahong/article/details/50563659
PS: 這個下載積分,我最開始設置是0分,不知道這個系統為什么改成了48分了,我也沒法修改分數。
用戶如果需要的話,可以直接在博客上留言或私信,留下郵箱,我會給發給你們的。 2019-09-16
代碼片段和文件信息
import?java.math.BigDecimal;
import?static?java.lang.Math.cos;
import?static?java.lang.Math.sqrt;
import?static?java.lang.Math.tan;
/**
?*?Created?by?Administrator?on?2016/1/20.
?*/
public?final?class?CoordsTransformer?{
//七參數
//private?double?dx=-0.8770258428dy=1.9951090363dz=1.1814690245Ox=-8.2334e-6Oy=-8.2334e-6Oz=0.0000161k=0.08038244674058/1000000;
private?double?dx?=?-1.2486042104?dy?=?2.4810909393?dz?=?1.4728271737?Ox?=?Math.toRadians(0.7829343527?/?3600)?Oy?=?Math.toRadians(-1.6776952074?/?3600)?Oz?=?Math.toRadians(3.3401508511?/?3600)?k?=?-0.02521574633124?/?1000000;
private?double?Lo?=?120;
private?static?final?CoordsTransformer?instance?=?new?CoordsTransformer();
public?static?CoordsTransformer?getInstance()?{
return?instance;
}
private?CoordsTransformer()?{}
/*初始化七參數、中央經線*/
public?void?init(double[]?para?int?lon)?{
//TODO:method?retention
dx?=?para[0];
dy?=?para[1];
dz?=?para[2];
Ox?=?Math.toRadians(para[3]?/?3600);
Oy?=?Math.toRadians(para[4]?/?3600);
Oz?=?Math.toRadians(para[5]?/?3600);
k?=?para[6]?/?1000000;
Lo?=?lon;
}
/*cgcs2000轉Xian80*/
public?double[]?fromCgcs2Xian80(double?x?double?y)?{
return?fromCgcs2Xian80(x?y?0);
}
/*cgcs2000轉Xian80*/
public?double[]?fromCgcs2Xian80(double?x?double?y?double?z)?{
//1.?將WGS84大地坐標轉為WGS84空間直角坐標
double[]?kjzj84?=?wgs84dd2kjzj(new?double[]{x?y?z});
//2.?利用七參數運算
double[]?kjzj80?=?qicanshu(kjzj84);
//3.?將Xian80空間直角坐標轉為Xian80大地坐標
double[]?dd80?=?kjzj2xian80dd(kjzj80);
//4.?將Xian80大地坐標轉為Xian80平面坐標
double[]?pm80?=?xian80dd2pm(dd80);
BigDecimal?xBD?=?new?BigDecimal(pm80[0]);
double?a?=?xBD.setScale(3?BigDecimal.ROUND_HALF_UP).doubleValue();
BigDecimal?yBD?=?new?BigDecimal(pm80[1]);
double?b?=?yBD.setScale(3?BigDecimal.ROUND_HALF_UP).doubleValue();
return?new?double[]{a?b};
}
/*WGS84大地坐標空間——>空間直角坐標*/
private?double[]?wgs84dd2kjzj(double[]?dd)?{
double?a?=?6378137?b?=?6356752.314;
double?ee?=?(a?*?a?-?b?*?b)?/?(a?*?a);
double?L?=?Math.toRadians(dd[0])?B?=?Math.toRadians(dd[1])?H?=?dd[2];
double?N?=?a?/?Math.sqrt(1?-?ee?*?Math.sin(B)?*?Math.sin(B));
double?X?=?(N?+?H)?*?Math.cos(B)?*?Math.cos(L);
double?Y?=?(N?+?H)?*?Math.cos(B)?*?Math.sin(L);
double?Z?=?(N?*?(1?-?ee)?+?H)?*?Math
評論
共有 條評論