gis

Cross-application GIS skill — CRS reference, data formats, Blender/QGIS integration via digitalmodel.gis

5 stars

Best use case

gis is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Cross-application GIS skill — CRS reference, data formats, Blender/QGIS integration via digitalmodel.gis

Teams using gis should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/gis/SKILL.md --create-dirs "https://raw.githubusercontent.com/vamseeachanta/workspace-hub/main/.agents/skills/_archive/gis/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/gis/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How gis Compares

Feature / AgentgisStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Cross-application GIS skill — CRS reference, data formats, Blender/QGIS integration via digitalmodel.gis

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# GIS Skill — Integration Reference

Cross-application geospatial skill covering supported CRS, data formats, and
application integration steps for the `digitalmodel.gis` module (WRK-020).

---

## 1. Supported Coordinate Reference Systems

| EPSG | Name | Use case |
|------|------|----------|
| EPSG:4326 | WGS84 geographic | Default for GeoJSON, GPS, BSEE well data |
| EPSG:3857 | Web Mercator (Pseudo-Mercator) | Tile maps (Google Maps, OpenStreetMap) |
| EPSG:32601–32660 | UTM Zone 1N–60N | Northern hemisphere metre-accurate work |
| EPSG:32701–32760 | UTM Zone 1S–60S | Southern hemisphere metre-accurate work |
| EPSG:4269 | NAD83 | US onshore regulatory data |

Auto-detect UTM zone from longitude:

```python
from digitalmodel.gis.core.crs import get_utm_epsg
epsg = get_utm_epsg(longitude=-1.5, latitude=57.0)  # returns "EPSG:32630"
```

---

## 2. Supported Data Formats

| Format | Extensions | Handler | Notes |
|--------|-----------|---------|-------|
| GeoJSON | .geojson, .json | `io.geojson_handler.GeoJSONHandler` | No extra deps; RFC 7946 |
| KML / KMZ | .kml, .kmz | `io.kml_handler.KMLHandler` | Pure stdlib xml.etree |
| Shapefile | .shp + .dbf + .shx | `io.shapefile_handler.ShapefileHandler` | Requires geopandas/fiona |
| GeoTIFF | .tif, .tiff | `io.geotiff_handler.GeoTIFFHandler` | Requires rasterio |
| CSV + lat/lon | .csv | `layers.feature_layer.FeatureLayer` | Standard pandas read |
| WKT | embedded in .qgs / .csv | `core.geometry` | Used in QGIS project files |

---

## 3. Application Integration

### 3.1 QGIS

Generate a ready-to-open `.qgs` project file from a `WellLayer`:

```python
from digitalmodel.gis.integrations.qgis_export import QGISExporter
from digitalmodel.gis.layers.well_layer import WellLayer

layer = WellLayer.from_csv("wells.csv", lat_col="lat", lon_col="lon")
exporter = QGISExporter(layer)
exporter.generate_project("wells.qgs")          # open in QGIS 3.x
exporter.generate_well_qml("wells_style.qml")  # well marker style
```

Load a GeoTIFF bathymetry layer inside QGIS Processing Python console:

```python
iface.addRasterLayer("/path/to/bathymetry.tif", "Bathymetry")
```

### 3.2 Blender — Well Markers

Generate a Blender Python script that positions well cylinders in 3D:

```python
from digitalmodel.gis.integrations.blender_export import BlenderExporter
from digitalmodel.gis.layers.well_layer import WellLayer

layer = WellLayer.from_csv("wells.csv", lat_col="lat", lon_col="lon")
exporter = BlenderExporter(layer)
exporter.write_well_script("add_wells.py")
# In Blender: Text editor > Open add_wells.py > Run Script
```

### 3.3 Blender — Terrain / Bathymetry Mesh

Convert a GeoTIFF to an OBJ mesh that Blender can import directly:

```bash
python scripts/gis/geotiff-to-blender.py bathymetry.tif --output terrain.obj
# Optional: subsample to reduce vertex count
python scripts/gis/geotiff-to-blender.py bathymetry.tif --output terrain.obj --subsample 4
```

In Blender: **File > Import > Wavefront (.obj)** — select `terrain.obj`.

Scale defaults: 1 m = 0.001 Blender units (km scale). Override with
`--scale-xy` and `--scale-z`.

### 3.4 QGIS — Import Terrain as CSV Point Cloud

```bash
python scripts/gis/geotiff-to-blender.py bathymetry.tif --output points.csv
# QGIS: Layer > Add Layer > Add Delimited Text Layer > select points.csv
# Set X=x, Y=y, Z=z, CRS = source CRS of the GeoTIFF
```

### 3.5 worldenergydata.gis Module

```python
# Access BSEE well locations with CRS support
from worldenergydata.bsee import load_wells
wells_df = load_wells()  # lat/lon columns in WGS84
```

---

## 4. Bathymetry Sources

| Source | Resolution | Format | Notes |
|--------|-----------|--------|-------|
| GEBCO 2023 | 15 arc-sec (~500 m) | GeoTIFF | Global, free download |
| GEBCO via GEE | configurable | GeoTIFF export | See google-earth-engine skill |
| NOAA NCEI | 1 arc-sec (coastal US) | GeoTIFF | ETOPO series |

---

## 5. digitalmodel.gis Module Map

```
digitalmodel/gis/
  coordinates.py          — CoordinatePoint dataclass, batch transforms
  core/
    crs.py                — CRS definitions, get_utm_epsg()
    geometry.py           — GeoPoint, GeoBoundingBox, GeoPolygon
    spatial_query.py      — radius, bbox, polygon, nearest-N queries
    coordinate_transformer.py
  io/
    geojson_handler.py    — GeoJSON read/write
    kml_handler.py        — KML/KMZ read/write
    shapefile_handler.py  — Shapefile (optional geopandas)
    geotiff_handler.py    — GeoTIFF read/write/to_xyz (optional rasterio)
  layers/
    feature_layer.py      — FeatureLayer (pandas-backed GIS collection)
    well_layer.py         — WellLayer (well-specific subclass)
  integrations/
    blender_export.py     — Blender script generator for well markers
    qgis_export.py        — QGIS .qgs project + .qml style generator
    folium_maps.py        — Folium/Leaflet HTML maps
    google_earth_export.py— Styled KML for Google Earth
    plotly_maps.py        — Plotly mapbox scatter/dashboard
```

---

## 6. Failure Diagnosis

| Error | Cause | Fix |
|-------|-------|-----|
| `ImportError: rasterio not installed` | rasterio absent | `pip install rasterio` |
| `CRS mismatch in spatial join` | Layers in different CRS | `gdf.to_crs("EPSG:32631")` |
| OBJ mesh flipped Z in Blender | Depth values negative | Use `--scale-z -0.001` to invert |
| QGIS .qgs file not opening | QGIS version mismatch | Open via Layer > Add Vector Layer instead |
| Large OBJ causes Blender slowdown | Full-resolution raster | Use `--subsample 4` or higher |

Related Skills

qgis

5
from vamseeachanta/workspace-hub

QGIS AI Interface Skill — PyQGIS headless automation, Processing framework, vector/raster I/O, CRS transforms, well plotting from CSV, failure diagnosis

python-gis-ecosystem

5
from vamseeachanta/workspace-hub

Python GIS Ecosystem Skill — GDAL/OGR, Fiona, Shapely, Rasterio, GeoPandas, pyproj, Folium, xarray/rioxarray, Cartopy — foundational GIS libraries

google-earth-engine

5
from vamseeachanta/workspace-hub

Google Earth Engine AI Interface Skill — ee Python API, authentication, image/collection operations, export workflows, GEBCO bathymetry, Sentinel, Landsat

gis-informed-workflow

5
from vamseeachanta/workspace-hub

GIS-Informed Engineering Workflow — GIS site data to engineering analysis inputs. Covers: bathymetry extraction, pipeline routing, well location to OrcaFlex, metocean spatial analysis, and property valuation spatial overlays.

test-oversized-skill

5
from vamseeachanta/workspace-hub

A test fixture skill that exceeds 200 lines with multiple H2/H3 sections for split testing.

interactive-report-generator

5
from vamseeachanta/workspace-hub

Generate interactive HTML reports with Plotly visualizations from data analysis results. Supports dashboards, charts, and professional styling.

data-validation-reporter

5
from vamseeachanta/workspace-hub

Generate interactive validation reports with quality scoring, missing data analysis, and type checking. Combines Pandas validation, Plotly visualization, and YAML configuration for comprehensive data quality reporting.

claude-reflection

5
from vamseeachanta/workspace-hub

Self-improvement and learning skill that helps Claude learn from user interactions, corrections, and preferences

agent-os-framework

5
from vamseeachanta/workspace-hub

Generate standardized .agent-os directory structure with product documentation, mission, tech-stack, roadmap, and decision records. Enables AI-native workflows.

OrcaFlex Specialist Skill

5
from vamseeachanta/workspace-hub

```yaml

repo-ecosystem-hygiene

5
from vamseeachanta/workspace-hub

Interpret the daily read-only repo ecosystem hygiene audit and route remediation through approved workflows.

domain-knowledge-sweep

5
from vamseeachanta/workspace-hub

Systematic multi-source research of an engineering domain. Spawns parent issue → 6 research subissues (Standards, Academic, Industry, LinkedIn-marketing, Code-audit, Synthesis) → gap implementation subissues. Replaces LinkedIn-only extraction with defensible comprehensive sourcing.