esqueleto-postgis-2.0.1: postgis bindings for esqueleto.
Safe HaskellNone
LanguageHaskell2010

Database.Esqueleto.Postgis

Description

Haskell bindings for postgres postgis for a good explenation see https://postgis.net/

Synopsis

Documentation

data PostgisGeometry point Source #

like GeospatialGeometry but not partial, eg no empty geometries, also only works in a single dimention, eg PostgisGeometry PointXY can't work with PostgisGeometry PointXYZ. so PointXY indicates a 2 dimension space, and PointXYZ a three dimension space.

Instances

Instances details
Functor PostgisGeometry Source # 
Instance details

Defined in Database.Esqueleto.Postgis

Methods

fmap :: (a -> b) -> PostgisGeometry a -> PostgisGeometry b #

(<$) :: a -> PostgisGeometry b -> PostgisGeometry a #

Show point => Show (PostgisGeometry point) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

Eq point => Eq (PostgisGeometry point) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

Methods

(==) :: PostgisGeometry point -> PostgisGeometry point -> Bool #

(/=) :: PostgisGeometry point -> PostgisGeometry point -> Bool #

PersistField (PostgisGeometry PointXY) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistField (PostgisGeometry PointXYZ) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistField (PostgisGeometry PointXYZM) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXY) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXYZ) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXYZM) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

makePolygon :: (Eq point, Show point) => point -> point -> point -> Seq point -> LinearRing point Source #

checks if the first point is the last, and if not so makes it so. this is required for inserting into the database

getPoints :: PostgisGeometry point -> NonEmpty point Source #

unwrap postgis geometry so you can for example return it from an API

functions

st_contains Source #

Arguments

:: SqlExpr (Value (PostgisGeometry a))

geom a

-> SqlExpr (Value (PostgisGeometry a))

geom b

-> SqlExpr (Value Bool) 

Returns TRUE if geometry A contains geometry B. https://postgis.net/docs/ST_Contains.html

st_intersects :: SqlExpr (Value (PostgisGeometry a)) -> SqlExpr (Value (PostgisGeometry a)) -> SqlExpr (Value Bool) Source #

Returns true if two geometries intersect. Geometries intersect if they have any point in common. https://postgis.net/docs/ST_Intersects.html

st_union :: SqlExpr (Value (PostgisGeometry a)) -> SqlExpr (Value (PostgisGeometry a)) Source #

allows union of geometries, eg group a bunch together, for example:

 mCombined <- selectOne $ do
   grid <- from $ table Grid
   pure $ st_union $ grid ^. GridGeom


 select $  do
   unit <- from $ table Unit
   forM_ mCombined $ combined ->
     where_ $ (unit ^. UnitGeom) st_intersects (val $ unValue combined)
   pure unit

points

re-exports

data PointXY #

(GeoPositionWithoutCRS is a catch all for indeterminate CRSs and for expression of positions before a CRS has been determined

Constructors

PointXY 

Fields

Instances

Instances details
Generic PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXY = D1 ('MetaData "PointXY" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXY" 'PrefixI 'True) (S1 ('MetaSel ('Just "_xyX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double)))

Methods

from :: PointXY -> Rep PointXY x #

to :: Rep PointXY x -> PointXY #

Show PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXY -> () #

Eq PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

(==) :: PointXY -> PointXY -> Bool #

(/=) :: PointXY -> PointXY -> Bool #

PersistField PointXY Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql PointXY Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistField (PostgisGeometry PointXY) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXY) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

type Rep PointXY 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXY = D1 ('MetaData "PointXY" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXY" 'PrefixI 'True) (S1 ('MetaSel ('Just "_xyX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double)))

data PointXYZ #

Constructors

PointXYZ 

Fields

Instances

Instances details
Generic PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZ = D1 ('MetaData "PointXYZ" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXYZ" 'PrefixI 'True) (S1 ('MetaSel ('Just "_xyzX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: (S1 ('MetaSel ('Just "_xyzY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzZ") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double))))

Methods

from :: PointXYZ -> Rep PointXYZ x #

to :: Rep PointXYZ x -> PointXYZ #

Show PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXYZ -> () #

Eq PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

PersistField (PostgisGeometry PointXYZ) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXYZ) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

type Rep PointXYZ 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZ = D1 ('MetaData "PointXYZ" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXYZ" 'PrefixI 'True) (S1 ('MetaSel ('Just "_xyzX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: (S1 ('MetaSel ('Just "_xyzY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzZ") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double))))

data PointXYZM #

Constructors

PointXYZM 

Fields

Instances

Instances details
Generic PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZM = D1 ('MetaData "PointXYZM" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXYZM" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_xyzmX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzmY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double)) :*: (S1 ('MetaSel ('Just "_xyzmZ") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzmM") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double))))
Show PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXYZM -> () #

Eq PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

PersistField (PostgisGeometry PointXYZM) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

PersistFieldSql (PostgisGeometry PointXYZM) Source # 
Instance details

Defined in Database.Esqueleto.Postgis

type Rep PointXYZM 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZM = D1 ('MetaData "PointXYZM" "Data.Geospatial.Internal.BasicTypes" "geojson-4.1.3-Fo30Mslj2kvEdjJnkBQigF" 'False) (C1 ('MetaCons "PointXYZM" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_xyzmX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzmY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double)) :*: (S1 ('MetaSel ('Just "_xyzmZ") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double) :*: S1 ('MetaSel ('Just "_xyzmM") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Double))))

Orphan instances