static void* GDALCreateSimilarGCPTransformer( void *hTransformArg, double dfRatioX, double dfRatioY ) { int i = 0; GDAL_GCP *pasGCPList = NULL; GCPTransformInfo *psInfo = (GCPTransformInfo *) hTransformArg; VALIDATE_POINTER1( hTransformArg, "GDALCreateSimilarGCPTransformer", NULL ); if( dfRatioX == 1.0 && dfRatioY == 1.0 ) { /* We can just use a ref count, since using the source transformation */ /* is thread-safe */ CPLAtomicInc(&(psInfo->nRefCount)); } else { pasGCPList = GDALDuplicateGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); for(i=0;i<psInfo->nGCPCount;i++) { pasGCPList[i].dfGCPPixel /= dfRatioX; pasGCPList[i].dfGCPLine /= dfRatioY; } /* As remove_outliers modifies the provided GCPs we don't need to reapply it */ psInfo = (GCPTransformInfo *) GDALCreateGCPTransformer( psInfo->nGCPCount, pasGCPList, psInfo->nOrder, psInfo->bReversed ); GDALDeinitGCPs( psInfo->nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } return psInfo; }
DIMAPDataset::~DIMAPDataset() { FlushCache(); CPLDestroyXMLNode( psProduct ); CPLFree( pszGCPProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } if( poImageDS != NULL ) delete poImageDS; CSLDestroy(papszXMLDimapMetadata); /* -------------------------------------------------------------------- */ /* Disconnect the bands so our destructor doesn't try and */ /* delete them since they really belonged to poImageDS. */ /* -------------------------------------------------------------------- */ int iBand; for( iBand = 0; iBand < GetRasterCount(); iBand++ ) papoBands[iBand] = NULL; }
static void* GDALCreateSimilarTPSTransformer( void *hTransformArg, double dfRatioX, double dfRatioY ) { VALIDATE_POINTER1( hTransformArg, "GDALCreateSimilarTPSTransformer", NULL ); TPSTransformInfo *psInfo = (TPSTransformInfo *) hTransformArg; if( dfRatioX == 1.0 && dfRatioY == 1.0 ) { /* We can just use a ref count, since using the source transformation */ /* is thread-safe */ CPLAtomicInc(&(psInfo->nRefCount)); } else { GDAL_GCP *pasGCPList = GDALDuplicateGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); for(int i=0;i<psInfo->nGCPCount;i++) { pasGCPList[i].dfGCPPixel /= dfRatioX; pasGCPList[i].dfGCPLine /= dfRatioY; } psInfo = (TPSTransformInfo *) GDALCreateTPSTransformer( psInfo->nGCPCount, pasGCPList, psInfo->bReversed ); GDALDeinitGCPs( psInfo->nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } return psInfo; }
CPLErr GDALPamDataset::SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList, const char *pszGCPProjection ) { PamInitialize(); if( psPam ) { CPLFree( psPam->pszGCPProjection ); if( psPam->nGCPCount > 0 ) { GDALDeinitGCPs( psPam->nGCPCount, psPam->pasGCPList ); CPLFree( psPam->pasGCPList ); } psPam->pszGCPProjection = CPLStrdup(pszGCPProjection); psPam->nGCPCount = nGCPCount; psPam->pasGCPList = GDALDuplicateGCPs( nGCPCount, pasGCPList ); MarkPamDirty(); return CE_None; } else { return GDALDataset::SetGCPs( nGCPCount, pasGCPList, pszGCPProjection ); } }
GDALProxyPoolDataset::~GDALProxyPoolDataset() { if( !bShared ) { GDALDatasetPool::CloseDataset(GetDescription(), eAccess); } /* See comment in constructor */ /* It is not really a genuine shared dataset, so we don't */ /* want ~GDALDataset() to try to release it from its */ /* shared dataset hashset. This will save a */ /* "Should not happen. Cannot find %s, this=%p in phSharedDatasetSet" debug message */ bShared = FALSE; CPLFree(pszProjectionRef); CPLFree(pszGCPProjection); if (nGCPCount) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } if (metadataSet) CPLHashSetDestroy(metadataSet); if (metadataItemSet) CPLHashSetDestroy(metadataItemSet); GDALDatasetPool::Unref(); }
PAuxDataset::~PAuxDataset() { FlushCache(); if( fpImage != NULL ) { if( VSIFCloseL( fpImage ) != 0 ) { CPLError(CE_Failure, CPLE_FileIO, "I/O error"); } } if( bAuxUpdated ) { CSLSetNameValueSeparator( papszAuxLines, ": " ); CSLSave( papszAuxLines, pszAuxFilename ); } CPLFree( pszProjection ); CPLFree( pszGCPProjection ); GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); CPLFree( pszAuxFilename ); CSLDestroy( papszAuxLines ); }
PALSARJaxaDataset::~PALSARJaxaDataset() { if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } }
MEMDataset::~MEMDataset() { FlushCache(); CPLFree( pszProjection ); GDALDeinitGCPs( nGCPCount, pasGCPs ); CPLFree( pasGCPs ); }
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; }
GDALGeorefPamDataset::~GDALGeorefPamDataset() { CPLFree( pszProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } }
BSBDataset::~BSBDataset() { FlushCache(); GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); if( psInfo != NULL ) BSBClose( psInfo ); }
GDALGeorefPamDataset::~GDALGeorefPamDataset() { CPLFree( pszProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CSLDestroy(m_papszMainMD); CSLDestroy(m_papszRPC); }
TSXDataset::~TSXDataset() { FlushCache(); CPLFree( pszProjection ); CPLFree( pszGCPProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } }
void GDALDestroyGCPTransformer( void *pTransformArg ) { GCPTransformInfo *psInfo = (GCPTransformInfo *) pTransformArg; VALIDATE_POINTER0( pTransformArg, "GDALDestroyGCPTransformer" ); GDALDeinitGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); CPLFree( psInfo->pasGCPList ); CPLFree( pTransformArg ); }
void GDALJP2Metadata::SetGCPs( int nCount, const GDAL_GCP *pasGCPsIn ) { if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } nGCPCount = nCount; pasGCPList = GDALDuplicateGCPs(nGCPCount, pasGCPsIn); }
GDALJP2Metadata::~GDALJP2Metadata() { CPLFree( pszProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CPLFree( pabyGeoTIFFData ); CPLFree( pabyMSIGData ); CSLDestroy( papszGMLMetadata ); }
void GDALDestroyTPSTransformer( void *pTransformArg ) { VALIDATE_POINTER0( pTransformArg, "GDALDestroyTPSTransformer" ); TPSTransformInfo *psInfo = (TPSTransformInfo *) pTransformArg; delete psInfo->poForward; delete psInfo->poReverse; GDALDeinitGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); CPLFree( psInfo->pasGCPList ); CPLFree( pTransformArg ); }
GDALProxyPoolDataset::~GDALProxyPoolDataset() { CPLFree(pszProjectionRef); CPLFree(pszGCPProjection); if (nGCPCount) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } if (metadataSet) CPLHashSetDestroy(metadataSet); if (metadataItemSet) CPLHashSetDestroy(metadataItemSet); GDALDatasetPool::Unref(); }
VRTDataset::~VRTDataset() { FlushCache(); CPLFree( pszProjection ); CPLFree( pszGCPProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CPLFree( pszVRTPath ); delete poMaskBand; }
CPLErr MEMDataset::SetGCPs( int nNewCount, const GDAL_GCP *pasNewGCPList, const char *pszGCPProjection ) { GDALDeinitGCPs( nGCPCount, pasGCPs ); CPLFree( pasGCPs ); if( pszGCPProjection == NULL ) osGCPProjection = ""; else osGCPProjection = pszGCPProjection; nGCPCount = nNewCount; pasGCPs = GDALDuplicateGCPs( nGCPCount, pasNewGCPList ); return CE_None; }
GDALOverviewDataset::~GDALOverviewDataset() { FlushCache(); CloseDependentDatasets(); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CSLDestroy(papszMD_RPC); CSLDestroy(papszMD_GEOLOCATION); delete poDriver; }
void GDALPamDataset::PamClear() { if( psPam ) { CPLFree( psPam->pszPamFilename ); CPLFree( psPam->pszProjection ); CPLFree( psPam->pszGCPProjection ); if( psPam->nGCPCount > 0 ) { GDALDeinitGCPs( psPam->nGCPCount, psPam->pasGCPList ); CPLFree( psPam->pasGCPList ); } delete psPam; psPam = NULL; } }
void GDALDestroyGCPTransformer( void *pTransformArg ) { GCPTransformInfo *psInfo = NULL; if( pTransformArg == NULL ) return; psInfo = (GCPTransformInfo *) pTransformArg; if( CPLAtomicDec(&(psInfo->nRefCount)) == 0 ) { GDALDeinitGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); CPLFree( psInfo->pasGCPList ); CPLFree( pTransformArg ); } }
DIMAPDataset::~DIMAPDataset() { FlushCache(); CPLDestroyXMLNode( psProduct ); CPLFree( pszGCPProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CSLDestroy(papszXMLDimapMetadata); CloseDependentDatasets(); }
JPEG2000Dataset::~JPEG2000Dataset() { FlushCache(); if ( psStream ) jas_stream_close( psStream ); if ( psImage ) jas_image_destroy( psImage ); if ( pszProjection ) CPLFree( pszProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } }
OZIDataset::~OZIDataset() { if (fp) VSIFCloseL(fp); CPLFree(panZoomLevelOffsets); int i; if (papoBands) { for(i=1;i<nZoomLevelCount;i++) delete papoBands[i]; CPLFree(papoBands); } CPLFree(pszWKT); if (nGCPCount) { GDALDeinitGCPs( nGCPCount, pasGCPs ); CPLFree(pasGCPs); } }
void GDALDestroyTPSTransformer( void *pTransformArg ) { if( pTransformArg == NULL ) return; TPSTransformInfo *psInfo = (TPSTransformInfo *) pTransformArg; if( CPLAtomicDec(&(psInfo->nRefCount)) == 0 ) { delete psInfo->poForward; delete psInfo->poReverse; GDALDeinitGCPs( psInfo->nGCPCount, psInfo->pasGCPList ); CPLFree( psInfo->pasGCPList ); CPLFree( pTransformArg ); } }
EnvisatDataset::~EnvisatDataset() { FlushCache(); if( hEnvisatFile != NULL ) EnvisatFile_Close( hEnvisatFile ); if( fpImage != NULL ) VSIFCloseL( fpImage ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } CSLDestroy( papszTempMD ); }
SAFEDataset::~SAFEDataset() { SAFEDataset::FlushCache(); CPLDestroyXMLNode( psManifest ); CPLFree( pszProjection ); CPLFree( pszGCPProjection ); if( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } SAFEDataset::CloseDependentDatasets(); CSLDestroy( papszSubDatasets ); CSLDestroy( papszExtraFiles ); }
GIFAbstractDataset::~GIFAbstractDataset() { FlushCache(); if ( pszProjection ) CPLFree( pszProjection ); if ( nGCPCount > 0 ) { GDALDeinitGCPs( nGCPCount, pasGCPList ); CPLFree( pasGCPList ); } if( hGifFile ) myDGifCloseFile( hGifFile ); if( fp != nullptr ) VSIFCloseL( fp ); }