基于proj库对GPS转换,2000坐标互转wgs84坐标

之前在忙一个小项目,好久没有更新了,确实对不住粉丝们。
废话不多说,直接干货:
从2000坐标转wgs84坐标,C++代码

void 2UTMToWGS84(double longitude, double latitude, double hight, double X, double Y, double Z)
{
	projPJ wgs84 = pj_init_plus("+proj=latlong +datum=WGS84");
	projPJ utm = pj_init_plus("+proj=utm +zone=50N +ellps=WGS84 +no_defs");


	pj_get_def(utm, 0);
	pj_transform(utm, wgs84, 1, 1, &longitude, &latitude, &hight);
	const char *strRelease = pj_get_release();
	char*strError = pj_strerrno(2);
	int iErrorNo = *pj_get_errno_ref();

	longitude /= DEG_TO_RAD;
	latitude /= DEG_TO_RAD;
	X = longitude;
	Y = latitude;
	Z = hight;
	pj_free(utm);

}

从wgs84坐标转2000坐标,C++代码

void WGS842UTM(double longitude, double latitude, double hight, double *X, double *Y, double *Z)
{
	projPJ wgs84 = pj_init_plus("+proj=latlong +datum=WGS84 +no_defs");
	projPJ utm = pj_init_plus("+proj=utm +zone=50N +ellps=WGS84");
	longitude *= DEG_TO_RAD;
	latitude *= DEG_TO_RAD;

	pj_get_def(wgs84, 0);
	pj_transform(wgs84, utm, 1, 1, &longitude, &latitude, &hight);
	const char *strRelease = pj_get_release();
	char*strError = pj_strerrno(2);
	int iErrorNo = *pj_get_errno_ref();

	*X = longitude;
	*Y = latitude;
	*Z = hight;
	pj_free(utm);
}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
温州2000坐标转换WGS84坐标系可以使用以下方法: 1. 使用Proj4库进行转换: ```java import org.osgeo.proj4j.CoordinateReferenceSystem; import org.osgeo.proj4j.CoordinateTransform; import org.osgeo.proj4j.CRSFactory; import org.osgeo.proj4j.ProjCoordinate; public class CoordinateConversion { public static void main(String[] args) { // 定义温州2000坐标系的EPSG代码 String wenzhou2000EPSG = "EPSG:4490"; // 定义WGS84坐标系的EPSG代码 String wgs84EPSG = "EPSG:4326"; // 创建坐标系工厂 CRSFactory crsFactory = new CRSFactory(); // 根据EPSG代码获取坐标系对象 CoordinateReferenceSystem wenzhou2000CRS = crsFactory.createFromName(wenzhou2000EPSG); CoordinateReferenceSystem wgs84CRS = crsFactory.createFromName(wgs84EPSG); // 创建坐标转换对象 CoordinateTransform transform = new CoordinateTransform(wenzhou2000CRS, wgs84CRS); // 定义温州2000坐标系中的坐标ProjCoordinate wenzhou2000Point = new ProjCoordinate(120.7059, 27.9944); // 创建用于存储转换结果的坐标点对象 ProjCoordinate wgs84Point = new ProjCoordinate(); // 进行坐标转换 transform.transform(wenzhou2000Point, wgs84Point); // 输出转换后的WGS84坐标系中的坐标点 System.out.println("WGS84坐标系中的坐标点:"); System.out.println("经度:" + wgs84Point.x); System.out.println("纬度:" + wgs84Point.y); } } ``` 2. 使用GeoTools库进行转换: ```java import org.geotools.geometry.jts.JTSFactoryFinder; import org.geotools.referencing.CRS; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; public class CoordinateConversion { public static void main(String[] args) throws Exception { // 定义温州2000坐标系的EPSG代码 String wenzhou2000EPSG = "EPSG:4490"; // 定义WGS84坐标系的EPSG代码 String wgs84EPSG = "EPSG:4326"; // 根据EPSG代码获取坐标系对象 CoordinateReferenceSystem wenzhou2000CRS = CRS.decode(wenzhou2000EPSG); CoordinateReferenceSystem wgs84CRS = CRS.decode(wgs84EPSG); // 创建坐标转换对象 MathTransform transform = CRS.findMathTransform(wenzhou2000CRS, wgs84CRS); // 定义温州2000坐标系中的坐标点 Coordinate wenzhou2000Point = new Coordinate(120.7059, 27.9944); // 创建几何对象工厂 GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); // 创建温州2000坐标系中的点几何对象 Geometry wenzhou2000Geometry = geometryFactory.createPoint(wenzhou2000Point); // 进行坐标转换 Geometry wgs84Geometry = JTS.transform(wenzhou2000Geometry, transform); // 获取转换后的WGS84坐标系中的坐标点 Coordinate wgs84Point = wgs84Geometry.getCoordinate(); // 输出转换后的WGS84坐标系中的坐标点 System.out.println("WGS84坐标系中的坐标点:"); System.out.println("经度:" + wgs84Point.x); System.out.println("纬度:" + wgs84Point.y); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值