Skip to content

speed up large polygon intersections using STRtrees. #821

speed up large polygon intersections using STRtrees.

speed up large polygon intersections using STRtrees. #821

Triggered via pull request February 15, 2025 16:39
Status Failure
Total duration 9m 50s
Artifacts

CI.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 13 warnings
Doctests
Process completed with exit code 1.
Julia 1.9 - ubuntu-latest - x64 - pull_request
Process completed with exit code 1.
Julia 1 - ubuntu-latest - x64 - pull_request
Process completed with exit code 1.
Julia nightly - ubuntu-latest - x64 - pull_request
Process completed with exit code 1.
Documentation: src/methods/clipping/cut.jl#L47
doctest failure in ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:47-59 ```jldoctest import GeoInterface as GI, GeometryOps as GO poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]]) line = GI.Line([(5.0, -5.0), (5.0, 15.0)]) cut_polys = GO.cut(poly, line) GI.coordinates.(cut_polys) # output 2-element Vector{Vector{Vector{Vector{Float64}}}}: [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]] [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]] ``` Subexpression: import GeoInterface as GI, GeometryOps as GO poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]]) line = GI.Line([(5.0, -5.0), (5.0, 15.0)]) cut_polys = GO.cut(poly, line) GI.coordinates.(cut_polys) Evaluated output: ERROR: MethodError: no method matching _build_a_list(::Type{Float64}, ::GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) The function `_build_a_list` exists, but no method is defined for this combination of argument types. Closest candidates are: _build_a_list(!Matched::GeometryOps.FosterHormannClipping{M, A}, !Matched::Type{T}, ::Any, !Matched::Any; exact) where {T, M, A} @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/clipping_processor.jl:346 Stacktrace: [1] _cut(::Type{Float64}, ::GeoInterface.PolygonTrait, poly::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, ::GeoInterface.LineTrait, line::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:68 [2] cut(geom::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, line::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::Type{Float64}) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:61 [3] top-level scope @ none:1 Expected output: 2-element Vector{Vector{Vector{Vector{Float64}}}}: [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]] [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]] diff = Warning: Diff output requires color. 2-element Vector{Vector{Vector{Vector{Float64}}}}: [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]] [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]]ERROR: MethodError: no method matching _build_a_list(::Type{Float64}, ::GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) The function `_build_a_list` exists, but no method is defined for this combination of argument types. Closest candidates are: _build_a_list(!Matched::GeometryOps.FosterHormannClipping{M, A}, !Matched::Type{T}, ::Any, !Matched::Any; exact) where {T, M, A} @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/clipping_processor.jl:346 Stacktrace: [1] _cut(::Type{Float64}, ::GeoInterface.PolygonTrait, poly::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, ::GeoInterface.LineTrait, line::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:68 [2] cut(geom::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing
Julia 1.9 - ubuntu-latest - x64 - pull_request
Julia depot registries already exist. Skipping restoring of cached registries to avoid potential merge conflicts when updating. Please ensure that `julia-actions/cache` precedes any workflow steps which add registries.
Julia 1 - ubuntu-latest - x64 - pull_request
Julia depot registries already exist. Skipping restoring of cached registries to avoid potential merge conflicts when updating. Please ensure that `julia-actions/cache` precedes any workflow steps which add registries.
Julia nightly - ubuntu-latest - x64 - pull_request
Julia depot registries already exist. Skipping restoring of cached registries to avoid potential merge conflicts when updating. Please ensure that `julia-actions/cache` precedes any workflow steps which add registries.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
duplicate docs found for 'GeometryOps.reproject' in src/api.md:59-61 ```@autodocs Modules = [GeometryOps] ```
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
failed to run `@example` block in src/source/methods/clipping/cut.md:18-31 ```@example cut import GeoInterface as GI, GeometryOps as GO using CairoMakie using Makie poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]]) line = GI.Line([(5.0, -5.0), (5.0, 15.0)]) cut_polys = GO.cut(poly, line) f, a, p1 = Makie.poly(collect(GI.getpoint(cut_polys[1])); color = (:blue, 0.5)) Makie.poly!(collect(GI.getpoint(cut_polys[2])); color = (:orange, 0.5)) Makie.lines!(GI.getpoint(line); color = :black) f ``` exception = MethodError: no method matching _build_a_list(::Type{Float64}, ::GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) The function `_build_a_list` exists, but no method is defined for this combination of argument types. Closest candidates are: _build_a_list(!Matched::GeometryOps.FosterHormannClipping{M, A}, !Matched::Type{T}, ::Any, !Matched::Any; exact) where {T, M, A} @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/clipping_processor.jl:346 Stacktrace: [1] _cut(::Type{Float64}, ::GeoInterface.PolygonTrait, poly::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, ::GeoInterface.LineTrait, line::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:68 [2] cut(geom::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, line::GeoInterface.Wrappers.Line{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::Type{Float64}) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/cut.jl:61 [3] top-level scope @ cut.md:25 [4] eval @ ./boot.jl:430 [inlined] [5] #60 @ ~/.julia/packages/Documenter/iwb7N/src/expander_pipeline.jl:803 [inlined] [6] cd(f::Documenter.var"#60#62"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [7] (::Documenter.var"#59#61"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/iwb7N/src/expander_pipeline.jl:802 [8] (::IOCapture.var"#5#9"{DataType, Documenter.var"#59#61"{Documenter.Page, Module, Expr}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/Y5rEA/src/IOCapture.jl:170 [9] with_logstate(f::IOCapture.var"#5#9"{DataType, Documenter.var"#59#61"{Documenter.Page, Module, Expr}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}}, logstate::Base.CoreLogging.LogState) @ Base.CoreLogging ./logging/logging.jl:522 [10] with_logger(f::Function, logger::Base.CoreLogging.ConsoleLogger) @ Base.CoreLogging ./logging/logging.jl:632 [11] capture(f::Documenter.var"#59#61"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool, passthrough::Bool, capture_buffer::IOBuffer, io_context::Vector{Any}) @ IOCapture ~/.julia/packages/IOCapture/Y5rEA/src/IOCapture.jl:167 [12] runner(::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/iwb7N/src/expander_pipeline.jl:801
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
failed to run `@example` block in src/source/transformations/correction/intersecting_polygons.md:39-42 ```@example union-multipoly import GeometryOps as GO GO.fix(multipolygon, corrections = [GO.UnionIntersectingPolygons()]) ``` exception = MethodError: no method matching _find_non_cross_orientation(::GeometryOps.FosterHormannClipping{Planar, GeometryOps.AutoAccelerator}, ::Type{Float64}, ::Vector{GeometryOps.PolyNode{Float64}}, ::Vector{GeometryOps.PolyNode{Float64}}, ::GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}, ::GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}; exact::GeometryOpsCore._True) The function `_find_non_cross_orientation` exists, but no method is defined for this combination of argument types. Closest candidates are: _find_non_cross_orientation(::Any, ::Any, ::Any, ::Any; exact) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/clipping_processor.jl:895 Stacktrace: [1] _union(alg::GeometryOps.FosterHormannClipping{Planar, GeometryOps.AutoAccelerator}, ::TraitTarget{GeoInterface.PolygonTrait}, ::Type{Float64}, ::GeoInterface.PolygonTrait, poly_a::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}, ::GeoInterface.PolygonTrait, poly_b::GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}; exact::GeometryOpsCore._True, kwargs::@kwargs{}) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:76 [2] _union @ ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:60 [inlined] [3] #union#108 @ ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:38 [inlined] [4] union (repeats 2 times) @ ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:35 [inlined] [5] #union#109 @ ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:49 [inlined] [6] union @ ~/work/GeometryOps.jl/GeometryOps.jl/src/methods/clipping/union.jl:46 [inlined] [7] (::UnionIntersectingPolygons)(::GeoInterface.MultiPolygonTrait, multipoly::GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.jl/src/transformations/correction/intersecting_polygons.jl:75 [8] GeometryCorrection @ ~/work/GeometryOps.jl/GeometryOps.jl/src/transformations/correction/geometry_correction.jl:43 [inlined] [9] _apply @ ~/work/GeometryOps.jl/GeometryOps.jl/GeometryOpsCore/src/apply.jl:308 [inlined] [10] #_apply#12 @ ~/work/GeometryOps.jl/GeometryOps.jl/GeometryOpsCore/src/apply.jl:135 [inlined] [11] apply(f::UnionIntersectingPolygons, target::Type, geom::GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}; calc_extent::Bool, threaded::Bool, kw::@kwargs{}) @ GeometryOpsCore ~/work/GeometryOps.jl/GeometryOps.jl/GeometryOpsCore/src/apply.jl:131 [12] apply @ ~/work/GeometryOps.jl/GeometryOps.jl/GeometryOpsCore/src/apply.jl:126 [inlined] [13] fix(geometry::GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}; corrections::Vector{UnionIntersectingPolygons}, kwargs::@kwargs{}) @ GeometryOps ~/work/GeometryOps.jl/GeometryOps.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
duplicate docs found for '!!! warning "Missing docstring." Missing docstring for `LinearSegments`. Check Documenter's build log for details.' in `@docs` block in src/source/transformations/segmentize.md:58-61 ```@docs LinearSegments GeodesicSegments ```
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
duplicate docs found for '!!! warning "Missing docstring." Missing docstring for `GeodesicSegments`. Check Documenter's build log for details.' in `@docs` block in src/source/transformations/segmentize.md:58-61 ```@docs LinearSegments GeodesicSegments ```
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
Cannot resolve @ref for md"[Primitive Functions](@ref Primitive-functions)" in src/introduction.md. - No docstring found in doc for binding `Base.-`.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
Cannot resolve @ref for md"[`Manifold`](@ref)" in src/explanations/manifolds.md. - No docstring found in doc for binding `GeometryOpsCore.Manifold`.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
Cannot resolve @ref for md"[`Planar`](@ref)" in src/explanations/manifolds.md. - No docstring found in doc for binding `GeometryOpsCore.Planar`.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
Cannot resolve @ref for md"[`Spherical`](@ref)" in src/explanations/manifolds.md. - No docstring found in doc for binding `GeometryOpsCore.Spherical`.
Documentation: ../../../.julia/packages/Documenter/iwb7N/src/utilities/utilities.jl#L46
Cannot resolve @ref for md"[`Geodesic`](@ref)" in src/explanations/manifolds.md. - No docstring found in doc for binding `GeometryOpsCore.Geodesic`.