К основному содержанию
скилл CX Codex

geo-data-engineering — скилл для Claude Code: геоданные в пайплайне

Помогает агенту собрать геоданные из OSM, STAC или Overture, привести их в рабочий вид и не потерять строки по дороге.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add muend/geoai-skills --skill geo-data-engineering -a claude-code
Открыть на GitHub

Что делает geo-data-engineering

Скилл включается на этапе, где геоданные надо получить, починить или прогнать через повторяемый конвейер. Он держит под рукой таблицу форматов: GeoParquet для аналитического обмена, GeoPackage для настольного ГИС, FlatGeobuf для потокового чтения, COG для растров, Zarr или NetCDF для многомерных данных. Shapefile остаётся только для случаев, когда его требует старый инструмент, потому что имена колонок обрезаются, а кодировка ломается.

Внутри есть playbook по источникам: небольшие выгрузки OpenStreetMap через osmnx, крупные — Geofabrik PBF плюс pyrosm или osmium, здания и места в масштабе — Overture Maps с запросами через DuckDB spatial. Происхождение данных скилл велит фиксировать в DATA_SOURCES.md: адрес источника, параметры запроса, дату и лицензию. Слой CRS разбирается отдельно — храните в EPSG:4326 или исходной системе, а анализируйте в проекции под охват, например через gdf.estimate_utm_crs(). Для точности ниже метра нужны гриды преобразования, иначе сдвиг датума уедет незаметно.

Стандартная гигиеническая чистка — scripts/clean_vector.py или его функция clean_vector(): убирает пустые и NULL-геометрии, чинит невалидные через make_valid, устраивает дедупликацию, перепроецирует и печатает отчёт о количестве. Отчёт и есть главный смысл: молчаливая потеря фич становится видимой. Данные, которые не влезают в RAM, скилл советует гнать через DuckDB spatial поверх GeoParquet или dask-geopandas, а растры читать окнами, а не целиком.

Какие задачи решает

  • собрать выгрузку OpenStreetMap и отфильтровать её по значениям тегов
  • перевести векторный слой в GeoParquet без потери CRS
  • починить невалидные геометрии и посчитать, сколько фич пропало
  • прогнать соединение таблиц, которое не влезает в память одной машиной
  • записать происхождение данных так, чтобы выгрузку можно было повторить

Примеры запросов агенту

  • Скачай здания из Overture для моего региона и сохрани в GeoParquet
  • Почисти buildings.geojson через clean_vector.py и покажи отчёт по потерям
  • Перепроецируй слой в местную UTM-зону перед подсчётом площадей

Как установить geo-data-engineering

1Через Skills CLI (Vercel)

npx skills add muend/geoai-skills --skill geo-data-engineering -a claude-code

2Вручную: положить файлы

~/.claude/skills/geo-data-engineering/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/geo-data-engineering/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о geo-data-engineering

Как установить geo-data-engineering в Claude Code?

Выполните npx skills add muend/geoai-skills --skill geo-data-engineering -a claude-code, затем проверьте, что файл ~/.claude/skills/geo-data-engineering/SKILL.md на месте.

Что делает geo-data-engineering?

Ведёт агента по циклу работы с геоданными: получить источник с записанным происхождением, проверить CRS и схему, почистить и сохранить результат. Плюс подсказывает формат и движок под размер данных.

Нужен ли PostGIS вместе с этим скиллом?

Для выполнения запросов в базе скилл сам отсылает к PostGIS. Если работа идёт только с файлами, он опирается на GeoPandas, DuckDB spatial и pyrosm.

Исходный текст

SKILL.md · MIT
---
name: geo-data-engineering
description: >-
  Always invoke when geospatial data must be acquired, prepared, repaired,
  scaled, or moved through a repeatable pipeline. Covers open-data/OSM/STAC
  acquisition, spatial formats, CRS transforms, quality checks, and batch ETL
  architecture for growing or recurring joins. Invoke alongside PostGIS for
  database execution and alongside SWE standards when code is delivered. Do
  not trigger merely because another specialist reads analysis-ready data.
license: MIT
metadata:
  author: Muhammed Enes Duran
---

# Geospatial Data Engineering

Purpose: get spatial data into a clean, validated, analysis-ready state with
a repeatable pipeline — the stage where most real-world GIS time is spent
and most silent errors are born.

## Format selection

| Format | Use for | Avoid because |
|---|---|---|
| **GeoParquet** | Analysis interchange, big vector, columnar workflows | Not yet readable by some legacy desktop GIS |
| **GeoPackage** | Desktop GIS exchange, multi-layer projects | Slower than Parquet at scale; SQLite locking |
| **FlatGeobuf** | Streaming, HTTP range reads | Single layer |
| **COG** (Cloud-Optimized GeoTIFF) | All raster deliverables | — (make every GeoTIFF a COG) |
| **Zarr/NetCDF** | Multi-dimensional (time × band × y × x) | Overkill for single rasters |
| Shapefile | Only when a legacy tool demands it | 10-char columns, 2 GB cap, encoding chaos, multi-file fragility |
| CSV + WKT/lon-lat | Simple point exchange | No CRS metadata — document it explicitly |

## Acquisition playbook

- **OpenStreetMap**: small areas → `osmnx`; large extracts → Geofabrik PBF +
  `pyrosm`/`osmium`. Respect tag heterogeneity: always inspect tag value
  distributions before filtering.
- **Buildings/places at scale**: Overture Maps (GeoParquet on S3/Azure,
  query with DuckDB spatial — often the fastest path).
- **Satellite/raster**: STAC APIs via `pystac-client` + `odc-stac` — see
  `remote-sensing-analysis`; planetary archives → `google-earth-engine`.
- **Boundaries**: authoritative national source first; Natural Earth / GADM /
  geoBoundaries for global work — record which, versions differ materially.
- Record every acquisition: source URL, query parameters, retrieval date,
  license. Put it in a `DATA_SOURCES.md` next to the data.

## CRS engineering

- Store in EPSG:4326 or source CRS; **analyze** in a projected CRS suited to
  the extent: local UTM zone (`gdf.estimate_utm_crs()`), national grid, or
  equal-area (EPSG:6933/Mollweide) for cross-region area stats.
- Datum shifts matter at sub-meter precision: transformations between datums
  need the right transformation grid (`pyproj.network.set_network_enabled(True)`
  when accuracy matters).
- Never strip or overwrite a CRS to "fix" misaligned layers — diagnose which
  layer is wrong with a known landmark instead.

## Cleaning pipeline

Run `scripts/clean_vector.py` (or import its `clean_vector()` function) as
the standard hygiene pass: drops empty/null geometries, repairs invalid ones
with `make_valid`, de-duplicates, reprojects, and **prints an accounting
report** so silent data loss is impossible.

Then: normalize text attributes (trim, collapse whitespace, locale-aware
casefold — beware Turkish İ/ı, German ß), coerce dtypes explicitly, and show
`value_counts()` of every categorical you will later filter on.

## Scale strategies

- **Fits in RAM**: GeoPandas + Shapely 2 vectorized ops. Ensure the spatial
  index is used (`sjoin`, `query_bulk`) — hand-rolled loops are O(n²).
- **Bigger than RAM, single machine**: DuckDB `spatial` extension over
  GeoParquet (predicate pushdown + spatial SQL), or `dask-geopandas`.
- **Served / concurrent / transactional**: PostGIS — see `postgis-spatial-sql`.
- Rasters: windowed reads (`rasterio.windows`), chunked xarray + dask;
  never `read()` a 50 GB mosaic into memory.

## Pipeline standards

- Idempotent steps with explicit inputs/outputs on disk; re-running never
  corrupts state.
- Checkpoint after expensive stages (download, big join) in GeoParquet/GPKG.
- Log an accounting line per stage: rows/features/pixels in → out.
- Deterministic ordering before writing (sort by stable key) so diffs are
  meaningful.

## Pitfalls checklist

- CSV opened without declaring lon/lat columns' CRS.
- Shapefile column names silently truncated on export.
- Encoding mojibake from legacy files (try `encoding="utf-8"` then cp1252).
- Mixed geometry types in one layer (Polygon + MultiPolygon breaks some
  tools — normalize with `.explode()` or promote to Multi*).
- Antimeridian and pole-crossing geometries after naive reprojection.
- Downloaded "latest" data with no recorded version/date — unreproducible.

## Execution contract

- **Workflow:** inventory sources and contracts; acquire with provenance; inspect CRS, schema, geometry, and scale; clean deterministically; validate; write an analysis-ready artifact.
- **Decision rules:** select formats and engines from size, geometry, concurrency, and downstream access needs; never infer CRS or destructive repairs silently.
- **Verification protocol:** reconcile feature or pixel counts at every stage, assert CRS and geometry invariants, sample outputs spatially, and rerun to confirm idempotence.
- **Failure modes:** quarantine ambiguous CRS, mixed units, invalid encodings, lossy format conversions, or unexplained row loss instead of guessing.
- **Deliverables:** validated dataset, machine-readable schema and CRS, provenance manifest, accounting log, rejected-record report, and reproducible pipeline.
- **Source freshness:** consult [the authoritative source registry](references/authoritative-sources.md) before using version-sensitive formats or APIs and record the checked date.

© Muhammed Enes Duran · MIT · muend/geoai-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора6

spatial-statistics Скилл для пространственного анализа: проверяет кластеризацию, горячие точки и зависимость в геоданных, а потом помогает с диагностикой регрессии. CX Codex +1 ★ 35звёзд репо point-cloud-lidar Скилл для работы с LAS, LAZ и COPC: классификация земли, DTM/DSM/CHM, метрики леса и зданий, вертикальные датумы. Нужен, когда на входе сырое облако точек. CX Codex +1 ★ 35звёзд репо ml-experiment-standards Заставляет агента проверять утечки, выбирать сплиты и метрики до обучения модели. Пригодится, когда результат нужно воспроизвести, а не просто получить цифру. CX Codex +1 ★ 35звёзд репо geostatistics-interpolation Скилл для пространственной интерполяции: строит поверхность по редким замерам и отдельно считает карту неопределённости. Полезен, когда нужно оценить значения между станциями, скважинами или зондированиями. CX Codex +1 ★ 35звёзд репо arcgis-pro-automation Скилл для управления локальными проектами ArcGIS Pro и ArcPy через arcgis-mcp-bridge: геообработка, проекции, растры, сети, экспорт компоновок. CX Codex +1 ★ 35звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой