packages feed

esqueleto-postgis-4.1.0: Changelog.md

# 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).