Commit 08a38d41 authored by luroth's avatar luroth
Browse files

Complete refactoring

parent 18ddc0c4
calc_sensor_ratio <- function(sensor_size_x, sensor_size_y) {
ratio <- sensor_size_x / sensor_size_y
return(ratio)
}
calc_lens_angle_of_view <- function(sensor_size, lens_focal_length) {
angle_of_view <- 2 * atan(sensor_size / (2 * lens_focal_length))
calc_angle_of_view <- function(d_sensor, f) {
angle_of_view <- 2 * atan(d_sensor / (2 * f))
return(angle_of_view)
}
calc_IFOV <- function(flight_height, size, sensor_recorded_pixels, focal_length) {
return((size/sensor_recorded_pixels) * flight_height / focal_length)
calc_ground_sampling_distance <- function(flight_height, d_sensor, n_pix, f) {
return((d_sensor/n_pix) * flight_height / f)
}
calc_IFOV_mm <- function(flight_height, size, sensor_recorded_pixels, focal_length) {
return(1000 *calc_IFOV(flight_height, size, sensor_recorded_pixels, focal_length))
calc_ground_sampling_distance_mm <- function(flight_height, d_sensor, n_pix, f) {
return(1000 *calc_ground_sampling_distance(flight_height, d_sensor, n_pix, f))
}
calc_FOV <- function(flight_height, size, focal_length) {
return((size) * flight_height / focal_length)
calc_ground_field_of_view <- function(flight_height, d_sensor, f) {
return((d_sensor) * flight_height / f)
}
calc_flight_height <- function(ifov, size, sensor_recorded_pixels, focal_length) {
return(ifov / (size/sensor_recorded_pixels) *focal_length)
calc_flight_height <- function(ground_sampling_distance, d_sensor, n_pix, f) {
return(ground_sampling_distance / (d_sensor/n_pix) *f)
}
calc_flight_height_mm <- function(ifov_mm, size, sensor_recorded_pixels, focal_length) {
return((ifov_mm/1000) / (size/sensor_recorded_pixels) *focal_length)
calc_flight_height_mm <- function(ground_sampling_distance_mm, d_sensor, n_pix, f) {
return((ground_sampling_distance_mm/1000) / (d_sensor/n_pix) *f)
}
calc_hyperfocal_distance <- function(focal_length, aperture, circle_of_confusion) {
return((focal_length^2)/(aperture*circle_of_confusion) + focal_length)
calc_hyperfocal_distance <- function(f, aperture, circle_of_confusion) {
return((f^2)/(aperture*circle_of_confusion) + f)
}
calc_focal_dist <- function(focal_length, aperture, circle_of_confusion, flight_height) {
hyperfocal_distance <- calc_hyperfocal_distance(focal_length, aperture, circle_of_confusion)
calc_focus_distance <- function(f, aperture, circle_of_confusion, flight_height) {
hyperfocal_distance <- calc_hyperfocal_distance(f, aperture, circle_of_confusion)
focus_dist <- (hyperfocal_distance * sqrt(flight_height))/(sqrt(hyperfocal_distance + flight_height))
......@@ -44,22 +38,14 @@ calc_focal_dist <- function(focal_length, aperture, circle_of_confusion, flight_
return(focus_dist)
}
calc_depth_of_field_near <- function(focal_length, aperture, circle_of_confusion, object_distance) {
hyperfocal_distance <- calc_hyperfocal_distance(focal_length, aperture, circle_of_confusion)
return(object_distance / ( (object_distance - focal_length) / (hyperfocal_distance - focal_length) + 1))
}
calc_depth_of_field_far <- function(focal_length, aperture, circle_of_confusion, object_distance) {
hyperfocal_distance <- calc_hyperfocal_distance(focal_length, aperture, circle_of_confusion)
return(ifelse(object_distance <= hyperfocal_distance, (object_distance / ( (focal_length - object_distance) / (hyperfocal_distance - focal_length) + 1)), Inf))
calc_depth_of_field_near <- function(f, aperture, circle_of_confusion, focus_distance) {
hyperfocal_distance <- calc_hyperfocal_distance(f, aperture, circle_of_confusion)
return(focus_distance / ( (focus_distance - f) / (hyperfocal_distance - f) + 1))
}
calc_exposure_value <- function(aperture, shutter_speed, iso=100) {
return(log2((100/iso)*(aperture^2)/(1/shutter_speed)))
}
calc_aperture <- function(exposure_value, shutter_speed, iso=100) {
return((1/10) * sqrt(iso) * sqrt(1/shutter_speed) * sqrt(2^exposure_value))
calc_depth_of_field_far <- function(f, aperture, circle_of_confusion, focus_distance) {
hyperfocal_distance <- calc_hyperfocal_distance(f, aperture, circle_of_confusion)
return(ifelse(focus_distance <= hyperfocal_distance, (focus_distance / ( (f - focus_distance) / (hyperfocal_distance - f) + 1)), Inf))
}
calc_shutter_speed <- function(exposure_value, aperture, iso=100) {
......@@ -67,71 +53,49 @@ calc_shutter_speed <- function(exposure_value, aperture, iso=100) {
}
calc_iso <- function(exposure_value, aperture, shutter_speed) {
return((25 * aperture^2 * 2^(2-exposure_value))/(1/shutter_speed))
return(25.0 * as.numeric(aperture)^2.0 * 2.0^(2.0-as.numeric(exposure_value))/(1.0/as.numeric(shutter_speed)))
}
calc_flight_speed <- function(IFOV, blur, shutter_speed) {
return(((IFOV)*blur) / (1/shutter_speed))
calc_spacing_exposure_station <- function(end_lap, ground_field_of_view_x) {
return(ground_field_of_view_x - ((end_lap/100) * ground_field_of_view_x))
}
calc_distance_exposure_station <- function(end_lap, FOV_x) {
return(FOV_x - ((end_lap/100) * FOV_x))
calc_spacing_flight_lines <- function(side_lap, ground_field_of_view_y) {
return(ground_field_of_view_y - (side_lap/100) * ground_field_of_view_y)
}
calc_spacing_flight_lines <- function(side_lap, FOV_y) {
return(FOV_y - (side_lap/100) * FOV_y)
calc_end_lap <- function(spacing_exposure_station, ground_field_of_view_x) {
return(100 - (spacing_exposure_station/ ground_field_of_view_x)*100)
}
calc_percent_exposure_station <- function(end_lap_size, FOV_x) {
return(100 - (end_lap_size/ FOV_x)*100)
calc_side_lap <- function(spacing_flight_lines, ground_field_of_view_y) {
return(100 - (spacing_flight_lines/ ground_field_of_view_y)*100)
}
calc_percent_flight_lines <- function(side_lap_size, FOV_y) {
return(100 - (side_lap_size/ FOV_y)*100)
calc_flight_speed <- function(ground_sampling_distance, motion_blur, shutter_speed) {
return(((ground_sampling_distance)*motion_blur) / (1/shutter_speed))
}
calc_image_recording_speed <- function(flight_speed, distance_exposure_stations) {
return(flight_speed / distance_exposure_stations)
calc_image_recording_speed <- function(flight_speed, spacing_exposure_station) {
return(flight_speed / spacing_exposure_station)
}
calc_flight_duration <- function(distance_area_x, FOV_x, distance_area_y, FOV_y, spacing_flight_lines, flight_speed) {
distance <- 1 * (distance_area_x + ceiling(FOV_x / (2 * spacing_flight_lines))) * 2 * spacing_flight_lines + (distance_area_x/spacing_flight_lines) * (distance_area_y+ FOV_y)
calc_flight_duration <- function(distance_area_x, ground_field_of_view_x, distance_area_y, ground_field_of_view_y, spacing_flight_lines, flight_speed) {
distance <- 1 * (distance_area_x + ceiling(ground_field_of_view_x / (2 * spacing_flight_lines))) * 2 * spacing_flight_lines + (distance_area_x/spacing_flight_lines) * (distance_area_y + ground_field_of_view_y)
duration <- (distance / flight_speed) / 60
return(duration)
}
calc_min_flight_height_coded_gcp <- function(diameter_coded, size_x, sensor_recorded_pixels_x, focal_length) {
ifov <- diameter_coded / 80
height <- calc_flight_height(ifov, size_x, sensor_recorded_pixels_x, focal_length)
return(height)
}
calc_max_flight_height_coded_gcp <- function(diameter_coded, size_x, sensor_recorded_pixels_x, focal_length) {
ifov <- diameter_coded / 15
height <- calc_flight_height(ifov, size_x, sensor_recorded_pixels_x, focal_length)
return(height)
}
calc_min_flight_height_noncoded_gcp <- function(diameter_coded, size_x, sensor_recorded_pixels_x, focal_length) {
ifov <- diameter_coded / 110
height <- calc_flight_height(ifov, size_x, sensor_recorded_pixels_x, focal_length)
return(height)
}
calc_max_flight_height_noncoded_gcp <- function(diameter_coded, size_x, sensor_recorded_pixels_x, focal_length) {
ifov <- diameter_coded / 24
height <- calc_flight_height(ifov, size_x, sensor_recorded_pixels_x, focal_length)
return(height)
}
calc_pixel_freq <- function(plot_size, spacing, no_of_lanes, position_precision_sd, sensor_res, gsd, use_uniform=FALSE) {
calc_pixel_freq <- function(plot_size, spacing, no_of_lanes, position_precision_sd, n_pix, ground_sampling_distance, use_uniform=FALSE) {
pixels <- 1:sensor_res
# Initialize sensor axis
pixels <- 1:n_pix
# Positions of plots, pixel position as index, TRUE as value if plot present, else FALSE
plot_positions <- ifelse(seq(1, sensor_res + no_of_lanes*spacing/gsd) %% round(plot_size/gsd) + round(plot_size/(gsd*2)) == round(plot_size/(gsd)), TRUE, FALSE)
plot_positions <- ifelse(seq(1, n_pix + no_of_lanes*spacing/ground_sampling_distance) %% round(plot_size/ground_sampling_distance) + round(plot_size/(ground_sampling_distance*2)) == round(plot_size/(ground_sampling_distance)), TRUE, FALSE)
# Get camera views on plots
sensor_views <- rollapply(data=plot_positions, width=sensor_res, by=round(spacing/gsd), FUN = function(x) x)
sensor_views <- rollapply(data=plot_positions, width=n_pix, by=round(spacing/ground_sampling_distance), FUN = function(x) x)
# Calculate frequency of plots at specific sensor position
sensor_position_freq <- apply(sensor_views, MARGIN=c(2), sum)
......@@ -140,9 +104,9 @@ calc_pixel_freq <- function(plot_size, spacing, no_of_lanes, position_precision_
# Normal distribution for each sensor pixel
if(!use_uniform) {
pixel_distribution <- mapply(pixels, FUN=function(z) {dnorm(x=pixels, sd=position_precision_sd/gsd, mean=z)})
pixel_distribution <- mapply(pixels, FUN=function(z) {dnorm(x=pixels, sd=position_precision_sd/ground_sampling_distance, mean=z)})
} else {
pixel_distribution <- mapply(pixels, FUN=function(z) {dunif(x=pixels, min=z-(position_precision_sd/gsd), max=z+(position_precision_sd/gsd))})
pixel_distribution <- mapply(pixels, FUN=function(z) {dunif(x=pixels, min=z-(position_precision_sd/ground_sampling_distance), max=z+(position_precision_sd/ground_sampling_distance))})
}
# Sweep over columns and multiply with occurance frequency of sensor at this position
pixel_distribution_sens <- sweep(pixel_distribution, MARGIN=2, sensor_position_freq, '*')
......@@ -151,15 +115,15 @@ calc_pixel_freq <- function(plot_size, spacing, no_of_lanes, position_precision_
# Normalize
pixel_frequency <- pixel_frequency / sum(pixel_frequency)
pixel_frequency_data <- data.frame(x=1:sensor_res, freq=pixel_frequency)
pixel_frequency_data <- data.frame(x=1:n_pix, freq=pixel_frequency)
return(pixel_frequency_data)
}
calc_pixel_freq_xy <- function(plot_size_x, plot_size_y, spacing_x, spacing_y, no_of_lanes_x, no_of_lanes_y, sensor_res_x, sensor_res_y, position_precision_sd, gsd) {
calc_pixel_freq_xy <- function(plot_size_x, plot_size_y, spacing_x, spacing_y, no_of_lanes_x, no_of_lanes_y, n_pix_x, n_pix_y, position_precision_sd, ground_sampling_distance) {
pixel_frequency_data_x <- calc_pixel_freq(plot_size_x, spacing_x, no_of_lanes_x, position_precision_sd, sensor_res_x, gsd)
pixel_frequency_data_y <- calc_pixel_freq(plot_size_y, spacing_y, no_of_lanes_y, position_precision_sd, sensor_res_y, gsd, use_uniform = TRUE)
pixel_frequency_data_x <- calc_pixel_freq(plot_size_x, spacing_x, no_of_lanes_x, position_precision_sd, n_pix_x, ground_sampling_distance)
pixel_frequency_data_y <- calc_pixel_freq(plot_size_y, spacing_y, no_of_lanes_y, position_precision_sd, n_pix_y, ground_sampling_distance, use_uniform = TRUE)
pixel_frequency_data_xy <- unlist(pixel_frequency_data_y[,'freq']) %o% unlist(pixel_frequency_data_x[,'freq'])
pixel_frequency_data_xy <- (pixel_frequency_data_xy / max(pixel_frequency_data_xy))
......@@ -170,4 +134,3 @@ calc_pixel_freq_xy <- function(plot_size_x, plot_size_y, spacing_x, spacing_y, n
long2UTM <- function(long) {
(floor((long + 180)/6) %% 60) + 1
}
......@@ -2,43 +2,44 @@
{
"name": "Sony Alpha 9",
"sensor_values": {
"sensor_size_x": 35.6,
"sensor_size_y": 23.8,
"sensor_recorded_pixels_x": 6000,
"sensor_recorded_pixels_y": 4000,
"d_sensor_x": 35.6,
"d_sensor_y": 23.8,
"n_pix_x": 6000,
"n_pix_y": 4000,
"default_lens_aperture": 8,
"circle_of_confusion": 0.010,
"lens_focal_length": 55,
"max_shutter_speed": 30000
"focal_lenght": 55,
"t_max": 32000,
"ISO_max": 6400
}
},
{
"name": "Sony RX100 II",
"sensor_values": {
"sensor_size_x": 13.2,
"sensor_size_y": 8.8,
"sensor_recorded_pixels_x": 5472,
"sensor_recorded_pixels_y": 3648,
"d_sensor_x": 13.2,
"d_sensor_y": 8.8,
"n_pix_x": 5472,
"n_pix_y": 3648,
"default_lens_aperture": 4,
"circle_of_confusion": 0.012,
"lens_focal_length": 10.4,
"max_shutter_speed": 1000
"focal_lenght": 10.4,
"t_max": 2000,
"ISO_max": 12800
}
},
{
"name": "DJI Phantom 4",
"name": "DJI Phantom 4 Pro",
"sensor_values": {
"sensor_size_x": 6.2,
"sensor_size_y": 4.65,
"sensor_recorded_pixels_x": 4000,
"sensor_recorded_pixels_y": 3000,
"d_sensor_x": 6.2,
"d_sensor_y": 4.65,
"n_pix_x": 4000,
"n_pix_y": 3000,
"default_lens_aperture": 2.8,
"circle_of_confusion": 0.012,
"lens_focal_length": 3.6125,
"max_shutter_speed": 8000
"focal_lenght": 3.6125,
"t_max": 8000,
"ISO_max": 3200
}
}
}
]
\ No newline at end of file
This diff is collapsed.
......@@ -2,42 +2,33 @@ library(shinycssloaders)
library(leaflet)
# Default values
default_sensor_size_x = 35.6
default_sensor_size_y = 23.8
default_sensor_effective_Mpixels = 24.2
default_sensor_recorded_pixels_x = 6000
default_sensor_recorded_pixels_y = 4000
default_exposure_value = 14
default_max_motion_blur = 0.02
default_lens_aperture = 6
default_circle_of_confusion = 0.010
default_iso = 4000
default_lens_focal_length = 55
default_max_shutter_speed = 30000
default_shutter_speed = 16000
default_gcp_diameter_coded = 0.15
default_gcp_diameter_noncoded = 0.2
default_flight_height = 28
default_distance_area_x = 36
default_distance_area_y = 40
default_side_lap = 75.24
default_end_lap = 94.48
default_no_gcp_x = 6
default_no_gcp_y = 3
default_flip_camera = TRUE
default_plot_size_x = 1.5
default_plot_size_y = 2
default_position_precision = 3
default_exposure_value <- 14
default_max_motion_blur <- 0.02
default_iso <- 4000
default_shutter_speed <- 16000
default_flight_height <- 30
default_mapping_area_x <- 36
default_mapping_area_y <- 40
default_side_lap <- 60
default_end_lap <- 80
default_no_gcp_x <- 6
default_no_gcp_y <- 3
default_flip_camera <- FALSE
default_plot_size_x <- 1.5
default_plot_size_y <- 2
default_position_precision <- 3
default_position_edge1_lat = 47.450812627526901
default_position_edge1_long = 8.682496912397921
default_position_edge2_lat = 47.451039942926123
default_position_edge2_long = 8.682089627868457
default_starting_point_lat = 47.450163
default_starting_point_long = 8.682736
default_position_edge1_lat <- 47.450812627526901
default_position_edge1_long <- 8.682496912397921
default_position_edge2_lat <- 47.451039942926123
default_position_edge2_long <- 8.682089627868457
default_starting_point_lat <- 47.450163
default_starting_point_long <- 8.682736
aperture_values <- c(0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.6, 1.7, 1.8, 2, 2.4, 2.5, 2.8, 3.2, 3.4, 4, 4.5, 4.8, 5, 5.7, 6.3, 6.7, 7.1, 8, 9, 9.5, 10.1, 11.3, 12.7, 13.5, 14.3, 16, 18, 19)
names(aperture_values) <- paste0("f/", aperture_values)
ui_ = fluidPage(
ui_ <- fluidPage(
shinyjs::useShinyjs(),
titlePanel(windowTitle="PheonyFly Planning Tool",
......@@ -50,38 +41,44 @@ ui_ = fluidPage(
tabPanel("Sensor/Lens",
h4("Sensor"),
fluidRow(
column(8, selectInput("sensor_configs", label=NA, choices=NA)),
column(4, actionButton("sensor_edit", "Change sensor"))
column(8, selectInput("sensor_and_lens_select", label=NA, choices=NA)),
column(4, actionButton("sensor_and_lens_edit", "Save settings"))
),
fluidRow(
column(6, textInput("sensor_size_x", "Sensor size, width (mm)", width = "100%", value = default_sensor_size_x)),
column(6, textInput("sensor_size_y", "Sensor size, height (mm)", width = "100%", value = default_sensor_size_y))
column(6, numericInput("d_sensor_x", "Sensor size, width (mm)", width = "100%", value=NA, step=0.1)),
column(6, numericInput("d_sensor_y", "Sensor size, height (mm)", width = "100%", value=NA, step=0.1))
),
fluidRow(
column(6, textInput("sensor_recorded_pixels_x", "Number of recorded pixels in x (px)", width = "100%", value = default_sensor_recorded_pixels_x)),
column(6, textInput("sensor_recorded_pixels_y", "Number of recorded pixels in y (px)", width = "100%", value = default_sensor_recorded_pixels_y))
column(6, numericInput("n_pix_x", "Number of recorded pixels in x (px)", width = "100%", value=NA, step=1)),
column(6, numericInput("n_pix_y", "Number of recorded pixels in y (px)", width = "100%", value=NA, step=1))
),
htmlOutput("pixel_size"),
fluidRow(
column(6, numericInput("t_max", "Maximal shutter speed (1/s)", width = "100%", value=NA, step=1000)),
column(6, numericInput("ISO_max", "Maximal film speed (ISO)", width = "100%", value=NA, step=1000))
),
htmlOutput("d_pix_output"),
hr(),
h4("Lens"),
fluidRow(
column(6, textInput("lens_focal_length", "Focal length (mm)", width = "100%", value = default_lens_focal_length)),
column(6, textInput("lens_aperture", "Aperture (f-number)", width = "100%", value = default_lens_aperture))
column(6, numericInput("f", "Focal length (mm)", width = "100%", value=NA, step=1)),
column(6, selectInput("aperture", "Aperture (f-number)", width = "100%", choices = aperture_values))
)
),
tabPanel("Imaging",
h4("Resolution"),
sliderInput("flight_height", "Flight height (m)", width = "100%", value = default_flight_height, min=2, max=150),
textInput("ground_resolution_nadir", "Ground sampling distance nadir (mm)", width = "100%"),
htmlOutput("field_of_view"),
sliderInput("flight_height", "Flight height (m)", width = "100%", value = default_flight_height, min=2, max=100, animate = TRUE),
fluidRow(
column(9, numericInput("ground_sampling_distance", "Ground sampling distance nadir (mm)", width = "100%", value=NA, step=0.1)),
column(3, checkboxInput("edit_ground_sampling_distance", "Edit"), style = "margin-top: 25px;")
),
hr(),
h4("Exposure"),
sliderInput("exposure_value", "Exposure value (EV)", min = 1, max = 21, step = 1, value = default_exposure_value),
hr(),
fluidRow(
column(6, textInput("shutter_speed", "Shutter speed (1/s)", value = default_shutter_speed, width = "100%")),
column(6, textInput("sensor_iso", "Film speed (ISO)", width = "100%", value = default_iso))
column(6, selectInput("shutter_speed", "Shutter speed (s)", selected = default_shutter_speed, choices = default_shutter_speed, width = "100%")),
column(6, numericInput("iso", "Film speed (ISO)", width = "100%", value = default_iso))
)
),
......@@ -89,27 +86,27 @@ ui_ = fluidPage(
tabPanel("Mapping",
h4("Mapping area"),
fluidRow(
column(6,textInput("distance_area_x", "Mapping area width (m)", width = "100%", value = default_distance_area_x)),
column(6, textInput("distance_area_y","Mapping area depth (m)", width = "100%", value = default_distance_area_y))
column(6, numericInput("mapping_area_x", "Mapping area width (m)", width = "100%", value = default_mapping_area_x, step=1)),
column(6, numericInput("mapping_area_y","Mapping area depth (m)", width = "100%", value = default_mapping_area_y, step=1))
),
fluidRow(
column(6,textInput("plot_size_x", "Plot size width (m)", width = "100%", value = default_plot_size_x)),
column(6, textInput("plot_size_y","Plot size depth (m)", width = "100%", value = default_plot_size_y))
column(6, numericInput("plot_size_x", "Plot size width (m)", width = "100%", value = default_plot_size_x, step=0.1)),
column(6, numericInput("plot_size_y","Plot size depth (m)", width = "100%", value = default_plot_size_y, step=0.1))
),
hr(),
h4("Flight path"),
checkboxInput("edit_spacing", "metric"),
fluidRow(
column(6, textInput("spacing_between_flight_lines", "Percent side lap (%)", width = "100%", value = default_side_lap)),
column(6, textInput("spacing_between_exposures", "Percent end lap (%)", width = "100%", value = default_end_lap))
column(6, numericInput("side_lap", "Side lap (%)", width = "100%", value = default_side_lap)),
column(6, numericInput("end_lap", "End lap (%)", width = "100%", value = default_end_lap))
),
fluidRow(
column(6, textInput("spacing_between_flight_lines_size", "Spacing between flight lines (m)", width = "100%")),
column(6, textInput("spacing_between_exposures_size", "Spacing between exposure (m)", width = "100%"))
column(6, numericInput("spacing_between_flight_lines", "Side lap (m)", width = "100%", value=NA)),
column(6, numericInput("spacing_between_exposures", "End lap (m)", width = "100%", value=NA))
),
fluidRow(
column(6,radioButtons("flip_camera", "Camera heading", choiceNames=c("Wide side in flight direction", "Narrow side in flight direction"), choiceValues = c(FALSE, TRUE), selected = default_flip_camera)),
column(6, textInput("position_precision", "Positioning precision (m)", width = "100%", value = default_position_precision))
column(6, numericInput("positioning_precision", "Positioning precision (m)", width = "100%", value = default_position_precision))
),
sliderInput("motion_blur", "Maximal motion blur (px)", min = 0.01, max = 1, step = 0.01, value = default_max_motion_blur, width = "100%")
),
......@@ -117,10 +114,10 @@ ui_ = fluidPage(
tabPanel("GCPs",
h4("Arrangement"),
fluidRow(
column(6, textInput("gcp_n_in_x", "Number of GCP along mapping area width", width = "100%", value = default_no_gcp_x)),
column(6, textInput("gcp_n_in_y", "Number of GCP along mapping area depth", width = "100%", value = default_no_gcp_y))
column(6, numericInput("gcp_n_in_x", "Number of GCP along mapping area width", width = "100%", value = default_no_gcp_x, step=1)),
column(6, numericInput("gcp_n_in_y", "Number of GCP along mapping area depth", width = "100%", value = default_no_gcp_y, step=1))
),
radioButtons(inline=TRUE, "gcp_design", "Arrangement pattern",
radioButtons(inline=TRUE, "gcp_arrangement_pattern", "Arrangement pattern",
choiceNames = list(
p("Squared", width="100px"),
p("Crosswise", width="100px")),
......@@ -128,31 +125,25 @@ ui_ = fluidPage(
"quad", "skip"
)),
fluidRow(
column(4, plotOutput("gcp_design_quad", height = "50px", width = "100px")),
column(4, plotOutput("gcp_design_skip", height = "50px", width = "100px"))
),
hr(),
h4("Coded GCP"),
fluidRow(
column(6, textInput("gcp_diameter_coded", "Size coded GCP (diameter inner circle) (m)", width = "100%", value = default_gcp_diameter_coded)),
column(6, textInput("gcp_diameter_noncoded", "Size non-coded GCP (total size) (m)", width = "100%", value = default_gcp_diameter_noncoded))
column(4, plotOutput("gcp_arrangement_quad", height = "50px", width = "100px")),
column(4, plotOutput("gcp_arrangement_skip", height = "50px", width = "100px"))
)
),
tabPanel("Location",
h4("Mapping area"),
fluidRow(
column(6,textInput("position_edge1_lat", "Field edge (Latitude)", width = "100%", value = default_position_edge1_lat)),
column(6, textInput("position_edge1_long","Field edge (Longitude)", width = "100%", value = default_position_edge1_long))
column(6,numericInput("position_edge1_lat", "Field edge (Latitude)", width = "100%", value = default_position_edge1_lat)),
column(6, numericInput("position_edge1_long","Field edge (Longitude)", width = "100%", value = default_position_edge1_long))
),
fluidRow(
column(6,textInput("position_edge2_lat", "Flight direction (Latitude)", width = "100%", value = default_position_edge2_lat)),
column(6, textInput("position_edge2_long","Flight direction (Longitude)", width = "100%", value = default_position_edge2_long))
column(6,numericInput("position_edge2_lat", "Flight direction (Latitude)", width = "100%", value = default_position_edge2_lat)),
column(6, numericInput("position_edge2_long","Flight direction (Longitude)", width = "100%", value = default_position_edge2_long))
),
hr(),
fluidRow(
column(6,textInput("position_start_lat", "Starting point (Latitude)", width = "100%", value = default_starting_point_lat)),
column(6, textInput("position_start_long","Starting point (Longitude)", width = "100%", value = default_starting_point_long))
column(6,numericInput("position_start_lat", "Starting point (Latitude)", width = "100%", value = default_starting_point_lat)),
column(6, numericInput("position_start_long","Starting point (Longitude)", width = "100%", value = default_starting_point_long))
)
)
......@@ -167,8 +158,10 @@ ui_ = fluidPage(
tabsetPanel(id="results",
tabPanel("Photographic properties",
fluidRow(
column(8, h4("Flight height dependency"), plotOutput("flight_height_v_IFOV", height = "600px"), downloadButton("download_photo_props"), htmlOutput("optics_legend")),
column(4, htmlOutput("lens_angle_of_view"))
column(8, h4("Flight height dependency"),
plotOutput("photographic_properties_plot", height = "600px"),
downloadButton("download_photographic_properties_plot")),
column(4, htmlOutput("photographic_properties_summary"))
)
),
......@@ -177,15 +170,14 @@ ui_ = fluidPage(
column(8,
h4("Mapping area"),
tabsetPanel(type="pills",
tabPanel("Schematic", plotOutput("plot_field", height = "600px")),
tabPanel("Map", leafletOutput("waypoint_map", height = "600px"),
htmlOutput("waypoint_settings")),
tabPanel("Schematic", plotOutput("plot_mapping_area", height = "600px")),
tabPanel("Map",
leafletOutput("waypoint_map", height = "600px"),
htmlOutput("waypoint_settings")),
tabPanel("GCP recovery frequency", plotOutput("plot_hits_gcp", height = "600px"))
)
),
column(4, htmlOutput("campaign_summary"),
h4("GCP detection"),
htmlOutput("gcp_flight_heights"))
column(4, htmlOutput("mapping_summary"))
)
),
tabPanel("Viewing geometry",
......@@ -200,8 +192,7 @@ ui_ = fluidPage(
tabPanel("Sensor X axis", plotOutput("plot_viewing_geometry_x", height = "500px")),
tabPanel("Sensor Y axis", plotOutput("plot_viewing_geometry_y", height = "500px"))
))
),
actionButton("calc_viewing_geometry", label="(Re)calculate viewing geometry")
)
),
tabPanel("Mission briefing",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment