地理信息系统智能代理

一款结合Azure OpenAI和模型上下文协议(MCP)的智能GIS代理原型,用于自动化地理空间分析。

  • by danielmogst
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TriggeredBanana/Norkart_GeoMCP

使用说明

Norkart GeoMCP - Prototype

En prototype av en intelligent GIS-agent som kombinerer Azure OpenAI med Model Context Protocol (MCP) for automatiserte geografiske analyser.

Oversikt

Prototypen demonstrerer en AI-drevet GIS-assistent som bruker ulike Azure modeller sammen med spesialiserte geospatial-verktøy gjennom MCP-protokollen. Agenten forstår naturlig språk på norsk og engelsk, og kan utføre komplekse GIS-operasjoner inkludert koordinattransformasjoner, buffere, romlige analyser, generering av webkart og mer.

Hovedfunksjoner

  • Naturlig språk for GIS-operasjoner: Beskriv analysebehovene dine på norsk eller engelsk
  • CRS-intelligens: Automatisk deteksjon og håndtering av norske koordinatsystemer (EU89 UTM-soner)
  • Smartfeilretting: Selvkorrigerende agent med retry-logikk og kontekstbevisste hint
  • Webkart-generering: Automatisk laging av Leaflet-baserte interaktive kart med korrekte koordinattransformasjoner
  • Ressurssporing: Holder styr på filer, geometrier og koordinatsystemer på tvers av operasjoner
  • Skjemavalidering: Forhåndsvaliderer verktøykall før kjøring for å forhindre vanlige feil

Arkitektur

  • Backend: Python-basert MCP-server som inneholder geospatial-verktøy (GeoPandas, Shapely, PyProj)
  • Agent: LangChain-basert smart agent med Azure modeller
  • Protokoll: MCP (Model Context Protocol) for verktøyintegrasjon
  • Frontend: (Planlagt) Next.js/React-grensesnitt med Leaflet-kart

Kjernefiler

prototype_agent.py          # Hovedimplementasjon av agenten
json/mcp_tools_documentation.json  # Komplett MCP-verktøykatalog

Nøkkelklasser

  • SmartAgent - Selvkorrigerende agent med CRS-forståelse
  • ResourceTracker - Sporer filer, geometrier og koordinatsystemer
  • ToolSchemaValidator - Validerer verktøyparametere før kjøring
  • InputPreprocessor - Ekstraherer CRS og koordinater fra naturlig språk

Eksempelbruk

# Naturlige språkforespørsler agenten kan håndtere:
"Lag en 500m buffer rundt punkt Nord: 6456800, Øst: 439311 i EU89 UTM-sone 32 og vis den på et webkart"

# Agenten:
# 1. Detekterer koordinatsystem (EPSG:25832) automatisk
# 2. Oppretter buffergeometrien
# 3. Reprojiserer til WGS84 for webkartvisning
# 4. Genererer et interaktivt Leaflet-kart

Tekniske høydepunkter

  • CRS-bevisst reprojesjon: Håndterer automatisk transformasjoner mellom norske UTM-soner og WGS84
  • Verktøykallvalidering: Forhindrer GeoJSON/WKT-forvirring, manglende parametere og typefeil
  • Kontekstbevaring: Opprettholder filstier og CRS-informasjon på tvers av flertrinns arbeidsflyter
  • Hastighetsbegrensning: Innebygd håndtering av Azure API-rate limits
  • Samtalehukommelse: Vedvarende kontekst mellom spørringer

Prototypestatus

⚠️ Dette er en utviklingsprototype. Kjente begrensninger:

  • Begrenset feilhåndtering for edge cases
  • Mock-data for testing
  • Ingen brukerautentisering/multi-tenancy
  • Enkeltbruker-terminalgrensesnitt

Teknologistakk

Backend:

  • Python 3.11+
  • LangChain + LangChain-MCP-Adapters
  • Azure OpenAI (GPT-4)
  • GeoPandas, Shapely, PyProj
  • FastMCP (MCP-server)

Planlagt Frontend:

  • Next.js
  • React
  • Tailwind CSS
  • shadcn/ui + magic-ui-komponenter
  • React Leaflet for kartvisning

Miljøoppsett

# Nødvendige miljøvariabler (.env)
AZURE_OPENAI_API_KEY=din_nøkkel_her
AZURE_OPENAI_ENDPOINT=https://din-ressurs.openai.azure.com/
AZURE_OPENAI_API_VERSION=modell_versjon
AZURE_OPENAI_DEPLOYMENT_NAME=ditt_deployment_navn

Installasjon

pip install -r requirements.txt

Kjøre prototypen

# Start MCP-serveren (separat terminal)
# Deretter kjør agenten:
python prototype_agent.py

Eksempelkommandoer

# I agentgrensesnittet:
You: Lag en buffer på 500 meter rundt punkt Nord: 6456800, Øst: 439311 i EU89 UTM-sone 32

You: files                    # Vis sporte filer
You: clear                    # Nullstill samtalehistorikk
You: exit                     # Avslutt

Prosjektmål

Bygge en "KU-Assistent" for gjennomføring av konsekvensutredninger (KU) ved å kombinere AI/KI med en GeoMCP og GIS-funksjoner.

Organisasjon

Norkart


Merk: Dette er en utviklingsprototype :)