module GIS.Exe.OptCairo
(
Program (..)
, exec
) where
import GIS.Hylo
import Control.Lens
import Control.Monad
import Options.Applicative
import Control.Monad.IO.Class
import Data.Monoid hiding (getAll)
import System.Directory
import GIS.Utils
import GIS.Math.Projections
import GIS.Math.Spherical
import GIS.Graphics.PlotSVG
import GIS.Graphics.PlotPNG
import GIS.Types
import GIS.Exe.Opt hiding (exec, pick)
import GIS.Exe.Parser
import GIS.Graphics.Types
exec :: IO ()
exec = pick =<< execParser helpDisplay
pick :: Program -> IO ()
pick (Program (MapMaker outfile False projection) infile) = let p = pickProjection projection in
mkMap outfile =<< districtToMapP p <$> getDistricts infile
pick (Program (MapMaker outfile True projection) infile) = let p = pickProjection projection in
makeFoldersPng =<< districtToMapFilesP p <$> getDistricts infile
pick (Program (Computation comp Nothing) infile) =
case comp of
"perimeter" -> putStrLn =<< districtPerimeter <$> getDistricts infile
"area" -> putStrLn =<< districtArea <$> getDistricts infile
"compactness" -> putStrLn =<< districtCompactness <$> getDistricts infile
_ -> putStrLn "computation not recognized"
makeFoldersPng :: [Map] -> IO ()
makeFoldersPng maps = do
createDirectoryIfMissing False "maps"
mapM_ (\m -> mkMapPng ("maps/" <> (view title m) <> ".png") m) maps