1 Pacotes

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

2 Coleta de dados

setwd("C:/Users/leonardo.reffatti/OneDrive/R/SAFRA 21 - Ensaios de Campo")
#mapa21 <- read.table("Mapeamento2021.txt", h=T)
aplicacoes <- read.table("Aplicacoes2021.txt", h=T)
insumos.ensaios <- read.table("Insumos.ensaios2021.txt", h=T)
mapa21 <- read.table("teste.txt", h=T)
ensaios <- read.table("ensaios_campo_2022.txt", h=T)

3 Tratamento de dados

#Tratamento de dados dos Mapeamento 2021
mapa21 <- mapa21 %>% 
  mutate(COD_3 = paste(COD_GRP_FAM, PARCELA_COD))
ensaios <- ensaios %>% 
  mutate(COD_3 = paste(COD_GRP_FAM, PARCELA_COD)) %>% 
  select(COD_3, ENSAIOS, EMPRESA, PARCELA_ID)

mapa21 <- left_join(mapa21, ensaios, by="COD_3")
mapa21 <- mapa21 %>% 
  filter(!is.na(ENSAIOS))

aplicacoes <- aplicacoes %>% 
  mutate(COD_3 = paste(COD_GRP_FAM, PARCELA))

aplicacoes <- left_join(aplicacoes, ensaios, by="COD_3")

aplicacoes <- aplicacoes %>% 
  filter(!is.na(ENSAIOS))

#Tratamento de dados das Aplicaçõe Fitossanitárias

aplicacoes$CUSTO <- as.numeric(aplicacoes$CUSTO)

#Tratamento de dados dos insumos dos ensaios

vetor.insumos.ensaio <- insumos.ensaios$DESC

4 Material e Métodos

4.1 Delineamento de Pesquisa e Unidade de Análise

O trabalho foi realizado com a produção agrícola dos associados na Cooperativa Agroindustrial Nova Aliança Ltda com sede administrativa localizada no município de Flores da Cunha – RS no ciclo produtivo 21/22. Esse estudo foi caracterizado como uma pesquisa tecnológica observacional, analítica e exploratória.

No total, participaram do estudo, 12 propriedades rurais localizadas em municípios nas regiões da Serra Gaúcha e Campanha. As propriedades rurais das famílias cooperadas foram georreferenciadas com uso do software Google Earth Pro [Google 2021], nesse processo foram gerados arquivos de extensão .kml com a identificação das parcelas de produção caracterizadas de acordo com a cultivar na cultura da uva. A partir dos pontos centrais e polígonos registrados em .kml, foi utilizado no software Rstudio [RStudio Team 2021] mecanismos para conversão de arquivos .kml para arquivos geoJSON. Por meio da biblioteca de construção de mapas, leaflet [Cheng et al. 2021], foram agrupados todos os polígonos que representaram as parcelas de produção de uvas para montagem de um mapa.

Para cada uma das parcelas identificou-se o grupo familiar proprietário, a cultivar de uva correspondente, sistema de produção, sistema de condução, área em hectares, coordenadas dos vértices do polígono e do ponto central. Uma legenda padrão foi constituída para exibir o grupo familiar cooperado, cultivar, código da parcela de produção e área em hectares.

Os insumos utilizados são fertilizantes foliares das empresas Acadian, Ballagro, Coda, Vert, Wiser e Yara. Para cada empresa foram escolhidas parcelas de produção para a utilização dos insumos. Todas as parcelas de produção foram fracionadas aproximadamente na metade da área para manter uma testemunha (sem aplicação dos insumos do ensaio), conforme a Tabela 1 e 2.

resumo.ensaios <- mapa21 %>% 
  group_by(EMPRESA, PARCELA_ID) %>% 
  summarise(AREA = sum(PARCELA_AREA), 
            PARCELAS = n_distinct(UA))

resumo.ensaios[nrow(resumo.ensaios)+1, ] <- list("TOTAL", "", sum(resumo.ensaios$AREA), sum(resumo.ensaios$PARCELAS))

datatable(resumo.ensaios,
  caption = 'Tabela 1 - Resumo da quantidade de Parcelas de Produção e Área em hectares de Tratamentos e Testemunhas por Empresa', extensions = 'Buttons', options = list(pageLength = 20, dom = 'Bfrtip', buttons = 'excel')) %>% 
  formatRound('AREA', 2)
detalhe.ensaios <- mapa21 %>% 
  group_by(ASSOCIADO, EMPRESA, PARCELA_ID, PARCELA_COD, VARIEDADE_DESC, PARCELA_DESC) %>% 
  summarise(AREA = mean(PARCELA_AREA))

datatable(detalhe.ensaios,
  caption = 'Tabela 2 - Quadro das Parcelas de Produção envolvidas nos Ensaios de Campo 2021', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = 'excel')) %>% 
  formatRound('AREA', 2)

Os insumos agrícolas foram cadastrados e formaram um banco de dados estruturado classificados por categoria, sendo: fungicidas, inseticidas, herbicidas, fertilizantes foliares e fertilizantes de solo. Adicionou-se aos insumos as informações do princípio ativo, grupo químico e modo de ação dos pesticidas, bem como a carência, número máximo de aplicações permitidas no ciclo, dosagens de uso para 100 (cem) litros de calda e dosagem por hectare. Essas informações foram retiradas de bulas dos produtos comerciais através do portal do sistema de agrotóxicos fitossanitários do Ministério da Agricultura, Pecuária e Abastecimento (AGROFIT) [BRASIL 2003].

Os custos dos insumos foram cadastrados pelo pesquisador em mesmo banco de dados, a partir de tabelas de valores de um programa de compras coletivas de insumos agrícolas das cooperativas vinícolas da Serra Gaúcha, do qual a cooperativa Nova Aliança foi participante no ano de 2021.

Os manejos também receberam um cadastro detalhado na plataforma web. Para a composição de despesas de manejos, foi utilizado o valor de R$150 (cento e cinquenta reais) por pessoa por dia, conforme a definição dos cooperados, e o custo total foi definido como a soma de despesas de insumos, despesas de manejo e tratos culturais.

A sincronização dessas informações entre os cooperados e a cooperativa foi realizada no aplicativo mobile NAmob desenvolvido na cooperativa para uso na safra 21/22 pelas equipes de TI e Agronomia.

Todos os registros do aplicativo foram armazenados em um banco de dados instalado no servidor da cooperativa e foram disponibilizados para acesso dos cooperados em formato de relatórios por cultivar ou parcela de produção, buscando atender as necessidades da cooperativa, bem como as exigências da Instrução Normativa Conjunta do Ministério da Agricultura, Pecuária e Abastecimento (MAPA) e Agência Nacional de Vigilância Sanitária (ANVISA) [BRASIL 2018]. Os registros das aplicações nas parcelas de produção foram resumidos na Tabela 3 e Tabela 4.

resumo.aplicacoes.parcelas <- aplicacoes %>% 
  group_by(GRP_FAM, PARCELA, DATA_APLICACAO, INSUMO) %>% 
  summarise(QTD_APLICADA = sum(QTD_APLICADA), 
            CUSTO = sum(CUSTO))

datatable(resumo.aplicacoes.parcelas,
  caption = 'Tabela 3 - Resumo de Tratamentos Fitossanitários das Parcelas de Produção', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = 'excel'))
#criar vetor dos insumos foliares
resumo.aplicacoes.parcelas <- aplicacoes %>% 
  filter(INSUMO %in% vetor.insumos.ensaio) %>% 
  group_by(GRP_FAM, PARCELA, DATA_APLICACAO, INSUMO) %>% 
  summarise(QTD_APLICADA = sum(QTD_APLICADA), 
            CUSTO = sum(CUSTO))

datatable(resumo.aplicacoes.parcelas,
  caption = 'Tabela 4 - Resumo de Insumos Ensaios das Parcelas de Produção', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = 'excel'))

A colheita, classificada como um tipo de manejo, foi considerada a principal etapa no ciclo produtivo. Destacou-se como um manejo chave para o processo de rastreabilidade e para análise financeira das parcelas de produção. Assim, a plataforma web da cooperativa foi preparada para receber um programa de agendamento, permitindo o controle e monitoramento do fluxo de colheita nas parcelas de produção.

Os cooperados que utilizaram o aplicativo mobile NAmob apresentaram além da nota fiscal o lote de colheita correspondente a carga. Esse lote de colheita foi apresentado em um código em formato QRcode para ser escaneado pela equipe de inspeção.

Ao final da Safra 20/21 os dados e informações de todas as cargas de uvas foram integradas e disponibilizadas em relatórios na plataforma web. Foi integrado a esse relatório de safra os dados do mapeamento das parcelas de produção de uvas, registros das atividades agrícolas e seus respectivos valores de custo, bem como os valores relacionados a cada cultivar de uva e seu preço de comercialização.

4.2 Mapeamento dos Ensaios

Todas as parcelas de produção envolvidas nos ensaio estão idenficadas no mapa abaixo.

4.2.1 Importação de Polígonos .kml

map = readOGR("POLIGONOS.kml", layer=ogrListLayers("POLIGONOS.kml"), verbose=T, 
              drop_unsupported_fields=T, dropNULLGeometries=T, stringsAsFactors=F)
## OGR data source with driver: KML 
## Source: "C:\Users\leonardo.reffatti\OneDrive\R\SAFRA 21 - Ensaios de Campo\POLIGONOS.kml", layer: "POLIGONOS"
## with 78 features
## It has 2 fields
# 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/SAFRA 21 - Ensaios de Campo/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))

4.2.2 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/SAFRA 21 - Ensaios de Campo/data.geojson"
data_raw_pontos <- sf::read_sf(data_geojson)

4.2.3 Plot do Mapa 2020 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)
  )

5 Resultados

As aplicações dos insumos envolvidos no ensaio estão detalhadas na Tabela 5. Nessa tabela está detalhado por grupo familiar a identificação da parcela, número de tratamentos realizados, quantidade do insumo aplicado, custo das aplicações e custo por hectare.

5.1 Resumo das Aplicações

resumo.aplicacoes.parcelas <- aplicacoes %>% 
  group_by(GRP_FAM, PARCELA, DATA_APLICACAO, INSUMO, MARCA) %>% 
  summarise(QTD_APLICADA = sum(QTD_APLICADA), 
            AREA = mean(AREA),
            CUSTO = sum(CUSTO)) %>% 
  group_by(GRP_FAM, PARCELA) %>% 
  summarise(N_TRAT = n_distinct(DATA_APLICACAO), 
            QTD_APL = sum(QTD_APLICADA), 
            CUSTO = sum(CUSTO), 
            AREA = mean(AREA), 
            CUSTO_HA = CUSTO/AREA)


datatable(resumo.aplicacoes.parcelas,
  caption = 'Tabela 5 - Parcelas de Produção, Número de Aplicações e Custos', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = 'excel')) %>% 
  formatCurrency('CUSTO') %>% 
  formatCurrency('CUSTO_HA')

5.2 Resumo da Produção, Produtividade e Rentabilidade

Todas as cargas de uvas provenientes das parcelas de produção tiveram seus dados agrupados, conforme a Tabela 6. Essa tabela apresenta por grupo familiar o código da parcela, identificação da variedade, tamanho da área, produção (kg), produtividade (kg/ha), grau babo (grau glucométrico) e rentabilidade bruta (reais/hectare).

resultados <- mapa21 %>% 
  group_by(GRUPO_FAMILIAR, PARCELA_COD, VARIEDADE_DESC) %>% 
  summarise(AREA = sum(PARCELA_AREA), 
            PRODUCAO = sum(PRODUCAO), 
            PRODUTIVIDADE = sum(PRODUTIVIDADE), 
            GRAU_BABO = mean(GRAU_BABO), 
            VALOR_UNT = mean(VALOR_UNT), 
            VALOR_TOTAL = sum(VALOR_TOTAL), 
            RENT_BRUTA = mean(RENT_BRUTA),
            CUSTO_APLICACAO = sum(CUSTO_APLICACAO), 
            CUSTO_APLICACAO_HA = sum(CUSTO_APLICACAO_HA), 
            RENT_LIQ = sum(RENT_LIQ))


resultados.produtividade <- resultados %>% 
  select(-VALOR_UNT, -VALOR_TOTAL, -CUSTO_APLICACAO, -CUSTO_APLICACAO_HA, -RENT_LIQ)

datatable(resultados.produtividade,
  caption = 'Tabela 6 - Produção, Produtividade e Rentabilidade', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = 'excel')) %>% 
  formatCurrency('RENT_BRUTA') %>% 
  formatRound("PRODUTIVIDADE", 0) %>% 
  formatRound("GRAU_BABO", 1)