当前位置: 代码迷 >> GIS >> 用gdal实现动态投影的一个有关问题
  详细解决方案

用gdal实现动态投影的一个有关问题

热度:211   发布时间:2016-05-05 06:35:44.0
用gdal实现动态投影的一个问题
大家好,本人最近在开发中碰到一个用gdal库做动态投影时调用失败的问题,烦请大家帮忙支支招

  源码如下:

  //资源环境切换
  AFX_MANAGE_STATE(AfxGetStaticModuleState());

  OGRSpatialReference oSourceSRS;
OGRSpatialReference oTargetSRS;
OGRCoordinateTransformation* poCT = NULL;

CString strFilePath = CCommon::GetAppPath() + "Data
  CPLSetConfigOption("GDAL_DATA", strFilePath );";//设置gdal环境路径


CString ssss = "wgs84坐标系";//坐标参考字符串太长,就写个意思一下的
char* TransName1[2] = {NULL, NULL};
TransName1[0] = ssss.GetBuffer();
TransName1[1] = NULL;

int err = oTargetSRS.importFromESRI(TransName1);//此处返回值为0,说明环境设置没问题
//int err = oTargetSRS.importFromEPSG(atoi(strTRFCode));

strTransName = "西安80坐标系";
char* TransName[2] = {NULL, NULL};
TransName[0] = strTransName.GetBuffer();
TransName[1] = NULL;

err = oSourceSRS.importFromESRI(TransName);//此处返回值也为0,说明环境设置没问题
poCT = OGRCreateCoordinateTransformation(&oSourceSRS, &oTargetSRS);

  poCT 的值死活都是为空,上网查原因,有一个说法是可能是gdal内部不支持这种转换,但是我可以肯定地排除不是这个原因,因为同样的代码,我写在一个对话框程序里,poCT的返回是有值的。另外,看到一个也转换不成功的例子,是因为proj动态库没有导入所致,可是我该导入的都导入了,测试程序中执行是没问题的。

  我是在一个com组件中暴露出来的方法中调用gdal的坐标转换的功能的,不知在com组件中,gdal是否能正常工作??


  麻烦大家支支招,这个问题困扰我好几天了。

------解决方案--------------------
你试了我的代码了吗?oSourceSRS和oTargetSRS变量应该都有值了吧

如果还没有,那可能是如下语句没有加入
GDALAllRegister();
OGRRegisterAll();