mcpField
G
gis

gis

github.com/vamseeachantaData & databases1898 installsUpdated today
Repository

About gis

gis is an integration reference skill for the digitalmodel.gis module, aimed at geospatial workflows across applications. It documents supported coordinate systems and formats, spatial operations, and paths for using data with QGIS and Blender.

Key features

  1. 01Supported CRS and UTM zone detection
  2. 02GeoJSON, KML, Shapefile, GeoTIFF, CSV, and WKT handling
  3. 03QGIS project and style export
  4. 04Blender well markers and terrain meshes
  5. 05Spatial radius, bounding-box, polygon, and nearest-N queries
  6. 06Bathymetry source and troubleshooting guidance

Use cases

  1. 01Converting well locations for QGIS projects
  2. 02Preparing bathymetry terrain for Blender
  3. 03Checking coordinate reference compatibility
  4. 04Finding nearby features with spatial queries

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/vamseeachanta/workspace-hub --skill gis

After installing, type/gisin Claude Code to confirm it loaded.

Details

From the project README

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

EPSGNameUse case
EPSG:4326WGS84 geographicDefault for GeoJSON, GPS, BSEE well data
EPSG:3857Web Mercator (Pseudo-Mercator)Tile maps (Google Maps, OpenStreetMap)
EPSG:32601–32660UTM Zone 1N–60NNorthern hemisphere metre-accurate work
EPSG:32701–32760UTM Zone 1S–60SSouthern hemisphere metre-accurate work
EPSG:4269NAD83US onshore regulatory data

Auto-detect UTM zone from longitude:

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

FormatExtensionsHandlerNotes
GeoJSON.geojson, .jsonio.geojson_handler.GeoJSONHandlerNo extra deps; RFC 7946
KML / KMZ.kml, .kmzio.kml_handler.KMLHandlerPure stdlib xml.etree
Shapefile.shp + .dbf + .shxio.shapefile_handler.ShapefileHandlerRequires geopandas/fiona
GeoTIFF.tif, .tiffio.geotiff_handler.GeoTIFFHandlerRequires rasterio
CSV + lat/lon.csvlayers.feature_layer.FeatureLayerStandard pandas read
WKTembedded in .qgs / .csvcore.geometryUsed in QGIS project files

3. Application Integration

3.1 QGIS

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

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:

iface.addRasterLayer("/path/to/bathymetry.tif", "Bathymetry")
3.2 Blender — Well Markers

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

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:

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
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
# 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

SourceResolutionFormatNotes
GEBCO 202315 arc-sec (~500 m)GeoTIFFGlobal, free download
GEBCO via GEEconfigurableGeoTIFF exportSee google-earth-engine skill
NOAA NCEI1 arc-sec (coastal US)GeoTIFFETOPO 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

ErrorCauseFix
ImportError: rasterio not installedrasterio absentpip install rasterio
CRS mismatch in spatial joinLayers in different CRSgdf.to_crs("EPSG:32631")
OBJ mesh flipped Z in BlenderDepth values negativeUse --scale-z -0.001 to invert
QGIS .qgs file not openingQGIS version mismatchOpen via Layer > Add Vector Layer instead
Large OBJ causes Blender slowdownFull-resolution rasterUse --subsample 4 or higher

Comments

Markdown supported