Escolar Documentos
Profissional Documentos
Cultura Documentos
2
PROTÓTIPO DE APLICAÇÃO WEB PARA ANÁLISE DO MANEJO DE
ADUBAÇÃO EM PLANTAS DE LAVOURA SUBMETIDAS AO SISTEMA
AGROBIOLÓGICO
Prof. Sandro Silva de Oliveira, Me. Prof. Cristiano Reschke Lajús, Dr.
Orientador Co-Orientador
BANCA EXAMINADORA:
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
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
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
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
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.
14
1.3 Objetivos
1.4 Justificativa
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.
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.
17
2 REVISÃO BIBLIOGRÁFICA
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).
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).
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).
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).
23
2.2.3 Sistema De Recomendação De Calagem E Adubação
24
2.3.1 Método De Controle Variograma
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.
26
2.4 Ferramentas e Tecnologias
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
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).
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).
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).
32
2.4.7 Frameworks Para Desenvolvimento
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).
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).
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
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).
Identificador RF01
37
Identificador RF02
Identificador RF03
Identificador RF04
Identificador RF05
Identificador RF06
38
Identificador RF07
Identificador RNF01
Nome Usabilidade
39
Identificador RNF02
Nome Usabilidade
Identificador RNF03
Nome Confiabilidade
Identificador RNF04
Nome Eficiência
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.
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.
42
A Figura 4 apresenta o fluxo de interpretação do nitrogênio na amostra,
chegando na dosagem corretiva para cultura do milho.
43
A fórmula NPK é composta pelos resultados dos fluxos anteriores, sugerindo
valores corretivos , representada na Figura 5.
44
3.4 Diagrama De Classe
45
3.5 Wireframes
46
A tela de cadastro de um novo usuário é simples e objetiva, possui o mínimo de
campos necessários para o cadastro.
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.
48
A Figura 11 apresenta um modal para a coleta de amostra do solo, a figura 12
demonstra uma lista de análises cadastradas.
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.
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.
51
A Figura 16 demonstra as telas de login e cadastro adaptadas para celular.
52
A Figura 17 apresenta o menu lateral expandido e a lista de ano agrícola
cadastrada no sistema.
53
A Figura 18 apresenta a tela de cadastro de ano agrícola e o modal da coleta da
amostra do solo.
54
A Figura 19 apresenta a lista de análises e o formulário de cadastro de uma
análise.
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
56
3.6 Considerações finais do capítulo
57
4 DESENVOLVIMENTO DO PROTÓTIPO
58
Figura 21. Estrutura de Diretórios da Aplicação Back-End
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.
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)
60
Quadro 4. Inicialização do servidor
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
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
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)
63
Quadro 8. Definição de algumas Rotas
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)
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'
]
class GridsViewSet(viewsets.ModelViewSet):
authentication_classes =
(TokenAuthentication,)
permission_classes = (IsAuthenticated,)
serializer_class = GridSerializer
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
67
Figura 22. Estrutura de Diretórios da Aplicação Front-End
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.
"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
{
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.
<Router>
<Switch>
<Route path="/" exact>
<LoginPage useAuth={useAuth} />
</Route>
<Route path="/login">
<LoginPage useAuth={useAuth} />
</Route>
<Route path="/register">
<RegisterPage useAuth={useAuth} />
</Route>
</Switch>
</Router>
Fonte: (Autor, 2021)
71
4.2.2 Componentes Fundamentais
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
}
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.
<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'}
/>
74
Como resultado da utilização do componente se tem a tela representada na
Figura 24.
75
Figura 25. Estrutura base da aplicação
76
A Figura 26 mostra como é apresentada a interpretação e feito a sugestão da
dose corretiva do solo.
77
5. CONCLUSÕES
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.
79
REFERÊNCIAS
80
CRESPO, A. A. Estatística. 20. ed. São Paulo: Saraiva Educação, 2020. 256 p. (Série
Em foco).
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.
82
LOUDON, K. Desenvolvimento de grandes aplicações Web. Novatec Editora,
Sebastopol, Calif O'Reilly, 2010.
REACTJS. 2021.
Disponível em: <https://pt-br.reactjs.org/>. Acesso em: 23 de mai. 2021.
83
RUBIO, D. REST Services with Django. Beginning Django, p.549–566, 2017.
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
86
ANEXO B - TABELAS PARA INTERPRETAÇÃO DOS RESULTADOS DAS
ANÁLISES
87