Imagine poder conversar com o seu GeoNode como se fosse um assistente técnico:
“Mostre os municípios com população acima de 50 mil.”
“Liste as camadas relacionadas a meio ambiente publicadas em 2024.”
“Quais áreas de risco estão dentro da zona urbana de Florianópolis?”
Essas consultas, que normalmente exigiriam acesso ao banco ou ao painel do GeoNode, podem ser respondidas em segundos por um chatbot integrado com IA.
A ideia deste post é mostrar como criar um assistente geoespacial inteligente, capaz de:
- Compreender perguntas em linguagem natural;
- Traduzir em chamadas à API do GeoNode (ou SQL/PostGIS);
- Retornar respostas estruturadas (tabelas, nomes de camadas, metadados, links);
- E até gerar mapas dinâmicos a partir das consultas.
1. O papel do GeoNode como fonte de conhecimento geoespacial
O GeoNode expõe suas informações por meio de uma API REST poderosa:
- /api/v2/layers/ → lista de camadas;
- /api/v2/maps/ → mapas compostos;
- /api/v2/documents/ → relatórios e anexos;
- /api/v2/layers/{id}/ → metadados detalhados de uma camada.
Com essas rotas, é possível consultar qualquer informação sobre os dados publicados, autores, datas, categorias, palavras-chave, links WMS/WFS e muito mais.
O desafio é como traduzir uma pergunta humana em uma sequência de chamadas a essa API? A resposta é, usando IA generativa como intérprete.
A IA funciona como um “tradutor semântico” entre o usuário e o GeoNode. Ela interpreta o que foi pedido e decide:
- Qual endpoint da API deve ser consultado;
- Quais filtros aplicar (categoria, data, palavra-chave, etc.);
- Como formatar a resposta para o usuário.
Além disso, a IA pode resumir os metadados retornados, explicando o contexto da camada em linguagem natural.
2. Chatbot + GeoNode + IA
Vamos montar um exemplo funcional em Python.
import requests import openai # Configurações GEONODE_URL = "http://localhost:8000/api/v2/layers/" GEONODE_USER = "admin" GEONODE_PASS = "geonode" MODEL = "gpt-4o-mini" # Entrada do usuário pergunta = "Liste as camadas de saneamento publicadas em 2024." # Prompt para IA gerar consulta API prompt = f""" Você é um assistente que interpreta perguntas sobre um GeoNode. Gere a URL completa da API a ser consultada, com base na pergunta abaixo. URL base: {GEONODE_URL} Pergunta: {pergunta} Exemplo de resposta esperada: GET http://localhost:8000/api/v2/layers/?keywords__slug=saneamento&date__year=2024 """ resposta = openai.ChatCompletion.create( model=MODEL, messages=[{"role": "user", "content": prompt}] ) consulta = resposta.choices[0].message.content.strip().replace("GET ", "") print(" URL gerada pela IA:\n", consulta) # 2. Executar chamada à API r = requests.get(consulta, auth=(GEONODE_USER, GEONODE_PASS)) if r.status_code == 200: data = r.json()["results"] print(f"\n {len(data)} camadas encontradas:\n") for layer in data: print(f"- {layer['title']} ({layer['category']})") else: print(" Erro na requisição:", r.status_code)
Após a execução do script você terá a seguinte resposta:
URL gerada pela IA:
http://localhost:8000/api/v2/layers/?keywords__slug=saneamento&date__year=2024
3 camadas encontradas:
– Sistema de Esgotamento Sanitário (Infraestrutura)
– Pontos de Abastecimento de Água (Saneamento)
– Zonas de Proteção de Mananciais (Meio Ambiente)
A IA traduziu a intenção da pergunta em uma consulta REST real, executou a requisição e retornou os resultados de forma legível.
Além de listar as camadas, a IA pode analisar e descrever o que foi encontrado.
descricoes = "\n".join([f"{l['title']}: {l['abstract']}" for l in data]) prompt_explica = f""" Gere um resumo amigável das camadas retornadas abaixo, destacando a utilidade de cada uma para análises de planejamento urbano. {descricoes} """ resumo = openai.ChatCompletion.create( model=MODEL, messages=[{"role": "user", "content": prompt_explica}] ) print("\n Resumo gerado pela IA:\n") print(resumo.choices[0].message.content)
No caso desse script, você teria a seguinte resposta:
“As camadas de saneamento abrangem sistemas de abastecimento, coleta e proteção de mananciais.
Juntas, permitem identificar áreas com déficit de infraestrutura hídrica e orientar o planejamento urbano.”
3. Aplicações práticas
Você pode evoluir os scripts acima para um chatbot completo. Para isso basta encapsular essa lógica em uma API Flask ou interface Web que permita conversas em tempo real:
- O usuário digita perguntas em texto (“Quais camadas são de meio ambiente?”);
- A IA gera a consulta e executa no GeoNode;
- A resposta é retornada em formato legível ou como mapa interativo embutido (via WMS).
💡 Dica: usando o endpoint layer[“ows”], é possível gerar um link direto de visualização do WMS retornado.
Além disso você pode aplicar esse conceito do ChatBot para transformar seu GeoNode através de:
- Atendimento automático em portais WebGIS corporativos;
- Busca semântica de dados espaciais por tema ou localização;
- Consultas técnicas acessíveis a gestores não especialistas;
- Assistentes geoespaciais integrados com Telegram, WhatsApp ou ChatGPT API.
4. Conclusão
O GeoNode deixa de ser apenas um catálogo de dados geoespaciais e se transforma em um sistema de informação conversacional, onde qualquer pessoa pode obter respostas ou gerar mapas a partir de simples perguntas.
Integrar IA + GeoNode é o primeiro passo para construir portais WebGIS realmente inteligentes, acessíveis e colaborativos.