1 /****************************************************************************** 2 * $Id: gdalgeorefpamdataset.h b1c9c12ad373e40b955162b45d704070d4ebf7b0 2019-06-19 16:50:15 +0200 Even Rouault $ 3 * 4 * Project: GDAL 5 * Purpose: GDALPamDataset with internal storage for georeferencing, with 6 * priority for PAM over internal georeferencing 7 * Author: Even Rouault <even dot rouault at spatialys.com> 8 * 9 ****************************************************************************** 10 * Copyright (c) 2013, Even Rouault <even dot rouault at spatialys.com> 11 * 12 * Permission is hereby granted, free of charge, to any person obtaining a 13 * copy of this software and associated documentation files (the "Software"), 14 * to deal in the Software without restriction, including without limitation 15 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 16 * and/or sell copies of the Software, and to permit persons to whom the 17 * Software is furnished to do so, subject to the following conditions: 18 * 19 * The above copyright notice and this permission notice shall be included 20 * in all copies or substantial portions of the Software. 21 * 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 25 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 28 * DEALINGS IN THE SOFTWARE. 29 ****************************************************************************/ 30 31 #ifndef GDAL_GEOREF_PAM_DATASET_H_INCLUDED 32 #define GDAL_GEOREF_PAM_DATASET_H_INCLUDED 33 34 #ifndef DOXYGEN_SKIP 35 36 #include "gdal_pam.h" 37 38 class CPL_DLL GDALGeorefPamDataset : public GDALPamDataset 39 { 40 protected: 41 bool bGeoTransformValid; 42 double adfGeoTransform[6]; 43 char *pszProjection; 44 int nGCPCount; 45 GDAL_GCP *pasGCPList; 46 char** m_papszRPC; 47 bool m_bPixelIsPoint; 48 49 int m_nGeoTransformGeorefSrcIndex; 50 int m_nGCPGeorefSrcIndex; 51 int m_nProjectionGeorefSrcIndex; 52 int m_nRPCGeorefSrcIndex; 53 int m_nPixelIsPointGeorefSrcIndex; 54 55 int GetPAMGeorefSrcIndex(); 56 bool m_bGotPAMGeorefSrcIndex; 57 int m_nPAMGeorefSrcIndex; 58 59 bool m_bPAMLoaded; 60 char** m_papszMainMD; 61 62 CPL_DISALLOW_COPY_ASSIGN(GDALGeorefPamDataset) 63 64 public: 65 GDALGeorefPamDataset(); 66 ~GDALGeorefPamDataset() override; 67 68 CPLErr TryLoadXML(char **papszSiblingFiles = nullptr) override; 69 70 CPLErr GetGeoTransform( double * ) override; 71 72 const char *_GetProjectionRef(void) override; GetSpatialRef()73 const OGRSpatialReference* GetSpatialRef() const override { 74 return GetSpatialRefFromOldGetProjectionRef(); 75 } 76 77 int GetGCPCount() override; 78 const char *_GetGCPProjection() override; GetGCPSpatialRef()79 const OGRSpatialReference* GetGCPSpatialRef() const override { 80 return GetGCPSpatialRefFromOldGetGCPProjection(); 81 } 82 const GDAL_GCP *GetGCPs() override; 83 84 char **GetMetadata( const char * pszDomain = "" ) override; 85 const char *GetMetadataItem( const char * pszName, 86 const char * pszDomain = "" ) override; 87 CPLErr SetMetadata( char ** papszMetadata, 88 const char * pszDomain = "" ) override; 89 CPLErr SetMetadataItem( const char * pszName, 90 const char * pszValue, 91 const char * pszDomain = "" ) override; 92 }; 93 94 #endif /* #ifndef DOXYGEN_SKIP */ 95 96 #endif /* GDAL_GEOREF_PAM_DATASET_H_INCLUDED */ 97