Skip to content

Commit

Permalink
simplify code for raster to sf grid, and add fix for #13 for the rast…
Browse files Browse the repository at this point in the history
…er input data case
  • Loading branch information
jflowernet committed Mar 26, 2024
1 parent a570f99 commit 2e32873
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 20 deletions.
39 changes: 20 additions & 19 deletions R/raster_to_grid.R
Original file line number Diff line number Diff line change
Expand Up @@ -38,28 +38,29 @@ ras_to_grid <- function(dat, spatial_grid, matching_crs, meth, name, antimeridia
stats::setNames(name)
}
} else {
if(antimeridian){
p_grid <- sf::st_geometry(spatial_grid) %>%
sf::st_transform(sf::st_crs(dat)) %>%
sf::st_shift_longitude()
grid_has_extra_cols <- if(ncol(spatial_grid)>1) TRUE else FALSE

dat %>%
terra::rotate(left = FALSE) %>%
exactextractr::exact_extract(p_grid, meth , force_df = TRUE) %>%
stats::setNames(name) %>%
data.frame(p_grid, .) %>%
sf::st_sf() %>%
sf::st_transform(., sf::st_crs(spatial_grid))
if(grid_has_extra_cols) extra_cols <- sf::st_drop_geometry(spatial_grid)

}else{
p_grid <- if(matching_crs) sf::st_geometry(spatial_grid) else sf::st_transform(sf::st_geometry(spatial_grid), sf::st_crs(dat))

dat %>%
exactextractr::exact_extract(p_grid, meth , force_df = TRUE) %>%
stats::setNames(name) %>%
data.frame(p_grid, .) %>%
sf::st_sf() %>%
{if(matching_crs) . else sf::st_transform(., sf::st_crs(spatial_grid))}
temp_grid <- if(matching_crs){
spatial_grid %>%
sf::st_geometry()
} else {
spatial_grid %>%
sf::st_geometry() %>%
sf::st_transform(sf::st_crs(dat)) %>%
{if(antimeridian) sf::st_shift_longitude(.) else .}
}

dat %>%
{if(antimeridian) terra::rotate(., left = FALSE) else .}%>%
exactextractr::exact_extract(temp_grid, meth , force_df = TRUE) %>%
stats::setNames(name) %>%
data.frame(temp_grid, .) %>%
sf::st_sf() %>%
{if(matching_crs) . else sf::st_transform(., sf::st_crs(spatial_grid))} %>%
{if(grid_has_extra_cols) cbind(., extra_cols) %>% dplyr::select(colnames(extra_cols), name) else .} %>%
sf::st_set_geometry("geometry")
}
}
2 changes: 1 addition & 1 deletion R/sf_to_grid.R
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ sf_to_grid <- function(dat, spatial_grid, matching_crs, name, feature_names, ant
dplyr::mutate(perc_area = dplyr::case_when(is.na(.data$perc_area) ~ 0,
.default = as.numeric(.data$perc_area))) %>%
dplyr::left_join(spatial_grid_with_id, ., by = "cellID") %>%
{if(!apply_cutoff) dplyr::select(., perc_area, {{x}} := perc_area) else {
{if(!apply_cutoff) dplyr::select(., .data$perc_area, {{x}} := .data$perc_area) else {
dplyr::mutate(.,
{{x}} := dplyr::case_when(.data$perc_area >= cutoff ~ 1,
.default = 0)
Expand Down

0 comments on commit 2e32873

Please sign in to comment.