00001 /* 00002 00003 This file is part of OpenFLUID software 00004 Copyright(c) 2007, INRA - Montpellier SupAgro 00005 00006 00007 == GNU General Public License Usage == 00008 00009 OpenFLUID is free software: you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation, either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 OpenFLUID is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>. 00021 00022 00023 == Other Usage == 00024 00025 Other Usage means a use of OpenFLUID that is inconsistent with the GPL 00026 license, and requires a written agreement between You and INRA. 00027 Licensees for Other Usage of OpenFLUID may use this file in accordance 00028 with the terms contained in the written agreement between You and INRA. 00029 00030 */ 00031 00032 /** 00033 \file GeoRasterValue.hpp 00034 \brief Header of ... 00035 00036 \author Aline LIBRES <libres@supagro.inra.fr> 00037 */ 00038 00039 #ifndef __GEORASTERVALUE_HPP__ 00040 #define __GEORASTERVALUE_HPP__ 00041 00042 #include <openfluid/core/GeoValue.hpp> 00043 #include <openfluid/dllexport.hpp> 00044 00045 #include "gdal_priv.h" 00046 #include "cpl_conv.h" // for CPLMalloc() 00047 00048 namespace openfluid { 00049 namespace core { 00050 00051 /** 00052 * @brief Container class for geospatial raster data, 00053 * represented by a GDAL dataset. 00054 */ 00055 class DLLEXPORT GeoRasterValue: public openfluid::core::GeoValue 00056 { 00057 00058 protected: 00059 00060 /** 00061 * @brief The GDALDataset associated to this GeoRasterValue. 00062 */ 00063 GDALDataset* mp_Data; 00064 00065 /** 00066 * @brief Open the GDALDataset of this GeoRasterValue. 00067 * @throw openfluid::base::OFException if GDAL doesn't succeed to open the datasource. 00068 * 00069 */ 00070 void tryToOpenSource(); 00071 00072 public: 00073 00074 /** 00075 * @brief Creates a new value. 00076 * 00077 * The <tt>FileName</tt> may be the name of a .jpeg, .tiff, .img or .asc file... 00078 * 00079 * It doesn't open the associated GDAL dataset. 00080 * 00081 * @param FilePath The path of the file(s). 00082 * @param FileName The name or the relative path of the file to open. 00083 */ 00084 GeoRasterValue(std::string FilePath, std::string FileName); 00085 00086 /** 00087 * @brief Closes the opened GDAL dataset. 00088 */ 00089 ~GeoRasterValue(); 00090 00091 /** 00092 * @brief Returns the type of this GeoRasterValue. 00093 * @return An openfluid::core::UnstructuredValue::UnstructuredType. 00094 */ 00095 openfluid::core::UnstructuredValue::UnstructuredType getType() const; 00096 00097 /** 00098 * @brief Gets the associated opened GDAL dataset in read-only access. 00099 * 00100 * If the dataset is not already opened, tries to open it first. 00101 * 00102 * @return The opened GDAL dataset. 00103 * @throw openfluid::base::OFException if GDAL doesn't succeed to open the dataset. 00104 */ 00105 GDALDataset* get(); 00106 00107 /** 00108 * @brief Returns the absolute Path of this GeoRasterValue. 00109 * 00110 */ 00111 std::string getAbsolutePath(); 00112 }; 00113 00114 } 00115 } // namespaces 00116 #endif /* __GEORASTERVALUE_HPP__ */