Abstract
Mapeamento das parcelas de produĂ§Ă£o de uvas da Cooperativa Agroindustrial Nova Aliança realizado em 2022 e utilizado para rastreamento da produĂ§Ă£o de uvas na Safra 2022/23library(stringr)
library(rgdal)
library(leaflet)
library(leaflet.extras)
library(udunits2)
library(leafpop)
library(htmltools)
library(htmlwidgets)
library(stringr)
library(tidyverse)
library(dplyr)
#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))
#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)
#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)
)