zoukankan      html  css  js  c++  java
  • 设置GDAL_DATA环境变量

    GDAL库在使用时又很多环境变量要提前设置,如果忽略这一步,代码会出现异常失败。本文由描述了静态和运行时两种设置方法供参考。

    调试如下这么简单的一段OGR坐标转化代码一直出错,很摸不着头脑,非很大劲查到原来是GDAL_DATA环境变量设置不正确。参考资料如下。

    [Gdal-dev] GDAL ImportfromEPSG Error

    http://lists.maptools.org/pipermail/gdal-dev/2006-April/008644.html

     

    源码是OGR站点的示例改了一点点,如下。出错部分是红色加粗句,err一直为6。

     

    #include "stdafx.h"

    #include "PCSTransform.h"

    #include <ogr_spatialref.h>

     

    bool DoTransForm(int nCS1,int nCS2)

    {

        OGRSpatialReference oSourceSRS, oTargetSRS;

        OGRCoordinateTransformation *poCT;

        double x1, y1, x2, y2;

        

        //设置环境变量

        //GDALSetConfigOption( "GDAL_DATA", "d:\\gdal\\data" );

     

        OGRErr err = oSourceSRS.importFromEPSG( nCS1 );

        oTargetSRS.importFromEPSG( nCS2 );

        char *pszWKT = NULL;

        

        //测试

        oSourceSRS.exportToWkt(&pszWKT);

        AfxMessageBox(CString(pszWKT));

     

        //定义转化

        poCT = OGRCreateCoordinateTransformation( &oSourceSRS,&oTargetSRS );

        //x = atof( papszArgv[i+3] );

        //y = atof( papszArgv[i+4] );

        x1 = 100;y1 = 40;

        x2 = x1; y2 = y1;

        char msg[100];

     

        if( poCT == NULL || !poCT->Transform( 1, &x2, &y2 ) )

            AfxMessageBox((CString)("Transformation failed.\n" ));

        else

        {

            sprintf(msg, "(%f,%f) -> (%f,%f)\n",x1, y1, x2, y2 );

            AfxMessageBox((CString)msg);

        }

     

        return true;

    }

    静态设置:我的电脑|属性|高级|环境变量|新建|GDAL_DATA="$GDAL\data"

    运行时设置:再调用GDAL库开始处加GDALSetConfigOption( "GDAL_DATA", "d:\\gdal\\data" );

  • 相关阅读:
    Oracle(00):PL/SQL嵌入SQL语句
    Oracle(00):CASE WHEN 用法
    Oracle(00):正则表达式
    Oracle(00):删除重复记录
    Oracle(00):PL/SQL块与表达式
    Oracle(00):PL/SQL复合类型
    Oracle(00):PL/SQL数据类型
    Oracle(00):rownum行号
    Oracle(00):递归查询connect by
    Oracle(00):Update语句
  • 原文地址:https://www.cnblogs.com/flyingfish/p/668677.html
Copyright © 2011-2022 走看看