diff --git a/R/raster_to_grid.R b/R/raster_to_grid.R index 1e37e9b..b304a19 100644 --- a/R/raster_to_grid.R +++ b/R/raster_to_grid.R @@ -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") } } diff --git a/R/sf_to_grid.R b/R/sf_to_grid.R index 63ef276..f0f2215 100644 --- a/R/sf_to_grid.R +++ b/R/sf_to_grid.R @@ -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)