C/C++ · 2023年9月21日 0

C++ GDAL 的 EPSG 坐标系转换 4545 4326

C++ GDAL自带了GIS的坐标系转换功能,可以在 EPSG系统之内相互转换
以下举例 EPSG 4545 和 EPSG 4326 之间的互转

EPSG 4545 转换 EPSG 4326

bool EPSG_4545_To_4326(double X, double Y, double& Longitude, double& Latitude)
{
	OGRSpatialReference SrcSpatialRef, DstSpatialRef;
	SrcSpatialRef.importFromEPSG(4545);
	DstSpatialRef.importFromEPSG(4326);

	OGRCoordinateTransformation* CoordTransform = OGRCreateCoordinateTransformation(&SrcSpatialRef, &DstSpatialRef);
	const int Succeed = CoordTransform->Transform(1, &Y, &X);
	OGRCoordinateTransformation::DestroyCT(CoordTransform);

	Longitude = X;
	Latitude = Y;

	return Succeed != 0;
}

EPSG 4326 转换 EPSG 4545

bool EPSG_4326_To_4545(double Longitude, double Latitude, double & X, double & Y)
{
	OGRSpatialReference SrcSpatialRef, DstSpatialRef;
	SrcSpatialRef.importFromEPSG(4326);
	DstSpatialRef.importFromEPSG(4545);

	OGRCoordinateTransformation* coordTransform = OGRCreateCoordinateTransformation(&SrcSpatialRef, &DstSpatialRef);
	const int Succeed = coordTransform->Transform(1, &Latitude, &Longitude);
	OGRCoordinateTransformation::DestroyCT(coordTransform);

	X = Longitude;
	Y = Latitude;

	return Succeed != 0;
}