专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > GIS

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

发布时间:2010-06-06 17:14:02 文章来源:www.iduyao.cn 采编人员:星星草
用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();
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: