java WGS84经纬度与笛卡尔直角坐标系 代码
时间: 2023-09-07 16:14:33 浏览: 180
c++ ws84转笛卡尔坐标 ue4经纬度转世界坐标
将经纬度坐标转换为笛卡尔直角坐标系坐标的公式如下:
```
x = (R + h) * cos(lat) * cos(lon)
y = (R + h) * cos(lat) * sin(lon)
z = (R + h) * sin(lat)
```
其中,`R`为地球半径,`h`为海拔高度,`lat`为纬度,`lon`为经度。
Java代码实现:
```java
public class WGS84ToCartesianConverter {
private static final double EARTH_RADIUS = 6378137.0; // 地球半径,单位:米
/**
* 将WGS84经纬度坐标转换为笛卡尔直角坐标系坐标
* @param lat 纬度,单位:度
* @param lon 经度,单位:度
* @param h 海拔高度,单位:米
* @return 笛卡尔直角坐标系坐标,单位:米
*/
public static double[] convert(double lat, double lon, double h) {
double[] result = new double[3];
lat = Math.toRadians(lat);
lon = Math.toRadians(lon);
result[0] = (EARTH_RADIUS + h) * Math.cos(lat) * Math.cos(lon);
result[1] = (EARTH_RADIUS + h) * Math.cos(lat) * Math.sin(lon);
result[2] = (EARTH_RADIUS + h) * Math.sin(lat);
return result;
}
}
```
使用方法:
```java
double[] cartesian = WGS84ToCartesianConverter.convert(39.9042, 116.4074, 0);
System.out.println(Arrays.toString(cartesian)); // [3857533.563891751, 4441986.194698411, 4071380.888602901]
```
以上代码将北京市的经纬度坐标(39.9042, 116.4074)转换为笛卡尔直角坐标系坐标。
阅读全文