Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: Earth Engine Data API Images driver 4 : * Purpose: Earth Engine Data API Images driver 5 : * Author: Even Rouault, even dot rouault at spatialys.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2017-2018, Planet Labs 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #ifndef EEDA_H_INCLUDED 14 : #define EEDA_H_INCLUDED 15 : 16 : #include "cpl_string.h" 17 : #include "gdal.h" 18 : #include "cpl_json_header.h" 19 : #undef TRUE 20 : #define TRUE 1 21 : #undef FALSE 22 : #define FALSE 0 23 : #include "gdal_priv.h" 24 : #include "cpl_http.h" 25 : #include <vector> 26 : #include <map> 27 : 28 : CPLHTTPResult *EEDAHTTPFetch(const char *pszURL, char **papszOptions); 29 : 30 : /************************************************************************/ 31 : /* EEDAIBandDesc */ 32 : /************************************************************************/ 33 : 34 : class EEDAIBandDesc 35 : { 36 : public: 37 : CPLString osName{}; 38 : CPLString osWKT{}; 39 : GDALDataType eDT{GDT_Unknown}; 40 : std::vector<double> adfGeoTransform{0.0, 1.0, 0.0, 0.0, 0.0, 1.0}; 41 : int nWidth{0}; 42 : int nHeight{0}; 43 : 44 : /* Check if it similar enough for being considered as a compatible */ 45 : /* GDAL band in the same dataset */ 46 25 : bool IsSimilar(const EEDAIBandDesc &oOther) const 47 : { 48 25 : return osWKT == oOther.osWKT && 49 25 : adfGeoTransform == oOther.adfGeoTransform && 50 50 : nWidth == oOther.nWidth && nHeight == oOther.nHeight; 51 : } 52 : }; 53 : 54 : std::vector<EEDAIBandDesc> 55 : BuildBandDescArray(json_object *poBands, 56 : std::map<CPLString, CPLString> &oMapCodeToWKT); 57 : 58 : /************************************************************************/ 59 : /* GDALEEDABaseDataset */ 60 : /************************************************************************/ 61 : 62 : class GDALEEDABaseDataset CPL_NON_FINAL : public GDALDataset 63 : { 64 : protected: 65 : bool m_bMustCleanPersistent; 66 : CPLString m_osBaseURL{}; 67 : CPLString m_osBearer{}; 68 : GIntBig m_nExpirationTime; 69 : 70 : char **GetBaseHTTPOptions(); 71 : static CPLString ConvertPathToName(const CPLString &path); 72 : 73 : public: 74 : GDALEEDABaseDataset(); 75 : virtual ~GDALEEDABaseDataset(); 76 : 77 : const CPLString &GetBaseURL() const 78 : { 79 : return m_osBaseURL; 80 : } 81 : }; 82 : 83 : #endif // EEDA_H_INCLUDED