Você está na página 1de 87

UNIVERSIDADE COMUNITÁRIA DA REGIÃO DE CHAPECÓ

ÁREA DE CIÊNCIAS EXATAS E AMBIENTAIS


CURSO DE CIÊNCIA DA COMPUTAÇÃO

PROTÓTIPO DE APLICAÇÃO WEB PARA ANÁLISE DO MANEJO DE


ADUBAÇÃO EM PLANTAS DE LAVOURA SUBMETIDAS AO
SISTEMA AGROBIOLÓGICO

LUCAS ANTUNES DA ROCHA VOLFE

CHAPECÓ, DEZEMBRO DE 2021


UNIVERSIDADE COMUNITÁRIA DA REGIÃO DE CHAPECÓ
ÁREA DE CIÊNCIAS EXATAS E AMBIENTAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO

PROTÓTIPO DE APLICAÇÃO WEB PARA ANÁLISE DO MANEJO DE


ADUBAÇÃO EM PLANTAS DE LAVOURA SUBMETIDAS AO
SISTEMA AGROBIOLÓGICO

Relatório do Trabalho de Conclusão de


Curso submetido à Universidade
Comunitária da Região de Chapecó
para obtenção do título de bacharelado
no curso de Ciência da Computação.

LUCAS ANTUNES DA ROCHA VOLFE

Orientador(a): Prof.Sandro Silva de


Oliveira, Me.
Co-Orientador(a): Cristiano Reschke
Lajús, Dr.

CHAPECÓ, DEZEMBRO DE 2021

2
PROTÓTIPO DE APLICAÇÃO WEB PARA ANÁLISE DO MANEJO DE
ADUBAÇÃO EM PLANTAS DE LAVOURA SUBMETIDAS AO SISTEMA
AGROBIOLÓGICO

LUCAS ANTUNES DA ROCHA VOLFE

ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO PARA


OBTENÇÃO DO TÍTULO DE:

BACHAREL EM CIÊNCIA DA COMPUTAÇÃO

Prof. Sandro Silva de Oliveira, Me. Prof. Cristiano Reschke Lajús, Dr.
Orientador Co-Orientador

BANCA EXAMINADORA:

Prof. José Carlos Toniazzo. Prof. Cristiano Reschke Lajús, Dr.


Instituição Instituição

Prof. Sandro Silva de Oliveira, Me. Prof. Sandro Silva de Oliveira, Me.
Supervisor de TCC Coordenador de Curso

3
Chapecó, Dezembro de 2021.

LISTA DE FIGURAS

FIGURA 1 - Representação do modelo utilizado para o cálculo do IQSFertbio 22


FIGURA 2 - Diagrama de interpretação de teores de potássio e fósforo 40
FIGURA 3 - Diagrama de interpretação de argila 41
FIGURA 4 - Diagrama de interpretação de nitrogênio 42
FIGURA 5 - Diagrama de interpretação da fórmula NPK 43
FIGURA 6 - Diagrama de Classes 44
FIGURA 7 - Tela de login web 45
FIGURA 8 - Tela de cadastro de usuário web 46
FIGURA 9 - Tela de listagem de anos agrícolas 47
FIGURA 10 - Tela de cadastro de ano agrícola 47
FIGURA 11 - Tela de coleta de amostras do solo 48
FIGURA 12 - Tela de listagem de análises 48
FIGURA 13 - Tela de cadastro do resultado da análise 49
FIGURA 14 - Tela dos indicadores químicos interpretados do solo 49
FIGURA 15 - Tela de recomendações para correção do solo 50
FIGURA 16 - Tela de login e cadastro de usuário para telas menores 51
FIGURA 17 - Tela do menu lateral expandido e lista de anos agrícolas 52
FIGURA 18 - Tela de cadastro e coleta de amostra do solo em anos agrícolas 53
FIGURA 19 - Tela listagem e cadastro do resultado das análises 54
FIGURA 20 - Tela de representação dos índices da amostra e dose recomendada 55
FIGURA 21 - Estrutura de Diretórios da Aplicação Back-End 58
FIGURA 22 - Estrutura de Diretórios da Aplicação Front-End 67

4
FIGURA 23 - Formulário gerado pelo FormBuilder 72
FIGURA 24 - Tela gerada pelo componente de tabela 74
FIGURA 25 - Estrutura base da aplicação 75
FIGURA 26 - Tela de recomendação 76

LISTA DE QUADROS

QUADRO 1 - Requisitos Funcionais 36


QUADRO 2 - Requisitos não Funcionais 38
QUADRO 3 - Dependências requirements.txt 59
QUADRO 4 - Inicialização do servidor 60
QUADRO 5 - Configuração de Acesso a Base de Dados 60
QUADRO 6 - Criação da Tabela de Ano Agrícola com a Migration 61
QUADRO 7 - Criação do Model de Fazenda 62
QUADRO 8 - Definição de algumas Rotas 63
QUADRO 9 - Exemplo do método para persistir os dados 64
QUADRO 10 - Configuração authtoken na aplicação 65
QUADRO 11 - Configuração authtoken no ViewSet 65
QUADRO 12 - Dependências Package.json 68
QUADRO 13 - Rotas da aplicação 69
QUADRO 14 - Rotas sendo configuradas na aplicação 70
QUADRO 15 - Configurações do gerador de formulário 71
QUADRO 16 - Configurações do componente de tabela 73

5
LISTA DE SIGLAS

AP - Agricultura de Precisão
API - Application Programming Interface
ASCII - American Standard Code for Information Interchange
CSS - Cascading Style Sheets
CSRF - Cross-site Request Forgery
CTC - Capacidade de Troca de Cátions
DNS - Domain Name System
DOM - Document Object Model
ER - Engenharia de Requisitos
GPS - Global Positioning System
HTML - HyperText Markup Language
HTTP - HyperText Transfer Protocol
IBGE - Instituto Brasileiro de Geografia e Estatística
INPE - Instituto Nacional de Pesquisas Espaciais
IQS - Índice de Qualidade de Solo
JSON - JavaScript Object Notation
NDVI - Normalized Difference Vegetation Index
OO - Orientação a Objetos
ORM - Object Relational Mapper
REST - Representational State Transfer
SIG - Geographic Information System
SR - Sensoriamento Remoto
SOAP - Simple Object Access Protocol
SQL - Structured Query Language
TCP - Transmission Control Protocol

6
UML - Unified Modeling Language
URL - Uniform Resource Locator
VANT - Aeronaves e Veículos Aéreos não Tripulados
XML - eXtensible Markup Language
WEB - World Wide Web

7
RESUMO

Uma das estratégias utilizadas para aprimorar a produção agrícola é a


Agricultura de Precisão – AP (Precision Agriculture) que favorece na tomada de
decisões, analisando dados de diferentes fontes espacial e temporal. Este trabalho tem
como objetivo desenvolver um protótipo web para interpretação de resultados de
análises químicas e orgânicas do solo, associando a tabelas interpretativas para sugerir
doses corretivas de bioinsumos, auxiliando produtores na correção nutricional do solo
antes e depois de uma safra. Buscou-se compreender métodos de melhorias em
procedimentos agrícolas, meios de estimativas com a menor margem de erro e
tecnologias para relacionar amostras do solo com indicadores de qualidade química e
biológica. A recomendação de adubação é feita através de tabelas de interpretação
fundamentadas por especialistas da região avaliada, no Manual de calagem e adubação
para os estados de Santa Catarina e Rio Grande do Sul, encontra-se as variáveis e
fluxos para o desenvolvimento da modelagem do protótipo, para isso foi utilizado
recursos da engenharia de software, como a Linguagem de Modelagem Unificada
(UML) na construção dos modelos de contexto, classe e domínio. A implementação
foi feita com o uso do framework Django, desenvolvido em python orientado a
objetos, que possui suporte ao mapeamento objeto-relacional para o banco de dados, a
aplicação web utiliza a biblioteca React para desenvolver os componentes necessários.
Ao utilizar o protótipo, o usuário possui um meio de interpretação e sugestão de
correção do solo baseado nos indicadores analisados, a dosagem correta de cada
substância evita uma saturação do solo e o controle do material necessário para
desenvolver o cultivo.

Palavras-chave: agricultura de precisão, adubação, tecnologia web.


ABSTRACT

One of the strategies used to improve agricultural production is Precision Agriculture –


AP (Precision Agriculture), which favors decision-making, analyzing data from
different spatial and temporal sources. This work aims to develop a web prototype to
interpret the results of chemical and organic soil analysis, associating interpretive
tables to suggest corrective doses of bioinputs, helping producers in the nutritional
correction of the soil before and after a harvest. We sought to understand methods to
improve agricultural procedures, means of estimation with the smallest margin of error
and technologies to relate soil samples with indicators of chemical and biological
quality. The fertilization recommendation is made through interpretation tables
substantiated by specialists from the evaluated region, in the liming and fertilization
manual for the states of Santa Catarina and Rio Grande do Sul, the variables and flows
for the development of the prototype modeling are found. , for this, software
engineering resources were used, such as the Unified Modeling Language (UML) in
the construction of context, class and domain models. The implementation was made
using the Django framework, developed in object-oriented python, which supports
object-relational mapping for the database, the web application uses the React library
to develop the necessary components. By using the prototype, the user has a means of
interpreting and suggesting soil correction based on the analyzed indicators, the correct
dosage of each substance avoids soil saturation and the control of the material
necessary to develop the cultivation.

Keywords: precision agriculture, fertilization, web technology.

9
SUMÁRIO

1 INTRODUÇÃO 11
1.1 Contextualização 11
1.2 Delimitação Do Problema 12
1.3 Objetivos 13
1.3.1 Objetivo Geral 13
1.3.2 Objetivos Específicos 13
1.4 Justificativa 14
1.5 Procedimentos Metodológicos 14
1.6 Estrutura do Trabalho 15

2 REVISÃO BIBLIOGRÁFICA 16
2.1 Agricultura De Precisão 16
2.1.1 Sistema De Informação Geográfica 17
2.1.2 Sensoriamento Remoto 17
2.1.3 Tecnologia De Taxa Variável 18
2.2 Bioindicadores 18
2.2.1 Adubação Química 19
2.2.2 Tecnología De Bioanálise De Solo 20
2.2.3 Sistema De Recomendação De Calagem E Adubação 22
2.3 Métodos De Estimativa 23
2.3.1 Método De Controle Variograma 23
2.3.2 Krigagem 24

10
2.3.3 Considerações finais do capítulo 25
2.4 Ferramentas e Tecnologias 25
2.4.1 Linguagem Uml 26
2.4.2 Orientação a Objetos 27
2.4.3 Desenvolvimento Web 28
2.4.4 Desenvolvimento de Server-Side 29
2.4.5 Protocolo Https 29
2.4.6 Arquitetura Restful 30
2.4.7 Frameworks Para Desenvolvimento 31
2.4.8 Biblioteca De Desenvolvimento React 32
2.4.9 Django Rest Framework 33
2.4.10 Armazenamento De Dados 33
2.4.11 Postgresql 34
2.5 Considerações do capítulo 35

3 MODELAGEM DO PROTÓTIPO 35
3.1 Requisitos Funcionais 36
3.2 Requisitos Não Funcionais 38
3.3 Modelos De Atividades 39
3.4 Diagrama De Classe 44
3.5 Wireframes 45
3.6 Considerações finais do capítulo 56

4 DESENVOLVIMENTO DO PROTÓTIPO 57
4.1 Desenvolvimento do Back-End 58
4.1.1 Estrutura de Diretórios 58
4.1.2 Inicialização do Servidor 60
4.1.3 Conexão com o Banco de Dados 61
4.1.4 Migrations 62

11
4.1.5 Model´s 63
4.1.6 Rotas e ViewSets 63
4.1.7 Permissões de acesso 65
4.2 Desenvolvimento do Front-End 67
4.2.1 Estrutura de Diretórios 67
4.2.2 Módulo de Autenticação – Login e Registro 70
4.2.2 Componentes Fundamentais 72
4.3 Considerações finais do capítulo 77

5. CONCLUSÕES 78
5.1 Trabalhos Futuros 79

REFERÊNCIAS 80

ANEXOS 85

12
1 INTRODUÇÃO

1.1 Contextualização

A necessidade de atender a alta demanda no consumo de alimentos


transformou a agricultura nos últimos anos, melhorias e avanços ocorrem
frequentemente trazendo inovação e investimentos para a área (ARTUZO et al.,
2016).
O desafio de garantir a boa qualidade do grão e uma alta safra envolve
inúmeros fatores, entre eles condições climáticas, cultura anterior, nutrientes no solo e
questões ambientais (Vitousek et al., 2009).
Uma das estratégias utilizadas para aumentar o rendimento agrícola é a
Agricultura de Precisão – AP (Precision Agriculture) que favorece na tomada de
decisões analisando dados de diferentes fontes espacial e temporal (DE OLIVEIRA,
2016).
De modo geral, AP foi elaborada visando resolver a desuniformidade das
lavouras avaliando e tratando a variabilidade espacial e temporal fazendo uso de
ferramentas para auxiliar o gerenciamento do processo, aumento da produtividade,
impacto ambiental e retorno financeiro (Brasil, 2013).
Algumas das estratégias utilizadas na AP é a divisão das lavouras em zonas de
manejo georreferenciando amostras coletadas do solo para análise laboratorial,
auxiliando na gestão de nutrientes específicos (SAHU, 2019). Com os resultados das
amostras é possível associar os valores a aplicação de fertilizantes, defensivos
agrícolas entre outros insumos.
A geotecnologia vem sendo cada vez mais explorada para melhorar os
processos através do uso de hardware e software capazes de armazenar e manipular
dados coletados, criando um conjunto de métodos e técnicas utilizados para analisar e
explorar as condições de recursos naturais (EMBRAPA, 2014).
Outro recurso da AP é a geoestatística que extrai características probabilísticas
de fenômenos regionalizados correlacionando valores localizados próximos ao espaço
amostrado, é muito utilizado para efetuar estimativas e simulações de variáveis em

13
locais não amostrados, dentre os métodos de estimativas mais utilizados a krigagem
chega a seus valores através de médias móveis de valores distribuídos no espaço
gerados através de uma função denominada variograma (LANDIM, 2002).
Com isso será apresentado um projeto de um protótipo web para auxiliar na
interpretação de análises de solo, com uma interface Web para a interação com o
usuário. A interface da ferramenta fornece recursos para acompanhar o processo de
gerenciamento da propriedade e seus cultivos.

1.2 Delimitação Do Problema

Para atingir um rendimento aceitável no cultivo de grandes lavouras é


necessário avaliar as condições do solo para detectar possíveis áreas com deficiência
nutritiva. A falta de nutrientes influencia diretamente na qualidade do grão e
rendimento da safra. Essa avaliação físico/química antes de iniciar o plantio possibilita
a correção da variação de teores em diferentes partes da lavoura.
O acompanhamento do solo através de análises físicas e químicas possibilita a
compreensão da situação atual das condições férteis, laudos emitidos por laboratórios
especializados em amostras fornecem valores de elementos necessários que quando
comparados as tabelas fornecidas pelo Manual de Calagem e Adubação do Rio
Grande do Sul e Santa Catarina (2016), auxiliam na interpretação das amostras.
Com o gerenciamento da propriedade através de uma aplicação é possível
manter o histórico de cultivos e teores amostrados auxiliando na tomada de decisão e
recomendação de insumos para a correção do solo, diminuindo os custos para manter
a safra.

14
1.3 Objetivos

1.3.1 Objetivo Geral

O objetivo deste projeto é desenvolver um protótipo web para interpretar


resultados de análises químicas e orgânicas de solo associando a tabelas interpretativas
para sugerir doses corretivas de bioinsumos.

1.3.2 Objetivos Específicos

➔ Interpretar resultados das amostras georreferenciadas correlacionados com


manual de adubação e calagem.
➔ Sugerir doses de recomendação para correção da variação de nutrientes.
➔ Otimizar a adubação.
➔ Manter o histórico de plantio e teores amostrados da lavoura.

1.4 Justificativa

Em um sistema de cultivo é importante o conhecimento da cultura antecessora


e o intervalo entre cada safra para potencializar os resultados e obter melhores
rendimentos (PRIEBE et al., 2018), para isso é preciso um meio de armazenamento de
informações de fácil acesso e de alta disponibilidade.
As características do solo estão diretamente relacionadas ao rendimento de uma
planta, com a análise prévia das condições de micro e macro nutrientes é possível
avaliar a capacidade do solo na disponibilização dos nutrientes para a planta
(SEGATTO, 2019). Esse conhecimento é fundamental para a tomada de decisão de
qual a dosagem adequada para a correção e manutenção da lavoura.
Com o gerenciamento das culturas e registro de cada processo executado na
lavoura é possível avaliar o desempenho da produção baseada nas correções
recomendadas anteriormente. O mapeamento de cada amostra do solo e seus valores

15
devidamente analisados apresentam as condições do ambiente indicando pontos de
deficiência nutritiva.
A recomendação de adubação é feita através de tabelas de interpretação
fundamentadas por especialistas da região avaliada. É levado em consideração
inúmeros fatores químicos e físicos e descrevem modelos matemáticos com sugestões
para adequação do solo (PRIEBE et al., 2018). Com isso é possível elaborar
aplicações computacionais para auxiliar no processo das análises necessárias.
A dosagem correta de cada substância evita uma saturação do solo e o controle
do material necessário para desenvolver o cultivo, favorecendo a economia de
recursos financeiros evitando desperdícios com a aplicação de material acima do
necessário, atendendo a demanda com maior eficiência.

1.5 Procedimentos Metodológicos

Para realizar este projeto será elaborado uma pesquisa quantitativa com
enfoque explicativo através de pesquisas bibliográficas em artigos, livros e trabalhos
de conclusão de curso, a parte metodológica consiste no acompanhamento do cultivo
de milho e soja avaliando indicadores biológicos.
A partir de uma fundamentação sobre agricultura de precisão buscou-se
compreender métodos de melhorias em procedimentos agrícolas, meios de estimativas
com a menor margem de erro e tecnologias para relacionar amostras do solo com
indicadores de qualidade química e biológica.
Através da revisão bibliográfica será desenvolvido uma aplicação web para
auxiliar agrônomos e produtores rurais no gerenciamento da lavoura, permitirá manter
registros relacionados às safras e seus rendimentos, valores da análises do solo
georeferenciado e quanto foi sugerido para a correção. Uma aplicação web bem
elaborada permite a página se adequar em monitores de computadores e telas menores
de dispositivos móveis facilitando a utilização da solução, o desenvolvimento técnico
do projeto começa com a engenharia de software para compreender os casos de uso e
a elaboração de diagramas de domínio.

16
Dentre as ferramentas utilizadas para a elaboração do projeto, será utilizado
React para desenvolvimento da interface do usuário, Python para o servidor e Postgres
como gerenciador de banco de dados.

1.6 Estrutura do Trabalho

O documento está dividido em 5 capítulos. O capítulo 2 contém uma revisão


bibliográfica sobre os aspectos gerais da agricultura de precisão, métodos de
interpretação de análises laboratoriais, e sobre as tecnologias aplicadas no
desenvolvimento do protótipo. O capítulo 3 apresenta a análise e modelagem do
protótipo, requisitos funcionais e não funcionais, diagramas de classes, entidades
relacionamentos e os wireframes dos protótipos das telas. O capítulo 4 apresenta a
documentação do desenvolvimento do protótipo, subdividido na documentação do
Back-End, e na documentação do Front-End. O capítulo 5 é dedicado a conclusão e
trabalhos futuros

17
2 REVISÃO BIBLIOGRÁFICA

2.1 Agricultura De Precisão

Com o objetivo de maximizar a produtividade e diminuir custos durante o


cultivo inúmeras técnicas vem sendo elaborada, a Agricultura de Precisão (AP) é um
sistema de gerenciamento no qual utiliza tecnologias como sensores remotos e
Sistema de Posicionamento Global (GPS) para aplicação de insumos levando em
consideração a variabilidade espacial e temporal (PIRES et al., 2004).
As técnicas de AP devem ser aplicadas de acordo com a necessidade, pode ser
usado o georreferenciamento para monitoração de produção, gestão de água e
nutrientes. Várias ferramentas são utilizadas para aplicar a AP, a geoestatística utiliza
métodos de coleta de solo para análise laboratorial, posteriormente ocorre a
interpolação de dados para estimar valores regionalizados permitindo o
monitoramento do local específico a cada ciclo observando escalas de micro a macro
nutrientes (SAHU, 2019).

2.1.1 Sistema De Informação Geográfica

Na AP é possível a utilização do sistema de informação geográfica (SIG), que


são projetados para persistência, análise e manipulação de dados geográficos. Com ele
é possível a administração de recursos naturais, avaliar condições ambientais,
cartografia entre outros, facilitando a integração de dados coletados em diversas
fontes. Para isso é necessário a modelagem dos processos e dados do fenômeno
avaliado, armazená-los em um repositório de informações gerando um banco de dados
com valores georreferenciados (CÂMARA et al., 1996).
Um SIG possui quatro entradas de dados, sendo elas via caderneta de campo
que inserem os dados após o controle de qualidade, digitalização de mesa feita a partir
de mapas existes envolvendo processos de ajustes de nós e geração de topologia, a
digitalização óptica é feita através de scanners convertendo os dados para um formato

18
vetorial e a leitura digital que permite a utilização de dados já processados por outras
instituições como Instituto Brasileiro de Geografia e Estatística (IBGE) e Instituto
Brasileiro de Geografia e Estatística (INPE). O processamento é feito de acordo com o
tipo de dado, podendo ser uma análise geográfica com funções de medidas, mapas de
distância, tabulação cruzada dentre outras (CÂMARA et al., 1996).

2.1.2 Sensoriamento Remoto

Uma fonte de dados é o Sensoriamento Remoto (SR) passivo que responde a


estímulos externos como luz do sol ou energia emitida pelo alvo e sensores ativos que
são projetados para o interagir com o próprio instrumento, como um laser que mede
sua reflectância. Para auxiliar o SR é utilizado satélites, aeronaves e veículos aéreos
não tripulados (VANTs), que contam com sistemas de base espacial, terrestre, remoto
e sistemas para o armazenamento dos dados coletados (SAHU, 2019).
A refletância tem sido bastante utilizada no SR medindo a densidade da
cobertura vegetal identificando a intensidade de cada material, associando a índices
como área foliar e biomassa. Essas estimativas apresentam as condições fisionômicas
e fisiológicas da matéria analisada fornecendo informações qualitativas e
quantitativas. Outros indicadores podem ser avaliados através do SR, o Índice de
Vegetação por Diferença Normalizada (NVDI) é o resultado da diferença entre a
reflectância do infravermelho e do vermelho indicando a presença de vegetação
(SHIRATSUCHI et al., 2014).

2.1.3 Tecnologia De Taxa Variável

Na AP a aplicação dos insumos é feita de acordo com o resultado da análise de


cada amostra e a quantidade de acordo com a indicação. Para chegar a um resultado é
necessário avaliar as variáveis que influenciam ou afetam o rendimento da colheita e

19
máquinas como pulverizadores com a possibilidade de regular a quantidade da saída
(SAHU, 2019).
Através de sistemas eletrônicos que operam os distribuidores das máquinas
agrícolas é possível aplicar os produtos de forma variável, esses sistemas levam em
consideração valores gerados por sensores de velocidade, pressão e vazão corrigindo a
quantidade aplicada abrindo ou fechando válvulas de controle diminuindo a taxa de
erro de acordo com cada situação (SARAIVA et al., 2000).

2.2 Bioindicadores

Para que um solo seja considerado saudável, deve estar biologicamente ativo,
produtivo e resiliente promovendo a saúde das plantas preservando a qualidade
ambiental, como consequência traz uma série de benefícios como o armazenamento e
infiltração de água, biorremediação de pesticidas entre outros. A utilização de
fertilizantes e pesticidas em doses acima do recomendado pode resultar em uma alta
produtividade de uma área com baixa qualidade, mas se torna insustentável a longo
prazo, cada vez mais agricultores demonstram interesse nas avaliações do solo para
tomada de decisão em sistemas de grande escala com baixa rotação de culturas
(MENDES, 2020).
No desafio para aumentar a produtividade de alimentos baratos e saudáveis
sem perder a margem de lucro e atingir o ambiente, a análise dos componentes
biológicos apresentam uma relação com condições físicas e químicas do solo
influenciando no rendimento e sustentabilidade do sistema agrícola, para o bom
funcionamento do solo microrganismos atuam em processos de decomposição de
resíduos orgânicos, ciclagem de nutrientes e formação de matéria orgânica
confirmando a importância da análise microbiológica na avaliação do solo (MENDES,
2020).
A biomassa é composta por fungos, bactérias e actinomicetos expressa em mg
de C, N e P por kg de solo. As reações bioquímicas que acontecem no solo são
catalisadas por proteínas de ativação específicas, essas enzimas atuam em reações

20
metabólicas em seres vivos e reações hidrolíticas e oxidativas na decomposição de
resíduos orgânicos, o grupo de pesquisas em microbiologia do solo da embrapa
selecionou as enzimas arilsulfatase e B-glicosidase como bioindicadores de alta
sensibilidade para detectar alterações do solo, com isso foi desenvolvido estratégias de
interpretação baseado na produtividade de grãos de soja e milho, existe uma
diferenciação entre as tabelas elaboradas para os períodos de coleta e análise do solo,
que pode acontecer em um período chuvoso em cultivo anual, convencional e após a
colheita das culturas (MENDES, 2020).

2.2.1 Adubação Química

A nutrição vegetal é composta por inúmeros elementos químicos, cálcio e


magnésio podem ser aplicados a partir do calcário, corrigindo a acidez do solo, dentre
os macronutrientes estão Nitrogênio (N), Fósforo (P) e Potássio (K) enquanto os
micronutrientes envolvem Boro (B), Cloro (Cl), Cobre (Cu) entre outros, constituindo
grupos de fertilizantes muito utilizados na agricultura, contudo fertilizantes são corpos
estranhado no solo podendo ser contaminantes desviando a composição normal do
ambiente, seu uso deve obedecer recomendações agronômicas mediante análises
químicas de fertilidade. Os corretivos são constituídos por rochas de diversas origens
capazes de corrigir propriedades do solo que interferem no desenvolvimento da planta
sem causar prejuízos (GOMES et al. 2008).
A fertilização do solo mais usual é por fontes de nutrientes industrializados
solúveis misturando em diferentes concentrações de porções com Nitrogênio (N),
Fósforo (P) e Potássio (K) junto a outros micronutrientes de acordo com o tipo de solo
e cultura, permitindo a rápida distribuição de nutrientes para a planta e produção em
solos pobres de nutrientes, contudo a utilização desse sistema traz alguns problemas
ambientais sendo insustentável em ecossistemas frágeis, outras técnicas são testadas
dentre elas a rochagem que utiliza rochas e outros minerais como fontes de nutrientes
para o solo e planta, combinando mineralogia e geoquímica da rocha (TOSCANI;
CAMPOS, 2017).

21
A rochagem é uma alternativa utilizada para correção da acidez, fonte de
nutrientes e remineralizador do solo, incorpora pó de rocha junto a outros minerais
auxiliando na redução de produtos químicos e impactos ambientais. As rochas liberam
de forma gradual os nutrientes gerando argilas, que elevam a Capacidade de Troca de
Cátions (CTC) facilitando o desempenho de fungos, aumentando a capacidade de
absorção de nutrientes do solo, podendo ser encontrado como resíduos de processos
de britagem, corte de rochas, exploração mineral de pedreiras. A rochagem se
diferencia dos fertilizantes na diversidade de nutrientes disponíveis por um período de
tempo maior, agindo lentamente no desenvolvimento da planta, enquanto fertilizantes
convencionais atuam imediatamente, esse período estendido de atuação do pó de
rocha misturado a outros adubos orgânicos, como complemento gera uma reserva de
nutrientes, favorece a resistência das plantas a estresses bióticos e abióticos (BRITO et
al., 2019).

2.2.2 Tecnología De Bioanálise De Solo

Desenvolvida pela Embrapa, a BioAS é uma inovação tecnológica com o


objetivo de viabilizar a sustentabilidade das atividades agrícolas, agregando
componentes biológicos nas análises do solo avaliando as enzimas arilsulfatase e
beta-glicosidase associadas ao ciclo do enxofre e carbono, ajudando na avaliação da
saúde do solo envolvendo Índices de Qualidade do Solo (IQS), calculados a partir das
propriedades em conjunto (IQSFertbio) e isolados (IQSBio e IQSQUIM). As enzimas
avaliadas nesse processo estão correlacionadas com o rendimento de grãos e matérias
orgânica do solo, são sensíveis a indicadores químicos e físicos apontando com
antecipação a alterações que ocorrem no solo pelo seu uso e manejo, outras vantagens
na utilização desses indicadores é a precisão, baixa vulnerabilidade temporal,
coerência, sensibilidade, adequação a aspectos relacionados a amostragem do solo
após a colheita entre outros (EMBRAPA 2020).
Para auxiliar a interpretação dos resultados das amostras, foi desenvolvido
tabelas interpretativas dos bioindicadores, estabelecendo valores referenciais para

22
avaliação biológica do solo, quanto maior o resultado melhor as condições do solo,
apontando deficiência no sistema de produção e boas práticas de manejo, favorecendo
na tomada de decisões. Para disponibilizar a tecnologia ao mercado, a Embrapa está
capacitando laboratórios comerciais para as análises do solo, integrando-os a uma rede
conectada aos serviços da Embrapa através do módulo de interpretação da qualidade
do solo BioAS, que avalia as amostras enviadas respondendo com o resultado da
interpretação, para que o laboratório gere o laudo final para o cliente. As amostras do
solo devem seguir os mesmos princípios tradicionais para análise química coletadas
em uma profundidade de 0 a 10 cm preferencialmente após a colheita. A Figura 1
demonstra como a Embrapa projetou seu modelo de cálculo dos índices de qualidade
do solo (EMBRAPA, 2020).

Figura 1. Representação esquemática do modelo utilizado para o cálculo do IQS FERTBIO.

Autor: (EMBRAPA, 2020)

23
2.2.3 Sistema De Recomendação De Calagem E Adubação

A utilização racional de corretivos e fertilizantes otimiza o retorno econômico,


favorece na manutenção da acidez do solo e controle de nutrientes disponíveis, o
sucesso da calagem e adubação para a cultura está associada a manipulação da
fertilidade do solo, observação de princípios básicos, a escolha do melhor local de
atuação e a utilização de técnicas de manejo recomendadas (CQFS–RS/SC, 2016).
As recomendações de calagem e adubação são geradas por pesquisas e estão
em constante atualização e são na maior parte apresentada em tabelas, o processo
inicia com a amostragem do solo, em seguida passa pela seleção de métodos para
chegar em valores para adubação e calibração do sistema de recomendação
(CQFS–RS/SC, 2016).
No Anexo A é possível observar um exemplo de relatório disponibilizado pelo
laboratório que efetuou a análise e no Anexo B é apresentado algumas das tabelas
utilizadas para a interpretação do resultado emitido.

2.3 Métodos De Estimativa

Para aplicar a AP é utilizado a geoestatistica levando em consideração a


variabilidade espacial do solo. Ao elaborar modelos estatísticos nesse contexto é
muito importante a escolha de um modelo adequado para análise dos dados, ajustar
uma margem de tolerância a erros e fazer a validação do modelo para garantir a
confiabilidade e eficiência (VIEIRA, 2000).
Na AP qualquer ponto amostral deve ser georreferenciado associado a outros
atributos sempre que necessário, gerando uma grande quantidade de dados que
devidamente estruturados, processados e analisados fornecem recursos para geração
de informações sobre a lavoura (MOLIN, 2015).

24
2.3.1 Método De Controle Variograma

Para diminuir a margem de erro, a variância leva em consideração a totalidade


dos valores da variável em análise estabilizando seus índices de variabilidade, é
baseada nas irregularidades da média aritmética determinando a média dos quadrados
dos desvios, para normalizar o resultado que é expresso em um número de unidade
quadrada, é utilizado o desvio padrão definido como a raiz quadrada da variância,
sendo uma medida muito importante para auxiliar na inferência estatística e em
combinações de amostras (CRESPO, 2020).
No geoprocessamento o variograma descreve a variância entre pares de
observação e a distância que separa essas amostras, caracterizando as estruturas e as
correlações da variável, variogramas experimentais devem ser construídos por um
modelo teórico autorizado bem definido podendo utilizar combinações lineares para
ajustes, o tamanho da malha que será aferida e sua tolerância está relacionado a taxa
de erro e deve se de acordo com o contexto (GRIPP, 1992).
A função variograma possui alguns parâmetros, o alcance representa a
distância das amostras correlacionadas espacialmente, patamar é o valor máximo que
o variograma possui dependência espacial entre amostras, o efeito pepita apresenta a
descontinuidade do modelo para medidas menores que a distância dos pontos
amostrados e por fim a contribuição que expressa a diferença entre o patamar e o
efeito pepita (CAMARGO, 1998).

2.3.2 Krigagem

Para determinar o valor de uma coordenada que não foi amostrada é utilizado a
krigagem, que leva em consideração a dependência espacial gerada a partir de
variogramas para atribuir os pesos e o erro associado à variável em análise, o que a
diferencia dos demais algoritmos de interpolação, para minimizar o erro executa uma
série de análises de regressão diminuindo a variância a partir de um modelo prévio,

25
levando em consideração a dependência estocástica entre os dados distribuídos no
espaço (LANDIM, 2002).
A utilização da krigagem como técnica de estimativa possibilita elaborar mapas com
as características do solo e atributos da cultura em análise da área de estudo,
auxiliando na definição de linhas isovalores, avaliar o efeito das atividades realizadas
na qualidade do solo e rendimento da cultura (VIEIRA, 2000).
Existe algumas variações do método de krigagem, a escolha depende do
contexto de uso, a krigagem simples é utilizando quando a média é assumida como
constante para toda a área, enquanto a ordinária utiliza amostras de elementos vizinho
para estimar a média local, krigagem indicativa necessita uma transformação não
linear modificando cada valor do conjuntos amostral em valores por indicação, para
processos que apresentam tendência é recomendado a krigagem universal e a
krigagem disjuntiva assume o modelo com uma função arbitrária da função Z(x)
estimando tanto o valor quanto o indicador (GUALBERTO, 2020).
Estudos realizadas por Santos (2011), que executou métodos de krigagem em
simulações, utilizando dados em uma estrutura de grid’s (malhas bidimensionais) com
inúmeros tamanhos e configurações, determinando a dimensão do espaço vetorial e
subespaços da projeção, os dados vetoriais gerados pelas simulações expressam a
tendência de primeira ordem em relação às coordenadas, foram ajustados utilizando
métodos de variogramas, para comparar os métodos da krigagem foi utilizado a
variância da krigagem média através do software R (R DEVELOPMENT CORE
TEAM, 2010), chegando a conclusão de que a krigagem simples se considerado um
processo gaussiano com vetor de médias conhecido, terá maior precisão nos valores
gerados.

2.3.3 Considerações finais do capítulo

Neste mesmo, foi possível compreender o que é Agricultura de Precisão e as


técnicas envolvidas no processo de otimização da produção agrícola, as tecnologias
para desenvolvimento de uma aplicação web serão abordadas no próximo capítulo.

26
2.4 Ferramentas e Tecnologias

Para o desenvolvimento de um software é necessário o planejamento dos


requisitos e funcionalidades, através de modelos abstratos e documentação atualizada
buscando seu perfeito funcionamento evitando correções desnecessárias, a modelagem
do software facilita a compreensão do projeto para quem está integrado e os que
futuramente entrarão na equipe mantendo a qualidade e rapidez na construção,
condições que estão relacionados ao método adotado no ambiente de
desenvolvimento, controle de qualidade, utilização de arquitetura adequada para cada
projeto, controle nos processos e fidelidade aos padrões (LOBO, 2009).
A engenharia de software fornece recursos para a construção de modelos com
qualidade, padrão e arquitetura bem definida utilizando Linguagem de modelagem
unificada (UML) para auxiliar na representação gráfica e orientação a objetos para
implementação. A UML é uma linguagem para modelagem de software que permite
criar modelos abstratos de qualquer software com flexibilidade e customização, é
composta por diagramas que representam uma determinada parte do software ou
perspectiva, permite pensar em arquiteturas para o reuso de código e a criação de
novos recursos de maneira ágil através de representações dos objetos e a comunicação
entre eles (LOBO, 2009).

2.4.1 Linguagem Uml

Os modelos abstratos gerados pela UML descrevem processos do mundo real


ou de softwares e seus elementos estruturais, junto ao comportamento que esses
elementos executam quando interagem, pode ser utilizada para modelar todas as
etapas de desenvolvimento e produzir os artefatos necessários para a documentação da
aplicação. A UML possui sua formalidade baseada em diferentes tipos de diagramas
que permitem a criação de sistemas distribuídos e o mapeamento do relacionamento
em diferentes níveis de abstração favorecendo no refinamento do modelo de maneira
não ambígua (GUDWIN, 2010).

27
Um diagrama contém ícones que são figuras gráficas que não possuem
conteúdo podendo aparecer como terminadores ou isolantes de símbolos
bidimensionais, possuem tamanhos variáveis expandindo de acordo com a
necessidade para conter outros elementos divididos em compartimentos similar ou
diferentes, os caminhos são sequências de linhas conectadas a outros elementos e as
strings apresentam textos com diversas informações com o significado de acordo com
sua origem (GUDWIN, 2010).
Diagramas estruturais estáticos representam elementos que existem como
classes e tipos, sua composição interna e o relacionamento entre esses elementos, não
apresentam informações temporais, os tipos fundamentais para representar esse tipo
de estrutura é o diagramas de classes que demonstram conjuntos de classes e os tipos
relacionados entre si, também podem representar templates, objetos, associações e
generalizações, atributos e métodos dos objetos, enquanto diagrama de objetos
apresentam instâncias compatíveis com algum diagrama e o relacionamento estrutural
entre elas, preponderando as classes podendo ter diversas instâncias de uma mesma
classe, com intuito de representar os objetos enquanto o diagrama de classe representa
a organização das classes (GUDWIN, 2010).
Um diagrama de casos de uso descreve de maneira central os requisitos e as
funcionalidades desempenhadas pelo sistema e os atores externos da aplicação, que
podem ser representados por um usuário, outro sistema ou hardware, essa
comunicação acontece através de associações conectando atores com casos de uso ou
outros atores, esses atores podem possuir relacionamentos de generalização ou
especialização de cada classe. Diagramas de Atividade captam ações e seus resultados
focado no trabalho executado pelo método da operação, as atividades em uma
instância do objeto mostrando o fluxo sequencial e suas tarefas mudando de estado
após uma ação ser executada, pode conter decisões e condições em execuções
paralelas (FONSECA, 2018).

28
2.4.2 Orientação a Objetos

A orientação a objetos é um paradigma conceitual independente da linguagem


de programação com o desenvolvimento baseado em objetos, possui conceitos de
abstração que envolvem a habilidade de esconder detalhes irrelevantes concentrando
apenas nas semelhanças entre objetos, situações e processos, já as classes representam
um conjunto de objetos com características afins, definindo o comportamento dos
objetos criados a partir dela através de métodos e atributos, pode estender seu conceito
para superclasse e subclasse, podem ser criadas a partir de uma superclasse herdando
as características da classe mãe e permite a implementação de novos métodos e
atributos. Um objeto neste contexto é uma instância de uma classe, capaz de
armazenar estados em seus atributos e interagir com outros objetos através de seus
métodos (REIS, 2010).
O encapsulamento separa aspectos internos e externos do objeto sendo um
mecanismo muito utilizado como proteção impedindo o acesso direto aos atributos e
alguns métodos disponibilizando somente oque é necessário para o modificação de
seu estado ou comunicação com outro objeto. A herança permite reutilizar atributos e
operações definidas em classes gerais expressando a generalização ou associação, esse
compartilhamento entre classes ocorre de forma hierárquica e acontece quando uma
classe é criada a partir de outra. Poliformismo permite tratar objetos semelhantes de
maneira uniforme se comportando de acordo com sua classe, para ser implementado
utiliza o conceito de herança aplicado somente aos métodos da classe. Dentro de um
sistema cada objeto é único e possui uma identidade e uma única forma de ser
representado, chamado ou acessado em toda a aplicação mesmo sendo criado de uma
classe que instanciou inúmeros objetos (REIS, 2010).

2.4.3 Desenvolvimento Web

A evolução da tecnologia proporcionou o aumento de aplicações web,


softwares que utilizam HTML, CSS, Javascript para seu desenvolvimento apresentam

29
um desafio de aplicar boas práticas de modo coerente, algumas características que
auxiliam para o aumento da complexidade em um projeto é a necessidade da
disponibilidade contínua 24h todos os dias com respostas rápidas em momentos de
pico, com o crescimento da base de dados requer o gerenciamento das conexões
simultâneas, compartilhamento de ambiente com muitos usuários, garantir que o
código resiste a anos de alterações e manutenção, ter um suporte de múltiplos
tamanhos de tela se adaptando de acordo com o dispositivo do usuário e manter o
conteúdo exposto na tela atualizado (LOUDON, 2010).
Para uma grande aplicação a reutilização de código é fundamental, para tratar a
complexidade modularizando componentes é encapsulado tudo que será utilizado em
partes pequenas e bem definidas, permitindo a divisão da aplicação em fragmentos
facilmente manuseáveis abstraídos de detalhes, permitindo que cada módulo possa
trabalhar de modo independente. O encapsulamento é o agrupamento de tudo que o
módulo necessita dentro de uma unidade coesa, para uma aplicação WEB deve ser
agrupado todo o HTML, CSS e JavaScript, um projeto elaborado desde o início que
utiliza desse recurso tem como benefício a capacidade de reutilização,
sustentabilidade e confiabilidade da aplicação (LOUDON, 2010).

2.4.4 Desenvolvimento de Server-Side

O desenvolvimento de uma interface para a comunicação com um cliente


através de um servidor simplifica a arquitetura permitindo a construção de módulos
independentes, fornecendo os recursos através de URLs que entregam representações
do banco de dados no formato HTML, XML, JSON. Com as permissões corretas é
possível alterar ou excluir recursos do servidor, que também é responsável pelas
mensagens que contêm informações descrevendo o processo em execução, entregando
o estado da aplicação pelo corpo de dados, conteúdo, parâmetros, cabeçalho e url.
Com essa arquitetura o cliente não precisa tratar a persistência e manipulação de
dados, enquanto o servidor não se preocupa com a interface do usuário permitindo a
escalabilidade e desenvolvimento de forma independente (JUNIOR, 2019).

30
Os micro serviços tem como característica a facilidade de manutenibilidade e
testabilidade, implantação independentes, sendo responsável por uma parte específica
do sistema fornecem um recurso atraveś de uma Interface de programação de
aplicações (API), facilitando a troca de informações através de mensagem entre os
serviços definidos em endpoints da aplicação, atuam de forma autônomas com uma
unidade independente de outra funcionalidade, possuem elasticidade, resiliência e
responsividade sendo utilizada em inúmeras soluções diferentes devendo ser capaz de
dimensionar adequadamente os casos de uso em que serão utilizados, devem ser
tolerantes a falhas se restabelecendo dentro de um prazo aceitável (DOMINGOS;
FARINA, 2020).

2.4.5 Protocolo Https

A comunicação web tem expandido muito e com isso a segurança da


informação deve ser levado em consideração, a internet é um lugar inseguro de se
disponibilizar dados sensíveis sem as devidas precauções, o conhecimento de como
funciona a comunicação de dados ajuda evitar que pacotes sejam lidos indevidamente,
mantendo a credibilidade que os dados não foram violados e estão ligados a sua fonte
de origem. Para proteger os dados é utilizados criptografia garantindo que a
comunicação seja autêntica, o Protocolo de Transferência de Hipertexto (HTTP) foi
desenvolvido para internet e aceita diferente métodos de solicitações feitas através de
linhas de texto baseado no Código Padrão Americano para o Intercâmbio de
Informação (ASCII), trata cada comunicação de forma independente e utiliza o
Protocolo de Controle de Transmissão (TCP) para garantir a confiabilidade (SILVA,
2009).
O HTTP é dividido em duas partes onde de um lado fica o servidor que
aguarda passivamente de forma assíncrona por conexões, e as responde para o cliente
que pode ser um navegador utilizado para exibir uma página web através de um
Localizador Uniforme de Recursos (URL). Uma URL é composta pelo tipo de
protocolo usado, o Sistema de Nomes de Domínio (DNS) do servidor e por final a
página que será carregada. O protocolo HTTP possui um conjunto de métodos para

31
efetuar a comunicação entre as partes, dentre os mais utilizados é o GET para solicitar
algo do servidor, POST para enviar dados de formulários ou arquivos ao servidor,
PUT para alterar dados e DELETE para deletar algum objeto (BEOCK et al., 2010).
HTTPS é uma variação do HTTP que utiliza o protocolo de Camada de
Soquete Seguro (SSL), que é divido em categorias onde ocorre a validação do
domínio e organização para garantir a segurança da informação durante a transmissão
de dados, softwares bancários, e commerce, senhas pessoais, as informações são
criptografados entre a camada de transporte e a de aplicação para garantir a
integridade (SILVA, 2009).

2.4.6 Arquitetura Restful

Para projetar serviços Web baseados nos recursos de comunicação do protocolo


HTTP é possível utilizar o padrão de Transferência de Estado Representacional
(REST), sendo uma alternativa mais simples baseada no Protocolo Simples de Acesso
a Objetos (SOAP) e Linguagem de Descrição de Serviços Web (WSDL), auxiliando
no desenvolvimento de aplicações capazes de balancear a carga de processamento
melhorando o desempenho. Em um serviço REST o servidor gera as respostas e
fornece uma interface de comunicação para o cliente manter atualizado seu estado, as
principais características dessa arquitetura é o uso explícito dos métodos HTTP
estabelecendo um mapeamento para as operações de criar, ler, atualizar e excluir
(CRUD), a capacidade de escalonamento de uma aplicação com o uso de cluster em
servidores intermediários, permitindo que as solicitações sejam processadas em
múltiplos ambientes, diminuindo o tempo de resposta melhorando o desempenho do
serviço Web, URLs intuitivas autodocumentaveis organizada de maneira hierárquica
iniciando por um caminho, seguindo a partir dele conectados em nós e a representação
do estado atual de um recurso junto a seus atributos quando é solicitado
(RODRIGUEZ, 2008).

32
2.4.7 Frameworks Para Desenvolvimento

Para o desenvolvimento de um projeto é possível utilizar diversas funções e


ferramentas prontas agilizando a construção, mantendo a qualidade e performance do
código. Frameworks são aplicações previamente escritas que oferecem um conjunto
de bibliotecas e componentes, reforçando a escalabilidade e flexibilidade, atualmente
existem inúmeros frameworks para desenvolvimento de Front-End e Back-End
(FERREIRA; ZUCHI, 2018). De acordo com dados retirados do site HotFrameworks
(2021), onde é criado um ranking de popularidade de projetos baseados no github e
stackoverflow, dentre os projetos mais utilizados em JavaScript o React se destaca e
Django para Python.
A escolha de um framework deve ser de acordo com a tecnologia mais
adequada para o contexto, levando em consideração a arquitetura do projeto,
documentação disponível para o suporte da comunidade, compatibilidade com
diversos navegadores, tamanho do pacote no projeto (FERREIRA; ZUCHI, 2018).
Outros fatores a serem analisado em um framework é a curva de aprendizado,
ambiente de desenvolvimento, complexidade para a construção de um template
integrado à lógica do negócio, gerenciamento de formulários, comunicação entre o
cliente eo servidor, tempo de carregamento, desempenho da aplicação e facilidade no
desenvolvimento (CAMARGOS et al; 2019).

2.4.8 Biblioteca De Desenvolvimento React

Javascript é uma linguagem de programação interpretada usada para o


desenvolvimento de scripts para páginas Web e projetos sem suporte a browser como
nodeJS, é uma linguagem que aceita paradigmas como orientação a objetos e
programação dinâmica, foi utilizada por engenheiros do Facebook para resolver
desafios de desenvolvimento de interfaces complexas com dados que mudam com o
tempo, criando o React que é uma biblioteca para desenvolvimento de interfaces para
usuário de maneira fácil, fazendo o uso de views para cada estado da aplicação

33
atualizando somente componentes necessários na medida em que os dados alteram,
permite a criação de componentes encapsulados que gerenciam o próprio estado
aceitando diversos tipos de dados (REACTJS, 2021).
Com o React é possível resolver um conjunto de problemas específicos, um dos
principais é criar interfaces que mudam com o tempo em grande escala de forma
sustentável, para isso faz uso de componentes para a visualização da aplicação, utiliza
de uma rede virtual do Modelo de Objeto de Documentos (DOM) cada vez que
encontra alguma atualização, calculando o mínimo de alterações necessárias para
atualizar o DOM real da aplicação, permite a utilização de HTML nas classes React e
possui propriedades nos componentes que não mudam durante o ciclo de vida
definindo as opções que ele detém, para alterar algo no componente é necessário a
mudança de estado que é definido em suas propriedades e não deve ser acessado de
fora, a menos que um componente pai seja definido inicialmente. A arquitetura Flux é
usada para obter dados para interagir com os componentes de forma organizada e
simplificada, transitando o conteúdo de forma unidirecional em três partes: dispatch,
store e view (GACKENHEIMER, 2015).

2.4.9 Django Rest Framework

Para o desenvolvimento de uma API existem inúmeras opções, Django REST é


distribuído como um pacote Python padrão e fornece algumas vantagens, oferece uma
interface para cada serviço, possui integração com mecanismos de autenticação como
OAuth1a, OAuth2, assinatura HTTP, JSON Web Token Authentication entre outros,
restringindo o acesso aos serviços mantendo a segurança da aplicação, possui seu
próprio serializar projetado para tratar relacionamentos de dados complexos
suportando ORM e não ORM, disponibiliza visualizações regulares baseadas em
função e recursos mais completos (RUBIO, 2017; DJANGO REST, 2021).
Os serializer são usados para definir a representação de registros de dados
baseados em modelos Django removendo possíveis ambiguidades, converte instâncias
de modelos em dados nativos Python que posteriormente podem ser formatado em

34
JSON, XML entre outros tipos, também é possível fazer a desserialização convertendo
os dados analisados em tipos complexos. O roteamento de recursos permite declarar
todas as rotas comuns para um determinado controlador tornando simples, rápido e
consistente a comunicação entre a lógica e o conjunto de URLs, as rotas possuem o
conjunto padrão de métodos HTTP expressadas em list, create, retrieve, update,
partial_update e destroy (DJANGO REST, 2021).

2.4.10 Armazenamento De Dados

No desenvolvimento de software os paradigmas de Orientação a Objetos (OO)


e Relacional são utilizados em conjunto por conta de sua eficiência, OO é utilizado
por várias linguagens de programação para codificação do programa, persiste as
informações em memória no formato de objeto com características e comportamentos
definidos em classes e relacionamento referenciado, enquanto o paradigma Relacional
tem maior popularidade em banco de dados, que armazena as informações em forma
de tabelas com linhas, colunas e chaves para se relacionar com outras tabelas, os
objetos da memória são transformadas em tuplas para serem armazenadas em tabelas e
consultas no banco de dados são convertidas em objetos (ZANETTI, 2019).
A utilização de um framework para o Mapeamento Objeto-Relacional (ORM)
no processo de mapeamento de objetos e relacionamento, auxilia no desenvolvimento
e minimização de problemas, reduz o tempo de desenvolvimento utilizando códigos já
desenvolvidos, testados e documentados, existem diferentes frameworks para cada
linguagem com suas configurações responsáveis pela recuperação dos dados no banco
ou de objetos para tabela (ZANETTI, 2019). O Django ORM oferece operações para
CRUD (Create, Read, Update, Delete) relacionando classes persistentes e seus
atributos através de consultas endereçadas, facilita a definição dos metadados no
mapeamentos entre tabela e objeto com uma abordagem consistente para transações,
possui mecanismo para serializar e validar dados de formulários no formato de XML e
JSON que representam instâncias de um modelo para armazenar no banco de dados,
conta com proteção de injeções de SQL e ataques de Falsificação de Solicitação entre

35
Sites (CSRF) que simula um usuário confiável para o sistema. Django ORM é
compatível com PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server
(FLOREA, 2019).

2.4.11 Postgresql

PostgreSQL é um banco de dados relacional de objeto de código aberto que


estende a linguagem SQL, combina recursos robustos para armazenamento e
escalabilidade com segurança nas cargas de dados, possui uma arquitetura
comprovada e confiável, mantém a integridade dos dados, oferece consultas
complexas, chaves estrangeiras, gatilhos, visualizações atualizáveis, integridade
transacional, controle de simultaneidade multiversão, funções, linguagens procedurais
entre outros recursos, conta com uma forte comunidade fornecendo soluções
inovadoras de alto desempenho de maneira consistente e uma licença livre permitindo
a modificação e distribuição por qualquer pessoa (PostgreSQL, 2021).

2.5 Considerações do capítulo

Neste capítulo, foi possível compreender o que é Agricultura de Precisão e as


técnicas envolvidas no processo de otimização da produção agrícola e as tecnologias
para desenvolvimento de uma aplicação web. A pesquisa realizada para o
desenvolvimento deste capítulo teve grande importância para obter o conhecimento
teórico essencial para o desenvolvimento deste trabalho. Os modelos e representações
do protótipo como diagrama de classes, modelos de contextos e wireframes serão
abordadas no próximo capítulo.

36
3 MODELAGEM DO PROTÓTIPO

As necessidades dos clientes que um sistema deve atender são expressas nos
seus requisitos com descrições das etapas e restrições do processo, as atividades de
descoberta, análise, documentação e teste é compreendido como Engenharia de
Requisitos (ER). Os requisitos do sistema podem ser divididos em diferentes níveis de
descrição, utilizando uma linguagem natural junto a diagramas que apresentam de
forma detalhada as limitações do serviço a ser executado, sendo necessário diferentes
tipos de requisitos para transmitir as informações do sistema entre cada grupo de
usuário, um mais preocupado nas funcionalidades e o outro em como o sistema será
implementado (SOMMERVILLE, 2019).

3.1 Requisitos Funcionais

Requisitos funcionais são declarações do modo de como o sistema deve reagir


e se comportar com determinada entrada quando está operando um serviço, cobrindo
casos mais genéricos ou específicos, define funcionalidades que serão desenvolvidas
no sistema eliminando possíveis ambiguidades entre cliente e desenvolvedor
(SOMMERVILLE, 2019). No Quadro 1 é apresentado os principais requisitos
funcionais para o desenvolvimento do protótipo.

QUADRO 1 - Requisitos funcionais

Identificador RF01

Nome Cadastro de Usuário

Detalhamento Manter cadastro de usuários

37
Identificador RF02

Nome Cadastro de Propriedade

Detalhamento Manter cadastro de propriedades

Identificador RF03

Nome Cadastro de Safra

Detalhamento Manter cadastro de safras

Identificador RF04

Nome Cadastro de Ponto Amostral

Detalhamento Manter registro de pontos amostrados

Identificador RF05

Nome Cadastro de Resultado Análise

Detalhamento Manter registro do resultado da amostra


coletada em uma safra

Identificador RF06

Nome Interpretar Resultado Análise

Detalhamento Classificar indicadores avaliados para


recomendação

38
Identificador RF07

Nome Gerar Recomendação

Detalhamento Determinar quantidades de calcário,


nitrogênio, potássio, fósforo para
correção do solo

Fonte: (Autor, 2021)

3.2 Requisitos Não Funcionais

Os requisitos funcionais não possuem relação direta com os serviços


específicos fornecidos pelo sistema, são responsáveis pela especificação das
características do sistema como um todo, podem estar relacionados a confiabilidade,
tempo de resposta e uso de memória, é possível definir restrições do sistema que
afetam a arquitetura geral do sistema afim de garantir que seja cumpridos os requisitos
elencados (SOMMERVILLE, 2019). No Quadro 2 é apresentado os principais
requisitos funcionais para o desenvolvimento do protótipo.

QUADRO 2 - Requisitos não funcionais

Identificador RNF01

Nome Usabilidade

Detalhamento O sistema deve fornecer meios de


navegação simples para o usuário

39
Identificador RNF02

Nome Usabilidade

Detalhamento O sistema deve se adaptar em telas de


diferentes resoluções.

Identificador RNF03

Nome Confiabilidade

Detalhamento O sistema deverá ter alta


disponibilidade, por.exemplo, 99% do
tempo.

Identificador RNF04

Nome Eficiência

Detalhamento O sistema deverá processar as


requisições no mínimo tempo possível.

Fonte: (Autor, 2021)

3.3 Modelos De Atividades

Para definir limites de um sistema no seu estágio inicial é preciso levantar


possíveis sobreposições de funcionalidades, diminuindo custo e tempo para
compreender os requisitos do projeto, uma atividade pode ser decomposta em ações
temporárias com início e fim claramente determinados, podem ser expressadas em
diagramas a partir da interpretação da informação contida no modelo mapeado

40
relacionando através de atos de coordenação e produção de transições do modelo e
todos os fatos necessários para a execução do processo (GONÇALVES, 2013). A
Figura 2 apresenta o diagrama de interpretação dos teores amostrados de Fósforo e
Potássio.

Figura 2. Diagrama de interpretação de teores de potássio e fósforo

Fonte: (Autor, 2021)

41
O diagrama de interpretação de argila apresentado na figura 3 determina o
valor de calcário a ser utilizado para a correção do solo. Existem algumas condições a
serem consideradas durante a interpretação, a Figura 3 demonstra o processo utilizado
para cultura do milho.

Figura 3. Diagrama de interpretação de argila

Fonte: (Autor, 2021)

42
A Figura 4 apresenta o fluxo de interpretação do nitrogênio na amostra,
chegando na dosagem corretiva para cultura do milho.

Figura 4. Diagrama de interpretação de nitrogênio

Fonte: (Autor, 2021)

43
A fórmula NPK é composta pelos resultados dos fluxos anteriores, sugerindo
valores corretivos , representada na Figura 5.

Figura 5. Diagrama de interpretação da fórmula NPK

Fonte: (Autor, 2021)

44
3.4 Diagrama De Classe

O diagrama Diagrama de Classe é formado por objetos gráficos da UML que


representam as entidades, atributos, atributos chave, relacionamentos, restrições entre
outros, fornecendo a visão das estruturas de um sistema. O mapeamento do banco de
dados do aplicativo está apresentado na Figura 6 com o diagrama entidade
relacionamento de cada entidade do sistema, associando talhões, grids a uma
propriedade, as análises e recomendações são relacionadas com cada grid.

Figura 6. Diagrama de Classes

Fonte: (Autor, 2021)

45
3.5 Wireframes

Esta seção apresenta-se os wireframes com o desenho das principais telas do


protótipo. A Figura 7 apresenta a Tela Login, responsável por identificar o usuário que
fará o acesso ao sistema.

Figura 7. Tela de login web

Fonte: (Autor, 2021)

46
A tela de cadastro de um novo usuário é simples e objetiva, possui o mínimo de
campos necessários para o cadastro.

Figura 8. Tela de cadastro de usuário web

Fonte: (Autor, 2021)

47
A Figura 9 apresenta uma lista de anos agrícolas cadastrados, enquanto a figura
10 apresenta o formulário de cadastro de um ano agrícola.

Figura 9. Tela de listagem de anos agrícolas

Fonte: (Autor, 2021)

Figura 10. Tela de cadastro de ano agrícola

Fonte: (Autor, 2021)

48
A Figura 11 apresenta um modal para a coleta de amostra do solo, a figura 12
demonstra uma lista de análises cadastradas.

Figura 11. Tela de coleta de amostras do solo

Fonte: (Autor, 2021)

Figura 12. Tela de listagem de análises

Fonte: (Autor, 2021)

49
Na Figura 13 é possível visualizar o formulário utilizado para cadastrar o
resultado de uma análise, e a Figura 14 apresenta os indicadores químicos
interpretados pelo sistema.

Figura 13. Tela de cadastro do resultado da análise

Fonte: (Autor, 2021)

Figura 14. Tela dos indicadores químicos interpretados do solo

Fonte: (Autor, 2021)

50
A Figura 15 representa a tela de recomendações para correção do solo após
avaliar os valores cadastrados de uma análise.

Figura 15. Tela de recomendações para correção do solo

Fonte: (Autor, 2021)

51
A Figura 16 demonstra as telas de login e cadastro adaptadas para celular.

Figura 16. Tela de login e cadastro de usuário para telas menores.

Fonte: (Autor, 2021)

52
A Figura 17 apresenta o menu lateral expandido e a lista de ano agrícola
cadastrada no sistema.

Figura 17. Tela do menu lateral expandido

Fonte: (Autor, 2021)

53
A Figura 18 apresenta a tela de cadastro de ano agrícola e o modal da coleta da
amostra do solo.

Figura 18. Tela de cadastro e coleta de amostra do solo em anos agrícolas

Fonte: (Autor, 2021)

54
A Figura 19 apresenta a lista de análises e o formulário de cadastro de uma
análise.

Figura 19. Tela listagem e cadastro do resultado das análises

Fonte: (Autor, 2021)

55
A Figura 20 demonstra a tela do resultado de uma análise e sua recomendação
adaptadas para celular.

Figura 20. Tela de representação dos índices da amostra e dose recomendada para correção

Fonte: (Autor, 2021)

56
3.6 Considerações finais do capítulo

Neste capítulo foram apresentados os modelos utilizados como documentação


no desenvolvimento do protótipo, servindo como referência para a criação de novos
módulos. No próximo capítulo serão apresentados os procedimentos de
desenvolvimento e uma documentação breve do que foi desenvolvido.

57
4 DESENVOLVIMENTO DO PROTÓTIPO

Este capítulo apresenta o desenvolvimento do projeto, fazendo o uso das


ferramentas de desenvolvimento especificadas durante a revisão bibliográfica. O
desenvolvimento foi realizado em 2 etapas, o projeto do Back-End e seus requisitos
funcionais, em paralelo o desenvolvimento da aplicação web onde é disponibilizado
uma interface para o usuário.

4.1 Desenvolvimento do Back-End

Para o desenvolvimento do Back-End, foi necessário o download e instalação


do Python, a instalação dos pacotes e dependências necessárias para iniciar a
aplicação foram feitas através do gerenciador de pacotes pip.

4.1.1 Estrutura de Diretórios

A estrutura de diretórios da aplicação consiste em uma pasta chamada venv que


é uma pasta contendo todos os pacotes restaurados a partir das dependências definidas
no arquivo requirements.txt. A pasta djangoProject contém os arquivos de
configurações do projeto e roteamento e definições de start do servidor, enquanto a
pasta api mantém os arquivos relacionados aos modelos, serializers, views, tests, é
responsável por abstrair as regras de negócio do projeto. A Figura 21 apresenta a
estrutura de diretórios da aplicação.

58
Figura 21. Estrutura de Diretórios da Aplicação Back-End

Fonte: (Autor, 2021)

59
No arquivo requirements.txt, contém a referência a todos os pacotes e
dependências necessários para a aplicação rodar, pode ser utilizado como ponto de
partida de projetos Python, o Quadro 3 apresenta este arquivo com as dependências
instaladas como o django, djangorestframework entre outras. As dependências foram
instaladas utilizando os comandos do PIP, gerenciador de pacotes do Python.

Quadro 3. Dependências requirements.txt

asgiref==3.4.1
Django==3.2.6
django-cors-headers==3.8.0
django-filter==2.4.0
djangorestframework==3.12.4
django-oauth2-provider==0.2.
6.1
Markdown==3.3.4
pytz==2021.1
sqlparse==0.4.1
psycopg2==2.9.1
python-dotenv==0.19.1
debugpy==1.5.1
Fonte: (Autor, 2021)

4.1.2 Inicialização do Servidor

A inicialização do servidor, está configurada dentro do arquivo manager.py,


onde realiza a execução dos serviços e a definição da porta de acesso do servidor. Para
executá-lo é necessário rodar o comando python3 manager.py runserver no terminal
de comandos, demonstrado no Quadro 4.

60
Quadro 4. Inicialização do servidor

lucas.volfe@########:~/#####/tcc_api$ python3 manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).


November 10, 2021 - 02:35:02
Django version 3.2.6, using settings 'djangoProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Fonte: (Autor, 2021)

4.1.3 Conexão com o Banco de Dados

O django possui um ORM que é utilizado junto a serializers para fazer a


manipulação com o banco de dados PostgreSQL, fazendo o mapeamento de dados
relacionais (tabelas, colunas e linhas) para objetos Python. As configurações
necessárias para a conexão com a base de dados, ficam no arquivo settings.py. O
Quadro 5 apresenta as configurações das credenciais de acesso para realizar a conexão
com a base de dados.

Quadro 5. Configuração de Acesso a Base de Dados

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('CONNECTION_DBNAME'),
'USER': os.getenv('CONNECTION_USER'),
'PASSWORD': os.getenv('CONNECTION_PASSWORD'),
'HOST': os.getenv('CONNECTION_HOST'),
'PORT': 5432,
}
}
Fonte: (Autor, 2021)

61
4.1.4 Migrations

As migrations são os arquivos que gerenciam as versões da base de dados,


mantendo o histórico de mudanças nas estruturas de uma tabela e a criação de uma
nova tabela no banco. Através do arquivo manager.py é gerado uma nova migration,
onde cria um arquivo com as operações a serem realizadas, facilitando o update ou
rollback, quando necessário. O Quadro 6 apresenta uma migration com a criação de
uma das tabelas da base de dados criada através dos recursos do django.

Quadro 6. Criação da Tabela de Ano Agrícola com a Migration

from django.conf import settings


from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

initial = True

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name='AgriculturalYear',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID')),
('planting_type', models.BooleanField(default=True)),
('planting_date', models.DateTimeField(auto_now_add=True)),
('hasvest_date', models.DateTimeField(blank=True, default=None,
null=True)),
('harvested_bags', models.IntegerField(blank=True, default=0,
null=True)),
('seed', models.CharField(blank=True, default=None, max_length=100,
null=True)),
],
),
]
Fonte: (Autor, 2021)

62
4.1.5 Model´s

Para a utilização de um ORM é necessário o mapeamento dos modelos, que são


a representação de como a aplicação vai interagir dentro da base de dados. Um
modelo é uma abstração que representa uma tabela no banco de dados. No Django, é
uma classe que estende a classe Model. O modelo especifica as colunas ou
propriedades de uma tabela. O Quadro 7 apresenta a criação do modelo da tabela de
ano agrícola, as demais tabelas da base de dados também possuem um modelo com os
seus atributos específicos.

Quadro 7. Criação do Model de Fazenda

class Farm(models.Model):
name = models.CharField(max_length=100)
owner = models.CharField(max_length=100)
city = models.CharField(max_length=100, null=True, default=None, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
Fonte: (Autor, 2021)

4.1.6 Rotas e ViewSets

O arquivo de rotas determina os serviços que o servidor responde a uma


solicitação do cliente através de uma chamada específica, como uma solicitação HTTP
do tipo GET, POST, PUT e DELETE. A definição das rotas é definida através do
endereço e a View que irá utilizar. No Quadro 8 é apresentado as definições das rotas
do projeto.

63
Quadro 8. Definição de algumas Rotas

from rest_framework import routers


router = routers.DefaultRouter()

router.register('api/farm/search-by-name', FarmSearchByNameViewSet,
basename='Buscar propriedade pelo nome')

router.register('api/plot/search-by-name', PlotSearchByNameViewSet,
basename='Buscar talhão pelo nome')

router.register('api/agricultural-year/search-by-name',
AgriculturalYearSearchByNameViewSet, basename='Buscar ano agrícola nome')
Fonte: (Autor, 2021)

As rotas determinam qual ViewSet o sistema irá utilizar, onde são responsáveis
por receber as requisições e realizar as partes lógicas, executam procedimentos se
comunicando com os dados na base de dados e retornar as respostas das requisições
com os resultados esperados. Cada classe model possui o seu ViewSet para realizar as
operações necessárias. O Quadro 9 apresenta essa classe que representa a fazendo com
a função de listar, criar e alterar um objeto, os demais não precisaram ser sobrescritos.

64
Quadro 9. Exemplo do método para persistir os dados

class GridsViewSet(viewsets.ModelViewSet):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
serializer_class = GridSerializer

def get_queryset(self):
filter_user = get_user_filter_grid(self.request.user)
return Grid.objects.filter(filter_user)

def create(self, request, *args, **kwargs):


serializer = GridSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(
user=self.request.user,
plot=Plot.objects.get(pk=request.data['plot']['id'])
)
create_soil_analysis(serializer.instance)
return Response(serializer.data)
Fonte: (Autor, 2021)

4.1.7 Permissões de acesso

A navegação dos dados na internet deve ser feita com segurança, mantendo o
controle entre a comunicação dos serviços, em uma API é possível controlar o nível
de permissão do usuário para acessar os serviços do servidor. O Django possui
mecanismos de autenticação preparados de acordo com a necessidade do projeto, o
Token Authentication usa um esquema de autenticação HTTP baseado em token
simples. A autenticação de token é apropriada para configurações cliente-servidor,
como desktop nativo e clientes móveis. Para usar o recurso, é preciso configurar as
classes de autenticação a serem incluídas TokenAuthentication e incluir
rest_framework.authtoken na lista INSTALLED_APPS, representado no Quadro 10.

65
Quadro 10. Configuração authtoken na aplicação

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'corsheaders',
'api'
]

Fonte: (Autor, 2021)

Nos ViewSet são passadas configurações através das propriedades, permitindo


o uso de recursos disponíveis pelo pacote Django, representado no Quadro 11.

Quadro 11. Configuração authtoken no ViewSet

class GridsViewSet(viewsets.ModelViewSet):
authentication_classes =
(TokenAuthentication,)
permission_classes = (IsAuthenticated,)
serializer_class = GridSerializer

Fonte: (Autor, 2021)

Feito isso o projeto irá requisitar um token nas requisições que receber de
qualquer origem, a geração de um token é através do uso de usuário cadastrados e
possuir permissão de acesso.

66
4.2 Desenvolvimento do Front-End

Para o desenvolvimento do Front-End, iniciou-se realizando o download e


instalação do Node.js, e a instalação dos pacotes e dependências através do
gerenciador de pacotes npm, necessárias para iniciar a aplicação.

4.2.1 Estrutura de Diretórios

O diretório da aplicação contém uma pasta chamada node_modules que contém


todos os pacotes instalados a partir das dependências definidas no arquivo
package.json. A pasta src é a pasta da aplicação principal e contém os arquivos de
configurações, componentes, telas e as rotas. A Figura 22 apresenta a estrutura de
diretórios da aplicação.

67
Figura 22. Estrutura de Diretórios da Aplicação Front-End

Fonte: (Autor, 2021)

68
O arquivo package.json contém a referência de todos os pacotes e dependências
necessários para a aplicação rodar. o Quadro 12 apresenta este arquivo com as
dependências instaladas como o React, Material/ui entre outras. As dependências são
instaladas utilizando os comandos do gerenciador de pacotes NPM. A aplicação
reaproveita muitas funcionalidades através de componentes que auxiliam o
desenvolvimento, está dividida entre as pastas pages e components.

Quadro 12. Dependências Package.json

"name": "tcc_front",
"version": "0.1.0",
"private": true,
"dependencies": {
"@date-io/date-fns": "^1.3.13",
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60",
"@material-ui/pickers": "^3.3.10",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"axios": "^0.23.0",
"cpf-cnpj-validator": "^1.0.3",
"date-fns": "^2.25.0",
"mui-datatables": "^3.7.8",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-hook-form": "^7.17.5",
"react-native": "^0.66.0",
"react-native-safe-area-context": "^3.3.2",
"react-native-screens": "^3.8.0",
"react-native-web": "^0.17.5",
"react-number-format": "^4.7.3",
"react-refresh": "^0.10.0",
"react-router-dom": "^5.3.0",
"react-scripts": "4.0.3",
"web-vitals": "^1.1.2"
}
Fonte: (Autor, 2021)

69
4.2.2 Módulo de Autenticação – Login e Registro

As configurações de autenticação acontecem através de recursos


disponibilizados pela biblioteca react-router-dom, responsável por implementar o
roteamento dinâmico em um aplicativo da web. A tela para realizar o login e registro
de um novo usuário se comunicam com o servidor solicitando um token de acesso.
As rotas da aplicação estão localizadas em um arquivo router.js onde contém
uma lista que é mapeada no sistema renderizando o menu lateral e indicando para o
sistema qual componente deve associar com cada endereço. No Quadro 13 é
apresentado a lista com as rotas da aplicação.

Quadro 13. Rotas da aplicação

export const router = [


{
path: '/home',
text: 'Home Page',
icon: <DashboardIcon />,
component: <HomePage />
},

{
path: '/form/farm',
component: <FarmFormPage />
},
{
path: '/list/farm',
text: 'Propriedade',
icon: <HomeIcon />,
component: <FarmListPage />
}
]
Fonte: (Autor, 2021)

70
No Quadro 14 é apresentado o momento em que o componente indica os
endereços para a aplicação, isso é feito através do componente Route que possui uma
propriedade path a qual passamos os endereços da aplicação mapeados no arquivo
router.js.

Quadro 14. Rotas sendo configuradas na aplicação

<Router>
<Switch>
<Route path="/" exact>
<LoginPage useAuth={useAuth} />
</Route>
<Route path="/login">
<LoginPage useAuth={useAuth} />
</Route>
<Route path="/register">
<RegisterPage useAuth={useAuth} />
</Route>

{router.map((item, index) => {


if (item.path === '/')
return (
<PrivateRoute exact key={index} path={item.path}>
<TemplateComponent useAuth={useAuth}
content={item.component} />
</PrivateRoute>
)
else
return (
<PrivateRoute key={index} path={item.path}>
<TemplateComponent useAuth={useAuth}
content={item.component} />
</PrivateRoute>
)
})}

</Switch>
</Router>
Fonte: (Autor, 2021)

71
4.2.2 Componentes Fundamentais

Alguns componentes foram pensados para resolver um problema mais genérico


da aplicação, o gerador de formulário foi arquitetado para receber algumas
configurações e renderizar um formulário na aplicação, facilitando a criação de novas
telas com a mesma funcionalidade. No Quadro 15 é apresentado o dicionário com as
configurações para gerar um formulário.

Quadro 15. Configurações do gerador de formulário

const formMock = {
id: 'form',
name: 'form',
action: 'save-home',
fields: [
{
id: 'name',
name: 'name',
label: 'Nome',
description: 'Nome da propriedade',
validators: {
required: validators.required(),
},
type: FORM_FIELD_TYPES.TEXT
},
{
id: 'owner',
name: 'owner',
label: 'Proprietário',
description: 'Nome do proprietário',
validators: {
required: validators.required(),
},
type: FORM_FIELD_TYPES.TEXT
},
{
id: 'city',
name: 'city',
label: 'Cidade',
description: 'Cidade da propriedade',
type: FORM_FIELD_TYPES.TEXT,
defaultValue: 'Chapecó'

72
},
],
buttons: DEFAULT_BUTTON_SET
}

<FormBuilderComponent form={formMock} title={'Cadastro de


propriedade'}/>
Fonte: (Autor, 2021)

A utilização do componente é opcional, com ele é possível indicar as


configurações de acordo com o modelo mapeado no Back-End, os campos que irão
renderizar é de acordo com o tipo da entrada do dado, possui seus próprios atributos e
validações de acordo com a necessidade, aceita métodos relacionando eventos que
acontecem durante o preenchimento do formulário. Na Figura 23 é apresentado o
resultado gerado pelo uso do componente.

Figura 23. Formulário gerado pelo FormBuilder

Fonte: (Autor, 2021)

73
Outro componente disponibilizado na aplicação é utilizado para gerar uma
tabela com funcionalidades associadas ao BackEnd, com ela é possível selecionar uma
lista de registros e deletar ou editar, associado ao FormBuilder se tem o ganho do
reaproveitamento de código. No Quadro 16 é apresentado as configurações do
componente.

Quadro 16. Configurações do componente de tabela

<TableComponent
columns={[
{
name: "name",
label: "Nome",
},
{
name: "owner",
label: "Proprietário",
},
{
name: "city",
label: "Cidade",
}
]}
data={[
{name: 'Fazenda 1', owner: 'Joao A. B.', city: 'Chapecó'},
{name: 'Fazenda 2', owner: 'Pedro A. B.', city: 'Chapecó'},
]}
title={'Propriedades'}
/>

Fonte: (Autor, 2021)

74
Como resultado da utilização do componente se tem a tela representada na
Figura 24.

Figura 24. Tela gerada pelo componente de tabela

Fonte: (Autor, 2021)

O componente responsável por manter a estrutura da aplicação na maioria das


páginas é o TemplateComponent, ao utilizá-lo é disponibilizado uma estrutura para a
criação de páginas, permitindo que seja alterado no espaço disponibilizado. A Figura
25 demonstra o componente sozinho.

75
Figura 25. Estrutura base da aplicação

Fonte: (Autor, 2021)

76
A Figura 26 mostra como é apresentada a interpretação e feito a sugestão da
dose corretiva do solo.

Figura 26. Tela de recomendação

Fonte: (Autor, 2021)

4.3 Considerações finais do capítulo

Neste capítulo foram apresentados as telas geradas pelo protótipo, e os


principais componentes desenvolvidos no projeto.

77
5. CONCLUSÕES

A partir de uma fundamentação sobre agricultura de precisão buscou-se


compreender métodos de melhorias em procedimentos agrícolas, meios de estimativas
com a menor margem de erro e tecnologias para relacionar amostras do solo com
indicadores de qualidade química e biológica.
A realização desse projeto agregou conhecimento em relação às tecnologias
utilizadas no desenvolvimento, o uso dos recursos disponibilizados pelo ORM do
Django no projeto demonstrou um grande benefício devido ao ganho de produtividade
proporcionado, dando suporte e gerando de maneira autônoma a criação de queries
SQL para inserir, alterar e remover dados, gerenciando também nos controles de
transações, relacionamentos entre tabelas e demais operações nas tabelas.
A pesquisa possibilitou entender o contexto do problema e determinar dentre as
diversas tecnologias e ferramentas as mais adequadas para a aplicação no protótipo,
explorando e apresentando uma referência teórica. Durante o desenvolvimento do
projeto, foi levado em consideração a importância de boas práticas, a segurança das
informações, utilização de mecanismos de autenticação para assegurar que os serviços
do servidor fiquem protegidos na internet, podendo ser acessados somente com a
utilização de token de acesso.
Através do servidor Back-End, será disponibilizado o sistema que vai atender
as requisições do Front-End, fornecendo todos os recursos necessários para seu
funcionamento, a autenticação no sistema, realizar o cadastramento dos talhões do
usuário, os grids, amostras do solo e todos os cadastros da aplicação. Também é
responsável por realizar os cálculos dos indicadores para a interpretação e
recomendação de resultado das análises amostradas, retornando o resultado para o
usuário e manter o histórico de plantio. Uma aplicação web bem elaborada permite a
página se adequar em monitores de computadores e telas menores de dispositivos
móveis facilitando a utilização da solução, o desenvolvimento técnico do projeto

78
começa com a engenharia de software para compreender os casos de uso e a
elaboração de diagramas de domínio.
Dentre as ferramentas utilizadas para a elaboração do projeto, foi utilizado
React para desenvolvimento da interface do usuário, Python para o servidor e Postgres
como gerenciador de banco de dados, atendendo com sucesso as necessidades durante
o desenvolvimento, tendo como produto final um protótipo capaz de atender todos os
objetivos levantados.

5.1 Trabalhos Futuros

Visando a continuidade do desenvolvimento do projeto, sugere-se alguns


trabalhos:

● Desenvolvimento de um módulo de interpretação biológica.


● Melhorias para o sistema como geração de relatórios, mapa de calor da
amostra.
● Interpolação das amostras georreferenciadas através de métodos estatísticos
como a krigagem para a interpretação de locais não amostrados.
● Ajustar o projeto com um termo de consentimento de dados, visto a Lei Geral
de Proteção de Dados.
● Integrar contas de redes sociais como o Google ou Facebook para facilitar um
novo cadastro.

79
REFERÊNCIAS

ARTUZO, F. D.; SOARES, C.; WEISS, C. R. Inovação de processo: O impacto


ambiental e econômico da adoção da agricultura de precisão. ESPACIOS, v.38, n.2, p.
6-17, 2016.

BEOCK, L. R. P. et al. Protocolo HTTP. vivaolinux, MG, 2010.

BRASIL. Agricultura de precisão. Ministério da Agricultura, Pecuária e


Abastecimento, Brasília, p. 36, ed. 3, 2013.

BRITO, R. S. et al. Rochagem Na Agricultuta: Importância E Vantagens Para


Adubação Suplementar. AJEBTT, Rio Branco, UFAC v.6, n.1, p. 528-540, 2019.

CÂMARA, G. et al. Anatomia de Sistemas de Informação Geográfica. INPE, Rio de


Janeiro, 1996.

CAMARGO, E. C. Geoestatística: Fundamentos e Aplicações. INPE, São José dos


Campos, ed. 2, mai. 1998.

CAMARGOS, J. G. C. et al. Uma Análise Comparativa entre os Frameworks


Javascript Angular e React. FUMEC, MG, Belo Horizonte, p. 101-113, 2019.

COELHO, A. M. Agricultura de precisão: manejo da variabilidade espacial e temporal


dos solos e culturas. Embrapa, Sete Lagoas, n.46, ed. 1, p.60, dez. 2005.

CQFS - Comissão de Química e Fertilidade do Solo (2016) Manual de calagem e


adubação para os Estados de Rio Grande do Sul e de Santa Catarina. Viçosa,
Sociedade Brasileira de Ciência do Solo. 376p.

80
CRESPO, A. A. Estatística. 20. ed. São Paulo: Saraiva Educação, 2020. 256 p. (Série
Em foco).

DE OLIVEIRA, R. P. Apoio à Decisão na Adoção da Agricultura de Precisão: A


Tecnologia da Informação em Apoio ao Conhecimento Agronômico. RECoDAF –
Revista Eletrônica Competências Digitais para Agricultura Familiar, Tupã, v. 2,
n. 1, p. 89-109, jan./jun. 2016. ISSN: 2448-0452

DOMINGOS, L. L; FARINA, R. M. MICROSERVIÇOS: um estudo de caso


apontando suas potencialidades. Interface Tecnológica. v. 17, n. 2 p.18-30, (2020).

EMBRAPA, BioAS – Tecnologia de Bioanálise de Solo como a mais nova aliada


para a sustentabilidade agrícola. 2020.

EMBRAPA. Geotecnologias e Geoinformação: O produtor pergunta, a Embrapa


responde. EMBRAPA, Brasília, DF, p.254 2014.

FERREIRA, H. K; ZUCHI, J. D. Análise Comparativa Entre Frameworks Frontend


Baseados Em Javascript Para Aplicações Web. Interface Tecnológica, SP, p. 111-123,
2018.

FLORES, V. Django ORM versus doctrine ORM. Conferência. Conferência


Técnico-Científica de Colaboradores, Alunos e Alunos de Doutorado, P.. 79-81
2017.

GACKENHEIMER, C. What Is React? Introduction to React, 2015.

GOMES, E. T. L. UML: Linguagem de Modelagem Unificada em português.

GOMES, M. A. F.; SOUZA, M. D.; BOEIRA, R. C.; TOLEDO, L. G. Nutrientes


vegetais no meio ambiente: ciclos bioquímicos, fertilizantes e corretivos. Empresa

81
Brasileira de Pesquisa Agropecuária. Centro Nacional de Pesquisa de
Monitoramento e Avaliação de Impacto Ambiental Ministério da Agricultura,
Pecuária e Abastecimento ISSN 1516-4691 Novembro, 2008.

GONÇALVES, A. et al. Como Mapear Transações Ontológicas Em Diagramas De


Atividade. CISTI, 2013.

GRIPP, A. H. Utilização De Geoestatística para o Tratamento de Dados de Prospecção


Geoquímica. Revista Brasileira de Geociências, Belo Horizonte, v. 22, p. 248-251,
jun. 1992.

GUALBERTO, J. A. Comparação das técnicas Kernel e Krigagem indicativa na


predição de valores de variáveis espacialmente distribuídas : estudos de caso.
Botucatu, 2020

GUDWIN, R. R. Introdução à Linguagem UML. DCA-FEEC-UNICAMP, 2010.

HOTFRAMEWORKS. JavaScript. 2017.


Disponível em: <https://hotframeworks.com/languages/javascript>. Acesso em: 29 de
abr. 2021.

JUNIOR, A. R. M. S. Arquitetura Rest Api E Desenvolvimento De Uma Aplicação


Web Service, 2019.

LANDIM, P.M.B, STURARO, J.R. Krigagem Indicativa aplicada à elaboração de


mapas probabilísticos de riscos. Geomatemática,Texto Didático 6,
DGA,IGCE,UNESP/Rio Claro, 2002.

LOBO, Edson Junior Rodrigues. Guia Prático de Engenharia de Software. São


Paulo: Digerati Books, 128 p, 2009.

82
LOUDON, K. Desenvolvimento de grandes aplicações Web. Novatec Editora,
Sebastopol, Calif O'Reilly, 2010.

MENDES, I. C. et al. Rotação de culturas, bioindicadores e saúde do solo. Boletim de


Pesquisa 2019/2020.

MOLIN, J. P. et al. Agricultura de Precisão. 1. ed. São Paulo: Oficina de textos,


2015.

PIRES, J. L.F. Discutindo Agricultura De Precisão – Aspectos Gerais. Embrapa,


Passo Fundo, v. 42, p. 21, dez. 2004.

POSTGRESQL. PostgreSQL 14beta1 Documentation. The PostgreSQL Global


Development Group, 2021.

PRIEBE, H. A. et al. Modelagem para recomendação de calagem e adubação para as


principais regiões produtoras de grãos do Brasil na linguagem SQL. Ciência e
Natura, Santa Maria, v.40, p. 131-139, 2018.

R DEVELOPMENT CORE TEAM. R: A language and environment for statistical


computing. Vienna: R Foundation for Statistical Computing, 2010.

REACTJS. 2021.
Disponível em: <https://pt-br.reactjs.org/>. Acesso em: 23 de mai. 2021.

REIS, D. S. M. Uma Conceituação Didática Sobre Orientação A Objetos.


Processando o Saber. Praia Grande SP, n.2, p.31-41 ,2010.

RODRIGUEZ, A. Serviços da Web RESTful: O básico (RESTful Web services: The


basics). IBM, 2008.

83
RUBIO, D. REST Services with Django. Beginning Django, p.549–566, 2017.

SAHU, B. et al. Tools of precision agriculture: A review. International Journal of


Chemical Studies, India, p. 2692-2697, out. 2019.

SARAIVA, M. A. et al. Aplicação em Taxa Variável De Fertilizantes E Sementes.


Agricultura de Precisão, Viçosa, p. 109-145, jun. 2000.

SEGATTO, T. A. Caracterização de atributos de qualidade do solo e recomendação de


calagem e adubação para sistemas de cultivo com inclusão de soja. Braz. J. Anim.
Environ. Res., Curitiba, v. 3, n. 1, p.225-231, jan./mar. 2020.

SOMMERVILLE, I. Engenharia de software. ed 10. Editora Pearson, 2019.

SHIRATSUCHI, L. S. et al. Sensoriamento Remoto: conceitos básicos e aplicações na


Agricultura de Precisão. Agricultura de precisão: resultados de um novo olhar,
Brasília, ed. 1, p. 58-73, 2014.

SILVA A. L. S, SILVA, R. C. M. F. Protocolo http x protocolo https. Nucleus, ISSN-e


1982-2278, Vol. 6, Nº. 1, 2009, páginas 1-8, 2009

TOSCANI, R. G. da S; CAMPOS, J. E. G. Uso De Pó De Basalto E Rocha Fosfatada


Como Remineralizadores Em Solos Intensamente Intemperizados. São Paulo, UNESP,
Geociências, v. 36, n. 2, p. 259 – 274, 2017.

VIEIRA, S. R. Geoestatística Aplicada à Agricultura De Precisão. Agricultura de


Precisão, Viçosa, p. 94-108, jun. 2000.

VITOUSEK, P. M. et al. Nutrient Imbalances in Agricultural Development.


SCIENCE, v. 324, p. 1519-1520, jun. 2009.

84
ZANETTI, F. L. et al. Representação Ontológica de Frameworks de Mapeamento
Objeto/Relacional. Núcleo de Estudos em Modelagem Conceitual e Ontologias
(NEMO) UFES, 2019.

85
ANEXOS

ANEXO A - RESULTADOS DE ANÁLISE DE SOLO

Fonte: Laboratório de Solo e Plantas - Agroanalysis

86
ANEXO B - TABELAS PARA INTERPRETAÇÃO DOS RESULTADOS DAS
ANÁLISES

Fonte: adaptado do Manual de adubação e calagem para os Estados do RS e SC, 2016

87

Você também pode gostar