mit einem Klick
download-data
// Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.
// Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.
Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use text-prompted segmentation with GroundedSAM. Requires GPU for best performance.
Inspect any raster or vector geospatial file. Returns CRS, bounds, bands, resolution, dtype, attribute summaries, and band statistics. Supports GeoTIFF, Shapefile, GeoJSON, GeoPackage, GeoParquet, and more.
Verify that the geoai Python package is installed and functional. If not, provide installation instructions. Optionally check extra dependencies for deep learning models.
Download Overture Maps data (buildings, places, roads, land use, water, etc.) for a bounding box. Returns a GeoDataFrame saved as GeoJSON or GeoPackage.
Process raster data: clip by bounding box, stack multiple bands, mosaic GeoTIFFs, or convert between raster and vector formats.
Search past Claude Code session logs to recover context from previous conversations. Finds past decisions, data paths, CRS info, model configurations, and unresolved work. Works across all projects or scoped to the current one.
| name | download-data |
| description | Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year. |
| argument-hint | <minx,miny,maxx,maxy> [--year YYYY] [--output DIR] [--max-items N] |
| allowed-tools | Bash |
You are helping the user download NAIP aerial imagery using geoai.
Input: $@
Follow these steps in order.
Extract the bounding box from the first argument (comma-separated minx,miny,maxx,maxy).
Parse optional flags from remaining arguments:
--year YYYY -> download year (default: most recent available)--output DIR -> output directory (default: ./naip_data/)--max-items N -> maximum number of items to download (default: 10)If the input is natural language (e.g. "download NAIP imagery for Knoxville, TN"), extract or infer the bounding box. If you cannot determine the bbox, ask the user for coordinates.
Confirm the bounding box has 4 numeric values and represents a valid geographic extent:
minx < maxx and miny < maxyIf validation fails, report the issue and ask for corrected coordinates.
python3 -c "
import geoai, os
bbox = (MINX, MINY, MAXX, MAXY)
output_dir = 'OUTPUT_DIR'
os.makedirs(output_dir, exist_ok=True)
result = geoai.download_naip(
bbox=bbox,
output_dir=output_dir,
year=YEAR,
max_items=MAX_ITEMS,
)
if isinstance(result, list):
for f in result:
size_mb = os.path.getsize(f) / (1024 * 1024) if os.path.exists(f) else 0
print(f'{f} ({size_mb:.1f} MB)')
print(f'Total files: {len(result)}')
elif isinstance(result, str):
size_mb = os.path.getsize(result) / (1024 * 1024) if os.path.exists(result) else 0
print(f'{result} ({size_mb:.1f} MB)')
else:
print(f'Result: {result}')
"
Replace MINX, MINY, MAXX, MAXY, OUTPUT_DIR, YEAR, and MAX_ITEMS with actual values.
For the year parameter:
--year was specified, use that value (e.g. year=2022)year=None to get the most recent availableIf a state directory exists, update it with the downloaded file paths:
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'].extend(DOWNLOADED_FILES)
with open(state_file, 'w') as f:
json.dump(state, f, indent=2)
"
Summarize the download:
Then suggest: "Use /geoai-skills:inspect-geo to examine the downloaded imagery, or /geoai-skills:detect-objects to run AI models on it."
import geoai fails -> delegate to /geoai-skills:install-geoai.--max-items or using a smaller bounding box.