版本发布 8
## GeometryOps v0.1.41 [Diff since v0.1.40](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.40...v0.1.41) **Merged pull requests:** - Bump codecov/codecov-action from 6.0.0 to 7.0.0 (#409) (@dependabot[bot]) - Fix type instability in `area` for `NaiveTriangulatedSphericalArea` (#412) (@asinghvi17) - Finish the transition to GOTestHelpers, update agents.md (#413) (@asinghvi17) - Tutorial revisions (#415) (@willbodeau) - Bump actions/checkout from 6 to 7 (#423) (@dependabot[bot]) - Fix spherical Sutherland-Hodgman dropping thin grazing slivers (#425) (@asinghvi17) **Closed issues:** - area(::Spherical, geom) infers Any: boxed multi-method local closure (_polygon_area) in NaiveTriangulatedSphericalArea (#407)
## GeometryOps v0.1.35 [Diff since v0.1.34](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.34...v0.1.35) PR#376 - Spherical Sutherland-Hodgman intersection (accessible by `GO.intersection(GO.ConvexConvexSutherlandHodgman(GO.Spherical()), p1, p2)`. Returns a single polygon which _may_ have fake vertices at the north pole (since we don't have a polygon empty concept yet). - Improvements to `UnitSpherical`: - Spherical predicates (orient, arc intersection) - Makie plotting recipe (in extension) for spherical caps!
## GeometryOps v0.1.34 [Diff since v0.1.33](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.33...v0.1.34) - Fixed init and threaded handling bugs in applyreduce ([#372]((https://github.com/JuliaGeo/GeometryOps.jl/pull/372), [#377]((https://github.com/JuliaGeo/GeometryOps.jl/pull/377)) - Added a new intersection algorithm for the case of two convex polygons (the Sutherland-Hodgman algorithm). Yields a ~10-20% speedup for quad-quad intersection, and easy to adapt to spherical too (coming in the next release!) ([#375](https://github.com/JuliaGeo/GeometryOps.jl/pull/375)) - Added a `minimum_bounding_circle` function, currently using Welzl's recursive algorithm [#370](https://github.com/JuliaGeo/GeometryOps.jl/pull/370) **Merged pull requests:** - Minimum bounding circle (via Welzl's recursive algorithm) (#370) (@asinghvi17) - Fix `init` handling in applyreduce (issue #353) (#372) (@asinghvi17) - Use workspaces for test, remove CompatHelper (#374) (@visr) - Add Sutherland-Hodgman convex-convex polygon intersection (#375) (@asinghvi17) - [WIP] Provide correct threaded kwarg when applying to iterables (#377) (@asinghvi17) - Fix CI on 1.10 (#378) (@asinghvi17) **Closed issues:** - `init` being used in applyreduce when I don't think it should (#353)
## GeometryOps v0.1.33 [Diff since v0.1.32](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.32...v0.1.33) - Added a method for spherical area using Girard's method (https://github.com/JuliaGeo/GeometryOps.jl/pull/366). Requires long/lat or UnitSphericalPoints as input. **Merged pull requests:** - Spherical area using Girard's method (#366) (@asinghvi17)
## GeometryOps v0.1.31 [Diff since v0.1.30](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.30...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 do ```julia subset = filter(df) do row GO.intersects(row, region) # Look, no .geometry end # or, even cleaner, subset = filter(GO.intersects(region), df) ``` This opens the road to allowing operations like `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 `crosses` and `overlaps` to follow geom relations convention (#360) (@asinghvi17)
## GeometryOps v0.1.29 [Diff since v0.1.28](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.28...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: ```julia 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: ```julia GO.area(geom) # planar GO.area(GO.Planar(), geom) GO.area(GO.Geodesic(), geom) # requires Proj.jl to be loaded ``` **Merged pull requests:** - Implement a perimeter method for all manifolds (#334) (@asinghvi17)
## GeometryOps v0.1.26 [Diff since v0.1.25](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.25...v0.1.26) **Merged pull requests:** - Remove conflicting `simplify()` method definition (#325) (@ConnectedSystems)
## GeometryOps v0.1.25 [Diff since v0.1.24](https://github.com/JuliaGeo/GeometryOps.jl/compare/v0.1.24...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)