{-- TerraHS - Interface between TerraLib and Haskell (c) Sergio Costa (INPE) - Setembro, 2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License 2.1 as published by the Free Software Foundation (http://www.opensource.org/licenses/gpl-license.php) --} {-- --} module Algebras.Base.Raster ( loadRasterFile, loadRaster, Rasters (..), importRaster, importRasterWParameter ) where import TerraHS.Misc.Databases import TerraHS.TerraLib.TeRaster import TerraHS.TerraLib.TeLayer import TerraHS.TerraLib.TeDatabase import Foreign.C.String import qualified Foreign.Ptr (Ptr) import TerraHS.Misc.Object class Rasters r where getValues :: r a -> [[a]] setValues :: [[a]] -> r a instance Rasters TeRaster where getValues (TeRaster rs) = rs setValues rs = (TeRaster rs) instance Databases (TeRaster Double) TeDatabase where retrieve db ln = do layer <- loadLayer db ln ptr <- getRaster layer -- convert to haskell object raster <- fromPointer ptr return raster store db name rs = do l <- newCString name rsptr <- new rs teimportraster l rsptr db