不知道啥时候在网上找到的算法,经实验发现貌似挺精确的,经修改后备用:
#include <cmath>
//高斯平面坐标系
struct CRDCARTESIAN
{
double x;
double y;
double z;
} ;
//大地坐标系(可以是 北京54坐标系,西安80坐标系,WGS84坐标系(GPS 坐标))
struct CRDGEODETIC
{
double longitude; //经度
double latitude; //纬度
double height; //大地高,可设为0
};
#define WGS84 84 //WGS84坐标系(GPS 坐标)
#define BJ54 54 //北京54坐标系
#define XIAN80 80 //西安80坐标系
#define ZONEWIDE3 3 //投影带宽度 3
#define ZONEWIDE6 6 //投影带宽度 6
//---------------------------------------------------------------------------
void BLTOXY(CRDCARTESIAN * pcc, CRDGEODETIC * pcg, int Datum, int zonewide)
{
double B = pcg->latitude; //纬度
double L = pcg->longitude; //经度//纬度度数
double L0; //中央经线度数
double N; //卯酉圈曲率半径
double q2;
double x; //高斯平面纵坐标
double y; //高斯平面横坐标
double s; //赤道至纬度B的经线弧长
double f; //参考椭球体扁率
doubl