Skip to content
Data
Skill

/overture-data

Download Overture Maps data (buildings, places, roads, land use, water, etc.) for a bounding box. Returns a GeoDataFrame saved as GeoJSON or GeoPackage.

From plugin
geoai-skills
368 skills

Claude Code

$ npx -y skills add opengeos/geoai-skills --skill overture-data --agent claude-code

SKILL.md

overture-data.SKILL.md
name: overture-data
description: >
  Download Overture Maps data (buildings, places, roads, land use, water, etc.)
  for a bounding box. Returns a GeoDataFrame saved as GeoJSON or GeoPackage.
argument-hint: <data_type> --bbox <minx,miny,maxx,maxy> [--output FILE]
allowed-tools: Bash

You are helping the user download Overture Maps data using geoai.

Input: `$@`

Follow these steps in order.

Step 1 -- Parse arguments

Extract:

  • `$0` or the first positional argument as the Overture data type
  • `--bbox minx,miny,maxx,maxy` as the bounding box (required)
  • `--output FILE` as the output file path (optional, default: `./<data_type>_overture.gpkg`)

Valid Overture data types: `address`, `building`, `building_part`, `division`, `division_area`, `division_boundary`, `place`, `segment`, `connector`, `infrastructure`, `land`, `land_cover`, `land_use`, `water`

If the data type is not recognized, print the list of valid types and ask the user to pick one.

If the user provided natural language (e.g. "get buildings in downtown Nashville"), extract the data type and either infer or ask for the bounding box.

Step 2 -- Validate the bounding box

Confirm the bounding box has 4 numeric values:

  • `minx < maxx` and `miny < maxy`
  • Values within WGS84 range

If validation fails, report the issue and ask for corrected coordinates.

Step 3 -- Download the data

For building data specifically

python3 -c "
import geoai

gdf = geoai.download_overture_buildings(
    bbox=(MINX, MINY, MAXX, MAXY),
    output='OUTPUT_PATH',
)
print(f'Features: {len(gdf)}')
print(f'Columns: {list(gdf.columns)}')
print(f'CRS: {gdf.crs}')
print(f'Bounds: {gdf.total_bounds.tolist()}')
print('---')
print('Sample (first 5 rows):')
print(gdf.head().to_string())
"

For all other data types

python3 -c "
import geoai

gdf = geoai.get_overture_data(
    overture_type='DATA_TYPE',
    bbox=(MINX, MINY, MAXX, MAXY),
    output='OUTPUT_PATH',
)
print(f'Features: {len(gdf)}')
print(f'Columns: {list(gdf.columns)}')
print(f'CRS: {gdf.crs}')
print(f'Bounds: {gdf.total_bounds.tolist()}')
print('---')
print('Sample (first 5 rows):')
print(gdf.head().to_string())
"

Replace `DATA_TYPE`, `MINX`, `MINY`, `MAXX`, `MAXY`, and `OUTPUT_PATH` with actual values.

Step 4 -- Update state

If a state directory exists, update it:

STATE_DIR=""
test -f .geoai-skills/state.json && STATE_DIR=".geoai-skills"
PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")"
PROJECT_ID="$(echo "$PROJECT_ROOT" | tr '/' '-')"
test -f "$HOME/.geoai-skills/$PROJECT_ID/state.json" && STATE_DIR="$HOME/.geoai-skills/$PROJECT_ID"

If `STATE_DIR` is set:

python3 -c "
import json, os
state_file = 'STATE_DIR/state.json'
state = {}
if os.path.exists(state_file):
    with open(state_file) as f:
        state = json.load(f)
state.setdefault('downloaded_files', [])
state['downloaded_files'].append('OUTPUT_PATH')
with open(state_file, 'w') as f:
    json.dump(state, f, indent=2)
"

Step 5 -- Report results

Summarize:

  • Data type downloaded
  • Number of features
  • Output file path and size
  • Column summary
  • CRS and spatial extent

Then suggest: *"Use `/geoai-skills:inspect-geo` to examine the downloaded data in detail."*

Error handling

  • **`import geoai` fails** -> delegate to `/geoai-skills:install-geoai`.
  • **`overturemaps` not installed** -> suggest `pip install "geoai-py[extra]"` which includes the overturemaps dependency.
  • **No features found** -> suggest expanding the bounding box or trying a different data type.
  • **Network error** -> report and suggest retrying.
Read more
@opengeos
Ships withgeoai-skills

A Claude Code plugin that adds GeoAI-powered skills for geospatial data exploration, satellite imagery download, AI-based object detection, and session memory. Built on the GeoAI Python library.

Stars on GitHub

Momentum

stars in total
36
Star history of opengeos/geoai-skills on GitHub, a chart by star-history.com

Other skills on geoai-skills.

detect-objects

detect-objects

Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use…

download-data

download-data

Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.

inspect-geo

inspect-geo

Inspect any raster or vector geospatial file. Returns CRS, bounds, bands, resolution, dtype, attribute summaries, and band…

install-geoai

install-geoai

Verify that the geoai Python package is installed and functional. If not, provide installation instructions. Optionally check…

process-raster

process-raster

Process raster data: clip by bounding box, stack multiple bands, mosaic GeoTIFFs, or convert between raster and vector formats.

read-memories

read-memories

Search past Claude Code session logs to recover context from previous conversations. Finds past decisions, data paths, CRS info,…

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem08d69k
@mem0ai@mem0aiInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

posthog2w41k
@posthog@posthogInstall Skill

Questions about overture-data.

Which coding agents can use overture-data?
overture-data installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.