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

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

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

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

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

示例1: ParseXY

static int ParseXY( const char **ppszNext, double *padfXY ){    int iStartY;    const char *pszNext = *ppszNext;    for( iStartY = 0; ; iStartY++ )    {        if( pszNext[iStartY] == '/0' )            return FALSE;        if( pszNext[iStartY] == ',' )        {            iStartY++;            break;        }    }    padfXY[0] = CPLAtof(pszNext);    padfXY[1] = CPLAtof(pszNext + iStartY);    int iEnd;    for( iEnd = iStartY;         pszNext[iEnd] != ')';         iEnd++ )    {        if( pszNext[iEnd] == '/0' )            return FALSE;    }        *ppszNext += iEnd;    return TRUE;}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:35,


示例2: GetLatLon

static int GetLatLon(const char* pszLat,                     char        chLatHemisphere,                     const char* pszLon,                     char        chLonHemisphere,                     int         nSecLen,                     double& dfLat, double& dfLon){    char szDeg[4] = { pszLat[0], pszLat[1], 0 };    char szMin[3] = { pszLat[3], pszLat[4], 0 };    char szSec[10];    memcpy(szSec, pszLat + 6, std::max((int)sizeof(szSec) - 1, nSecLen));    szSec[std::max((int)sizeof(szSec) - 1, nSecLen)] = 0;    dfLat = atoi(szDeg) + atoi(szMin) / 60. + CPLAtof(szSec) / 3600.;    if (chLatHemisphere == 'S')        dfLat = -dfLat;    szDeg[0] = pszLon[0];    szDeg[1] = pszLon[1];    szDeg[2] = pszLon[2];    szDeg[3] = 0;    szMin[0] = pszLon[4];    szMin[1] = pszLon[5];    szMin[2] = 0;    memcpy(szSec, pszLon + 7, std::max((int)sizeof(szSec) - 1, nSecLen));    szSec[std::max((int)sizeof(szSec) - 1, nSecLen)] = 0;    dfLon = atoi(szDeg) + atoi(szMin) / 60. + CPLAtof(szSec) / 3600.;    if (chLonHemisphere == ' ' || chLonHemisphere == 'W')        dfLon = -dfLon;    return TRUE;}
开发者ID:koordinates,项目名称:gdal,代码行数:33,


示例3: CPLURLAddKVP

OGRErr OGRESRIFeatureServiceLayer::GetExtent(OGREnvelope *psExtent, int bForce){    OGRErr eErr = OGRERR_FAILURE;    CPLString osNewURL = CPLURLAddKVP(poDS->GetURL(), "returnExtentOnly", "true");    osNewURL = CPLURLAddKVP(osNewURL, "f", "geojson");    CPLErrorReset();    CPLHTTPResult* pResult = CPLHTTPFetch( osNewURL, NULL );    if( pResult != NULL && pResult->nDataLen != 0 && CPLGetLastErrorNo() == 0 &&        pResult->nStatus == 0 )    {        const char* pszBBox = strstr((const char*)pResult->pabyData, "/"bbox/"");        if( pszBBox )        {            pszBBox = strstr(pszBBox, ":[");            if( pszBBox )            {                pszBBox+=2;                char** papszTokens = CSLTokenizeString2(pszBBox, ",", 0);                if( CSLCount(papszTokens) >= 4 )                {                    psExtent->MinX = CPLAtof(papszTokens[0]);                    psExtent->MinY = CPLAtof(papszTokens[1]);                    psExtent->MaxX = CPLAtof(papszTokens[2]);                    psExtent->MaxY = CPLAtof(papszTokens[3]);                    eErr = OGRERR_NONE;                }                CSLDestroy(papszTokens);            }        }    }    CPLHTTPDestroyResult( pResult );    if( eErr == OGRERR_FAILURE )        eErr = OGRLayer::GetExtent(psExtent, bForce);    return eErr;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:35,


示例4: CSLFetchNameValue

void OGROCIWritableLayer::ParseDIMINFO( const char *pszOptionName,                                         double *pdfMin,                                         double *pdfMax,                                        double *pdfRes ){    const char *pszUserDIMINFO;    char **papszTokens;    pszUserDIMINFO = CSLFetchNameValue( papszOptions, pszOptionName );    if( pszUserDIMINFO == NULL )        return;    papszTokens =         CSLTokenizeStringComplex( pszUserDIMINFO, ",", FALSE, FALSE );    if( CSLCount(papszTokens) != 3 )    {        CSLDestroy( papszTokens );        CPLError( CE_Warning, CPLE_AppDefined,                   "Ignoring %s, it does not contain three comma separated values.",                   pszOptionName );        return;    }    *pdfMin = CPLAtof(papszTokens[0]);    *pdfMax = CPLAtof(papszTokens[1]);    *pdfRes = CPLAtof(papszTokens[2]);    CSLDestroy( papszTokens );}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:30,


示例5: oSRS

CPLErr TerragenDataset::SetProjection( const char * pszNewProjection ){    // Terragen files aren't really georeferenced, but    // we should get the projection's linear units so    // that we can scale elevations correctly.    //m_dSCAL = 30.0; // default    OGRSpatialReference oSRS( pszNewProjection );/* -------------------------------------------------------------------- *//*      Linear units.                                                   *//* -------------------------------------------------------------------- */    m_bIsGeo = oSRS.IsGeographic() != FALSE;    if(m_bIsGeo)    {        // The caller is using degrees. We need to convert        // to meters, otherwise we can't derive a SCAL        // value to scale elevations with.        m_bIsGeo = true;    }    else    {        const double dfLinear = oSRS.GetLinearUnits();        if( approx_equal(dfLinear, 0.3048))            m_dMetersPerGroundUnit = 0.3048;        else if( approx_equal(dfLinear, CPLAtof(SRS_UL_US_FOOT_CONV)) )            m_dMetersPerGroundUnit = CPLAtof(SRS_UL_US_FOOT_CONV);        else            m_dMetersPerGroundUnit = 1.0;    }    return CE_None;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:35,


示例6: MITABExtractCoordSysBounds

GBool MITABExtractCoordSysBounds( const char * pszCoordSys,                                  double &dXMin, double &dYMin,                                  double &dXMax, double &dYMax ){    char        **papszFields;    if( pszCoordSys == NULL )        return FALSE;        papszFields = CSLTokenizeStringComplex( pszCoordSys, " ,()", TRUE, FALSE );    int iBounds = CSLFindString( papszFields, "Bounds" );    if (iBounds >= 0 && iBounds + 4 < CSLCount(papszFields))    {        dXMin = CPLAtof(papszFields[++iBounds]);        dYMin = CPLAtof(papszFields[++iBounds]);        dXMax = CPLAtof(papszFields[++iBounds]);        dYMax = CPLAtof(papszFields[++iBounds]);        CSLDestroy( papszFields );        return TRUE;    }    CSLDestroy( papszFields );    return FALSE;}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:27,


示例7: ParseXY

static bool ParseXY( const char **ppszNext, double *padfXY ){    const char *pszNext = *ppszNext;    int iStartY = 0;  // Used after for.    for( ; ; iStartY++ )    {        if( pszNext[iStartY] == '/0' )            return false;        if( pszNext[iStartY] == ',' )        {            iStartY++;            break;        }    }    padfXY[0] = CPLAtof(pszNext);    padfXY[1] = CPLAtof(pszNext + iStartY);    int iEnd = iStartY;  // Used after for.    for( ; pszNext[iEnd] != ')'; iEnd++ )    {        if( pszNext[iEnd] == '/0' )            return false;    }    *ppszNext += iEnd;    return true;}
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:32,


示例8: ParseCoordinate

staticCoordinate* ParseCoordinate(std::string const& text){    int pos = 0;    const char* pszStr = text.c_str();    Coordinate *psTmp = new Coordinate();    // X coordinate    psTmp->dfLongitude = CPLAtof(pszStr);    while(isNumberDigit(pszStr[pos++]));    // Y coordinate    if(pszStr[pos - 1] != ',')    {        delete psTmp;        return NULL;    }    psTmp->dfLatitude = CPLAtof(pszStr + pos);    while(isNumberDigit(pszStr[pos++]));    // Z coordinate    if(pszStr[pos - 1] != ',')    {        psTmp->bHasZ = FALSE;        psTmp->dfAltitude = 0;        return psTmp;    }    psTmp->bHasZ = TRUE;    psTmp->dfAltitude = CPLAtof(pszStr + pos);    return psTmp;}
开发者ID:garnertb,项目名称:gdal,代码行数:34,


示例9: CSLFetchNameValue

CPLErr PAuxDataset::GetGeoTransform( double * padfGeoTransform ){    if( CSLFetchNameValue(papszAuxLines, "UpLeftX") != NULL        && CSLFetchNameValue(papszAuxLines, "UpLeftY") != NULL        && CSLFetchNameValue(papszAuxLines, "LoRightX") != NULL        && CSLFetchNameValue(papszAuxLines, "LoRightY") != NULL )    {        const double dfUpLeftX = CPLAtof(CSLFetchNameValue(papszAuxLines, "UpLeftX" ));        const double dfUpLeftY = CPLAtof(CSLFetchNameValue(papszAuxLines, "UpLeftY" ));        const double dfLoRightX = CPLAtof(CSLFetchNameValue(papszAuxLines, "LoRightX" ));        const double dfLoRightY = CPLAtof(CSLFetchNameValue(papszAuxLines, "LoRightY" ));        padfGeoTransform[0] = dfUpLeftX;        padfGeoTransform[1] = (dfLoRightX - dfUpLeftX) / GetRasterXSize();        padfGeoTransform[2] = 0.0;        padfGeoTransform[3] = dfUpLeftY;        padfGeoTransform[4] = 0.0;        padfGeoTransform[5] = (dfLoRightY - dfUpLeftY) / GetRasterYSize();        return CE_None;    }    else    {        padfGeoTransform[0] = 0.0;        padfGeoTransform[1] = 1.0;        padfGeoTransform[2] = 0.0;        padfGeoTransform[3] = 0.0;        padfGeoTransform[4] = 0.0;        padfGeoTransform[5] = 1.0;        return CE_Failure;    }}
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:34,


示例10: PamParseHistogram

intPamParseHistogram( CPLXMLNode *psHistItem,                   double *pdfMin, double *pdfMax,                   int *pnBuckets, GUIntBig **ppanHistogram,                   CPL_UNUSED int *pbIncludeOutOfRange,                   CPL_UNUSED int *pbApproxOK ){    if( psHistItem == NULL )        return FALSE;    *pdfMin = CPLAtof(CPLGetXMLValue( psHistItem, "HistMin", "0"));    *pdfMax = CPLAtof(CPLGetXMLValue( psHistItem, "HistMax", "1"));    *pnBuckets = atoi(CPLGetXMLValue( psHistItem, "BucketCount","2"));    if (*pnBuckets <= 0 || *pnBuckets > INT_MAX / 2)        return FALSE;    if( ppanHistogram == NULL )        return TRUE;    // Fetch the histogram and use it.    int iBucket;    const char *pszHistCounts = CPLGetXMLValue( psHistItem,                                                "HistCounts", "" );    /* Sanity check to test consistency of BucketCount and HistCounts */    if( strlen(pszHistCounts) < 2 * (size_t)(*pnBuckets) -1 )    {        CPLError(CE_Failure, CPLE_AppDefined,                 "HistCounts content isn't consistent with BucketCount value");        return FALSE;    }    *ppanHistogram = (GUIntBig *) VSICalloc(sizeof(GUIntBig),*pnBuckets);    if (*ppanHistogram == NULL)    {        CPLError(CE_Failure, CPLE_OutOfMemory,                 "Cannot allocate memory for %d buckets", *pnBuckets);        return FALSE;    }    for( iBucket = 0; iBucket < *pnBuckets; iBucket++ )    {        (*ppanHistogram)[iBucket] = CPLAtoGIntBig(pszHistCounts);        // skip to next number.        while( *pszHistCounts != '/0' && *pszHistCounts != '|' )            pszHistCounts++;        if( *pszHistCounts == '|' )            pszHistCounts++;    }    return TRUE;}
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:54,


示例11: GetMetadataItem

CPLErr HDF5ImageDataset::CreateODIMH5Projection(){    const char* const pszProj4String = GetMetadataItem("where_projdef");    const char* const pszLL_lon = GetMetadataItem("where_LL_lon");    const char* const pszLL_lat = GetMetadataItem("where_LL_lat");    const char* const pszUR_lon = GetMetadataItem("where_UR_lon");    const char* const pszUR_lat = GetMetadataItem("where_UR_lat");    if( pszProj4String == NULL ||        pszLL_lon == NULL || pszLL_lat == NULL ||        pszUR_lon == NULL || pszUR_lat == NULL )        return CE_Failure;    if( oSRS.importFromProj4( pszProj4String ) != OGRERR_NONE )        return CE_Failure;    OGRSpatialReference oSRSWGS84;    oSRSWGS84.SetWellKnownGeogCS( "WGS84" );    OGRCoordinateTransformation* poCT =        OGRCreateCoordinateTransformation( &oSRSWGS84, &oSRS );    if( poCT == NULL )        return CE_Failure;    /* Reproject corners from long,lat WGS84 to the target SRS */    double dfLLX = CPLAtof(pszLL_lon);    double dfLLY = CPLAtof(pszLL_lat);    double dfURX = CPLAtof(pszUR_lon);    double dfURY = CPLAtof(pszUR_lat);    if( !poCT->Transform(1, &dfLLX, &dfLLY) ||        !poCT->Transform(1, &dfURX, &dfURY) )    {        delete poCT;        return CE_Failure;    }    delete poCT;    /* Compute the geotransform now */    const double dfPixelX = (dfURX - dfLLX) / nRasterXSize;    const double dfPixelY = (dfURY - dfLLY) / nRasterYSize;    bHasGeoTransform = true;    adfGeoTransform[0] = dfLLX;    adfGeoTransform[1] = dfPixelX;    adfGeoTransform[2] = 0;    adfGeoTransform[3] = dfURY;    adfGeoTransform[4] = 0;    adfGeoTransform[5] = -dfPixelY;    CPLFree( pszProjection );    oSRS.exportToWkt( &pszProjection );    return CE_None;}
开发者ID:nextgis-borsch,项目名称:lib_gdal,代码行数:53,


示例12: while

int GDALRasterBlock::FlushCacheBlock( int bDirtyBlocksOnly ){    GDALRasterBlock *poTarget;    {        INITIALIZE_LOCK;        poTarget = poOldest;        while( poTarget != NULL )        {            if( !bDirtyBlocksOnly || poTarget->GetDirty() )            {                if( CPLAtomicCompareAndExchange(                        &(poTarget->nLockCount), 0, -1) )                    break;            }            poTarget = poTarget->poPrevious;        }        if( poTarget == NULL )            return FALSE;        if( bSleepsForBockCacheDebug )            CPLSleep(CPLAtof(                CPLGetConfigOption(                    "GDAL_RB_FLUSHBLOCK_SLEEP_AFTER_DROP_LOCK", "0")));        poTarget->Detach_unlocked();        poTarget->GetBand()->UnreferenceBlock(poTarget);    }    if( bSleepsForBockCacheDebug )        CPLSleep(CPLAtof(            CPLGetConfigOption("GDAL_RB_FLUSHBLOCK_SLEEP_AFTER_RB_LOCK", "0")));    if( poTarget->GetDirty() )    {        const CPLErr eErr = poTarget->Write();        if( eErr != CE_None )        {            // Save the error for later reporting.            poTarget->GetBand()->SetFlushBlockErr(eErr);        }    }    VSIFree(poTarget->pData);    poTarget->pData = NULL;    poTarget->GetBand()->AddBlockToFreeList(poTarget);    return TRUE;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:51,


示例13: swq_compare_real

static int FORCE_CDECL swq_compare_real( const void *item1, const void *item2 ){    double  v1, v2;    v1 = CPLAtof(*((const char **) item1));    v2 = CPLAtof(*((const char **) item2));    if( v1 < v2 )        return -1;    else if( v1 == v2 )        return 0;    else        return 1;}
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:14,


示例14: CSLTokenizeString

std::vector<double>OGRDXFWriterLayer::PrepareLineTypeDefinition( OGRStylePen *poPen ){/* -------------------------------------------------------------------- *//*      Fetch pattern.                                                  *//* -------------------------------------------------------------------- */    GBool bDefault;    const char *pszPattern = poPen->Pattern( bDefault );    if( bDefault || strlen(pszPattern) == 0 )        return std::vector<double>();/* -------------------------------------------------------------------- *//*      Split into pen up / pen down bits.                              *//* -------------------------------------------------------------------- */    char **papszTokens = CSLTokenizeString(pszPattern);    std::vector<double> adfWeightTokens;    for( int i = 0; papszTokens != nullptr && papszTokens[i] != nullptr; i++ )    {        const char *pszToken = papszTokens[i];        CPLString osAmount;        CPLString osDXFEntry;        // Split amount and unit.        const char *pszUnit = pszToken;  // Used after for.        for( ;             strchr( "0123456789.", *pszUnit) != nullptr;             pszUnit++ ) {}        osAmount.assign(pszToken,(int) (pszUnit-pszToken));        // If the unit is other than 'g' we really should be trying to        // do some type of transformation - but what to do?  Pretty hard.        // Even entries are "pen down" represented as positive in DXF.        // "Pen up" entries (gaps) are represented as negative.        if( i%2 == 0 )            adfWeightTokens.push_back( CPLAtof( osAmount ) );        else            adfWeightTokens.push_back( -CPLAtof( osAmount ) );    }    CSLDestroy( papszTokens );    return adfWeightTokens;}
开发者ID:OSGeo,项目名称:gdal,代码行数:48,


示例15: OPTGetParameterInfo

int OPTGetParameterInfo( const char * pszProjectionMethod,                         const char * pszParameterName,                         char ** ppszUserName,                         char ** ppszType,                         double *pdfDefaultValue ){    int         i;    (void) pszProjectionMethod;    for( i = 0; papszParameterDefinitions[i] != NULL; i += 4 )    {        if( EQUAL(papszParameterDefinitions[i],pszParameterName) )        {            if( ppszUserName != NULL )                *ppszUserName = (char *)papszParameterDefinitions[i+1];            if( ppszType != NULL )                *ppszType = (char *)papszParameterDefinitions[i+2];            if( pdfDefaultValue != NULL )                *pdfDefaultValue = CPLAtof(papszParameterDefinitions[i+3]);            return TRUE;        }    }    return FALSE;}
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:28,


示例16: ParseLineString

static void ParseLineString(OGRLineString* poLS,                            const char* pszCoordinates){    char** papszTuples = CSLTokenizeString2(pszCoordinates, " ", 0);    for(int iTuple = 0; papszTuples && papszTuples[iTuple]; iTuple++)    {        char** papszTokens = CSLTokenizeString2(papszTuples[iTuple], ",", 0);        if (CSLCount(papszTokens) == 2)            poLS->addPoint(CPLAtof(papszTokens[0]), CPLAtof(papszTokens[1]));        else if (CSLCount(papszTokens) == 3)            poLS->addPoint(CPLAtof(papszTokens[0]), CPLAtof(papszTokens[1]),                            CPLAtof(papszTokens[2]));        CSLDestroy(papszTokens);    }    CSLDestroy(papszTuples);}
开发者ID:koordinates,项目名称:gdal,代码行数:16,


示例17: AddLock

int GDALRasterBlock::TakeLock(){    const int nLockVal = AddLock();    CPLAssert(nLockVal >= 0);    if( bSleepsForBockCacheDebug )        CPLSleep(CPLAtof(            CPLGetConfigOption("GDAL_RB_TRYGET_SLEEP_AFTER_TAKE_LOCK", "0")));    if( nLockVal == 0 )    {#ifdef DEBUG        CPLDebug(            "GDAL",            "TakeLock(%p): Block(%d,%d,%p) is being evicted while trying to "            "reacquire it.",            reinterpret_cast<void *>(CPLGetPID()), nXOff, nYOff, poBand );#endif        // The block is being evicted by GDALRasterBlock::Internalize()        // or FlushCacheBlock(), so wait for this to be done before trying        // again.        DropLock();        // wait for the block having been unreferenced        TAKE_LOCK;        return FALSE;    }    Touch();    return TRUE;}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:29,


示例18: USGSDEMReadDoubleFromBuffer

static double USGSDEMReadDoubleFromBuffer( Buffer* psBuffer, int nCharCount, int *pbSuccess = nullptr){    if (psBuffer->cur_index + nCharCount > psBuffer->buffer_size)    {        USGSDEMRefillBuffer(psBuffer);        if (psBuffer->cur_index + nCharCount > psBuffer->buffer_size)        {            if( pbSuccess ) *pbSuccess = FALSE;            return 0;        }    }    char* szPtr = psBuffer->buffer + psBuffer->cur_index;    char backupC = szPtr[nCharCount];    szPtr[nCharCount] = 0;    for( int i = 0; i < nCharCount; i++ )    {        if( szPtr[i] == 'D' )            szPtr[i] = 'E';    }    double dfVal = CPLAtof(szPtr);    szPtr[nCharCount] = backupC;    psBuffer->cur_index += nCharCount;    if( pbSuccess ) *pbSuccess = TRUE;    return dfVal;}
开发者ID:rouault,项目名称:gdal,代码行数:29,


示例19: CSLTokenizeString2

COASPMetadataItem *COASPMetadataReader::GetNextItem() {	COASPMetadataItem *poMetadata;	char **papszMDTokens;	char *pszItemName;	char *pszItemValue;	if (nCurrentItem >= nMetadataCount)		return NULL;	papszMDTokens = CSLTokenizeString2(papszMetadata[nCurrentItem], " ", 		CSLT_HONOURSTRINGS );	pszItemName = papszMDTokens[0];	if (EQUALN(pszItemName, "georef_grid", 11)) {		double ndLat, ndLong;		int nPixels, nLines;		// georef_grid ( pixels lines ) ( lat long )		// 0           1 2      3     4 5 6   7    8		nPixels = atoi(papszMDTokens[2]);		nLines = atoi(papszMDTokens[3]);		ndLat = CPLAtof(papszMDTokens[6]);		ndLong = CPLAtof(papszMDTokens[7]);		poMetadata = new COASPMetadataGeorefGridItem(nCurrentItem, nPixels, 			nLines, ndLat, ndLong);	}	else {		int nCount = CSLCount(papszMDTokens);		pszItemValue = strdup(papszMDTokens[1]); 		for (int i = 2; i < nCount; i++) {			int nSize = strlen(papszMDTokens[i]);			pszItemValue = (char *)CPLRealloc(pszItemValue, 				strlen(pszItemValue) + 1 + nSize);			sprintf(pszItemValue,"%s %s",pszItemValue, 				papszMDTokens[i]);		}				poMetadata = new COASPMetadataItem(pszItemName,			pszItemValue);		free(pszItemValue);	}	free(pszItemName);	nCurrentItem++;	return poMetadata;}
开发者ID:Mofangbao,项目名称:node-gdal,代码行数:45,


示例20: CPLGetXMLNode

void *GDALDeserializeGCPTransformer( CPLXMLNode *psTree ){    GDAL_GCP *pasGCPList = 0;    int nGCPCount = 0;    void *pResult = NULL;    int nReqOrder = 0;    int bReversed = 0;    int bRefine = 0;    int nMinimumGcps = 0;    double dfTolerance = 0.0;    /* -------------------------------------------------------------------- */    /*      Check for GCPs.                                                 */    /* -------------------------------------------------------------------- */    CPLXMLNode *psGCPList = CPLGetXMLNode( psTree, "GCPList" );    if( psGCPList != NULL )    {        GDALDeserializeGCPListFromXML( psGCPList,                                       &pasGCPList,                                       &nGCPCount,                                       NULL );    }/* -------------------------------------------------------------------- *//*      Get other flags.                                                *//* -------------------------------------------------------------------- */    nReqOrder = atoi(CPLGetXMLValue(psTree,"Order","3"));    bReversed = atoi(CPLGetXMLValue(psTree,"Reversed","0"));    bRefine = atoi(CPLGetXMLValue(psTree,"Refine","0"));    nMinimumGcps = atoi(CPLGetXMLValue(psTree,"MinimumGcps","6"));    dfTolerance = CPLAtof(CPLGetXMLValue(psTree,"Tolerance","1.0"));/* -------------------------------------------------------------------- *//*      Generate transformation.                                        *//* -------------------------------------------------------------------- */    if(bRefine)    {        pResult = GDALCreateGCPRefineTransformer( nGCPCount, pasGCPList, nReqOrder,                                        bReversed, dfTolerance, nMinimumGcps );    }    else    {        pResult = GDALCreateGCPTransformer( nGCPCount, pasGCPList, nReqOrder,                                        bReversed );    }/* -------------------------------------------------------------------- *//*      Cleanup GCP copy.                                               *//* -------------------------------------------------------------------- */    GDALDeinitGCPs( nGCPCount, pasGCPList );    CPLFree( pasGCPList );    return pResult;}
开发者ID:koordinates,项目名称:gdal,代码行数:56,


示例21: CSLTokenizeString2

COASPMetadataItem *COASPMetadataReader::GetNextItem(){	if (nCurrentItem >= nMetadataCount)		return NULL;        COASPMetadataItem *poMetadata;        char **papszMDTokens            = CSLTokenizeString2(papszMetadata[nCurrentItem], " ",                                 CSLT_HONOURSTRINGS );        char *pszItemName = papszMDTokens[0];	if (STARTS_WITH_CI(pszItemName, "georef_grid")) {		// georef_grid ( pixels lines ) ( lat long )		// 0           1 2      3     4 5 6   7    8                int nPixels = atoi(papszMDTokens[2]);                int nLines = atoi(papszMDTokens[3]);                double dfLat = CPLAtof(papszMDTokens[6]);                double dfLong = CPLAtof(papszMDTokens[7]);                poMetadata = new COASPMetadataGeorefGridItem(                    nCurrentItem, nPixels, nLines, dfLat, dfLong);	}	else {		int nCount = CSLCount(papszMDTokens);                char *pszItemValue = CPLStrdup(papszMDTokens[1]);		for (int i = 2; i < nCount; i++) {			const size_t nSize = strlen(pszItemValue) + 1 + strlen(papszMDTokens[i]);			pszItemValue = (char *)CPLRealloc(pszItemValue, nSize);			snprintf(pszItemValue + strlen(pszItemValue),                                 nSize - strlen(pszItemValue), " %s",				papszMDTokens[i]);		}		poMetadata = new COASPMetadataItem(pszItemName,			pszItemValue);		CPLFree(pszItemValue);	}	CSLDestroy(papszMDTokens);	nCurrentItem++;	return poMetadata;}
开发者ID:StephenHolzman,项目名称:UVAmisc,代码行数:41,


示例22: atoi

CPLErr VRTKernelFilteredSource::XMLInit( CPLXMLNode *psTree,                                         const char *pszVRTPath,                                         void* pUniqueHandle,                                         std::map<CPLString, GDALDataset*>& oMapSharedSources ){    {        const CPLErr eErr = VRTFilteredSource::XMLInit( psTree, pszVRTPath,                                                        pUniqueHandle,                                                        oMapSharedSources );        if( eErr != CE_None )            return eErr;    }    const int nNewKernelSize = atoi(CPLGetXMLValue(psTree,"Kernel.Size","0"));    if( nNewKernelSize == 0 )        return CE_None;    char **papszCoefItems =        CSLTokenizeString( CPLGetXMLValue(psTree,"Kernel.Coefs","") );    const int nCoefs = CSLCount(papszCoefItems);    const bool bSquare = nCoefs == nNewKernelSize * nNewKernelSize;    const bool bSeparable = nCoefs == nNewKernelSize && nCoefs != 1;    if( !bSquare && !bSeparable )    {        CSLDestroy( papszCoefItems );        CPLError( CE_Failure, CPLE_AppDefined,                  "Got wrong number of filter kernel coefficients (%s).  "                  "Expected %d or %d, got %d.",                  CPLGetXMLValue(psTree,"Kernel.Coefs",""),                  nNewKernelSize * nNewKernelSize, nNewKernelSize, nCoefs );        return CE_Failure;    }    double *padfNewCoefs = static_cast<double *>(        CPLMalloc( sizeof(double) * nCoefs ) );    for( int i = 0; i < nCoefs; i++ )        padfNewCoefs[i] = CPLAtof(papszCoefItems[i]);    const CPLErr eErr = SetKernel( nNewKernelSize, bSeparable, padfNewCoefs );    CPLFree( padfNewCoefs );    CSLDestroy( papszCoefItems );    SetNormalized( atoi(CPLGetXMLValue(psTree,"Kernel.normalized","0")) );    return eErr;}
开发者ID:OSGeo,项目名称:gdal,代码行数:53,


示例23: swq_compare_real

static int FORCE_CDECL swq_compare_real( const void *item1, const void *item2 ){    double  v1, v2;    const char* pszStr1 = *((const char **) item1);    const char* pszStr2 = *((const char **) item2);    if (pszStr1 == NULL)        return (pszStr2 == NULL) ? 0 : -1;    else if (pszStr2 == NULL)        return 1;    v1 = CPLAtof(pszStr1);    v2 = CPLAtof(pszStr2);    if( v1 < v2 )        return -1;    else if( v1 == v2 )        return 0;    else        return 1;}
开发者ID:imincik,项目名称:pkg-gdal,代码行数:21,


示例24: ERSDMS2Dec

static double ERSDMS2Dec( const char *pszDMS ){    char **papszTokens = CSLTokenizeStringComplex( pszDMS, ":", FALSE, FALSE );    if( CSLCount(papszTokens) != 3 )    {        return CPLAtof( pszDMS );    }    else    {        double dfResult = fabs(CPLAtof(papszTokens[0]))            + CPLAtof(papszTokens[1]) / 60.0            + CPLAtof(papszTokens[2]) / 3600.0;        if( CPLAtof(papszTokens[0]) < 0 )            dfResult *= -1;        CSLDestroy( papszTokens );        return dfResult;    }}
开发者ID:dlsyaim,项目名称:osgEarthX,代码行数:22,


示例25: CPLStrdup

int OGRElasticDataSource::Create(const char *pszFilename,                                 CPL_UNUSED char **papszOptions) {    this->pszName = CPLStrdup(pszFilename);    const char* pszMetaFile = CPLGetConfigOption("ES_META", NULL);    const char* pszWriteMap = CPLGetConfigOption("ES_WRITEMAP", NULL);;    this->bOverwrite = CSLTestBoolean(CPLGetConfigOption("ES_OVERWRITE", "0"));    this->nBulkUpload = (int) CPLAtof(CPLGetConfigOption("ES_BULK", "0"));    if (pszWriteMap != NULL) {        this->pszWriteMap = CPLStrdup(pszWriteMap);    }    // Read in the meta file from disk    if (pszMetaFile != NULL)    {        int fsize;        char *fdata;        FILE *fp;        fp = fopen(pszMetaFile, "rb");        if (fp != NULL) {            fseek(fp, 0, SEEK_END);            fsize = (int) ftell(fp);            fdata = (char *) malloc(fsize + 1);            fseek(fp, 0, SEEK_SET);            if (0 == fread(fdata, fsize, 1, fp)) {                CPLError(CE_Failure, CPLE_FileIO,                         "OGRElasticDataSource::Create read failed.");            }            fdata[fsize] = 0;            this->pszMapping = fdata;            fclose(fp);        }    }    // Do a status check to ensure that the server is valid    CPLHTTPResult* psResult = CPLHTTPFetch(CPLSPrintf("%s/_status", pszFilename), NULL);    int bOK = (psResult != NULL && psResult->pszErrBuf == NULL);    if (!bOK)    {        CPLError(CE_Failure, CPLE_NoWriteAccess,                "Could not connect to server");    }    CPLHTTPDestroyResult(psResult);    return bOK;}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:51,


示例26: main

int main( int argc, char ** argv ){    if( argc != 5 )    {        printf( "Usage: stroke primary_axis secondary_axis axis_rotation angle/n" );        exit( 1 );    }    double      dfX, dfY, dfPrimary, dfSecondary, dfAxisRotation, dfAngle;    dfPrimary = CPLAtof(argv[1]);    dfSecondary = CPLAtof(argv[2]);    dfAxisRotation = CPLAtof(argv[3]) / 180 * PI;    dfAngle = CPLAtof(argv[4]) / 180 * PI;    ComputePointOnArc2D( dfPrimary, dfSecondary, dfAxisRotation, dfAngle,                          &dfX, &dfY );    printf( "X=%.2f, Y=%.2f/n", dfX, dfY );    exit( 0 );}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:23,


示例27: PamFindMatchingHistogram

CPLXMLNode *PamFindMatchingHistogram( CPLXMLNode *psSavedHistograms,                          double dfMin, double dfMax, int nBuckets,                          int bIncludeOutOfRange, int bApproxOK ){    if( psSavedHistograms == NULL )        return NULL;    CPLXMLNode *psXMLHist;    for( psXMLHist = psSavedHistograms->psChild;         psXMLHist != NULL; psXMLHist = psXMLHist->psNext )    {        if( psXMLHist->eType != CXT_Element            || !EQUAL(psXMLHist->pszValue,"HistItem") )            continue;        double dfHistMin = CPLAtof(CPLGetXMLValue( psXMLHist, "HistMin", "0"));        double dfHistMax = CPLAtof(CPLGetXMLValue( psXMLHist, "HistMax", "0"));        if( !(ARE_REAL_EQUAL(dfHistMin, dfMin))            || !(ARE_REAL_EQUAL(dfHistMax, dfMax))            || atoi(CPLGetXMLValue( psXMLHist,                                    "BucketCount","0")) != nBuckets            || !atoi(CPLGetXMLValue( psXMLHist,                                     "IncludeOutOfRange","0")) != !bIncludeOutOfRange            || (!bApproxOK && atoi(CPLGetXMLValue( psXMLHist,                                                   "Approximate","0"))) )            continue;        return psXMLHist;    }    return NULL;}
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:36,


示例28: DOQGetField

static double DOQGetField( unsigned char *pabyData, int nBytes ){    char szWork[128] = { '/0' };    strncpy( szWork, reinterpret_cast<const char *>( pabyData ), nBytes );    szWork[nBytes] = '/0';    for( int i = 0; i < nBytes; i++ )    {        if( szWork[i] == 'D' || szWork[i] == 'd' )            szWork[i] = 'E';    }    return CPLAtof(szWork);}
开发者ID:Wedjaa,项目名称:node-gdal,代码行数:16,


示例29: CPLAtof

double RDataset::ReadFloat(){    if( bASCII )    {        return CPLAtof(ASCIIFGets());    }    double dfValue = 0.0;    if( VSIFReadL(&dfValue, 8, 1, fp) != 1 )        return -1;    CPL_MSBPTR64(&dfValue);    return dfValue;}
开发者ID:ksshannon,项目名称:gdal,代码行数:16,


示例30: DConvert

static double DConvert( VSILFILE *fp, int nCharCount ){    char szBuffer[100];    CPL_IGNORE_RET_VAL(VSIFReadL( szBuffer, nCharCount, 1, fp ));    szBuffer[nCharCount] = '/0';    for( int i = 0; i < nCharCount; i++ )    {        if( szBuffer[i] == 'D' )            szBuffer[i] = 'E';    }    return CPLAtof(szBuffer);}
开发者ID:rouault,项目名称:gdal,代码行数:16,



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


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