add interactive map with leaflet

This commit is contained in:
lukasadrion
2026-01-21 12:54:03 +01:00
parent 93f4e3e81d
commit 133827c2bd
2 changed files with 28 additions and 14 deletions

View File

@@ -60,7 +60,7 @@ ui <- fluidPage(
tabPanel("Single Flight Analysis",
fluidRow(
column(6, plotOutput("route_plot", height = "400px")),
column(6, leafletOutput("route_plot", height = "400px")),
column(6, plotOutput("altitude_plot", height = "400px"))
),
fluidRow(
@@ -214,11 +214,9 @@ server <- function(input, output, session) {
})
# Route plot
output$route_plot <- renderPlot({
output$route_plot <- renderLeaflet({
req(rv$current_route)
plot(rv$current_route$lon, rv$current_route$lat, type = "o", pch = 20, col = "blue",
main = paste("Geographic Route of", rv$current_icao),
xlab = "Longitude", ylab = "Latitude")
createInteractiveMap(rv$current_route)
})
# Altitude plot

View File

@@ -2,8 +2,8 @@
title: "Topic 8 - Flight Trajectory Analysis"
subtitle: "Erik Neller, Patrik Mišura, Lukas Adrion"
output:
pdf_document: default
html_document: default
pdf_document: default
date: "`r Sys.Date()`"
---
@@ -23,6 +23,7 @@ library(httr)
library(jsonlite)
library(trajr)
library(shiny)
library(leaflet)
```
```{r opensky, include=FALSE}
@@ -208,6 +209,27 @@ calculateStatsSummary <- function(trajectory_stats_df) {
```{r viz-functions, include=FALSE}
# Visualization Functions
# Create interactive map with leaflet
createInteractiveMap <- function(route) {
leaflet(route) %>%
addTiles() %>%
addPolylines(lng=~lon, lat=~lat, color="blue", weight=3, opacity=0.8) %>%
addCircleMarkers(
lng = ~lon[1],
lat = ~lat[1],
color = "green",
radius = 6,
popup = "Origin"
) %>%
addCircleMarkers(
lng = ~lon[nrow(route)],
lat = ~lat[nrow(route)],
color = "red",
radius = 6,
popup = "Destination"
)
}
# Create boxplots for trajectory statistics
createBoxplots <- function(trajectory_stats_df) {
p <- getTrajectoryParams()
@@ -417,17 +439,11 @@ if (is.null(route_df)) {
## Step 4: Spatial Visualization
The geographic trajectory is visualized in a Cartesian coordinate system. Green and red markers indicate departure and current/final position, respectively.
The geographic trajectory is visualized on an interactive map with leaflet using the `createInteractiveMap()` function. Green and red markers indicate departure and current/final position, respectively.
```{r demo-route-plot, fig.width=7, fig.height=5}
if (!is.null(route_df)) {
plot(route_df$lon, route_df$lat, type = "o", pch = 20, col = "blue",
main = paste("Flight Trajectory -", icao),
xlab = "Longitude (°)", ylab = "Latitude (°)")
points(route_df$lon[1], route_df$lat[1], pch = 17, col = "green", cex = 2)
points(route_df$lon[nrow(route_df)], route_df$lat[nrow(route_df)], pch = 15, col = "red", cex = 2)
legend("topright", legend = c("Origin", "Destination", "Trajectory"),
pch = c(17, 15, 20), col = c("green", "red", "blue"))
createInteractiveMap(route_df)
} else {
cat("Insufficient data for visualization\n")
}