osm-conduit-0.1.0.0: src/Data/Conduit/OSM/Types.hs
-- |
-- The following data types correspond to documentation of API version 0.6.
-- See https://wiki.openstreetmap.org/wiki/API_v0.6/DTD
module Data.Conduit.OSM.Types where
import Data.Text (Text)
type Version = Double
type Generator = Text
data OSM =
OSM {
_version :: Version
, _generator :: Maybe Generator
, _bounds :: Maybe Bounds
, _nodes :: [Node]
, _ways :: [Way]
, _relations :: [Relation]
}
deriving (Show, Eq)
data Bounds =
Bounds {
_minlat :: Lat
, _minlon :: Lon
, _maxlat :: Lat
, _maxlon :: Lon
}
deriving (Show, Eq)
type Id = Text
type Lat = Double
type Lon = Double
type Changeset = Text
type Visible = Bool
type User = Text
type Timestamp = Text -- maybe data.time?
type Role = Text
data Node =
Node {
_lat :: Lat
, _lon :: Lon
, _nCommon :: NWRCommon
}
deriving (Show, Eq)
data Relation =
Relation {
_members :: [Member]
, _rCommon :: NWRCommon
}
deriving (Show, Eq)
data Way =
Way {
_nds :: [Nd]
, _wCommon :: NWRCommon
}
deriving (Show, Eq)
data NWRCommon =
NWRCommon {
_id :: Id
, _visible :: Maybe Visible
, _changeset :: Maybe Changeset
, _timestamp :: Maybe Timestamp
, _user :: Maybe User
, _tags :: [Tag]
}
deriving (Show, Eq)
data NWR = NWRn | NWRw | NWRr
deriving (Show, Eq)
data NWRWrap = N Node
| W Way
| R Relation
deriving (Show, Eq)
data Member =
Member {
_type :: NWR
, _mRef :: Id
, _role :: Maybe Role
}
deriving (Show, Eq)
data Nd =
Nd {
_ref :: Id
}
deriving (Show, Eq)
-- | Tag stores (Key, Value)
data Tag =
Tag {
_tag :: (Text, Text)
}
deriving (Show, Eq)