Skip to content

Commit 913c1b3

Browse files
authored
Fix outbounds line burn (#951)
* fix out of bounds line burning * no show * omg
1 parent 111d5fa commit 913c1b3

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

src/methods/burning/line.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,23 +115,23 @@ function _burn_line!(f::Function, c::Function, dims::Tuple, line::NamedTuple)
115115
# Ray/Slope calculations
116116
# Straight distance to the first vertical/horizontal grid boundaries
117117
if relstop.x > relstart.x
118-
xoffset = trunc(relstart.x) - relstart.x + 1
119-
xmoves = trunc(Int, relstop.x) - trunc(Int, relstart.x)
118+
xoffset = floor(relstart.x) - relstart.x + 1
119+
xmoves = floor(Int, relstop.x) - floor(Int, relstart.x)
120120
else
121-
xoffset = relstart.x - trunc(relstart.x)
122-
xmoves = trunc(Int, relstart.x) - trunc(Int, relstop.x)
121+
xoffset = relstart.x - floor(relstart.x)
122+
xmoves = floor(Int, relstart.x) - floor(Int, relstop.x)
123123
end
124124
if relstop.y > relstart.y
125-
yoffset = trunc(relstart.y) - relstart.y + 1
126-
ymoves = trunc(Int, relstop.y) - trunc(Int, relstart.y)
125+
yoffset = floor(relstart.y) - relstart.y + 1
126+
ymoves = floor(Int, relstop.y) - floor(Int, relstart.y)
127127
else
128-
yoffset = relstart.y - trunc(relstart.y)
129-
ymoves = trunc(Int, relstart.y) - trunc(Int, relstop.y)
128+
yoffset = relstart.y - floor(relstart.y)
129+
ymoves = floor(Int, relstart.y) - floor(Int, relstop.y)
130130
end
131131
manhattan_distance = xmoves + ymoves
132132

133133
# Int starting points for the line. +1 converts to julia indexing
134-
j, i = trunc(Int, relstart.x) + 1, trunc(Int, relstart.y) + 1 # Int
134+
j, i = floor(Int, relstart.x) + 1, floor(Int, relstart.y) + 1 # Int
135135

136136
n_on_line = 0
137137

test/extract.jl

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,10 @@ end
211211
# Single LineString
212212
@test extract(rast, linestring) isa Vector{T}
213213
@test all(extract(rast_m, linestring) .=== T[
214-
(geometry = (9.0, 0.1), test = 1)
215214
(geometry = (10.0, 0.1), test = 3)
216215
(geometry = (10.0, 0.2), test = missing)
217216
])
218217
@test all(extract(rast_m, linestring; skipmissing=true) .=== Tsm[
219-
(geometry = (9.0, 0.1), test = 1)
220218
(geometry = (10.0, 0.1), test = 3)
221219
])
222220

@@ -227,11 +225,8 @@ end
227225
extract(rast_m, fc; skipmissing=true, threaded=true) ==
228226
extract(rast_m, linestrings; skipmissing=true) ==
229227
extract(rast_m, linestrings; skipmissing=true, threaded=true) == Tsm[
230-
(geometry = (9.0, 0.1), test = 1)
231228
(geometry = (10.0, 0.1), test = 3)
232-
(geometry = (9.0, 0.1), test = 1)
233229
(geometry = (10.0, 0.1), test = 3)
234-
(geometry = (9.0, 0.1), test = 1)
235230
(geometry = (10.0, 0.1), test = 3)
236231
]
237232

@@ -241,35 +236,33 @@ end
241236
extract(rast_m, fc; skipmissing=false, threaded=true) .===
242237
extract(rast_m, linestrings; skipmissing=false) .===
243238
extract(rast_m, linestrings; skipmissing=false, threaded=true) .=== T[
244-
(geometry = (9.0, 0.1), test = 1)
245239
(geometry = (10.0, 0.1), test = 3)
246240
(geometry = (10.0, 0.2), test = missing)
247-
(geometry = (9.0, 0.1), test = 1)
248241
(geometry = (10.0, 0.1), test = 3)
249242
(geometry = (10.0, 0.2), test = missing)
250-
(geometry = (9.0, 0.1), test = 1)
251243
(geometry = (10.0, 0.1), test = 3)
252244
(geometry = (10.0, 0.2), test = missing)
253245
])
254246

255247
@test extract(rast_m, linestrings; skipmissing=true, flatten=false) isa Vector{Vector{Tsm}}
256248
@test extract(rast_m, linestrings; skipmissing=true, flatten=false) ==
257249
extract(rast_m, linestrings; skipmissing=true, flatten=false, threaded=true) == Vector{Tsm}[
258-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3)],
259-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3)],
260-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3)],
250+
[(geometry = (10.0, 0.1), test = 3)],
251+
[(geometry = (10.0, 0.1), test = 3)],
252+
[(geometry = (10.0, 0.1), test = 3)],
261253
]
262254

263255
# Nested Vector holding missing needs special handling to check equality
264256
@test extract(rast_m, linestrings; skipmissing=false, flatten=false) isa Vector{Vector{T}}
265257
ref = Vector{T}[
266-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)] ,
267-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)],
268-
[(geometry = (9.0, 0.1), test = 1), (geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)],
258+
[(geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)] ,
259+
[(geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)],
260+
[(geometry = (10.0, 0.1), test = 3), (geometry = (10.0, 0.2), test = missing)],
269261
]
270262
matching(a, b) = all(map(===, a, b))
271263
@test all(map(matching, extract(rast_m, linestrings; skipmissing=false, flatten=false, threaded=false), ref))
272264
@test all(map(matching, extract(rast_m, linestrings; skipmissing=false, flatten=false, threaded=true), ref))
265+
273266
end
274267

275268
@testset "Extract a line" begin

test/methods.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ end
364364
@test !zonal(x -> x isa Raster, rast; of=polygon, skipmissing=true)
365365
@test zonal(x -> x isa Raster, rast; of=polygon, skipmissing=false)
366366
end
367+
367368
end
368369

369370
@testset "zonal return missing" begin

0 commit comments

Comments
 (0)