/* This file is part of SECONDO. Copyright (C) 2011, University in Hagen, Department of Computer Science, Database Systems for New Applications. SECONDO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. SECONDO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with SECONDO; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef RASTER2_IMPORT_ESRI_GRID_H #define RASTER2_IMPORT_ESRI_GRID_H #include #include "../stype.h" #include "../sint.h" #include "../sreal.h" namespace raster2 { const int INDEX_BUFFER_SIZE = 8; const std::string FILE_SEPARATOR = "/"; const std::string BOUNDING_FILE_NAME = "dblbnd.adf"; const std::string INDEX_FILE_NAME = "w001001x.adf"; const std::string DATA_FILE_NAME = "w001001.adf"; const std::string STATISTICS_FILE_NAME = "sta.adf"; /* Set this to *true* in order to write lots of debug output. */ const bool DEBUG_OUTPUT_ENABLED = false; extern ValueMapping importEsriGridFuns[]; ListExpr importEsriGridTypeMap(ListExpr args); int importEsriGridSelectFun(ListExpr); template int importEsriGridFun (Word* args, Word& result, int message, Word& local, Supplier s); struct importEsriGridInfo : OperatorInfo { importEsriGridInfo() { name = "importEsriGrid"; signature = "{text|string} -> " + sint::BasicType(); appendSignature("{text|string} -> " + sreal::BasicType()); syntax = "importEsriGrid(_)"; meaning = "Imports an ESRI Grid file."; } }; struct EsriGridConfigData; bool readFileIntoBuffer(char* buffer, const std::string& fname, const uint32_t len); void readEsriGridBounds(RasterData *EsriRasterData, const std::string boundingFileName); void readEsriGridIndexConfig(RasterData *EsriRasterData, std::fstream *indexFile); void readStatisticData(RasterData *EsriRasterData, const std::string statisticsFileName); void evaluateActualTilesRowAndColumnCount(RasterData *EsriRaster); int importEsriGridFun (Word* args, Word& result, int message, Word& local, Supplier s); } #endif /* #ifndef RASTER2_IMPORT_ESRI_GRID_H */