# CoordSystemTransform--SevenParameterConversion
**Repository Path**: luludelu/CoordSystemTransform--SevenParameterConversion
## Basic Information
- **Project Name**: CoordSystemTransform--SevenParameterConversion
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-25
- **Last Updated**: 2024-07-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CoordSystemTransform使用说明
## CoordSystemTransform
CoordSystemTransform这款工具由"[阿拉灯Aladeng](http://www.lgwimonday.cn)"编写,项目上传至Github分享,所有源码都可以下载和修改。CoordSystemTransform采用了七参数转换原理,对GIS中不同坐标系统中的坐标数据进行**毫米级**转换,转换精度相当高。当然,由于保密原因,七参数需要用户自己提供,七参数具体计算方法参照[5分钟快速计算七参数](http://www.lgwimonday.cn/archives/1265)。本项目中使用的七参数为测试数据,不是实际七参数。CoordSystemTransform将各个转换过程进行了分割,并将使用接口暴露出来,用户可根据需要自由组合转换过程,每个接口及参数在代码中都有详细注释。
## 效果截图
## 使用说明
1. 引入库文件
CoordSystemTransform工具由C++语言编写,只有两个文件,**Trans.h**和**Trans.cpp**文件,只需将这两个文件引入项目中便可直接调用函数接口。
2. 接口调用
(1) 建立Trans对象
```c++
Trans trans2(8.5, -28, -14.8888, -0.888, 1.9999, -3.1111, 4.22222, coord::XIAN80, coord::WGS84);
```
(2) 坐标系转换
```c++
//方法1
Point result1 = trans2.plane2geodetic(Point(19348965.21, 2894958.496, 0), 6378140, 6356755.2882, 1 / 298.257, 6378137, 1 / 298.2572236, 6);
//方法2
Point result1_copy = trans2.plane2geodetic(Point(19348965.21, 2894958.496, 0), 6);
//plane2geodetic重载了两种不同方法,具体说明请下载源码见注释
//result1和result1_copy结果相同,都是最终的转换结果,任选其一即可
```
## wgs84坐标系与西安80互相转换
1. wgs84转西安80
```c++
Trans trans(-8.5, 28, 14.8888, 0.888, -1.9999, 3.1111, -4.22222,coord::WGS84,coord::XIAN80);
Point result_copy = trans.geodetic2plane(Point(108.635229183, 26.111425709, 0), 6);
```
2. 西安80转wgs84
```c++
Trans trans2(8.5, -28, -14.8888, -0.888, 1.9999, -3.1111, 4.22222, coord::XIAN80, coord::WGS84);
Point result1_copy = trans2.plane2geodetic(Point(19348965.21, 2894958.496, 0), 6);
```
## GIS坐标系扩展方法
目前,CoordSystemTransform只引入了XIAN80和WGS84两种类型的大地坐标系,如果你的坐标是其他坐标系的,可以通过扩展坐标系的方法扩展本项目。如果你有意愿对本项目进行扩展,请在github中Fork代码,并将修改发至本项目
1. 在**Trans.h**的枚举类**GEODETIC_COORD_SYSTEM**中添加新的大地坐标系变量
```c++
/**
* 大地坐标系枚举类
*/
enum GEODETIC_COORD_SYSTEM
{
XIAN80,
WGS84
};
```
2. 在**Trans.h**的**EllipsoidParamArray**数组中添加新大地坐标系对应椭球体的名称和参数(a,b,f)
```c++
/**
* 各个椭球体参数的数组 (大地坐标系名称,a,b,f)
*/
static EllipsoidParam EllipsoidParamArray[] =
{
{ "XIAN80", 6378140, 6356755.2882, 1 / 298.257 },//名称、长半轴、短半轴、扁率
{ "WGS84", 6378137, 6356752.314, 1 / 298.2572236 }
};
```
**注意**:步骤1和2添加的变量顺序要对应
## PS
- [5分钟快速计算七参数](http://www.lgwimonday.cn/archives/1265)
更多内容敬请关注 **[阿拉灯Aladeng](http://www.lgwimonday.cn)**