From 8c8532387ff3b7c263e74dbd2e62379debf49445 Mon Sep 17 00:00:00 2001 From: Felix Cremer Date: Tue, 13 Jun 2023 15:48:38 +0200 Subject: [PATCH] Add Extents.extent method for Rect2 This has been pirated in Tyler and should rather live in GeometryBasics. --- Project.toml | 2 ++ src/GeometryBasics.jl | 1 + src/geointerface.jl | 5 +++++ test/geointerface.jl | 7 +++++++ test/runtests.jl | 1 + 5 files changed, 16 insertions(+) diff --git a/Project.toml b/Project.toml index c91051ca..ac12a1c6 100644 --- a/Project.toml +++ b/Project.toml @@ -5,6 +5,7 @@ version = "0.4.7" [deps] EarCut_jll = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +Extents = "411431e0-e8b7-467b-b5e0-f676ba4f2910" GeoInterface = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" IterTools = "c8e1da08-722c-5040-9ed9-7db0dc04731e" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" @@ -14,6 +15,7 @@ Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" [compat] EarCut_jll = "2" +Extents = "0.1" GeoInterface = "1.0.1" IterTools = "1.3.0" StaticArrays = "0.12, 1.0" diff --git a/src/GeometryBasics.jl b/src/GeometryBasics.jl index 8535cf1f..c375acc7 100644 --- a/src/GeometryBasics.jl +++ b/src/GeometryBasics.jl @@ -2,6 +2,7 @@ module GeometryBasics using StaticArrays, Tables, StructArrays, IterTools, LinearAlgebra using GeoInterface +import Extents using EarCut_jll using Base: @propagate_inbounds diff --git a/src/geointerface.jl b/src/geointerface.jl index 698c1690..63b5b71b 100644 --- a/src/geointerface.jl +++ b/src/geointerface.jl @@ -149,3 +149,8 @@ function GeoInterface.convert(::Type{MultiPolygon}, type::MultiPolygonTrait, geo t = PolygonTrait() return MultiPolygon(map(poly -> GeoInterface.convert(Polygon, t, poly), getgeom(geom))) end + +function Extents.extent(rect::Rect2) + (xmin, ymin), (xmax, ymax) = extrema(rect) + return Extents.Extent(X=(xmin, xmax), Y=(ymin, ymax)) +end \ No newline at end of file diff --git a/test/geointerface.jl b/test/geointerface.jl index a0380c56..a304a5bb 100644 --- a/test/geointerface.jl +++ b/test/geointerface.jl @@ -115,3 +115,10 @@ end @test length(multipolygon_hole_gb[1].interiors) == 0 @test length(multipolygon_hole_gb[2].interiors) == 1 end + +@testset "Extent" begin + rect = Rect2f(Vec2f(0), Vec2f(1.0)) + ext = extent(rect) + @test ext.X == (0.0f0, 1.0f0) + @test ext.Y == (0.0f0, 1.0f0) +end \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index d3369239..ebc45825 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,6 +4,7 @@ using LinearAlgebra using GeometryBasics: attributes using GeoInterface using GeoJSON +using Extents @testset "GeometryBasics" begin