Skip to content

Commit 2fa2f3b

Browse files
committed
Fix for empty geometries.
1 parent f427af4 commit 2fa2f3b

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/fallbacks.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ getexterior(t::AbstractPolygonTrait, geom) = getring(t, geom, 1)
4343
nhole(t::AbstractPolygonTrait, geom) = nring(t, geom) - 1
4444
gethole(t::AbstractPolygonTrait, geom) = (getgeom(t, geom, i) for i in 2:ngeom(t, geom))
4545
gethole(t::AbstractPolygonTrait, geom, i) = getring(t, geom, i + 1)
46-
npoint(t::AbstractPolygonTrait, geom) = sum(npoint(p) for p in getring(t, geom))
46+
npoint(t::AbstractPolygonTrait, geom) = sum(npoint(p) for p in getring(t, geom); init=0)
4747
getpoint(t::AbstractPolygonTrait, geom) = flatten((p for p in getpoint(r)) for r in getring(t, geom))
4848

4949
## MultiPoint
@@ -55,16 +55,16 @@ getpoint(t::AbstractMultiPointTrait, geom, i) = getgeom(t, geom, i)
5555
nlinestring(t::AbstractMultiCurveTrait, geom) = ngeom(t, geom)
5656
getlinestring(t::AbstractMultiCurveTrait, geom) = getgeom(t, geom)
5757
getlinestring(t::AbstractMultiCurveTrait, geom, i) = getgeom(t, geom, i)
58-
npoint(t::AbstractMultiCurveTrait, geom) = sum(npoint(ls) for ls in getgeom(t, geom))
58+
npoint(t::AbstractMultiCurveTrait, geom) = sum(npoint(ls) for ls in getgeom(t, geom); init=0)
5959
getpoint(t::AbstractMultiCurveTrait, geom) = flatten((p for p in getpoint(ls)) for ls in getgeom(t, geom))
6060

6161
## MultiPolygon
6262
npolygon(t::AbstractMultiPolygonTrait, geom) = ngeom(t, geom)
6363
getpolygon(t::AbstractMultiPolygonTrait, geom) = getgeom(t, geom)
6464
getpolygon(t::AbstractMultiPolygonTrait, geom, i) = getgeom(t, geom, i)
65-
nring(t::AbstractMultiPolygonTrait, geom) = sum(nring(p) for p in getpolygon(t, geom))
65+
nring(t::AbstractMultiPolygonTrait, geom) = sum(nring(p)::Int for p in getpolygon(t, geom); init=0)
6666
getring(t::AbstractMultiPolygonTrait, geom) = flatten((r for r in getring(p)) for p in getpolygon(t, geom))
67-
npoint(t::AbstractMultiPolygonTrait, geom) = sum(npoint(r) for r in getring(t, geom))
67+
npoint(t::AbstractMultiPolygonTrait, geom) = sum(npoint(r)::Int for r in getring(t, geom); init=0)
6868
getpoint(t::AbstractMultiPolygonTrait, geom) = flatten((p for p in getpoint(r)) for r in getring(t, geom))
6969

7070
## Surface
@@ -130,6 +130,7 @@ function calc_extent(t::AbstractPointTrait, geom)
130130
end
131131
end
132132
function calc_extent(t::AbstractGeometryTrait, geom)
133+
isempty(t, geom) && return nothing
133134
points = getpoint(t, geom)
134135
X = extrema(p -> x(p), points)
135136
Y = extrema(p -> y(p), points)

0 commit comments

Comments
 (0)