Changelog of @hackage/esqueleto-postgis 4.1.0

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.