This topic will be used for future release updates of the GeoStats.jl framework. Past topics can be found at v0.10, v0.11, v0.14, v0.18, v0.24, v0.33 and v0.36.
OVERVIEW
GeoStats.jl v0.40 is out with revised documentation using Makie.jl recipes, new algorithms for simulation of spatial point patterns, and important improvements in geometric algorithms.
This is the last release with support for Julia v1.6 (LTS), next releases will require Julia v1.9.
RELEASE NOTES
FEATURES
- New
Repair
transforms for fixing ill-formed meshes and geometries. These repair operations are parameterized with a number (e.g.Repair{0}
) that is documented here. - Parameterization of geometries meaning that now one can call geometries as
segment(t)
with t \in [0,1] orquad(u, v)
with (u, v) \in [0,1]^2 orhex(u, v, w)
with (u, v, w) \in [0,1]^3 to get points in these geometries. The functionisparameterized
can be used to check if an implementation is available for a given geometry. - New
JarvisMarch
convex hull algorithm for 2D point sets besides the existingGrahamScan
algorithm. This algorithm has O(nh) complexity where n is the number of points and h is the number of points in the hull. Compare it with theGrahamScan
algorithm, which has O(n^2) complexity and you can see the speed up clearly when the convex hull has a very small number of vertices compared to the original point set (see docs). - New
merge
operation between geometries and meshes. - New
vertex
function to retrieve a single vertex of aPolytope
geometry orDomain
. - New
pointify
function to extract โverticesโ of geometries even when they are not expressed in terms of a finite set of vertices. This function was useful to generalize some transforms and algorithms. - New
Primitive
geometries such asCone
,ConeSurface
,Torus
(see docs). - New
MultiGridPath
to traverseGrid
subtypes in a hierarchical order. - New
Selinger
simplification algorithm to simplify polygons and closed chains (see docs). - New
Potrace
transform to trace closed regions with holes in raster images (see docs). - New
Detrend
transform to remove trends from geospatial data over any domain (see docs). - New inhomogeneous
PoissonProcess
,InhibitionProcess
andClusterProcess
(see docs)
IMPROVEMENTS
- Improvements to the default triangulation algorithm for polygons, which now performs a couple of repairs to the vertices before actual triangulation. This improvement was implemented to handle real data in agriculture projects at Arpeggeoยฎ.
- Less memory allocations in
Chain
algorithms that are now specialized forRing
andRope
subtypes. - Various implementations of missing methods for various geometry types such as discretization, sampling, convexhull, etc.
hasintersect
methods for all 0D, 1D and 2D geometries. This means that we can now easily filter a heterogeneous collection of geometries that intersect any other geometry in 2D space (see docs).Point
is now aGeometry
subtype. This enabled the generalization of a few algorithms in the stack.Segment
is now aChain
which is equivalent to aPolytope{1}
.- Improvement of IO methods for geometries to display more meaningful names in interactive use.
- Support for progress logging in all geostatistical simulation solvers.
- The new documentation now makes extensive use of the visualization stack built with Makie.jl. The visualization stack built with Plots.jl is already in maintenance mode.
- Various improvements to the GeoTables.jl package that can now load and save all types of geospatial data from disk including shp, geojson, gpkg, kml using pure Julia backends whenever possible. The package also implements fixes to the different backendโs results to improve the experience of end-users who donโt know or wanโt to deal with low-level interfaces.
BREAKING
- Replace passive rotations from ReferenceFrameRotations.jl by active rotations from Rotations.jl
- Replace
Chain
concrete type by an abstract type with two subtypesRing
(for closed chains) andRope
(for open chains). This way the closedness is part of the type, and we can avoid some internal copies of vertices. - Replace
Collection
byGeometrySet
and add support for heterogeneous collections of geometries. This means that points, segments, rings, polygons, etc. can be processed together in some algorithms. - Refactoring of
IntersectionType
to a reduced list of types. This code simplification enabled more flexible intersections with meshes and domain types and also improved maintainability.
Refactoring ofCylinder
andCylinderSurface
constructors for greater usability. - Replace
uniquecoords
byUniqueCoords
transform.
Acknowledgements
Thanks to all contributors that made this release possible
DianaPat jwscook vickydeka lihua-cat @stla @dorn-gerhard @jackbeagley @cserteGT3 @kylebeggs @ErickChacon @mfsch @longemen3000 @hyrodium conordoherty spaette @eliascarv
Would like to support us? Leave a on GitHub if you didnโt already!