Releases: JuliaGeo/GeometryOps.jl
v0.1.31
GeometryOps v0.1.31
- Add Voronoi tesselation (new function
voronoi) thanks to @skygering! Uses DelaunayTriangulation.jl for 2D planar Voronoi tessellation, returning a vector of polygons in the order of the input points. - Allow table rows and features in geometric predicates (
intersects, contains, disjoint, etc.) such that you can doThis opens the road to allowing operations likesubset = filter(df) do row GO.intersects(row, region) # Look, no .geometry end # or, even cleaner, subset = filter(GO.intersects(region), df)
GO.Filter(for example) earlier, which would let GeometryOps automatically take care of preparing geometry for you to get the fastest possible computation. - Fix simplify for small LinearRings
- Fix type constraint warning in
smooth
Merged pull requests:
- Add a basic voronoi function (#327) (@asinghvi17)
- allow table rows in relations, and reorganise boilerplate (#347) (@rafaqz)
- Bump version from 0.1.30 to 0.1.31 (#350) (@asinghvi17)
- Fix type constraint in _smooth function (#354) (@milankl)
- Sg/voronoi (#355) (@skygering)
- add an AGENTS.md for the codebase (#358) (@asinghvi17)
- Add badge for blazingly fast performance (#359) (@asinghvi17)
- Fix
crossesandoverlapsto follow geom relations convention (#360) (@asinghvi17)
v0.1.30
GeometryOps v0.1.30
- New
smoothfunction to smooth out geometry. Currently uses Chaikin's corner cutting algorithm by default, and works on planar and spherical manifolds. Geodesic incoming! See the doc page for more info, or the docstring ofGO.smooth.
- One patch to
polygonizeto fix a corner case, but we discovered several more in that process. Efforts ongoing to fix.
Merged pull requests:
- Fix polygonize creating self-intersecting polygons instead of holes (#339) (@asinghvi17)
- Add a
smoothfunction (#346) (@rafaqz)
Closed issues:
polygonizecreates invalid polygons (#338)
v0.1.29
GeometryOps v0.1.29
Added spherical / geodesic methods for perimeter (also called length in other geospatial frameworks) and geodesic method via Proj.jl for area. Access by:
import GeometryOps as GO
GO.perimeter(geom) # planar
GO.perimeter(GO.Planar(), geom)
GO.perimeter(GO.Spherical(), geom)
GO.perimeter(GO.Geodesic(), geom)area does not have a spherical representation yet, that is a bit more complicated to get right but coming soon:
GO.area(geom) # planar
GO.area(GO.Planar(), geom)
GO.area(GO.Geodesic(), geom) # requires Proj.jl to be loadedMerged pull requests:
- Implement a perimeter method for all manifolds (#334) (@asinghvi17)
v0.1.28
GeometryOps v0.1.28
Introduced a new UnitSpherical submodule which has some experimental utilities to handle geometry on the unit sphere.
Specifically, it has a UnitSphericalPoint type and conversions to and from that to long lat, as well as a SphericalCap type that can serve as a bounding box.
This still needs to be documented and tested but will be the base for our native spherical capabilities in the future.
Merged pull requests:
- experimental UnitSpherical module that can express geometry on unit sphere (#285) (@asinghvi17)
v0.1.27
GeometryOps v0.1.27
Added (optional) tree based acceleration to polygon intersection queries, this is doable by passing in e.g. AutoAccelerator() or SingleSTRTree() or SingleNaturalTree() as the first argument to the clipping function, like intersection, union, or difference.
Merged pull requests:
- Tree based acceleration for polygon clipping / boolean ops (#274) (@asinghvi17)
- Add merge function (#332) (@meggart)
Closed issues:
- Precompilation error (#326)
v0.1.26
GeometryOps v0.1.26
Merged pull requests:
- Remove conflicting
simplify()method definition (#325) (@ConnectedSystems)
v0.1.25
GeometryOps v0.1.25
Merged pull requests:
- Fixes for Vitepress 0.2 (#317) (@asinghvi17)
- Create a specific exception type for
enforce(#319) (@asinghvi17) - Fix errors when building docs (#322) (@asinghvi17)
- Bump patch versions (#323) (@asinghvi17)
Closed issues:
- Registration issue (#324)
v0.1.24
GeometryOps v0.1.24
Merged pull requests:
- Documentation improvements (#170) (@asinghvi17)
- Update benchmark code (#270) (@asinghvi17)
- Implement an Applicator WithTrait (#305) (@asinghvi17)
- Add applicator tests, fix small bug in WithXYZM (#306) (@asinghvi17)
- Notes on writing performant code (#307) (@asinghvi17)
- New patch versions for Ops and Core (#308) (@asinghvi17)
- add a DataFrames extension for better table reconstruction (#312) (@asinghvi17)
Closed issues:
- buffering (#31)
- Implement what we can, wrap what we can't (#76)
- Lazy
apply(#82) - "Prepared geometry" and other such wrapper types (#87)
- Point in polygon check failing on malformed input (#96)
- Curried predicate functions (#148)
- Beware: SortTileRecursiveTree does not always return comprehensive results (#156)
- Which earth radius to use (#221)
- Can we make global named constants for all the numeric constants in Core? (#232)
initnot documented for applyreduce (#243)- applyreduce has 1 allocation where sum does not (#244)
v0.1.23
GeometryOps v0.1.23
v0.1.22
GeometryOps v0.1.22
- Add extent predicates (extent-geometry and extent-extent)
- Add a FosterHormannClipping algorithm that parametrizes and controls polygon clipping. This framework allows us to implement tree acceleration etc. later as well.
Merged pull requests:
- update the segmentize docs to reflect manifold changes (#279) (@asinghvi17)
Closed issues:
- Introducing a spatial index interface (#131)