gis について
gisは、アプリケーション横断の地理空間ワークフロー向けにdigitalmodel.gisモジュールを案内するスキルです。対応する座標系や形式、空間操作に加え、QGISやBlenderでデータを使う方法をまとめています。
主な機能
- 01対応CRSとUTMゾーンの自動判定
- 02GeoJSON、KML、Shapefile、GeoTIFF、CSV、WKT対応
- 03QGISプロジェクトとスタイルのエクスポート
- 04Blender用の井戸マーカーと地形メッシュ
- 05半径・境界ボックス・ポリゴン・最近傍N件の検索
- 06水深データの出典とトラブルシューティング
活用シーン
- 01井戸位置データをQGISプロジェクトに変換
- 02Blender用の水深地形を準備
- 03座標参照系の互換性を確認
- 04空間クエリで近傍の地物を検索
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vamseeachanta/ workspace-hub --skill gisインストール後、Claude Code で/gisを入力して読み込まれたか確認します。
詳細
GIS スキル — 統合リファレンス
digitalmodel.gis モジュール(WRK-020)でサポートされる CRS、データ形式、およびアプリケーションの統合手順を網羅した、アプリケーション横断型の地理空間スキルです。
1. サポートされる座標参照系
| EPSG | 名称 | 用途 |
|---|---|---|
| EPSG:4326 | WGS84 地理座標系 | GeoJSON、GPS、BSEE の坑井データの既定値 |
| EPSG:3857 | Web Mercator(Pseudo-Mercator) | タイルマップ(Google Maps、OpenStreetMap) |
| EPSG:32601–32660 | UTM ゾーン 1N–60N | 北半球でのメートル精度の作業 |
| EPSG:32701–32760 | UTM ゾーン 1S–60S | 南半球でのメートル精度の作業 |
| EPSG:4269 | NAD83 | 米国陸上の規制関連データ |
経度から 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, .json | io.geojson_handler.GeoJSONHandler | 追加の依存関係不要。RFC 7946 |
| KML / KMZ | .kml, .kmz | io.kml_handler.KMLHandler | 標準ライブラリの xml.etree のみ |
| Shapefile | .shp + .dbf + .shx | io.shapefile_handler.ShapefileHandler | geopandas/fiona が必要 |
| GeoTIFF | .tif, .tiff | io.geotiff_handler.GeoTIFFHandler | rasterio が必要 |
| CSV + 緯度/経度 | .csv | layers.feature_layer.FeatureLayer | 標準の pandas 読み込み |
| 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 — 坑井マーカー
3D 空間に坑井の円柱を配置する Blender 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 — 地形/水深メッシュ
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 2023 | 15 秒角(約 500 m) | GeoTIFF | 全球対象、無料でダウンロード可能 |
| GEE 経由の GEBCO | 設定可能 | GeoTIFF エクスポート | google-earth-engine スキルを参照 |
| NOAA NCEI | 1 秒角(米国沿岸部) | GeoTIFF | ETOPO シリーズ |
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 | rasterio が存在しない | pip install rasterio |
CRS mismatch in spatial join | レイヤーの CRS が異なる | gdf.to_crs("EPSG:32631") |
| Blender で OBJ メッシュの Z が反転する | 深度値が負 | --scale-z -0.001 を使用して反転 |
| QGIS の .qgs ファイルが開かない | QGIS のバージョン不一致 | 代わりに Layer > Add Vector Layer から開く |
| 大きな OBJ で Blender の動作が遅くなる | ラスターがフル解像度 | --subsample 4 以上を使用 |
コメント
Markdown 対応