Skip to content

Argumento opcional para grade H3 #43

@baarthur

Description

@baarthur

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

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions