您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GDALCheckDatasetDimensions函数代码示例

51自学网 2021-06-01 20:49:40
  C++
这篇教程C++ GDALCheckDatasetDimensions函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GDALCheckDatasetDimensions函数的典型用法代码示例。如果您正苦于以下问题:C++ GDALCheckDatasetDimensions函数的具体用法?C++ GDALCheckDatasetDimensions怎么用?C++ GDALCheckDatasetDimensions使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GDALCheckDatasetDimensions函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: NWT_GRDDataset

GDALDataset *NWT_GRDDataset::Open( GDALOpenInfo * poOpenInfo ){    if( !Identify(poOpenInfo) )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    NWT_GRDDataset *poDS;    poDS = new NWT_GRDDataset();    poDS->fp = VSIFOpenL(poOpenInfo->pszFilename, "rb");    if (poDS->fp == NULL)    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    VSIFSeekL( poDS->fp, 0, SEEK_SET );    VSIFReadL( poDS->abyHeader, 1, 1024, poDS->fp );    poDS->pGrd = (NWT_GRID *) malloc(sizeof(NWT_GRID));    if (!nwt_ParseHeader( poDS->pGrd, (char *) poDS->abyHeader ) ||        !GDALCheckDatasetDimensions(poDS->pGrd->nXSide, poDS->pGrd->nYSide) )    {        delete poDS;        return NULL;    }    poDS->nRasterXSize = poDS->pGrd->nXSide;    poDS->nRasterYSize = poDS->pGrd->nYSide;// create a colorTable  // if( poDS->pGrd->iNumColorInflections > 0 )  //   poDS->CreateColorTable();  nwt_LoadColors( poDS->ColorMap, 4096, poDS->pGrd );/* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->SetBand( 1, new NWT_GRDRasterBand( poDS, 1 ) );    //r    poDS->SetBand( 2, new NWT_GRDRasterBand( poDS, 2 ) );    //g    poDS->SetBand( 3, new NWT_GRDRasterBand( poDS, 3 ) );    //b    poDS->SetBand( 4, new NWT_GRDRasterBand( poDS, 4 ) );    //z/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for external overviews.                                   *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename, poOpenInfo->papszSiblingFiles );    return (poDS);}
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:60,


示例2: NWT_GRDDataset

GDALDataset *NWT_GRDDataset::Open( GDALOpenInfo * poOpenInfo ){/* -------------------------------------------------------------------- *//*  Look for the header                                                 *//* -------------------------------------------------------------------- */    if( poOpenInfo->fp == NULL || poOpenInfo->nHeaderBytes < 50 )        return NULL;    if( poOpenInfo->pabyHeader[0] != 'H' ||        poOpenInfo->pabyHeader[1] != 'G' ||        poOpenInfo->pabyHeader[2] != 'P' ||        poOpenInfo->pabyHeader[3] != 'C' || poOpenInfo->pabyHeader[4] != '1' )    return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    NWT_GRDDataset *poDS;    poDS = new NWT_GRDDataset();    poDS->fp = poOpenInfo->fp;    poOpenInfo->fp = NULL;/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    VSIFSeek( poDS->fp, 0, SEEK_SET );    VSIFRead( poDS->abyHeader, 1, 1024, poDS->fp );    poDS->pGrd = (NWT_GRID *) malloc(sizeof(NWT_GRID));    if (!nwt_ParseHeader( poDS->pGrd, (char *) poDS->abyHeader ) ||        !GDALCheckDatasetDimensions(poDS->pGrd->nXSide, poDS->pGrd->nYSide) )    {        delete poDS;        return NULL;    }    poDS->nRasterXSize = poDS->pGrd->nXSide;    poDS->nRasterYSize = poDS->pGrd->nYSide;// create a colorTable  // if( poDS->pGrd->iNumColorInflections > 0 )  //   poDS->CreateColorTable();  nwt_LoadColors( poDS->ColorMap, 4096, poDS->pGrd );/* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->SetBand( 1, new NWT_GRDRasterBand( poDS, 1 ) );    //r    poDS->SetBand( 2, new NWT_GRDRasterBand( poDS, 2 ) );    //g    poDS->SetBand( 3, new NWT_GRDRasterBand( poDS, 3 ) );    //b    poDS->SetBand( 4, new NWT_GRDRasterBand( poDS, 4 ) );    //z/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();    return (poDS);}
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:60,


示例3: NWT_GRCDataset

GDALDataset *NWT_GRCDataset::Open( GDALOpenInfo * poOpenInfo ){/* -------------------------------------------------------------------- *//*  Look for the header                                                 *//* -------------------------------------------------------------------- */    if( poOpenInfo->fp == NULL || poOpenInfo->nHeaderBytes < 50 )        return NULL;    if( poOpenInfo->pabyHeader[0] != 'H' ||        poOpenInfo->pabyHeader[1] != 'G' ||        poOpenInfo->pabyHeader[2] != 'P' ||        poOpenInfo->pabyHeader[3] != 'C' ||        poOpenInfo->pabyHeader[4] != '8' )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    NWT_GRCDataset *poDS;    poDS = new NWT_GRCDataset();    poDS->fp = poOpenInfo->fp;    poOpenInfo->fp = NULL;/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    VSIFSeek( poDS->fp, 0, SEEK_SET );    VSIFRead( poDS->abyHeader, 1, 1024, poDS->fp );    poDS->pGrd = (NWT_GRID *) malloc( sizeof (NWT_GRID) );    poDS->pGrd->fp = poDS->fp;    if (!nwt_ParseHeader( poDS->pGrd, (char *) poDS->abyHeader ) ||        !GDALCheckDatasetDimensions(poDS->pGrd->nXSide, poDS->pGrd->nYSide) ||        poDS->pGrd->stClassDict == NULL)    {        delete poDS;        return NULL;    }    poDS->nRasterXSize = poDS->pGrd->nXSide;    poDS->nRasterYSize = poDS->pGrd->nYSide;/* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->SetBand( 1, new NWT_GRCRasterBand( poDS, 1) );    //Class Indexes/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();    return (poDS);}
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:58,


示例4: NWT_GRCDataset

GDALDataset *NWT_GRCDataset::Open( GDALOpenInfo * poOpenInfo ){    if( !Identify(poOpenInfo) )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    NWT_GRCDataset *poDS;    poDS = new NWT_GRCDataset();    poDS->fp = VSIFOpenL(poOpenInfo->pszFilename, "rb");    if (poDS->fp == NULL)    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    VSIFSeekL( poDS->fp, 0, SEEK_SET );    VSIFReadL( poDS->abyHeader, 1, 1024, poDS->fp );    poDS->pGrd = (NWT_GRID *) malloc( sizeof (NWT_GRID) );    poDS->pGrd->fp = poDS->fp;    if (!nwt_ParseHeader( poDS->pGrd, (char *) poDS->abyHeader ) ||        !GDALCheckDatasetDimensions(poDS->pGrd->nXSide, poDS->pGrd->nYSide) ||        poDS->pGrd->stClassDict == NULL)    {        delete poDS;        return NULL;    }    poDS->nRasterXSize = poDS->pGrd->nXSide;    poDS->nRasterYSize = poDS->pGrd->nYSide;/* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->SetBand( 1, new NWT_GRCRasterBand( poDS, 1) );    //Class Indexes/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for external overviews.                                   *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename, poOpenInfo->GetSiblingFiles() );    return (poDS);}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:57,


示例5: CPLError

GDALDataset* EpsilonDataset::Open(GDALOpenInfo* poOpenInfo){    if (!Identify(poOpenInfo))        return NULL;    if( poOpenInfo->eAccess == GA_Update )    {        CPLError( CE_Failure, CPLE_NotSupported,                  "The EPSILON driver does not support update access to existing"                  " files./n" );        return NULL;    }    VSILFILE* fp = VSIFOpenL(poOpenInfo->pszFilename, "rb");    if (fp == NULL)        return NULL;    EpsilonDataset* poDS = new EpsilonDataset();    poDS->fp = fp;    poDS->nRasterXSize = 0;    poDS->nRasterYSize = 0;    int nBandsToAdd = 0;    if (!poDS->ScanBlocks(&nBandsToAdd))    {        delete poDS;        return NULL;    }    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) ||        !GDALCheckBandCount(nBandsToAdd, FALSE))    {        delete poDS;        return NULL;    }    if (!poDS->bRegularTiling)    {        CPLError( CE_Failure, CPLE_NotSupported,                  "The EPSILON driver does not support reading "                  "not regularly blocked files./n" );        delete poDS;        return NULL;    }    int i;    for(i=1;i<=nBandsToAdd;i++)        poDS->SetBand(i, new EpsilonRasterBand(poDS, i));    if (nBandsToAdd > 1)        poDS->SetMetadataItem("INTERLEAVE", "PIXEL", "IMAGE_STRUCTURE");    return poDS;}
开发者ID:ryandavid,项目名称:rotobox,代码行数:54,


示例6: CPLDebug

RawRasterBand::RawRasterBand( void * fpRaw, vsi_l_offset nImgOffset,                              int nPixelOffset, int nLineOffset,                              GDALDataType eDataType, int bNativeOrder,                              int nXSize, int nYSize, int bIsVSIL, int bOwnsFP ){    this->poDS = NULL;    this->nBand = 1;    this->eDataType = eDataType;    this->bIsVSIL = bIsVSIL;    this->bOwnsFP =bOwnsFP;    if (bIsVSIL)    {        this->fpRaw = NULL;        this->fpRawL = (VSILFILE*) fpRaw;    }    else    {        this->fpRaw = (FILE*) fpRaw;        this->fpRawL = NULL;    }    this->nImgOffset = nImgOffset;    this->nPixelOffset = nPixelOffset;    this->nLineOffset = nLineOffset;    this->bNativeOrder = bNativeOrder;    CPLDebug( "GDALRaw",               "RawRasterBand(floating,Off=%d,PixOff=%d,LineOff=%d,%s,%d)/n",              (unsigned int) nImgOffset, nPixelOffset, nLineOffset,               GDALGetDataTypeName(eDataType), bNativeOrder );/* -------------------------------------------------------------------- *//*      Treat one scanline as the block size.                           *//* -------------------------------------------------------------------- */    nBlockXSize = nXSize;    nBlockYSize = 1;    nRasterXSize = nXSize;    nRasterYSize = nYSize;    if (!GDALCheckDatasetDimensions(nXSize, nYSize))    {        pLineBuffer = NULL;        return;    }/* -------------------------------------------------------------------- *//*      Initialize other fields, and setup the line buffer.             *//* -------------------------------------------------------------------- */    Initialize();}
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:51,


示例7: CPLGetPath

GDALDataset *SAGADataset::Open( GDALOpenInfo * poOpenInfo ){    /* -------------------------------------------------------------------- */    /*	We assume the user is pointing to the binary (ie. .sdat) file.	    */    /* -------------------------------------------------------------------- */    if( !EQUAL(CPLGetExtension( poOpenInfo->pszFilename ), "sdat"))    {        return NULL;    }    CPLString osPath = CPLGetPath( poOpenInfo->pszFilename );    CPLString osName = CPLGetBasename( poOpenInfo->pszFilename );    CPLString osHDRFilename;    osHDRFilename = CPLFormCIFilename( osPath, osName, ".sgrd" );    VSILFILE	*fp;    fp = VSIFOpenL( osHDRFilename, "r" );        if( fp == NULL )    {        return NULL;    }    /* -------------------------------------------------------------------- */    /*      Is this file a SAGA header file?  Read a few lines of text      */    /*      searching for something starting with nrows or ncols.           */    /* -------------------------------------------------------------------- */    const char		*pszLine;    int				nRows = -1, nCols = -1;    double			dXmin = 0.0, dYmin = 0.0, dCellsize = 0.0, dNoData = 0.0, dZFactor = 0.0;    int				nLineCount			= 0;    char			szDataFormat[20]	= "DOUBLE";    char            szByteOrderBig[10]	= "FALSE";    char			szTopToBottom[10]	= "FALSE";    char            **papszHDR			= NULL;    	    while( (pszLine = CPLReadLineL( fp )) != NULL )        {        char	**papszTokens;        nLineCount++;        if( nLineCount > 50 || strlen(pszLine) > 1000 )            break;        papszHDR = CSLAddString( papszHDR, pszLine );        papszTokens = CSLTokenizeStringComplex( pszLine, " =", TRUE, FALSE );        if( CSLCount( papszTokens ) < 2 )        {		            CSLDestroy( papszTokens );            continue;        }        if( EQUALN(papszTokens[0],"CELLCOUNT_X",strlen("CELLCOUNT_X")) )            nCols = atoi(papszTokens[1]);        else if( EQUALN(papszTokens[0],"CELLCOUNT_Y",strlen("CELLCOUNT_Y")) )            nRows = atoi(papszTokens[1]);        else if( EQUALN(papszTokens[0],"POSITION_XMIN",strlen("POSITION_XMIN")) )            dXmin = CPLAtofM(papszTokens[1]);        else if( EQUALN(papszTokens[0],"POSITION_YMIN",strlen("POSITION_YMIN")) )            dYmin = CPLAtofM(papszTokens[1]);        else if( EQUALN(papszTokens[0],"CELLSIZE",strlen("CELLSIZE")) )            dCellsize = CPLAtofM(papszTokens[1]);        else if( EQUALN(papszTokens[0],"NODATA_VALUE",strlen("NODATA_VALUE")) )            dNoData = CPLAtofM(papszTokens[1]);        else if( EQUALN(papszTokens[0],"DATAFORMAT",strlen("DATAFORMAT")) )            strncpy( szDataFormat, papszTokens[1], sizeof(szDataFormat)-1 );        else if( EQUALN(papszTokens[0],"BYTEORDER_BIG",strlen("BYTEORDER_BIG")) )            strncpy( szByteOrderBig, papszTokens[1], sizeof(szByteOrderBig)-1 );        else if( EQUALN(papszTokens[0],"TOPTOBOTTOM",strlen("TOPTOBOTTOM")) )            strncpy( szTopToBottom, papszTokens[1], sizeof(szTopToBottom)-1 );        else if( EQUALN(papszTokens[0],"Z_FACTOR",strlen("Z_FACTOR")) )            dZFactor = CPLAtofM(papszTokens[1]);        CSLDestroy( papszTokens );    }    VSIFCloseL( fp );    CSLDestroy( papszHDR );    /* -------------------------------------------------------------------- */    /*      Did we get the required keywords?  If not we return with        */    /*      this never having been considered to be a match. This isn't     */    /*      an error!                                                       */    /* -------------------------------------------------------------------- */    if( nRows == -1 || nCols == -1 )    {        return NULL;    }    if (!GDALCheckDatasetDimensions(nCols, nRows))    {        return NULL;//.........这里部分代码省略.........
开发者ID:Mofangbao,项目名称:node-gdal,代码行数:101,


示例8: osOriginalFilename

GDALDataset *HF2Dataset::Open( GDALOpenInfo * poOpenInfo ){    CPLString osOriginalFilename(poOpenInfo->pszFilename);    if (!Identify(poOpenInfo))        return NULL;    GDALOpenInfo* poOpenInfoToDelete = NULL;    /*  GZipped .hf2 files are common, so automagically open them */    /*  if the /vsigzip/ has not been explicitly passed */    CPLString osFilename(poOpenInfo->pszFilename);    if ((EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "hfz") ||        (strlen(poOpenInfo->pszFilename) > 6 &&         EQUAL(poOpenInfo->pszFilename + strlen(poOpenInfo->pszFilename) - 6, "hf2.gz"))) &&         !EQUALN(poOpenInfo->pszFilename, "/vsigzip/", 9))    {        osFilename = "/vsigzip/";        osFilename += poOpenInfo->pszFilename;        poOpenInfo = poOpenInfoToDelete =                new GDALOpenInfo(osFilename.c_str(), GA_ReadOnly,                                 poOpenInfo->GetSiblingFiles());    }/* -------------------------------------------------------------------- *//*      Parse header                                                    *//* -------------------------------------------------------------------- */    int nXSize, nYSize;    memcpy(&nXSize, poOpenInfo->pabyHeader + 6, 4);    CPL_LSBPTR32(&nXSize);    memcpy(&nYSize, poOpenInfo->pabyHeader + 10, 4);    CPL_LSBPTR32(&nYSize);    GUInt16 nTileSize;    memcpy(&nTileSize, poOpenInfo->pabyHeader + 14, 2);    CPL_LSBPTR16(&nTileSize);    float fVertPres, fHorizScale;    memcpy(&fVertPres, poOpenInfo->pabyHeader + 16, 4);    CPL_LSBPTR32(&fVertPres);    memcpy(&fHorizScale, poOpenInfo->pabyHeader + 20, 4);    CPL_LSBPTR32(&fHorizScale);    GUInt32 nExtendedHeaderLen;    memcpy(&nExtendedHeaderLen, poOpenInfo->pabyHeader + 24, 4);    CPL_LSBPTR32(&nExtendedHeaderLen);    delete poOpenInfoToDelete;    poOpenInfoToDelete = NULL;    if (nTileSize < 8)        return NULL;    if (nXSize <= 0 || nXSize > INT_MAX - nTileSize ||        nYSize <= 0 || nYSize > INT_MAX - nTileSize)        return NULL;    /* To avoid later potential int overflows */    if (nExtendedHeaderLen > 1024 * 65536)        return NULL;    if (!GDALCheckDatasetDimensions(nXSize, nYSize))    {        return NULL;    }/* -------------------------------------------------------------------- *//*      Parse extended blocks                                           *//* -------------------------------------------------------------------- */    VSILFILE* fp = VSIFOpenL(osFilename.c_str(), "rb");    if (fp == NULL)        return NULL;    VSIFSeekL(fp, 28, SEEK_SET);    int bHasExtent = FALSE;    double dfMinX = 0, dfMaxX = 0, dfMinY = 0, dfMaxY = 0;    int bHasUTMZone = FALSE;    GInt16 nUTMZone = 0;    int bHasEPSGDatumCode = FALSE;    GInt16 nEPSGDatumCode = 0;    int bHasEPSGCode = FALSE;    GInt16 nEPSGCode = 0;    int bHasRelativePrecision = FALSE;    float fRelativePrecision = 0;    char szApplicationName[256];    szApplicationName[0] = 0;    GUInt32 nExtendedHeaderOff = 0;    while(nExtendedHeaderOff < nExtendedHeaderLen)    {        char pabyBlockHeader[24];        VSIFReadL(pabyBlockHeader, 24, 1, fp);        char szBlockName[16 + 1];        memcpy(szBlockName, pabyBlockHeader + 4, 16);        szBlockName[16] = 0;        GUInt32 nBlockSize;        memcpy(&nBlockSize, pabyBlockHeader + 20, 4);        CPL_LSBPTR32(&nBlockSize);//.........这里部分代码省略.........
开发者ID:MattLatt,项目名称:GDAL_2.0.x_VC,代码行数:101,


示例9: GTXDataset

GDALDataset *GTXDataset::Open( GDALOpenInfo * poOpenInfo ){    if( !Identify( poOpenInfo ) )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    GTXDataset *poDS = new GTXDataset();    poDS->eAccess = poOpenInfo->eAccess;/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    if( poOpenInfo->eAccess == GA_ReadOnly )        poDS->fpImage = VSIFOpenL( poOpenInfo->pszFilename, "rb" );    else        poDS->fpImage = VSIFOpenL( poOpenInfo->pszFilename, "rb+" );    if( poDS->fpImage == NULL )    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    poDS->adfGeoTransform[2] = 0.0;    poDS->adfGeoTransform[4] = 0.0;    CPL_IGNORE_RET_VAL(VSIFReadL( poDS->adfGeoTransform+3, 8, 1,                                  poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( poDS->adfGeoTransform+0, 8, 1,                                  poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( poDS->adfGeoTransform+5, 8, 1,                                  poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( poDS->adfGeoTransform+1, 8, 1,                                  poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &(poDS->nRasterYSize), 4, 1, poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &(poDS->nRasterXSize), 4, 1, poDS->fpImage ));    CPL_MSBPTR32( &(poDS->nRasterYSize) );    CPL_MSBPTR32( &(poDS->nRasterXSize) );    CPL_MSBPTR64( poDS->adfGeoTransform + 0 );    CPL_MSBPTR64( poDS->adfGeoTransform + 1 );    CPL_MSBPTR64( poDS->adfGeoTransform + 3 );    CPL_MSBPTR64( poDS->adfGeoTransform + 5 );    poDS->adfGeoTransform[3] +=        poDS->adfGeoTransform[5] * (poDS->nRasterYSize-1);    poDS->adfGeoTransform[0] -= poDS->adfGeoTransform[1] * 0.5;    poDS->adfGeoTransform[3] += poDS->adfGeoTransform[5] * 0.5;    poDS->adfGeoTransform[5] *= -1;    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Guess the data type. Since October 1, 2009, it should be        *//*      Float32. Before it was double.                                  *//* -------------------------------------------------------------------- */    CPL_IGNORE_RET_VAL(VSIFSeekL(poDS->fpImage, 0, SEEK_END));    const vsi_l_offset nSize = VSIFTellL(poDS->fpImage);    GDALDataType eDT = GDT_Float32;    if( nSize == 40 + 8 * static_cast<vsi_l_offset>(poDS->nRasterXSize) *        poDS->nRasterYSize )        eDT = GDT_Float64;    const int nDTSize = GDALGetDataTypeSizeBytes(eDT);/* -------------------------------------------------------------------- *//*      Create band information object.                                 *//* -------------------------------------------------------------------- */    RawRasterBand *poBand = new RawRasterBand(        poDS, 1, poDS->fpImage,        (poDS->nRasterYSize-1) * poDS->nRasterXSize*nDTSize + 40,        nDTSize, poDS->nRasterXSize * -nDTSize,        eDT,        !CPL_IS_LSB, TRUE, FALSE );    poBand->SetNoDataValue( -88.8888 );    poDS->SetBand( 1, poBand );/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for overviews.                                            *///.........这里部分代码省略.........
开发者ID:ryandavid,项目名称:rotobox,代码行数:101,


示例10: VSIFOpenL

//.........这里部分代码省略.........    {        CSLDestroy( papszHeader );        CPLError( CE_Failure, CPLE_NotSupported,                   "The NDF driver does not support update access to existing"                  " datasets./n" );        return NULL;    }    /* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    NDFDataset 	*poDS;    poDS = new NDFDataset();    poDS->papszHeader = papszHeader;    poDS->nRasterXSize = atoi(poDS->Get("PIXELS_PER_LINE",""));    poDS->nRasterYSize = atoi(poDS->Get("LINES_PER_DATA_FILE",""));/* -------------------------------------------------------------------- *//*      Create a raw raster band for each file.                         *//* -------------------------------------------------------------------- */    int iBand;    const char* pszBand = CSLFetchNameValue(papszHeader,                                         "NUMBER_OF_BANDS_IN_VOLUME");    if (pszBand == NULL)    {        CPLError(CE_Failure, CPLE_AppDefined, "Cannot find band count");        delete poDS;        return NULL;    }    int nBands = atoi(pszBand);    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) ||        !GDALCheckBandCount(nBands, FALSE))    {        delete poDS;        return NULL;    }    for( iBand = 0; iBand < nBands; iBand++ )    {        char szKey[100];        CPLString osFilename;        sprintf( szKey, "BAND%d_FILENAME", iBand+1 );        osFilename = poDS->Get(szKey,"");        // NDF1 file do not include the band filenames.        if( osFilename.size() == 0 )        {            char szBandExtension[15];            sprintf( szBandExtension, "I%d", iBand+1 );            osFilename = CPLResetExtension( poOpenInfo->pszFilename,                                             szBandExtension );        }        else        {                  CPLString osBasePath = CPLGetPath(poOpenInfo->pszFilename);            osFilename = CPLFormFilename( osBasePath, osFilename, NULL);        }        VSILFILE *fpRaw = VSIFOpenL( osFilename, "rb" );        if( fpRaw == NULL )        {            CPLError( CE_Failure, CPLE_AppDefined, 
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:67,


示例11: DTEDOpenEx

GDALDataset *DTEDDataset::Open( GDALOpenInfo * poOpenInfo ){    int         i;    DTEDInfo    *psDTED;    if (!Identify(poOpenInfo) || poOpenInfo->fpL == NULL )        return NULL;/* -------------------------------------------------------------------- *//*      Try opening the dataset.                                        *//* -------------------------------------------------------------------- */    VSILFILE* fp = poOpenInfo->fpL;    poOpenInfo->fpL = NULL;    psDTED = DTEDOpenEx( fp, poOpenInfo->pszFilename,                          (poOpenInfo->eAccess == GA_Update) ? "rb+" : "rb", TRUE );    if( psDTED == NULL )        return( NULL );/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    DTEDDataset         *poDS;    poDS = new DTEDDataset();    poDS->SetFileName(poOpenInfo->pszFilename);    poDS->eAccess = poOpenInfo->eAccess;    poDS->psDTED = psDTED;/* -------------------------------------------------------------------- *//*      Capture some information from the file that is of interest.     *//* -------------------------------------------------------------------- */    poDS->nRasterXSize = psDTED->nXSize;    poDS->nRasterYSize = psDTED->nYSize;        if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        delete poDS;        return NULL;    }    /* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->nBands = 1;    for( i = 0; i < poDS->nBands; i++ )        poDS->SetBand( i+1, new DTEDRasterBand( poDS, i+1 ) );/* -------------------------------------------------------------------- *//*      Collect any metadata available.                                 *//* -------------------------------------------------------------------- */    char *pszValue;    pszValue = DTEDGetMetadata( psDTED, DTEDMD_VERTACCURACY_UHL );    poDS->SetMetadataItem( "DTED_VerticalAccuracy_UHL", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_VERTACCURACY_ACC );    poDS->SetMetadataItem( "DTED_VerticalAccuracy_ACC", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_SECURITYCODE_UHL );    poDS->SetMetadataItem( "DTED_SecurityCode_UHL", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_SECURITYCODE_DSI );    poDS->SetMetadataItem( "DTED_SecurityCode_DSI", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_UNIQUEREF_UHL );    poDS->SetMetadataItem( "DTED_UniqueRef_UHL", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_UNIQUEREF_DSI );    poDS->SetMetadataItem( "DTED_UniqueRef_DSI", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_DATA_EDITION );    poDS->SetMetadataItem( "DTED_DataEdition", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_MATCHMERGE_VERSION );    poDS->SetMetadataItem( "DTED_MatchMergeVersion", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_MAINT_DATE );    poDS->SetMetadataItem( "DTED_MaintenanceDate", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_MATCHMERGE_DATE );    poDS->SetMetadataItem( "DTED_MatchMergeDate", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_MAINT_DESCRIPTION );    poDS->SetMetadataItem( "DTED_MaintenanceDescription", pszValue );    CPLFree( pszValue );    pszValue = DTEDGetMetadata( psDTED, DTEDMD_PRODUCER );//.........这里部分代码省略.........
开发者ID:drownedout,项目名称:datamap,代码行数:101,


示例12: VSIFOpenL

//.........这里部分代码省略.........                CSLDestroy( papszTokens );                CSLDestroy( papszHDR );                VSIFCloseL( fp );                return NULL;            }        }        else if( EQUAL(papszTokens[0],"BYTE_ORDER") )        {            // M for MSB, L for LSB            chByteOrder = (char) toupper(papszTokens[1][0]);        }        else if( EQUAL(papszTokens[0],"DATA_OFFSET") )        {            nSkipBytes = atoi(papszTokens[1]); // TBD: is this mapping right?        }        CSLDestroy( papszTokens );    }        VSIFCloseL( fp );    /* -------------------------------------------------------------------- *//*      Did we get the required keywords?  If not we return with        *//*      this never having been considered to be a match. This isn't     *//*      an error!                                                       *//* -------------------------------------------------------------------- */    if( nRows == -1 || nCols == -1 )    {        CSLDestroy( papszHDR );        return NULL;    }    if (!GDALCheckDatasetDimensions(nCols, nRows) ||        !GDALCheckBandCount(nBands, FALSE))    {        CSLDestroy( papszHDR );        return NULL;    }    /* -------------------------------------------------------------------- *//*      Confirm the requested access is supported.                      *//* -------------------------------------------------------------------- */    if( poOpenInfo->eAccess == GA_Update )    {        CSLDestroy( papszHDR );        CPLError( CE_Failure, CPLE_NotSupported,                   "The EIR driver does not support update access to existing"                  " datasets./n" );        return NULL;    }/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    EIRDataset     *poDS;    poDS = new EIRDataset();/* -------------------------------------------------------------------- *//*      Capture some information from the file that is of interest.     *//* -------------------------------------------------------------------- */    poDS->nRasterXSize = nCols;    poDS->nRasterYSize = nRows;    poDS->papszHDR = papszHDR;    
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:65,


示例13: CSLTokenizeStringComplex

GDALDataset *MEMDataset::Open( GDALOpenInfo * poOpenInfo ){    char    **papszOptions;/* -------------------------------------------------------------------- *//*      Do we have the special filename signature for MEM format        *//*      description strings?                                            *//* -------------------------------------------------------------------- */    if( !EQUALN(poOpenInfo->pszFilename,"MEM:::",6)         || poOpenInfo->fp != NULL )        return NULL;    papszOptions = CSLTokenizeStringComplex(poOpenInfo->pszFilename+6, ",",                                            TRUE, FALSE );/* -------------------------------------------------------------------- *//*      Verify we have all required fields                              *//* -------------------------------------------------------------------- */    if( CSLFetchNameValue( papszOptions, "PIXELS" ) == NULL        || CSLFetchNameValue( papszOptions, "LINES" ) == NULL        || CSLFetchNameValue( papszOptions, "DATAPOINTER" ) == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,               "Missing required field (one of PIXELS, LINES or DATAPOINTER)/n"              "Unable to access in-memory array." );        CSLDestroy( papszOptions );        return NULL;    }/* -------------------------------------------------------------------- *//*      Create the new MEMDataset object.                               *//* -------------------------------------------------------------------- */    MEMDataset *poDS;    poDS = new MEMDataset();    poDS->nRasterXSize = atoi(CSLFetchNameValue(papszOptions,"PIXELS"));    poDS->nRasterYSize = atoi(CSLFetchNameValue(papszOptions,"LINES"));    poDS->eAccess = GA_Update;/* -------------------------------------------------------------------- *//*      Extract other information.                                      *//* -------------------------------------------------------------------- */    const char *pszOption;    GDALDataType eType;    int nBands, nPixelOffset, nLineOffset;    size_t nBandOffset;    const char *pszDataPointer;    GByte *pabyData;    pszOption = CSLFetchNameValue(papszOptions,"BANDS");    if( pszOption == NULL )        nBands = 1;    else    {        nBands = atoi(pszOption);    }    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) ||        !GDALCheckBandCount(nBands, TRUE))    {        CSLDestroy( papszOptions );        delete poDS;        return NULL;    }    pszOption = CSLFetchNameValue(papszOptions,"DATATYPE");    if( pszOption == NULL )        eType = GDT_Byte;    else    {        if( atoi(pszOption) > 0 && atoi(pszOption) < GDT_TypeCount )            eType = (GDALDataType) atoi(pszOption);        else        {            int iType;                        eType = GDT_Unknown;            for( iType = 0; iType < GDT_TypeCount; iType++ )            {                if( EQUAL(GDALGetDataTypeName((GDALDataType) iType),                          pszOption) )                {                    eType = (GDALDataType) iType;                    break;                }            }                        if( eType == GDT_Unknown )            {                CPLError( CE_Failure, CPLE_AppDefined,                          "DATATYPE=%s not recognised.",                           pszOption );                CSLDestroy( papszOptions );                delete poDS;                return NULL;            }        }//.........这里部分代码省略.........
开发者ID:actian-geospatial,项目名称:ogr-ingres,代码行数:101,


示例14: CPLParseXMLString

GDALDataset *VRTDataset::OpenXML( const char *pszXML, const char *pszVRTPath,                                  GDALAccess eAccess){ /* -------------------------------------------------------------------- */ /*      Parse the XML.                                                  */ /* -------------------------------------------------------------------- */    CPLXMLNode	*psTree;    psTree = CPLParseXMLString( pszXML );    if( psTree == NULL )        return NULL;    CPLXMLNode *psRoot = CPLGetXMLNode( psTree, "=VRTDataset" );    if (psRoot == NULL)    {        CPLError( CE_Failure, CPLE_AppDefined,                  "Missing VRTDataset element." );        CPLDestroyXMLNode( psTree );        return NULL;    }    if( CPLGetXMLNode( psRoot, "rasterXSize" ) == NULL        || CPLGetXMLNode( psRoot, "rasterYSize" ) == NULL        || CPLGetXMLNode( psRoot, "VRTRasterBand" ) == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Missing one of rasterXSize, rasterYSize or bands on"                  " VRTDataset." );        CPLDestroyXMLNode( psTree );        return NULL;    }/* -------------------------------------------------------------------- *//*      Create the new virtual dataset object.                          *//* -------------------------------------------------------------------- */    VRTDataset *poDS;    int nXSize = atoi(CPLGetXMLValue(psRoot,"rasterXSize","0"));    int nYSize = atoi(CPLGetXMLValue(psRoot,"rasterYSize","0"));        if ( !GDALCheckDatasetDimensions(nXSize, nYSize) )    {        CPLDestroyXMLNode( psTree );        return NULL;    }    if( strstr(pszXML,"VRTWarpedDataset") != NULL )        poDS = new VRTWarpedDataset( nXSize, nYSize );    else    {        poDS = new VRTDataset( nXSize, nYSize );        poDS->eAccess = eAccess;    }    if( poDS->XMLInit( psRoot, pszVRTPath ) != CE_None )    {        delete poDS;        poDS = NULL;    }/* -------------------------------------------------------------------- *//*      Try to return a regular handle on the file.                     *//* -------------------------------------------------------------------- */    CPLDestroyXMLNode( psTree );    return poDS;}
开发者ID:Joe-xXx,项目名称:gdal,代码行数:68,


示例15: CSLTokenizeString2

int AAIGDataset::ParseHeader(const char *pszHeader, const char *pszDataType){    char **papszTokens = CSLTokenizeString2(pszHeader, " /n/r/t", 0);    const int nTokens = CSLCount(papszTokens);    int i = 0;    if ( (i = CSLFindString(papszTokens, "ncols")) < 0 ||         i + 1 >= nTokens)    {        CSLDestroy(papszTokens);        return FALSE;    }    nRasterXSize = atoi(papszTokens[i + 1]);    if ( (i = CSLFindString(papszTokens, "nrows")) < 0 ||         i + 1 >= nTokens)    {        CSLDestroy(papszTokens);        return FALSE;    }    nRasterYSize = atoi(papszTokens[i + 1]);    if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))    {        CSLDestroy(papszTokens);        return FALSE;    }    // TODO(schwehr): Would be good to also factor the file size into the max.    // TODO(schwehr): Allow the user to disable this check.    // The driver allocates a panLineOffset array based on nRasterYSize    constexpr int kMaxDimSize = 10000000;  // 1e7 cells.    if (nRasterXSize > kMaxDimSize || nRasterYSize > kMaxDimSize)    {        CSLDestroy(papszTokens);        return FALSE;    }    double dfCellDX = 0.0;    double dfCellDY = 0.0;    if ( (i = CSLFindString(papszTokens, "cellsize")) < 0 )    {        int iDX, iDY;        if( (iDX = CSLFindString(papszTokens, "dx")) < 0 ||            (iDY = CSLFindString(papszTokens, "dy")) < 0 ||            iDX + 1 >= nTokens ||            iDY + 1 >= nTokens )        {            CSLDestroy(papszTokens);            return FALSE;        }        dfCellDX = CPLAtofM(papszTokens[iDX + 1]);        dfCellDY = CPLAtofM(papszTokens[iDY + 1]);    }    else    {        if (i + 1 >= nTokens)        {            CSLDestroy(papszTokens);            return FALSE;        }        dfCellDY = CPLAtofM(papszTokens[i + 1]);        dfCellDX = dfCellDY;    }    int j = 0;    if ((i = CSLFindString(papszTokens, "xllcorner")) >= 0 &&        (j = CSLFindString(papszTokens, "yllcorner")) >= 0 &&        i + 1 < nTokens && j + 1 < nTokens)    {        adfGeoTransform[0] = CPLAtofM(papszTokens[i + 1]);        // Small hack to compensate from insufficient precision in cellsize        // parameter in datasets of        // http://ccafs-climate.org/data/A2a_2020s/hccpr_hadcm3        if ((nRasterXSize % 360) == 0 &&            fabs(adfGeoTransform[0] - (-180.0)) < 1e-12 &&            dfCellDX == dfCellDY &&            fabs(dfCellDX - (360.0 / nRasterXSize)) < 1e-9)        {            dfCellDY = 360.0 / nRasterXSize;            dfCellDX = dfCellDY;        }        adfGeoTransform[1] = dfCellDX;        adfGeoTransform[2] = 0.0;        adfGeoTransform[3] =            CPLAtofM(papszTokens[j + 1]) + nRasterYSize * dfCellDY;        adfGeoTransform[4] = 0.0;        adfGeoTransform[5] = -dfCellDY;    }    else if ((i = CSLFindString(papszTokens, "xllcenter")) >= 0 &&             (j = CSLFindString(papszTokens, "yllcenter")) >= 0 &&             i + 1 < nTokens && j + 1 < nTokens)    {        SetMetadataItem(GDALMD_AREA_OR_POINT, GDALMD_AOP_POINT);        adfGeoTransform[0] = CPLAtofM(papszTokens[i + 1]) - 0.5 * dfCellDX;        adfGeoTransform[1] = dfCellDX;        adfGeoTransform[2] = 0.0;//.........这里部分代码省略.........
开发者ID:hdfeos,项目名称:gdal,代码行数:101,


示例16: CEOSOpen

GDALDataset *CEOSDataset::Open( GDALOpenInfo * poOpenInfo ){    CEOSImage	*psCEOS;    int		i;    /* -------------------------------------------------------------------- *//*      Before trying CEOSOpen() we first verify that the first         *//*      record is in fact a CEOS file descriptor record.                *//* -------------------------------------------------------------------- */    if( poOpenInfo->nHeaderBytes < 100 )        return NULL;    if( poOpenInfo->pabyHeader[4] != 0x3f        || poOpenInfo->pabyHeader[5] != 0xc0        || poOpenInfo->pabyHeader[6] != 0x12        || poOpenInfo->pabyHeader[7] != 0x12 )        return NULL;/* -------------------------------------------------------------------- *//*      Try opening the dataset.                                        *//* -------------------------------------------------------------------- */    psCEOS = CEOSOpen( poOpenInfo->pszFilename, "rb" );        if( psCEOS == NULL )        return( NULL );    if( psCEOS->nBitsPerPixel != 8 )    {        CPLError( CE_Failure, CPLE_NotSupported,                   "The CEOS driver cannot handle nBitsPerPixel = %d",                  psCEOS->nBitsPerPixel );        CEOSClose(psCEOS);        return NULL;    }    if( !GDALCheckDatasetDimensions(psCEOS->nPixels, psCEOS->nBands) ||        !GDALCheckBandCount(psCEOS->nBands, FALSE) )    {        CEOSClose( psCEOS );        return NULL;    }/* -------------------------------------------------------------------- *//*      Confirm the requested access is supported.                      *//* -------------------------------------------------------------------- */    if( poOpenInfo->eAccess == GA_Update )    {        CEOSClose(psCEOS);        CPLError( CE_Failure, CPLE_NotSupported,                   "The CEOS driver does not support update access to existing"                  " datasets./n" );        return NULL;    }/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    CEOSDataset 	*poDS;    poDS = new CEOSDataset();    poDS->psCEOS = psCEOS;    /* -------------------------------------------------------------------- *//*      Capture some information from the file that is of interest.     *//* -------------------------------------------------------------------- */    poDS->nRasterXSize = psCEOS->nPixels;    poDS->nRasterYSize = psCEOS->nLines;    /* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->nBands = psCEOS->nBands;;    for( i = 0; i < poDS->nBands; i++ )        poDS->SetBand( i+1, new CEOSRasterBand( poDS, i+1 ) );/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for overviews.                                            *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );    return( poDS );}
开发者ID:Joe-xXx,项目名称:gdal,代码行数:90,


示例17: BTDataset

GDALDataset *BTDataset::Open( GDALOpenInfo * poOpenInfo ){/* -------------------------------------------------------------------- *//*      Verify that this is some form of binterr file.                  *//* -------------------------------------------------------------------- */    if( poOpenInfo->nHeaderBytes < 256)        return NULL;    if( !STARTS_WITH((const char *) poOpenInfo->pabyHeader, "binterr") )        return NULL;/* -------------------------------------------------------------------- *//*      Create the dataset.                                             *//* -------------------------------------------------------------------- */    BTDataset *poDS = new BTDataset();    memcpy( poDS->abyHeader, poOpenInfo->pabyHeader, 256 );/* -------------------------------------------------------------------- *//*      Get the version.                                                *//* -------------------------------------------------------------------- */    char szVersion[4] = {};    strncpy( szVersion, (char *) (poDS->abyHeader + 7), 3 );    szVersion[3] = '/0';    poDS->nVersionCode = static_cast<int>(CPLAtof(szVersion) * 10);/* -------------------------------------------------------------------- *//*      Extract core header information, being careful about the        *//*      version.                                                        *//* -------------------------------------------------------------------- */    GInt32 nIntTemp = 0;    memcpy( &nIntTemp, poDS->abyHeader + 10, 4 );    poDS->nRasterXSize = CPL_LSBWORD32( nIntTemp );    memcpy( &nIntTemp, poDS->abyHeader + 14, 4 );    poDS->nRasterYSize = CPL_LSBWORD32( nIntTemp );    if( !GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) )    {        delete poDS;        return NULL;    }    GInt16 nDataSize = 0;    memcpy( &nDataSize, poDS->abyHeader+18, 2 );    nDataSize = CPL_LSBWORD16( nDataSize );    GDALDataType eType = GDT_Unknown;    if( poDS->abyHeader[20] != 0 && nDataSize == 4 )        eType = GDT_Float32;    else if( poDS->abyHeader[20] == 0 && nDataSize == 4 )        eType = GDT_Int32;    else if( poDS->abyHeader[20] == 0 && nDataSize == 2 )        eType = GDT_Int16;    else    {        CPLError( CE_Failure, CPLE_AppDefined,                  ".bt file data type unknown, got datasize=%d.",                  nDataSize );        delete poDS;        return NULL;    }    /*        rcg, apr 7/06: read offset 62 for vert. units.        If zero, assume 1.0 as per spec.    */    memcpy( &poDS->m_fVscale, poDS->abyHeader + 62, 4 );    CPL_LSBPTR32(&poDS->m_fVscale);    if(poDS->m_fVscale == 0.0f)        poDS->m_fVscale = 1.0f;/* -------------------------------------------------------------------- *//*      Try to read a .prj file if it is indicated.                     *//* -------------------------------------------------------------------- */    OGRSpatialReference oSRS;    if( poDS->nVersionCode >= 12 && poDS->abyHeader[60] != 0 )    {        const char  *pszPrjFile = CPLResetExtension( poOpenInfo->pszFilename,                                                     "prj" );        VSILFILE *fp = VSIFOpenL( pszPrjFile, "rt" );        if( fp != NULL )        {            const int nBufMax = 10000;            char *pszBuffer = static_cast<char *>(CPLMalloc(nBufMax));            const int nBytes =                static_cast<int>(VSIFReadL( pszBuffer, 1, nBufMax-1, fp ));            CPL_IGNORE_RET_VAL(VSIFCloseL( fp ));            pszBuffer[nBytes] = '/0';            char *pszBufPtr = pszBuffer;            if( oSRS.importFromWkt( &pszBufPtr ) != OGRERR_NONE )            {//.........这里部分代码省略.........
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:101,


示例18: CPL_IGNORE_RET_VAL

//.........这里部分代码省略.........            sr.SetWellKnownGeogCS( "NAD83" );            break;          case -9:            break;          default:            sr.SetWellKnownGeogCS( "NAD27" );            break;        }    }    else    {        sr.SetWellKnownGeogCS( "NAD27" );        bNAD83 = false;    }    if (nCoordSystem == 1)  // UTM    {        if( iUTMZone >= -60 && iUTMZone <= 60 )        {            sr.SetUTM( abs(iUTMZone), iUTMZone >= 0 );            if( nGUnit == 1 )            {                sr.SetLinearUnitsAndUpdateParameters( SRS_UL_US_FOOT, CPLAtof(SRS_UL_US_FOOT_CONV) );                char    szUTMName[128];                snprintf( szUTMName, sizeof(szUTMName), "UTM Zone %d, Northern Hemisphere, us-ft", iUTMZone );                sr.SetNode( "PROJCS", szUTMName );            }        }    }    else if (nCoordSystem == 2)  // state plane    {        if( nGUnit == 1 )            sr.SetStatePlane( iUTMZone, bNAD83,                              "Foot", CPLAtof(SRS_UL_US_FOOT_CONV) );        else            sr.SetStatePlane( iUTMZone, bNAD83 );    }    sr.exportToWkt( &pszProjection );/* -------------------------------------------------------------------- *//*      For UTM we use the extents (really the UTM coordinates of       *//*      the lat/long corners of the quad) to determine the size in      *//*      pixels and lines, but we have to make the anchors be modulus    *//*      the pixel size which what really gets used.                     *//* -------------------------------------------------------------------- */    if (nCoordSystem == 1          // UTM        || nCoordSystem == 2       // State Plane        || nCoordSystem == -9999 ) // unknown    {        // expand extents modulus the pixel size.        extent_min.y = floor(extent_min.y/dydelta) * dydelta;        extent_max.y = ceil(extent_max.y/dydelta) * dydelta;        // Forcibly compute X extents based on first profile and pixelsize.        CPL_IGNORE_RET_VAL(VSIFSeekL(InDem, nDataStartOffset, 0));        /* njunk = */ ReadInt(InDem);        /* njunk = */ ReadInt(InDem);        /* njunk = */ ReadInt(InDem);        /* njunk = */ ReadInt(InDem);        const double dxStart = DConvert(InDem, 24);        nRasterYSize = static_cast<int>(            ( extent_max.y - extent_min.y ) / dydelta + 1.5 );        nRasterXSize = nProfiles;        adfGeoTransform[0] = dxStart - dxdelta/2.0;        adfGeoTransform[1] = dxdelta;        adfGeoTransform[2] = 0.0;        adfGeoTransform[3] = extent_max.y + dydelta/2.0;        adfGeoTransform[4] = 0.0;        adfGeoTransform[5] = -dydelta;    }/* -------------------------------------------------------------------- *//*      Geographic -- use corners directly.                             *//* -------------------------------------------------------------------- */    else    {        nRasterYSize = static_cast<int>(            ( extent_max.y - extent_min.y ) / dydelta + 1.5 );        nRasterXSize = nProfiles;        // Translate extents from arc-seconds to decimal degrees.        adfGeoTransform[0] = (extent_min.x - dxdelta/2.0) / 3600.0;        adfGeoTransform[1] = dxdelta / 3600.0;        adfGeoTransform[2] = 0.0;        adfGeoTransform[3] = (extent_max.y + dydelta/2.0) / 3600.0;        adfGeoTransform[4] = 0.0;        adfGeoTransform[5] = (-dydelta) / 3600.0;    }    if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))    {        return FALSE;    }    return TRUE;}
开发者ID:rouault,项目名称:gdal,代码行数:101,


示例19: osFilename

//.........这里部分代码省略.........                }            }            if (dfX < dfMinX) dfMinX = dfX;            if (dfX > dfMaxX) dfMaxX = dfX;            if (dfY < dfMinY) dfMinY = dfY;            if (dfY > dfMaxY) dfMaxY = dfY;        }        dfLastX = dfX;        dfLastY = dfY;    }    if (adfStepX.size() != 1)    {        CPLError(CE_Failure, CPLE_AppDefined, "Couldn't determine X spacing");        VSIFCloseL(fp);        return NULL;    }    if (adfStepY.size() != 1)    {        CPLError(CE_Failure, CPLE_AppDefined, "Couldn't determine Y spacing");        VSIFCloseL(fp);        return NULL;    }    double dfStepX = adfStepX[0];    double dfStepY = adfStepY[0] * bStepYSign;    int nXSize = 1 + int((dfMaxX - dfMinX) / dfStepX + 0.5);    int nYSize = 1 + int((dfMaxY - dfMinY) / fabs(dfStepY) + 0.5);    //CPLDebug("XYZ", "minx=%f maxx=%f stepx=%f", dfMinX, dfMaxX, dfStepX);    //CPLDebug("XYZ", "miny=%f maxy=%f stepy=%f", dfMinY, dfMaxY, dfStepY);    if (nDataLineNum != nXSize * nYSize)    {        bSameNumberOfValuesPerLine = FALSE;    }        if (poOpenInfo->eAccess == GA_Update)    {        CPLError( CE_Failure, CPLE_NotSupported,                   "The XYZ driver does not support update access to existing"                  " datasets./n" );        VSIFCloseL(fp);        return NULL;    }/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    XYZDataset         *poDS;    poDS = new XYZDataset();    poDS->fp = fp;    poDS->bHasHeaderLine = bHasHeaderLine;    poDS->nCommentLineCount = nCommentLineCount;    poDS->chDecimalSep = chDecimalSep ? chDecimalSep : '.';    poDS->nXIndex = nXIndex;    poDS->nYIndex = nYIndex;    poDS->nZIndex = nZIndex;    poDS->nMinTokens = nMinTokens;    poDS->nRasterXSize = nXSize;    poDS->nRasterYSize = nYSize;    poDS->adfGeoTransform[0] = dfMinX - dfStepX / 2;    poDS->adfGeoTransform[1] = dfStepX;    poDS->adfGeoTransform[3] = (dfStepY < 0) ? dfMaxY - dfStepY / 2 :                                               dfMinY - dfStepY / 2;    poDS->adfGeoTransform[5] = dfStepY;    poDS->bSameNumberOfValuesPerLine = bSameNumberOfValuesPerLine;    poDS->dfMinZ = dfMinZ;    poDS->dfMaxZ = dfMaxZ;    //CPLDebug("XYZ", "bSameNumberOfValuesPerLine = %d", bSameNumberOfValuesPerLine);    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Create band information objects.                                *//* -------------------------------------------------------------------- */    poDS->nBands = 1;    for( i = 0; i < poDS->nBands; i++ )        poDS->SetBand( i+1, new XYZRasterBand( poDS, i+1, eDT ) );/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Support overviews.                                              *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );    return( poDS );}
开发者ID:garnertb,项目名称:gdal,代码行数:101,


示例20: VSIFOpenL

//.........这里部分代码省略.........            bHasMinY = TRUE;            dfMinY = CPLAtofM(papszTokens[1]);        }        else if( EQUAL(papszTokens[0],"Maximum x-axis coordinate") )        {            bHasMaxX = TRUE;            dfMaxX = CPLAtofM(papszTokens[1]);        }        else if( EQUAL(papszTokens[0],"Maximum y-axis coordinate") )        {            bHasMaxY = TRUE;            dfMaxY = CPLAtofM(papszTokens[1]);        }        CSLDestroy( papszTokens );    }    VSIFCloseL( fp );/* -------------------------------------------------------------------- *//*      Did we get the required keywords?  If not we return with        *//*      this never having been considered to be a match. This isn't     *//*      an error!                                                       *//* -------------------------------------------------------------------- */    if( nRows == -1 || nCols == -1 || !bIsInteger || !bIs2Bytes )        return NULL;    if( !bNotProjected || !bIsWGS84 )        return NULL;    if( osDataFilename.size() == 0 )        return NULL;    if (!GDALCheckDatasetDimensions(nCols, nRows))        return NULL;/* -------------------------------------------------------------------- *//*      Open target binary file.                                        *//* -------------------------------------------------------------------- */    const char* pszPath = CPLGetPath(poOpenInfo->pszFilename);    osDataFilename = CPLFormFilename(pszPath, osDataFilename, NULL);    VSILFILE* fpRaw = VSIFOpenL( osDataFilename, "rb" );    if( fpRaw == NULL )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    SNODASDataset     *poDS;    poDS = new SNODASDataset();    poDS->nRasterXSize = nCols;    poDS->nRasterYSize = nRows;    poDS->osDataFilename = osDataFilename;    poDS->bHasNoData = bHasNoData;    poDS->dfNoData = dfNoData;    poDS->bHasMin = bHasMin;    poDS->dfMin = dfMin;    poDS->bHasMax = bHasMax;    poDS->dfMax = dfMax;    if (bHasMinX && bHasMinY && bHasMaxX && bHasMaxY)    {        poDS->bGotTransform = TRUE;
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:67,


示例21: LOSLASDataset

GDALDataset *LOSLASDataset::Open( GDALOpenInfo * poOpenInfo ){    if( !Identify( poOpenInfo ) )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    LOSLASDataset *poDS = new LOSLASDataset();/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    poDS->fpImage = VSIFOpenL( poOpenInfo->pszFilename, "rb" );    if( poDS->fpImage == NULL )    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    CPL_IGNORE_RET_VAL(VSIFSeekL( poDS->fpImage, 64, SEEK_SET ));    CPL_IGNORE_RET_VAL(VSIFReadL( &(poDS->nRasterXSize), 4, 1, poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &(poDS->nRasterYSize), 4, 1, poDS->fpImage ));    CPL_LSBPTR32( &(poDS->nRasterXSize) );    CPL_LSBPTR32( &(poDS->nRasterYSize) );    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        delete poDS;        return NULL;    }    CPL_IGNORE_RET_VAL(VSIFSeekL( poDS->fpImage, 76, SEEK_SET ));    float min_lon, min_lat, delta_lon, delta_lat;    CPL_IGNORE_RET_VAL(VSIFReadL( &min_lon, 4, 1, poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &delta_lon, 4, 1, poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &min_lat, 4, 1, poDS->fpImage ));    CPL_IGNORE_RET_VAL(VSIFReadL( &delta_lat, 4, 1, poDS->fpImage ));    CPL_LSBPTR32( &min_lon );    CPL_LSBPTR32( &delta_lon );    CPL_LSBPTR32( &min_lat );    CPL_LSBPTR32( &delta_lat );    poDS->nRecordLength = poDS->nRasterXSize * 4 + 4;/* -------------------------------------------------------------------- *//*      Create band information object.                                 *//*                                                                      *//*      Note we are setting up to read from the last image record to    *//*      the first since the data comes with the southern most record    *//*      first, not the northernmost like we would want.                 *//* -------------------------------------------------------------------- */    poDS->SetBand(        1, new RawRasterBand( poDS, 1, poDS->fpImage,                              poDS->nRasterYSize * poDS->nRecordLength + 4,                              4, -1 * poDS->nRecordLength,                              GDT_Float32,                              CPL_IS_LSB, TRUE, FALSE ) );/* -------------------------------------------------------------------- *//*      Setup georeferencing.                                           *//* -------------------------------------------------------------------- */    poDS->adfGeoTransform[0] = min_lon - delta_lon*0.5;    poDS->adfGeoTransform[1] = delta_lon;    poDS->adfGeoTransform[2] = 0.0;    poDS->adfGeoTransform[3] = min_lat + (poDS->nRasterYSize-0.5) * delta_lat;    poDS->adfGeoTransform[4] = 0.0;    poDS->adfGeoTransform[5] = -1 * delta_lat;/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for overviews.                                            *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );    return( poDS );}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:92,


示例22: CaptureMetadataItem

int NTv2Dataset::OpenGrid( char *pachHeader, vsi_l_offset nGridOffset ){    this->nGridOffset = nGridOffset;/* -------------------------------------------------------------------- *//*      Read the grid header.                                           *//* -------------------------------------------------------------------- */    double s_lat, n_lat, e_long, w_long, lat_inc, long_inc;    CaptureMetadataItem( pachHeader + 0*16 );    CaptureMetadataItem( pachHeader + 1*16 );    CaptureMetadataItem( pachHeader + 2*16 );    CaptureMetadataItem( pachHeader + 3*16 );    memcpy( &s_lat,  pachHeader + 4*16 + 8, 8 );    memcpy( &n_lat,  pachHeader + 5*16 + 8, 8 );    memcpy( &e_long, pachHeader + 6*16 + 8, 8 );    memcpy( &w_long, pachHeader + 7*16 + 8, 8 );    memcpy( &lat_inc, pachHeader + 8*16 + 8, 8 );    memcpy( &long_inc, pachHeader + 9*16 + 8, 8 );    e_long *= -1;    w_long *= -1;    nRasterXSize = (int) floor((e_long - w_long) / long_inc + 1.5);    nRasterYSize = (int) floor((n_lat - s_lat) / lat_inc + 1.5);    if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))        return FALSE;/* -------------------------------------------------------------------- *//*      Create band information object.                                 *//*                                                                      *//*      We use unusual offsets to remap from bottom to top, to top      *//*      to bottom orientation, and also to remap east to west, to       *//*      west to east.                                                   *//* -------------------------------------------------------------------- */    int iBand;        for( iBand = 0; iBand < 4; iBand++ )    {        RawRasterBand *poBand =             new RawRasterBand( this, iBand+1, fpImage,                                nGridOffset + 4*iBand + 11*16                               + (nRasterXSize-1) * 16                               + (nRasterYSize-1) * 16 * nRasterXSize,                               -16, -16 * nRasterXSize,                               GDT_Float32, CPL_IS_LSB, TRUE, FALSE );        SetBand( iBand+1, poBand );    }        GetRasterBand(1)->SetDescription( "Latitude Offset (arc seconds)" );    GetRasterBand(2)->SetDescription( "Longitude Offset (arc seconds)" );    GetRasterBand(3)->SetDescription( "Latitude Error" );    GetRasterBand(4)->SetDescription( "Longitude Error" );    /* -------------------------------------------------------------------- *//*      Setup georeferencing.                                           *//* -------------------------------------------------------------------- */    adfGeoTransform[0] = (w_long - long_inc*0.5) / 3600.0;    adfGeoTransform[1] = long_inc / 3600.0;    adfGeoTransform[2] = 0.0;    adfGeoTransform[3] = (n_lat + lat_inc*0.5) / 3600.0;    adfGeoTransform[4] = 0.0;    adfGeoTransform[5] = (-1 * lat_inc) / 3600.0;    return TRUE;}
开发者ID:garnertb,项目名称:gdal,代码行数:69,


示例23: STARTS_WITH_CI

//.........这里部分代码省略........./* -------------------------------------------------------------------- *//*      Find the RawDefinition line to establish overall parameters.    *//* -------------------------------------------------------------------- */    pszLine = CSLFetchNameValue(poDS->papszAuxLines, "RawDefinition");    // It seems PCI now writes out .aux files without RawDefinition in    // some cases.  See bug 947.    if( pszLine == NULL )    {        delete poDS;        return NULL;    }    char **papszTokens = CSLTokenizeString(pszLine);    if( CSLCount(papszTokens) < 3 )    {        CPLError( CE_Failure, CPLE_AppDefined,                  "RawDefinition missing or corrupt in %s.",                  poOpenInfo->pszFilename );        delete poDS;        CSLDestroy( papszTokens );        return NULL;    }    poDS->nRasterXSize = atoi(papszTokens[0]);    poDS->nRasterYSize = atoi(papszTokens[1]);    poDS->nBands = atoi(papszTokens[2]);    poDS->eAccess = poOpenInfo->eAccess;    CSLDestroy( papszTokens );    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) ||        !GDALCheckBandCount(poDS->nBands, FALSE))    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    if( poOpenInfo->eAccess == GA_Update )    {        poDS->fpImage = VSIFOpenL( osTarget, "rb+" );        if( poDS->fpImage == NULL )        {            CPLError( CE_Failure, CPLE_OpenFailed,                      "File %s is missing or read-only, check permissions.",                      osTarget.c_str() );            delete poDS;            return NULL;        }    }    else    {        poDS->fpImage = VSIFOpenL( osTarget, "rb" );        if( poDS->fpImage == NULL )        {            CPLError( CE_Failure, CPLE_OpenFailed,                      "File %s is missing or unreadable.",                      osTarget.c_str() );            delete poDS;
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:67,


示例24: VSIFOpenL

GDALDataset *E00GRIDDataset::Open( GDALOpenInfo * poOpenInfo ){    if (!Identify(poOpenInfo))        return NULL;/* -------------------------------------------------------------------- *//*      Find dataset characteristics                                    *//* -------------------------------------------------------------------- */    VSILFILE* fp = VSIFOpenL(poOpenInfo->pszFilename, "rb");    if (fp == NULL)        return NULL;    if (poOpenInfo->eAccess == GA_Update)    {        CPLError( CE_Failure, CPLE_NotSupported,                  "The E00GRID driver does not support update access to existing"                  " datasets./n" );        VSIFCloseL(fp);        return NULL;    }/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    E00GRIDDataset *poDS = new E00GRIDDataset();    if (strstr((const char*)poOpenInfo->pabyHeader, "/r/n") != NULL)        poDS->nBytesEOL = 2;    poDS->fp = fp;    /* read EXP  0 or EXP  1 line */    const char* pszLine = CPLReadLine2L(fp, 81, NULL);    if (pszLine == NULL)    {        CPLDebug("E00GRID", "Bad 1st line");        delete poDS;        return NULL;    }    bool bCompressed = STARTS_WITH_CI(pszLine, "EXP  1");    E00ReadPtr e00ReadPtr = NULL;    if (bCompressed)    {        VSIRewindL(fp);        e00ReadPtr = E00ReadCallbackOpen(poDS,                                         E00GRIDDataset::ReadNextLine,                                         E00GRIDDataset::Rewind);        if (e00ReadPtr == NULL)        {            delete poDS;            return NULL;        }        E00ReadNextLine(e00ReadPtr);        poDS->e00ReadPtr = e00ReadPtr;    }    /* skip GRD  2 line */    if (e00ReadPtr)        pszLine = E00ReadNextLine(e00ReadPtr);    else        pszLine = CPLReadLine2L(fp, 81, NULL);    if (pszLine == NULL || !STARTS_WITH_CI(pszLine, "GRD  2"))    {        CPLDebug("E00GRID", "Bad 2nd line");        delete poDS;        return NULL;    }    /* read ncols, nrows and nodata value */    if (e00ReadPtr)        pszLine = E00ReadNextLine(e00ReadPtr);    else        pszLine = CPLReadLine2L(fp, 81, NULL);    if (pszLine == NULL || strlen(pszLine) <                E00_INT_SIZE+E00_INT_SIZE+2+E00_DOUBLE_SIZE)    {        CPLDebug("E00GRID", "Bad 3rd line");        delete poDS;        return NULL;    }    const int nRasterXSize = atoi(pszLine);    const int nRasterYSize = atoi(pszLine + E00_INT_SIZE);    if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))    {        delete poDS;        return NULL;    }    GDALDataType eDT = GDT_Float32;    if (STARTS_WITH_CI(pszLine + E00_INT_SIZE + E00_INT_SIZE, " 1"))        eDT = GDT_Int32;    else if (STARTS_WITH_CI(pszLine + E00_INT_SIZE + E00_INT_SIZE, " 2"))        eDT = GDT_Float32;    else    {        CPLDebug("E00GRID", "Unknown data type : %s", pszLine);    }//.........这里部分代码省略.........
开发者ID:ryandavid,项目名称:rotobox,代码行数:101,


示例25: CTable2Dataset

GDALDataset *CTable2Dataset::Open( GDALOpenInfo * poOpenInfo ){    if( !Identify( poOpenInfo ) )        return NULL;/* -------------------------------------------------------------------- *//*      Create a corresponding GDALDataset.                             *//* -------------------------------------------------------------------- */    CTable2Dataset *poDS = new CTable2Dataset();    poDS->eAccess = poOpenInfo->eAccess;/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    CPLString osFilename = poOpenInfo->pszFilename;    if( poOpenInfo->eAccess == GA_ReadOnly )        poDS->fpImage = VSIFOpenL( osFilename, "rb" );    else        poDS->fpImage = VSIFOpenL( osFilename, "rb+" );    if( poDS->fpImage == NULL )    {        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Read the file header.                                           *//* -------------------------------------------------------------------- */    CPL_IGNORE_RET_VAL(VSIFSeekL( poDS->fpImage, 0, SEEK_SET ));    char achHeader[160] = { '/0' };    CPL_IGNORE_RET_VAL(VSIFReadL( achHeader, 1, 160, poDS->fpImage ));    achHeader[16+79] = '/0';    CPLString osDescription = reinterpret_cast<const char *>( achHeader + 16 );    osDescription.Trim();    poDS->SetMetadataItem( "DESCRIPTION", osDescription );/* -------------------------------------------------------------------- *//*      Convert from LSB to local machine byte order.                   *//* -------------------------------------------------------------------- */    CPL_LSBPTR64( achHeader + 96 );    CPL_LSBPTR64( achHeader + 104 );    CPL_LSBPTR64( achHeader + 112 );    CPL_LSBPTR64( achHeader + 120 );    CPL_LSBPTR32( achHeader + 128 );    CPL_LSBPTR32( achHeader + 132 );/* -------------------------------------------------------------------- *//*      Extract size, and geotransform.                                 *//* -------------------------------------------------------------------- */    int nRasterXSize, nRasterYSize;    memcpy( &nRasterXSize, achHeader + 128, 4 );    memcpy( &nRasterYSize, achHeader + 132, 4 );    if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))    {        delete poDS;        return NULL;    }    poDS->nRasterXSize = nRasterXSize;    poDS->nRasterYSize = nRasterYSize;    double adfValues[4];    memcpy( adfValues, achHeader + 96, sizeof(double)*4 );    for( int i = 0; i < 4; i++ )        adfValues[i] *= 180/M_PI; // Radians to degrees.    poDS->adfGeoTransform[0] = adfValues[0] - adfValues[2]*0.5;    poDS->adfGeoTransform[1] = adfValues[2];    poDS->adfGeoTransform[2] = 0.0;    poDS->adfGeoTransform[3] = adfValues[1] + adfValues[3]*(nRasterYSize-0.5);    poDS->adfGeoTransform[4] = 0.0;    poDS->adfGeoTransform[5] = -adfValues[3];/* -------------------------------------------------------------------- *//*      Setup the bands.                                                *//* -------------------------------------------------------------------- */    RawRasterBand *poBand =        new RawRasterBand( poDS, 1, poDS->fpImage,                           160 + 4 + nRasterXSize * (nRasterYSize-1) * 2 * 4,                           8, -8 * nRasterXSize,                           GDT_Float32, CPL_IS_LSB, TRUE, FALSE );    poBand->SetDescription( "Latitude Offset (radians)" );    poDS->SetBand( 1, poBand );    poBand =        new RawRasterBand( poDS, 2, poDS->fpImage,                           160 + nRasterXSize * (nRasterYSize-1) * 2 * 4,                           8, -8 * nRasterXSize,                           GDT_Float32, CPL_IS_LSB, TRUE, FALSE );    poBand->SetDescription( "Longitude Offset (radians)" );    poDS->SetBand( 2, poBand );/* -------------------------------------------------------------------- *///.........这里部分代码省略.........
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:101,


示例26: CPLError

//.........这里部分代码省略.........                poDS->nRasterXSize = poDS->ReadInteger();                poDS->nRasterYSize = poDS->ReadInteger();                nBandCount = 1;            }            else if( nCount == 3 )            {                poDS->nRasterXSize = poDS->ReadInteger();                poDS->nRasterYSize = poDS->ReadInteger();                nBandCount = poDS->ReadInteger();            }            else            {                CPLError( CE_Failure, CPLE_AppDefined,                          "R 'dim' dimension wrong." );                delete poDS;                return NULL;            }        }        else if( nObjCode % 256 == R_REALSXP )        {            int nCount = poDS->ReadInteger();            while( nCount-- > 0 && !VSIFEofL(poDS->fp) )                poDS->ReadFloat();        }        else if( nObjCode % 256 == R_INTSXP )        {            int nCount = poDS->ReadInteger();            while( nCount-- > 0 && !VSIFEofL(poDS->fp) )                poDS->ReadInteger();        }        else if( nObjCode % 256 == R_STRSXP )			        {            int nCount = poDS->ReadInteger();            while( nCount-- > 0 && !VSIFEofL(poDS->fp) )                poDS->ReadString();        }        else if( nObjCode % 256 == R_CHARSXP )			        {            poDS->ReadString();        }    }    if( poDS->nRasterXSize == 0 )    {        delete poDS;        CPLError( CE_Failure, CPLE_AppDefined,                  "Failed to find dim dimension information for R dataset." );        return NULL;    }    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize) ||        !GDALCheckBandCount(nBandCount, TRUE))    {        delete poDS;        return NULL;    }    if( nValueCount         < ((GIntBig) nBandCount) * poDS->nRasterXSize * poDS->nRasterYSize )    {        CPLError( CE_Failure, CPLE_AppDefined,                  "Not enough pixel data." );        delete poDS;        return NULL;    }/* -------------------------------------------------------------------- *//*      Create the raster band object(s).                               *//* -------------------------------------------------------------------- */    for( int iBand = 0; iBand < nBandCount; iBand++ )    {        GDALRasterBand *poBand;        if( poDS->bASCII )            poBand = new RRasterBand( poDS, iBand+1,                                       poDS->padfMatrixValues + iBand * poDS->nRasterXSize * poDS->nRasterYSize );        else            poBand = new RawRasterBand( poDS, iBand+1, poDS->fp,                                        poDS->nStartOfData                                         + poDS->nRasterXSize*poDS->nRasterYSize*8*iBand,                                         8, poDS->nRasterXSize * 8,                                        GDT_Float64, !CPL_IS_LSB,                                        TRUE, FALSE );                                              poDS->SetBand( iBand+1, poBand );    }/* -------------------------------------------------------------------- *//*      Initialize any PAM information.                                 *//* -------------------------------------------------------------------- */    poDS->SetDescription( poOpenInfo->pszFilename );    poDS->TryLoadXML();/* -------------------------------------------------------------------- *//*      Check for overviews.                                            *//* -------------------------------------------------------------------- */    poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );    return( poDS );}
开发者ID:469447793,项目名称:World-Wind-Java,代码行数:101,


示例27: FASTDataset

//.........这里部分代码省略.........    }    // Read number of pixels/lines and bit depth    pszTemp = GetValue( pszHeader, PIXELS, PIXELS_SIZE, FALSE );    if ( pszTemp )    {        poDS->nRasterXSize = atoi( pszTemp );        CPLFree( pszTemp );    }    else    {        CPLDebug( "FAST", "Failed to find number of pixels in line." );        CPLFree(pszHeader);        delete poDS;        return NULL;    }    pszTemp = GetValue( pszHeader, LINES1, LINES_SIZE, FALSE );    if ( !pszTemp )        pszTemp = GetValue( pszHeader, LINES2, LINES_SIZE, FALSE );    if ( pszTemp )    {        poDS->nRasterYSize = atoi( pszTemp );        CPLFree( pszTemp );    }    else    {        CPLDebug( "FAST", "Failed to find number of lines in raster." );        CPLFree(pszHeader);        delete poDS;        return NULL;    }    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        CPLFree(pszHeader);        delete poDS;        return NULL;    }    pszTemp = GetValue( pszHeader, BITS_PER_PIXEL, BITS_PER_PIXEL_SIZE, FALSE );    if ( pszTemp )    {        switch( atoi(pszTemp) )        {            case 8:            default:                poDS->eDataType = GDT_Byte;                break;            // For a strange reason, some Euromap products declare 10 bits            // output, but are 16 bits.            case 10:            case 16:                poDS->eDataType = GDT_UInt16;                break;        }        CPLFree( pszTemp );    }    else    {        poDS->eDataType = GDT_Byte;    }/* -------------------------------------------------------------------- *//*  Read radiometric record.                                            *//* -------------------------------------------------------------------- */
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:67,


示例28: GS7BGDataset

//.........这里部分代码省略.........                    "Unable to seek to end of file section./n" );                return NULL;            }        }    }    /* --------------------------------------------------------------------*/    /*      Read the grid.                                                 */    /* --------------------------------------------------------------------*/    /* Parse number of Y axis grid rows */    GInt32 nRows;    if( VSIFReadL( (void *)&nRows, sizeof(GInt32), 1, poDS->fp ) != 1 )    {        delete poDS;        CPLError( CE_Failure, CPLE_FileIO,            "Unable to read raster Y size./n" );        return NULL;    }    CPL_LSBPTR32( &nRows );    poDS->nRasterYSize = nRows;    /* Parse number of X axis grid columns */    GInt32 nCols;    if( VSIFReadL( (void *)&nCols, sizeof(GInt32), 1, poDS->fp ) != 1 )    {        delete poDS;        CPLError( CE_Failure, CPLE_FileIO,            "Unable to read raster X size./n" );        return NULL;    }    CPL_LSBPTR32( &nCols );    poDS->nRasterXSize = nCols;    if (!GDALCheckDatasetDimensions(poDS->nRasterXSize, poDS->nRasterYSize))    {        delete poDS;        return NULL;    }    /* --------------------------------------------------------------------*/    /*      Create band information objects.                               */    /* --------------------------------------------------------------------*/    GS7BGRasterBand *poBand = new GS7BGRasterBand( poDS, 1 );    poDS->SetBand( 1, poBand );    // find the min X Value of the grid    double dfTemp;    if( VSIFReadL( (void *)&dfTemp, sizeof(double), 1, poDS->fp ) != 1 )    {        delete poDS;        CPLError( CE_Failure, CPLE_FileIO,            "Unable to read minimum X value./n" );        return NULL;    }    CPL_LSBPTR64( &dfTemp );    poBand->dfMinX = dfTemp;    // find the min Y value of the grid    if( VSIFReadL( (void *)&dfTemp, sizeof(double), 1, poDS->fp ) != 1 )    {        delete poDS;        CPLError( CE_Failure, CPLE_FileIO,            "Unable to read minimum X value./n" );        return NULL;    }    CPL_LSBPTR64( &dfTemp );
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:67,



注:本文中的GDALCheckDatasetDimensions函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GDALClose函数代码示例
C++ GClip_LinkEntity函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。