目录

Android-wgs84坐标系转CGCS2000坐标系

Android wgs84坐标系转CGCS2000坐标系

使用Proj4J库实现坐标转换

Proj4J 是一个开源的Java库,支持多种坐标系转换,包括 WGS84坐标系转换至UTM坐标系

项目地址:

步骤:

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;
        }
    }
}