# Change log for esqueleto-postgis project
## Version 4.1.0
+ Add 95 PostGIS function bindings covering the bulk of the PostGIS 3.6 geometry API.
+ Geometry constructors: `st_collect`, `st_makeenvelope`, `st_makeline`, `st_makepolygon_line`.
+ Geometry accessors: `st_boundary`, `st_coorddim`, `st_endpoint`, `st_exteriorring`,
`st_geometryn`, `st_geometrytype`, `st_interiorringn`, `st_iscollection`, `st_isempty`,
`st_ispolygonccw`, `st_ispolygoncw`, `st_isring`, `st_m`, `st_ndims`, `st_nrings`,
`st_numinteriorrings`, `st_numpoints`, `st_pointn`, `st_startpoint`, `st_z`.
+ Geometry editors: `st_addpoint`, `st_collectionextract`, `st_flipcoordinates`,
`st_force2d`, `st_force3d`, `st_force4d`, `st_forcecollection`,
`st_forcepolygonccw`, `st_forcepolygoncw`, `st_multi`, `st_normalize`,
`st_reverse`, `st_segmentize`, `st_setpoint`, `st_snaptogrid`, `st_snap`.
+ Geometry validation: `st_makevalid`, `st_isvalidreason`.
+ SRS: `st_setsrid`.
+ Geometry output: `st_astext`, `st_asgeojson`, `st_asewkt`, `st_geohash`.
+ Spatial relationships: `st_3dintersects`, `st_relate`, `st_orderingequals`,
`st_dfullywithin`, `st_pointinsidecircle`.
+ Measurements: `st_angle`, `st_closestpoint`, `st_3dclosestpoint`, `st_3ddistance`,
`st_distancesphere`, `st_frechetdistance`, `st_hausdorffdistance`, `st_length2d`,
`st_3dlength`, `st_longestline`, `st_3dlongestline`, `st_3dmaxdistance`,
`st_minimumclearance`, `st_shortestline`, `st_3dshortestline`.
+ Overlay functions: `st_symdifference`, `st_unaryunion`, `st_split`, `st_node`.
+ Geometry processing: `st_buildarea`, `st_chaikinsmoothing`, `st_concavehull`,
`st_delaunaytriangles`, `st_generatepoints`, `st_geometricmedian`, `st_linemerge`,
`st_minimumboundingcircle`, `st_offsetcurve`, `st_reduceprecision`, `st_sharedpaths`,
`st_simplify`, `st_simplifypreservetopology`, `st_voronoilines`, `st_voronoipolygons`.
+ Affine transformations: `st_translate`, `st_scale`, `st_rotate`, `st_rotatex`, `st_rotatez`.
+ Bounding box: `st_expand`.
+ Linear referencing: `st_lineinterpolatepoint`, `st_linelocatepoint`, `st_linesubstring`.
+ Integration test for every new function.
## Version 4.0.3
+ add comments on x and y, z and m.
## Version 4.0.2
+ fix bug where st_point and friends did not respect spatialType.
solved it by always casting them to whatever the user specified.
Added tests for this as well.
## Version 4.0.1
+ Add notes on topology, may save some people a lot of time.
+ Remove flake, use npins
## Version 4.0.0
Hotfix!
+ `st_union` can't work on geography, banned that.
+ `st_intersects` was to strict and worked only on geography
+ add `st_transform_geometry` and `st_transform_geography` to convert between the two.
+ hopefully I've explained the srid system somewhat understandable, it's kinda confusing.
+ restrict `st_contains` to geometry as well .
## Version 3.0.0
* add spatial type, split up postgis from geoemetry.
this will allow us to deal with curveture of earth and other weird SRID's:
consider:
```
converge=# SELECT ST_Distance(
ST_MakePoint(-118.24, 34.05)::geometry, -- LA
ST_MakePoint(-74.00, 40.71)::geometry -- NYC
) as distance_in_km;
distance_in_km
-------------------
44.73849796316367
(1 row)
converge=# SELECT ST_Distance(
ST_MakePoint(-118.24, 34.05)::geography,
ST_MakePoint(-74.00, 40.71)::geography
) / 1000 as distance_in_km;
distance_in_km
--------------------
3944.7358246490203
(1 row)
```
The change is mostly backward compatible,
but I deleted some instances I didn't want to solve.
Furthermore the postgis type is arguably a bit more complicated now.
I did have some minor breakage in the test suite on st_unions:
```
- pure $ st_unions (val (Polygon $ makePolygon (PointXY 0 0) (PointXY 0 2) (PointXY 2 2) $ Seq.fromList [(PointXY 2 0)])) $
+ pure $ st_unions @'Geometry (val (Polygon $ makePolygon (PointXY 0 0) (PointXY 0 2) (PointXY 2 2) $ Seq.fromList [(PointXY 2 0)])) $
```
You may need to tell the compiler weather to use geometry or geography.
But then it'll happen correct within the database as well.
We don't allow mixing of the two.
## Version 2.2.0
* add st_dwithin to find stuf within a range
## Version 2.1.0
* add st_unions
## Version 2.0.1
* drop haskell works hedghog dependency
## Version 2.0.0
* Hide irrelevant modules
* delete hex module, use base16 hex approach instead.
* Much better docs that explain what's going on.
## Version 1.2.0
+ re-export point, less annoying to use.
+ adopt wkt-geom package and put it in as a submodule,
original library doesn't appear to be maintained.
this way we're a step closer to stackage.
+ got rid of the internal convention,
it goes against pvp. If we want some specialized
usage package I should split off a core package instead.
For now I don't care I don't think I'm not changing those
functions anyway.
+ also ported over the test suite
+ swap out bytestring-base16 for base16, which appears maintained.
## Version 1.1.0
+ Add st_union
+ add getPoitns to escape the postgis geometry more easily.
+ bump bounds
## Version 1.0.1
+ fix insane bounds by cabal genbounds.
I think this was caused due to running it from the flake which
takes a bunch of outdated packages from stackage.
## Version 1.0.0
+ add st_contains
+ add st_intersects
+ add st_point
+ add custom datatype to map to persistent.
+ bunch of roundtrip tests and sanity tests for added functions
## Version 0.0.0
import [template](https://github.com/jappeace/template).