hgis-0.1.0.0: src/GIS/Types.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TemplateHaskell #-}
-- | Module containing types for various geometrical objects. Lenses included.
module GIS.Types where
import Text.PrettyPrint.ANSI.Leijen
import GHC.Generics
import Control.Lens
type Point = (Double, Double)
type Polygon = [Point]
type Projection = (Double, Double) -> (Double, Double)
-- | Data type for one record in a shape file, also capable of storing basic
-- information about the district.
data District = District { _shape :: [Polygon]
, _districtLabel :: String
, _perimeter :: Double
, _area :: [Double]
} deriving (Generic, Show)
makeLenses ''District
-- possibly get rid of this idk
data DbfReadError = NotAPolygon | ShpNull
instance Show DbfReadError where
show NotAPolygon = show $ red (text "Error: ") <> (text "Shape not a polygon! Are you sure you're opening a district?")
show ShpNull = show $ red (text "Error: ") <> (text "")