1 Mapeamento 2022

1.1 Bibliotecas.

library(stringr)
library(rgdal)
library(leaflet)
library(leaflet.extras)
library(udunits2)
library(leafpop)
library(htmltools)
library(htmlwidgets)
library(stringr)
library(tidyverse)
library(dplyr)

1.2 ImportaĂ§Ă£o de PolĂ­gonos .kml

#kml to geoJSON
setwd("C:/Users/leonardo.reffatti/OneDrive/R/Mapeamento 2022")
map = readOGR("POLIGONOS.kml", layer=ogrListLayers("POLIGONOS.kml"), verbose=T, 
              drop_unsupported_fields=T, dropNULLGeometries=T, stringsAsFactors=F)

# removes HTML code that can appear in Description field (e.g. scribblemaps)
if(any(str_detect(map@data[,2], "<FONT"))){
  try(map@data[,2] <- str_match(map@data[,2], "<FONT.*>(.*)</FONT>")[,2], silent=T)
}

unlink("data.geojson")
writeOGR(map, "data.geojson", "data", driver = "GeoJSON")

unlink("poligonos.geojson")
writeOGR(map, "poligonos.geojson", "poligonos", driver = "GeoJSON")

data_geojson <- "C:/Users/leonardo.reffatti/OneDrive/R/Mapeamento 2022/data.geojson"
data_raw <- sf::read_sf(data_geojson)

#data_geojson <- "C:/Users/User/OneDrive/R/Mapeamento 2020/data.geojson"
data_raw_poligonos <- sf::read_sf(data_geojson)

#split names
data_raw_poligonos_name <- data.frame(data_raw_poligonos$Name)

name_split <- str_split_fixed(
  data_raw_poligonos_name$data_raw_poligonos.Name, " - ", 4)

data_raw_poligonos_name <- data.frame(data_raw_poligonos_name$data_raw_poligonos.Name, name_split)

#join
data_raw_poligonos_name <- data.frame(data_raw_poligonos_name)
colnames(data_raw_poligonos_name)[1] <- "Name"

data_raw_poligonos <- inner_join(data_raw_poligonos, data_raw_poligonos_name, 
                                   by = "Name" )

#String fitting
data_raw_poligonos$X4 <- str_remove_all(data_raw_poligonos$X4, "[ HECTARES]")
data_raw_poligonos$X3 <- str_remove_all(data_raw_poligonos$X3, "[ARCELA ]")

#remove empty column
data_raw_poligonos <- data_raw_poligonos %>% 
  select(-Description)

#rename and fit columns
colnames(data_raw_poligonos)[1] <- "Name"
colnames(data_raw_poligonos)[3] <- "GRP_FAM"
colnames(data_raw_poligonos)[4] <- "VARIEDADE"
colnames(data_raw_poligonos)[5] <- "PARCELA"
colnames(data_raw_poligonos)[6] <- "AREA"
data_raw_poligonos$AREA <- gsub("\\,", ".", data_raw_poligonos$AREA)
data_raw_poligonos$AREA <- as.numeric(as.character(data_raw_poligonos$AREA))

1.3 ImportaĂ§Ă£o de Pontos .kml

#import kml points convert to geoJSON
map = readOGR("PONTOS.kml", layer=ogrListLayers("PONTOS.kml"), verbose=T, 
              drop_unsupported_fields=T, dropNULLGeometries=T, stringsAsFactors=F)

# removes HTML code that can appear in Description field (e.g. scribblemaps)
if(any(str_detect(map@data[,2], "<FONT"))){
  try(map@data[,2] <- str_match(map@data[,2], "<FONT.*>(.*)</FONT>")[,2], silent=T)
}

unlink("data.geojson")
writeOGR(map, "data.geojson", "data", driver = "GeoJSON")

data_geojson <- "C:/Users/leonardo.reffatti/OneDrive/R/Mapeamento 2022/data.geojson"
data_raw_pontos <- sf::read_sf(data_geojson)

1.4 Plot do Mapa 2022 das parcelas de produĂ§Ă£o de uvas.

#mapa

#join poligonos e pontos
c <- sf::st_join(data_raw_poligonos, data_raw_pontos)
c <- c %>% 
  select(-Name.y, -Description)
colnames(c)[1] <- "Name"


b <- c %>% 
  dplyr::group_by(Name) %>% 
  dplyr::summarise(AREA = mean(AREA), .groups = "drop") %>%
  dplyr::mutate(
    label = paste0(Name)
  ) %>% 
  dplyr::select(label, AREA)

pal <- leaflet::colorNumeric(
  "Spectral",
  domain = b$AREA
)

leaflet::leaflet(b) %>% 
  leaflet::addTiles(group = "Google Maps") %>%
  leaflet::addProviderTiles(providers$Esri.WorldImagery, group = "Satelite") %>%   leaflet::addPolygons(
    color = "#222", weight = 2, opacity = 1,
    fillColor = ~pal(AREA), fillOpacity = 0.7, 
    popup = popupTable(b[2]), 
    label = ~lapply(label, htmltools::HTML),
    labelOptions = leaflet::labelOptions(direction = "top"),
    highlight = leaflet::highlightOptions(
      color = "#FFF", bringToFront = TRUE
    )
  ) %>%
  leaflet::addLegend(
    pal = pal, values = ~AREA, opacity = 0.7,
    title = "AREA (hectares)", position = "topleft"
  ) %>% 
  addLayersControl(
    baseGroups = c("Google Maps", "Satelite"),
    options = layersControlOptions(collapsed = FALSE)
  )