毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 企业开发 >> 正文

用gdal库做动态投影时调用失败的问题

更新时间:2012-11-6:  来源:毕业论文

大家好,本人最近在开发中碰到一个用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是否能正常工作??


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

我把我的代码给你一份参考一下吧
为了不泄露本地坐标的投影,我用*****替换了具体数值。

importFromESRI这个方法 我没用过。我都是构建坐标投影字符串来转换的


C/C++ code12345678910111213 CString strPrj = _T("PROJCS[\"TRANSVERSE\",GEOGCS[\"OOO\",DATUM[\"GCS_Krasovsky_1940\",SPHEROID[\"KRASOVSKY\",6378245.0,298.3]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",120.583333],PARAMETER[\"scale_factor\",1.0],PARAMETER[\"false_easting\",******],PARAMETER[\"false_northing\",-******],UNIT[\"meter\",1]]");     char* pPrj = T2A(strPrj);     oSourceSRS.importFromWkt(&pPrj);       oTargetSRS.SetWellKnownGeogCS("WGS84");        poCT = OGRCreateCoordinateTransformation( &oSourceSRS,                                                     &oTargetSRS );       _poCT = OGRCreateCoordinateTransformation
oSourceSRS和oTargetSRS变量应该都有值了吧

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

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。