-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
enhancementNew feature or requestNew feature or request
Description
O @rafapereirabr levantou a ideia de se retornar os hexágonos junto com as coordenadas. Acabei gostando da ideia, porque o pipeline para colocar a grade é um pouco inconveniente, então seria muito útil já tê-lo.
Rascunho de ideia que tive, a partir de uma função que estou usando em outro projeto e pode ser facilmente adaptada, posso fazer um PR posteriormente.
gc_with_hex <- function(data, fields, res = 9, precision = NULL, groups = NULL, na_remove = TRUE){
# checks
checkmate::assert_data_frame(data)
checkmate::assert(!is.null(groups))
checkmate::assert_character(groups)
# geocode
tictoc::tic()
data <- data |>
geocodebr::geocode(fields, resolver_empates = T, resultado_sf = T)
tt <- tictoc::toc(quiet = T)$callback_msg |> stringr::str_extract("^\\d+\\.\\d+")
print(paste(nrow(data), "addresses geocoded in", tt, "seconds", "(",
round(nrow(data)/as.numeric(tt),2), "addr/sec)"))
if(!is.null(precision)) {
data <- data |>
filter(precisao %in% precision_geocodebr)
}
# get hex
hex <- data |>
filter(!is.na(endereco_encontrado)) |>
select(any_of(groups)) |>
h3jsr::point_to_cell(res = res, simple = F)
# join and tidy
data <- if(na_remove) {
inner_join(data, hex)
} else {
left_join(data, hex)
}
data |>
mutate(h3_address = h3_resolution_9, lon = st_coordinates(geometry)[,1],
lat = st_coordinates(geometry)[,2], .keep = "unused") |>
st_drop_geometry() |>
select(-c(endereco_encontrado, logradouro_encontrado))
}
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request