This is an interactive page based on more detailed exploration of drone overlaps .
This gives us the opportunity to plug in flight parameters and back-calculate others. For example, give us the size of the photos on the ground given height, the needed drone flight distance for a desired overlap at a given height, or the speed we need to fly at a given height to yield the right overlap given the photo interval.
Overlap is fixed at 80% for the moment.
Warning: Using `by = character()` to perform a cross join was deprecated in dplyr 1.1.0.
ℹ Please use `cross_join()` instead.
import { aq, op } from '@uwdata/arquero'
droned_aq = aq. from (transpose (droned))
dronev_aq = aq. from (transpose (dronev))
dronei_aq = aq. from (transpose (dronei))
distfilter = droned_aq
. params ({
dr : dronetype,
ov : overlap_p,
asp : aspect
})
. filter ((d, $) => op. includes (d. drone , $. dr ))
. filter ((d, $) => op. equal (d. overlap , $. ov ))
. filter ((d, $) => op. includes (d. aspect , $. asp ))
dist_h = distfilter
. params ({
h : height
})
. filter ((d, $) => op. equal (d. altitude_m , $. h ))
vfilter = dronev_aq
. params ({
dr : dronetype,
ov : overlap_p,
asp : aspect,
inter : interval
})
. filter ((d, $) => op. includes (d. drone , $. dr ))
. filter ((d, $) => op. equal (d. overlap , $. ov ))
. filter ((d, $) => op. includes (d. aspect , $. asp ))
. filter ((d, $) => op. equal (d. intervals , $. inter ))
vel_h = vfilter
. params ({
h : height
})
. filter ((d, $) => op. equal (d. altitude_m , $. h ))
ifilter = dronei_aq
. params ({
dr : dronetype,
ov : overlap_p,
asp : aspect,
v : velocity
})
. filter ((d, $) => op. includes (d. drone , $. dr ))
. filter ((d, $) => op. equal (d. overlap , $. ov ))
. filter ((d, $) => op. includes (d. aspect , $. asp ))
. filter ((d, $) => op. equal (d. velocity_ms , $. v ))
i_h = ifilter
. params ({
h : height
})
. filter ((d, $) => op. equal (d. altitude_m , $. h ))
Plot. plot ({
grid : false ,
color : {
legend : true
},
marks : [
Plot. line (distfilter, {x : "altitude_m" , y : "ground_distance_m" , stroke : "direction" }),
Plot. dot (dist_h, {x : "altitude_m" , y : "ground_distance_m" , stroke : "drone" })
]
})
Plot. plot ({
grid : false ,
color : {
legend : true
},
marks : [
Plot. line (distfilter, {x : "altitude_m" , y : "photo_distance_m" , stroke : "direction" }),
Plot. dot (dist_h, {x : "altitude_m" , y : "photo_distance_m" , stroke : "drone" })
]
})
Plot. plot ({
grid : false ,
marks : [
Plot. line (vfilter, {x : "altitude_m" , y : "velocity_ms" }),
Plot. dot (vel_h, {x : "altitude_m" , y : "velocity_ms" })
]
})
Plot. plot ({
grid : false ,
marks : [
Plot. line (ifilter, {x : "altitude_m" , y : "photo_interval" }),
Plot. dot (i_h, {x : "altitude_m" , y : "photo_interval" })
]
})