speed up large polygon intersections using STRtrees. #821
CI.yml
on: pull_request
Documentation
9m 25s
Doctests
1m 40s
Matrix: test
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
```
|
|
|
|
|
|