Android wgs84坐标系转CGCS2000坐标系
使用Proj4J库实现坐标转换
Proj4J 是一个开源的Java库,支持多种坐标系转换,包括WGS84坐标系转换至UTM坐标系
项目地址:Proj4J
步骤:
1.添加依赖 在build.gradle中添加Proj4J依赖:
dependencies {
implementation 'org.locationtech.proj4j:proj4j:1.3.0'
}
2.定义坐标系参数 CGCS2000和WGS84的椭球参数非常接近,但需明确投影方式(如高斯克吕格投影):
// WGS84 地理坐标系
String wgs84Params = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
// CGCS2000 高斯克吕格投影(以3度带为例,中央经线117E)
String cgcs2000Params = "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs";
3.执行坐标转换
import org.locationtech.proj4j.*;
public class CoordinateConverter {
private static final CRSFactory crsFactory = new CRSFactory();
public static double[] convertWGS84ToCGCS2000(double lng, double lat) {
try {
CoordinateReferenceSystem wgs84 = crsFactory.createFromParameters("WGS84", wgs84Params);
CoordinateReferenceSystem cgcs2000 = crsFactory.createFromParameters("CGCS2000", cgcs2000Params);
CoordinateTransform transform = new CoordinateTransformFactory().createTransform(wgs84, cgcs2000);
ProjCoordinate srcCoord = new ProjCoordinate(lng, lat);
ProjCoordinate dstCoord = new ProjCoordinate();
transform.transform(srcCoord, dstCoord);
return new double[]{dstCoord.x, dstCoord.y};
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}