gis-ai-agent

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

A geospatial AI agent that turns natural-language prompts into satellite imagery analysis, trend detection, and PDF research reports. Powered by LangGraph and Google Earth Engine.

README.md

Orbiview — GIS AI Agent

Orbiview logo

Flask
Python
LangGraph
Google Earth Engine
Gemma
Leaflet
Plotly
JavaScript

Demo

https://github.com/user-attachments/assets/4f466034-3686-41f8-b3a8-3fcb601ddf15

Overview

Orbiview is a geospatial AI agent that turns natural-language prompts into satellite imagery analysis. Ask about vegetation health, pollution levels, land cover change, or urban heat for any region and time range — Orbiview pulls the data from Google Earth Engine, runs the analysis, and returns interactive maps, charts, and narrative insights, powered by Gemma via LangGraph.

The interface is a split-panel web app: a chat panel for queries on one side, an interactive Leaflet map on the other — with support for custom ROI drawing, multi-year comparisons, and downloadable PDF research reports.

Key Features

  • 🗨️ Chat interface — ask questions in plain language; persistent chat history (localStorage)
  • 🧠 LangGraph agent — structured multi-step reasoning with a live plan widget showing agent progress, powered by Groq
  • 🗺️ Interactive map — Leaflet.js + ESRI satellite basemap
  • ✏️ Draw your own ROI — polygon or rectangle, name it, and reference it in chat with @name
  • 📊 19 GIS indices — vegetation, water, urban, thermal, and atmospheric analysis (see table below)
  • 🖼️ Image overlays — analysis results rendered as georeferenced JPG overlays on the map
  • 📈 Plotly visualizations — monthly trend lines, LULC pie/bar charts, rendered inline in chat
  • 📅 Multi-year analysis — per-year map tile layers plus combined comparison chart grids
  • 🧾 PDF research reports — full report generation with formulas, figure descriptions, and ML metrics (accuracy, per-class metrics, confusion matrix for LULC)
  • 🗂️ Layer manager — toggle visibility, zoom to, or remove any analysis layer
  • 📚 Knowledge Base — in-app documentation page covering all 19 indices, with scroll-spy navigation and category accent colors

Architecture

User Prompt
    │
    ▼
agent.py  ──────────► LangGraph orchestration (Groq)
    │
    ├──► gis_functions.py ──► Google Earth Engine (index calculation, stats, classification)
    │
    ├──► research_agent.py ──► PDF report generation (ReportLab)
    │
    ▼
app.py (Flask) ──► JSON / map tiles / charts
    │
    ▼
templates/index.html + public/static/js/app.js ──► Chat + Leaflet map + Plotly charts

Supported GIS Indices

Category Indices
🌱 Vegetation NDVI, EVI, SAVI
💧 Water NDWI, MNDWI
🏙️ Built-up / Urban NDBI, UI, BSI, NBI
🌡️ Thermal LST, UHI
❄️ Snow NDSI
🌫️ Atmospheric / Air Quality NO₂, CO, SO₂, CH₄, Aerosol, FFPI
🗺️ Land Cover LULC (with classification accuracy metrics)

Tech Stack

Backend: Flask · LangGraph · Groq · Google Earth Engine Python API · ReportLab
Frontend: Vanilla JavaScript · Leaflet.js · Plotly.js · HTML5 · CSS3

Project Structure

gis-ai-agent/
├── agent.py                    # LangGraph agent orchestration
├── app.py                      # Flask backend & API routes
├── config.py                   # App configuration / environment settings
├── gis_functions.py            # GEE analysis logic for all 19 indices
├── research_agent.py           # PDF report generation (ReportLab)
├── requirements.txt            # Core agent dependencies
├── requirements_webapp.txt     # Web app (Flask) dependencies
├── assets/
├── static/
│   ├── css/
│   │   └── style.css
│   └── js/
│       └── app.js
├── templates/
│   └── index.html
├── gee-creds.json               # GEE credentials (gitignored)
├── gee-service-account.json     # GEE service account key (gitignored)
├── LICENSE
└── README.md

Deployment and local development

See Vercel setup for the hosted public demo,
required secrets, Earth Engine authentication and usage limits.

python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env.local
# Fill in your own credentials in .env.local; never commit them.
python app.py

Open http://localhost:8000. The default model is openai/gpt-oss-120b on Groq;
local Ollama is no longer required. Without credentials, the interface opens but
analysis requests return a setup-required message.

Usage Examples

Machine Learning

  • User: "Show me the land cover of London in 2024"
  • Orbiview: Understand the user's request, perform machine learning in GEE, and present the results with insights

Trend Analysis

  • User: "Analyze No2 air quality over Beijing in 2024"
  • Orbiview: Creates visualization and identifies key patterns

Research Agent

  • User: "Analyze the 2025 land cover of London and generate a comprehensive research paper"
  • Orbiview: Activate research mode, generate a research paper, and present the results

Insights Summary

  • User: "Analyze the land surface temperature of Jakarta in 2025"
  • SmartLook: Generate an insights summary section with recommendations based on the analysis

PDF Research Reports

Orbiview can generate a full downloadable PDF report for any analysis, including the formulas used, figure descriptions, and — for LULC classification — a complete accuracy breakdown (overall accuracy, per-class metrics, and confusion matrix).

Acknowledgments

  • Google Earth Engine for satellite data infrastructure
  • The LangChain / LangGraph team for the agent framework
  • Google for the Gemma model
  • Leaflet.js and Plotly.js for mapping and visualization

License

See the LICENSE file for details.

If you find Orbiview useful, please consider giving it a star! ⭐

Built for fast, conversational geospatial analysis

Reviews (0)

No results found