module Gis.Saga.Utils where import Gis.Saga.Types import qualified Data.Map as M import System.FilePath.Posix (dropExtension, replaceExtension) import System.Directory (copyFile, renameFile) import Text.Printf (printf) defaultCmdPars :: SagaCmd -> [(String,String)] defaultCmdPars (SagaCmd {sParas = ps}) = map (\(k,(_,v)) -> (k,v)) (M.toList ps) -- | Copy a grid data-set copyGrid :: FilePath -> FilePath -> IO () copyGrid f t = mapM_ cp ["sgrd", "sdat", "mgrd"] where cp ext = copyFile (replaceExtension f ext) (replaceExtension t ext) -- | Move a grid data-set moveGrid :: FilePath -> FilePath -> IO () moveGrid f t = mapM_ cp ["sgrd", "sdat", "mgrd"] where cp ext = renameFile (replaceExtension f ext) (replaceExtension t ext) -- | Utility function to append to basename of a file-name appendFileName :: FilePath -> String -> FilePath appendFileName f s = dropExtension f ++ s -- | Dispatch on field seperator -- dispSep :: String -> String -- dispSep s = case s of -- "space" -> "space" -- "Space" -> "space" -- " " -> "space" -- "\t" -> "tabulator" -- "tab" -> "tabulator" -- "Tab" -> "tabulator" -- "Tabulator" -> "tabulator" -- ";" -> ";" -- "," -> "," -- Render a list of string-tuple in two columns renderStringPairs :: [(String, String)] -> String renderStringPairs = concatMap renderPair where renderPair :: (String, String) -> String renderPair (k,v) = twoCol k v -- | render two strings in two columns twoCol :: String -> String -> String twoCol = printf "\t%10s %10s\n" writeReclassifyTableFlatSlope :: String -> IO () writeReclassifyTableFlatSlope f = writeFile f "minimum\tmaximum\tnew\n0.000000\t0.100000\t1.000000\n0.100000\t0.200000\t2.000000\n0.200000\t0.500000\t3.000000\n0.500000\t1.000000\t4.000000\n1.000000\t5.000000\t5.000000\n5.000000\t25.000000\t6.000000\n25.000000\t50.000000\t7.000000\n"