代码备忘录(1)影像地理坐标的获取以及坐标系之间的转换(基于GDAL)
来源:互联网 发布:阿里巴巴农村淘宝图片 编辑:程序博客网 时间:2024/05/21 10:09
影像地理坐标获取以及坐标系之间的坐标转换
GDALAllRegister(); CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");//支持中文路径! ///读入输入影像 const char * pszFile = imgfile.c_str(); GDALDataset *poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);//使用只读方式打开图像 if (poDataset == NULL) { printf("File: %s不能打开!\n", pszFile); } GDALRasterBand *pBand_temp = NULL; pBand_temp = poDataset->GetRasterBand(1); ///获取四角点经纬度 double adfGeoTransform[6]; if (poDataset->GetGeoTransform(adfGeoTransform) == CE_Failure) { printf("获取仿射变换参数失败"); } std::cout << "仿射变换参数:" << endl << adfGeoTransform[0] << endl << adfGeoTransform[1] << endl << adfGeoTransform[2] << endl << adfGeoTransform[3] << endl << adfGeoTransform[4] << endl << adfGeoTransform[5] << endl; double X1 = adfGeoTransform[0] ;//经度 double Y1 = adfGeoTransform[3];//纬度 double X2 = adfGeoTransform[0] + iw * adfGeoTransform[1]; double Y2 = adfGeoTransform[3]; double X3 = adfGeoTransform[0] + iw * adfGeoTransform[1]; double Y3 = adfGeoTransform[3] + ih * adfGeoTransform[5]; double X4 = adfGeoTransform[0]; double Y4 = adfGeoTransform[3] + ih * adfGeoTransform[5]; /////输出影像四个角点的地理坐标 std::cout << Y1 << endl << X1 << endl; std::cout << Y2 << endl << X2 << endl; std::cout << Y3 << endl << X3 << endl; std::cout << Y4 << endl << X4 << endl; double X[4] = { X1, X2, X3 ,X4}; double Y[4] = { Y1, Y2, Y3, Y4}; int* flag = NULL; ///若坐标系为非GWS84,则进行空间坐标系转化 OGRSpatialReference obj_OSRS; obj_OSRS.SetWellKnownGeogCS("WGS84"); const char* spr=poDataset->GetProjectionRef(); OGRSpatialReference OSRS(spr); if (obj_OSRS.IsSame(&OSRS) == TRUE) { std::cout << "数据为GWS84地理坐标系统" << std::endl; ///地理边界 dataxml.topleft_latitude = Y1; dataxml.topleft_longitude = X1; dataxml.topright_latitude = Y2; dataxml.topright_longitude = X2; dataxml.bottomright_latitude = Y3; dataxml.bottomright_longitude = X3; dataxml.bottomleft_latitude = Y4; dataxml.bottomleft_longitude = X4; } else { OGRCoordinateTransformation *transf1=OGRCreateCoordinateTransformation(&OSRS, &obj_OSRS); if (transf1 == NULL) { std::cout << "数据不支持转化" << std::endl; } else { std::cout << "支持坐标系统之间转化" << std::endl; } transf1->TransformEx(4, X, Y, NULL, flag); ///地理边界 dataxml.topleft_latitude = Y[0]; dataxml.topleft_longitude = X[0]; dataxml.topright_latitude = Y[1]; dataxml.topright_longitude = X[1]; dataxml.bottomright_latitude = Y[2]; dataxml.bottomright_longitude = X[2]; dataxml.bottomleft_latitude = Y[3]; dataxml.bottomleft_longitude = X[3]; OGRCoordinateTransformation::DestroyCT(transf1); } /*if (OSRS.IsGeographic() == TRUE) { cout << "镶嵌数据为地理坐标系统" << endl; } if (OSRS.IsProjected()==TRUE) { cout << "镶嵌数据为投影坐标系统" << endl; }*/ /*std::string srs_txt = srcdata + "\\" + dataname + ".txt"; ofstream out_sr(srs_txt); out_sr << spr; out_sr.close();*/ /*OGRSpatialReference::DestroySpatialReference(&obj_OSRS); OGRSpatialReference::DestroySpatialReference(&OSRS);*/ /////输出影像四个角点的地理坐标 std::cout << Y[0] << endl << X[0] << endl; std::cout << Y[1] << endl << X[1] << endl; std::cout << Y[2] << endl << X[2] << endl; std::cout << Y[3] << endl << X[3] << endl;
0 0
- 代码备忘录(1)影像地理坐标的获取以及坐标系之间的转换(基于GDAL)
- 获取全国市以及地理坐标,各大坐标系北斗,百度,WGS-84坐标系的转换,有图,有代码
- 使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换
- GDAL进行影像投影坐标、地理坐标、图上坐标的转换
- GDAL获取指定地理坐标像元值、获取指定地理范围影像数据
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
- c++UTM地理坐标系与WGS84地理坐标系之间的转换
- 关于不同坐标系之间的坐标转换(札记)
- 基于GDAL的遥感影像显示(C#版)
- 基于GDAL的遥感影像显示(C#版) .
- 基于GDAL的遥感影像显示(C#版)
- [JS] 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
- GDAL 地理坐标与图像行列坐标之间相互转换公式
- iOS-地理坐标转换,原生地图获取的原始坐标转换为地图真实坐标
- 不同平面直角坐标系之间的坐标转换公式
- 投影坐标系与地理坐标下比例尺与分辨率的转换
- 坐标系之间的转换
- 投影坐标系与地理坐标系之间的关系
- resultMap 多对多查询
- 自定义圆内套三角形
- ORACLE 学习笔记 -->存储过程,游标等
- 理解Maven中的SNAPSHOT版本和正式版本
- bzoj1651
- 代码备忘录(1)影像地理坐标的获取以及坐标系之间的转换(基于GDAL)
- Android内存泄漏
- 【Zookeeper】源码分析之Leader选举(二)
- 商派BBC系统——<{input type=?类型组件
- [Jenkins]TestNG无法显示,提示“testng-results.xml was last modified before this build started”
- Android锁屏以及锁键盘(锁触摸)
- git学习教程
- 点击按钮Alert弹出遮罩层效果的提示框代码
- 后缀数组自学