mcpField
G
gis

gis

github.com/vamseeachanta数据与数据库1898 次安装今天更新
代码仓库

关于 gis

gis 是面向跨应用地理空间工作流的技能参考,介绍 digitalmodel.gis 模块。内容涵盖支持的坐标系和格式、空间操作,以及在 QGIS 与 Blender 中使用数据的方法。

主要功能

  1. 01支持的 CRS 与 UTM 分区检测
  2. 02GeoJSON、KML、Shapefile、GeoTIFF、CSV 和 WKT
  3. 03QGIS 项目与样式导出
  4. 04Blender 井位标记与地形网格
  5. 05半径、边界框、多边形和最近 N 项查询
  6. 06水深数据来源与故障排查指引

适用场景

  1. 01将井位数据转换为 QGIS 项目
  2. 02为 Blender 准备水深地形
  3. 03检查坐标参考系兼容性
  4. 04通过空间查询查找附近要素

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/gis确认已加载。

详细介绍

GIS 技能 — 集成参考

跨应用地理空间技能,涵盖 digitalmodel.gis 模块(WRK-020)支持的 CRS、数据格式和应用集成步骤。


1. 支持的坐标参考系统

EPSG名称用例
EPSG:4326WGS84 地理坐标系GeoJSON、GPS、BSEE 井数据的默认设置
EPSG:3857Web Mercator(Pseudo-Mercator)瓦片地图(Google Maps、OpenStreetMap)
EPSG:32601–32660UTM 1N–60N 带北半球米级精度作业
EPSG:32701–32760UTM 1S–60S 带南半球米级精度作业
EPSG:4269NAD83美国陆上监管数据

根据经度自动检测 UTM 带:

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

2. 支持的数据格式

格式扩展名处理器备注
GeoJSON.geojson, .jsonio.geojson_handler.GeoJSONHandler无需额外依赖;RFC 7946
KML / KMZ.kml, .kmzio.kml_handler.KMLHandler纯标准库 xml.etree
Shapefile.shp + .dbf + .shxio.shapefile_handler.ShapefileHandler需要 geopandas/fiona
GeoTIFF.tif, .tiffio.geotiff_handler.GeoTIFFHandler需要 rasterio
CSV + lat/lon.csvlayers.feature_layer.FeatureLayer使用标准 pandas read
WKT嵌入在 .qgs / .csv 中core.geometry用于 QGIS 项目文件

3. 应用集成

3.1 QGIS

从 WellLayer 生成可直接打开的 .qgs 项目文件:

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

在 QGIS Processing Python 控制台中加载 GeoTIFF 水深图层:

iface.addRasterLayer("/path/to/bathymetry.tif", "Bathymetry")
3.2 Blender — 井位标记

生成 Blender Python 脚本,在 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 — 地形 / 水深网格

将 GeoTIFF 转换为 Blender 可直接导入的 OBJ 网格:

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

在 Blender 中:File > Import > Wavefront (.obj) — 选择 terrain.obj。

默认比例:1 m = 0.001 个 Blender 单位(km 比例)。使用 --scale-xy 和 --scale-z 覆盖。

3.4 QGIS — 将地形导入为 CSV 点云
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 模块
# Access BSEE well locations with CRS support
from worldenergydata.bsee import load_wells
wells_df = load_wells()  # lat/lon columns in WGS84

4. 水深数据来源

来源分辨率格式备注
GEBCO 202315 角秒(约 500 m)GeoTIFF全球,可免费下载
通过 GEE 获取 GEBCO可配置GeoTIFF 导出参见 google-earth-engine 技能
NOAA NCEI1 角秒(美国沿海)GeoTIFFETOPO 系列

5. digitalmodel.gis 模块概览

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. 故障诊断

错误原因修复方法
ImportError: rasterio not installed缺少 rasteriopip install rasterio
CRS mismatch in spatial join图层使用不同的 CRSgdf.to_crs("EPSG:32631")
Blender 中 OBJ 网格 Z 轴翻转深度值为负使用 --scale-z -0.001 进行反转
QGIS 无法打开 .qgs 文件QGIS 版本不匹配改用 Layer > Add Vector Layer 打开
大型 OBJ 导致 Blender 运行缓慢栅格为全分辨率使用 --subsample 4 或更大的值

评论

支持 Markdown