From 57b46664ef85611cd37da8bef37541a75df88ef2 Mon Sep 17 00:00:00 2001 From: syounkin Date: Thu, 7 Nov 2024 13:40:00 -0600 Subject: [PATCH] Stopped ignoring functions.R --- .gitignore | 1 + R/functions.R | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 R/functions.R diff --git a/.gitignore b/.gitignore index 89b31d2..4838c57 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ data data-bkup/ data-bkup *.R +!R/functions.R *.bak trash/ api_key diff --git a/R/functions.R b/R/functions.R new file mode 100644 index 0000000..c24604a --- /dev/null +++ b/R/functions.R @@ -0,0 +1,34 @@ +getLTSForRoute <- function(i) { + + # Filter the routes for the current student number + current_route <- routes %>% filter(student_number == i) + + # Find intersecting OBJECTIDs + intersecting_ids <- relevant_buffer$OBJECTID[lengths(st_intersects(relevant_buffer, current_route)) > 0] + + # Filter relevant segments to calculate max and average lts + relevant_segments <- bike_lts_buffer %>% filter(OBJECTID %in% intersecting_ids) + + # find all the segments of relevant_buffer that the current route passes through + current_route_lts_intersection <- st_intersection(current_route, relevant_segments) + + # calculate segment length in meters + current_route_lts_intersection$"segment_length" <- as.double(st_length(current_route_lts_intersection)) + + # Return the result as a list + result <- list( + student_number = i + , lts_max = max(current_route_lts_intersection$LTS_F) + , lts_average = weighted.mean(current_route_lts_intersection$LTS_F, current_route_lts_intersection$segment_length) + , lts_1_dist = sum(current_route_lts_intersection %>% filter(LTS_F == 1) %>% pull(LTS_F)) + , lts_2_dist = sum(current_route_lts_intersection %>% filter(LTS_F == 2) %>% pull(LTS_F)) + , lts_3_dist = sum(current_route_lts_intersection %>% filter(LTS_F == 3) %>% pull(LTS_F)) + , lts_4_dist = sum(current_route_lts_intersection %>% filter(LTS_F == 4) %>% pull(LTS_F)) + , route = as.data.frame(current_route_lts_intersection) + ) + + # Message for progress + message(paste0("done - ", i)) + + return(result) +}