mcpField
G
geopandas

geopandas

github.com/kalarislabsその他7340 回インストール3 日前に更新
リポジトリ

geopandas について

Pythonで平面ベクターデータを扱うGeoPandas向けスキルです。バージョンに対応した資料とローカル監査・計画CLIにより、分析、検証、安全な取り扱いを支援します。

主な機能

  1. 01GeoSeriesとGeoDataFrameのワークフロー
  2. 02CRSとジオメトリの検証ガイド
  3. 03空間結合とオーバーレイ
  4. 04ベクターとGeoParquetの入出力
  5. 056種類のローカル監査・計画CLI

活用シーン

  1. 01分析前のジオメトリ有効性監査
  2. 02CRS変換の計画と確認
  3. 03空間結合のカーディナリティ確認
  4. 04検証済みベクターのエクスポート準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill geopandas

インストール後、Claude Code で/geopandasを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
crs-management.md
data-io.md
data-structures.md
geometric-operations.md
spatial-analysis.md
visualization.md
scripts/
_common.py
crs_reprojection_plan.py
export_plan.py
geometry_validity_report.py
sensitive_coordinates_checklist.py
spatial_join_audit.py
vector_inventory.py

詳細

GeoPandas

pandas のような GeoSeries および GeoDataFrame オブジェクトで表される平面ベクトルデータには、GeoPandas を使用します。このスキルの対象は、未リリースの 1.2 ドキュメントではなく、安定版 GeoPandas 1.1.4(2026-06-26 リリース)です。

再現可能な環境

GeoPandas 1.1.4 には Python 3.10 以降が必要です。タグ付きソースでは、NumPy >=1.24、pandas >=2.0、Shapely >=2.0、pyproj >=3.5、pyogrio >=0.7.2、および packaging が必要です。次の Python 3.12 のスナップショットは、2026-07-23 にスモークテスト済みです。

uv venv --python 3.12
uv pip install \
  "geopandas==1.1.4" \
  "numpy==2.5.1" \
  "pandas==3.0.5" \
  "shapely==2.1.2" \
  "pyproj==3.7.2" \
  "pyogrio==0.13.0" \
  "pyarrow==25.0.0" \
  "packaging==26.2"

オプションのプロットおよび PostGIS パッケージもプロジェクトのロックファイルで固定してください。互換性のないパッケージチャネルから取得したバイナリ地理空間パッケージを混在させないでください。

安全性とプライバシーに関する契約

  • 正確な座標、住所、区画境界、軌跡、小地域単位の結合は機微情報として扱ってください。レポートでは、件数、カテゴリ、大まかな範囲、匿名化した識別子をデフォルトで使用してください。公開前に一般化してください。
  • URL、クラウド URI、GDAL の /vsi* パス、アーカイブを自動で読み込んだり、住所をジオコーディングしたりしないでください。明示的な承認を得て、出所とハッシュを検証してから、展開済みのローカルファイルを隔離されたワークスペースに配置してください。
  • GDAL/OGR ドライバー、GEOS、PROJ、pyogrio、Shapely、pyproj、およびそれらのホイールは、ネイティブコードの信頼境界です。公式ホイールまたは conda-forge を優先し、ネイティブのバージョンを記録し、ドライバーを制限して、信頼できないデータはサンドボックス内で処理してください。
  • マクロ有効のオフィスファイルやネストされたアーカイブを、許容範囲の広い GDAL ドライバー経由で開かないでください。付属の CLI は拡張子の許可リストを使用し、アーカイブを拒否します。
  • GEOPANDAS_POSTGIS_PASSWORD など、名前が明示されたデータベースシークレットだけを読み取ってください。シークレットマネージャーまたはスコープを限定した環境変数を使用してください。パスワードを URL やソースコードに埋め込んだり、エンジンや URL を出力したり、環境変数全体をダンプしたりしないでください。
  • 派生成果物にはすべて、ソースのハッシュとバージョン、CRS、操作パラメーター、述語、結合のカーディナリティ、精度や修復の選択、および行数チェックが必要です。

正確性の確認項目

結果を信頼する前に、次の項目を確認してください。

  1. 識別情報と出所 — ソースレイヤー、安定した地物キー、重複 ID、行数、ジオメトリ列、パーサー/ドライバー、コンテンツハッシュを特定します。
  2. ジオメトリの状態 — null、空、無効、混在、Z/M、縮退したジオメトリをそれぞれ個別に数えます。None は欠損を表します。空の Shapely ジオメトリは実在するジオメトリです。
  3. CRS の意味 — CRS メタデータが必須です。set_crs() はメタデータを設定し、to_crs() は座標を変換します。座標値の範囲から CRS を推測してはいけません。
  4. 単位と操作 — GeoPandas は平面上で処理します。地理座標は角度単位です。バッファー、距離、面積、最近傍結合、精度グリッド、許容差に地理座標を直接使用しないでください。用途に適したローカル CRS/等積 CRS、または測地線に基づく方法を選んでください。
  5. 変換の品質 — 軸順序、適用範囲、測地系変換パイプライン、期待精度、概算変換かどうか、グリッドの欠落を確認します。ユーザーがグリッドの取得を明示的に承認しない限り、PROJ のネットワーク機能は無効のままにしてください。
  6. トポロジーと精度 — 修復やオーバーレイの前後で妥当性を検証します。ソースの精度と CRS の単位に基づいて精度グリッドを選んでください。根拠のないスナップは、地物を縮退させたり、偏りを生じさせたりすることがあります。
  7. カーディナリティ — merge、sjoin、sjoin_nearest の前に、想定される 1 対 1、1 対多、または多対多の動作を明示します。その後、未一致の行や行数の増加を監査します。
  8. 出力の要件 — 新しい出力パスを使用し、安定した地物 ID を保持し、スキーマ/CRS/エンコーディングを記録し、成果物を再度開いて件数と型を比較します。

CRS とアンチメリディアンのルール

GeoPandas は CRS を pyproj.CRS として保存します。座標配列では従来の GIS の (x, y) 順を使用しますが、権威機関による定義では緯度が先の軸順が示される 場合があります。明示的な座標配列のパイプラインでは Transformer(..., always_xy=True) を使用し、その選択を記録してください。

to_crs() は頂点を変換し、各セグメントがソース CRS 上で直線であると仮定します。 測地線の弧は変換しません。±180°または投影境界をまたぐジオメトリは、大きく折り返される 場合があります。交差を検出し、文書化された地理表現で分割/アンラップおよび高密度化を 行い、各部分を変換してから検証してください。一般的な計測用 CRS として Web Mercator を 使用しないでください。

crs = gdf.crs  # a pyproj.CRS when present
if crs is None or crs.is_geographic:
    raise ValueError("Choose a justified projected CRS before planar measurement")

unit_names = [axis.unit_name for axis in crs.axis_info]
areas = gdf.geometry.area  # square CRS units, not automatically square metres

CRS の管理を参照してください。

コア API に関する判断

データ構造
  • GeoDataFrame には、それぞれ CRS メタデータを持つ複数のジオメトリ列を格納できますが、 フレームレベルの空間操作に使われるのは active_geometry_name のみです。
  • 二項演算の GeoSeries メソッドは行単位で処理され、既定ではインデックスに基づいて 整列されます。位置に基づく対応付けを明示的に意図し、長さと順序を確認済みの場合にのみ align=False を使用してください。
  • 列名やフィーチャ ID の重複は曖昧さを招きます。結合やエクスポートの前に拒否するか、 解決してください。

データ構造を参照してください。

ジオメトリの妥当性、精度、結合

make_valid(method="linework"|"structure", keep_collapsed=...) の前に、 is_valid と、詳細を伏せた is_valid_reason() のカテゴリを使用してください。 修復によってジオメトリ型や次元が変わることがあります。元のデータを保持し、件数、面積、 型、空のジオメトリ、縮退した部分を比較してください。

set_precision(grid_size, mode=...) は CRS の単位を使用し、重複頂点を削除したり、 フィーチャを縮退させたりする場合があります。union_all(method="unary", grid_size=...) は堅牢な既定値です。coverage は、is_valid_coverage() によって重なりがなく、 エッジが一致することを確認してから使用してください。分割の前提が有用な場合は、 Shapely >=2.1 で disjoint_subset を使用してください。

幾何演算を参照してください。

結合、オーバーレイ、クリップ、ディゾルブ
  • sjoin の述語には方向性があります。left.within(right) は left.contains(right) と同じではありません。intersects は境界での接触を含みます。 contains は境界上だけにある点を含みませんが、covers は境界上の点を含みます。
  • predicate="dwithin" には distance が必要です。スカラー値または左側の行ごとの距離は CRS の単位で指定します。sjoin_nearest は距離が等しい最寄りの一致をすべて返し、 k= パラメーターは実装していません。
  • overlay(..., make_valid=True) は無効な入力を修復しますが、型が変わる場合があります。 keep_geom_type=None は警告を出して他の型を除外します。精度の不一致でスリバーが生じる ことがあります。黙って削除せず、定量化してください。
  • clip はマスクをディゾルブします。矩形クリッピングは高速ですが、結果が不正確な場合があり、 点に縮退した線が除外される可能性もあります。出力を検証してください。
  • dissolve は groupby.agg と union_all を組み合わせます。属性の集約方法を明示的に選び、 null のグループキーを監査してください。

空間分析を参照してください。

I/O、Arrow、PostGIS

GeoPandas 1.x では pyogrio が既定です。ドライバーの利用可否や動作は、GeoPandas だけでなく インストール済みの GDAL によって決まります。一般的なデータ交換にはローカルの GeoPackage を、 列指向の相互運用には WKB GeoParquet を優先してください。

GeoParquet の既定値は安定版のスキーマ 1.0.0 です。ネイティブ GeoArrow エンコーディングと bbox カバリングにはスキーマ 1.1.0 が必要で、相互運用性はまだ低い状態です。GeoParquet の crs キーがない場合は OGC:CRS84 を意味し、明示的な crs: null は不明を意味します。 この 2 つを混同しないでください。すべてのエクスポートを再度開いて検証してください。

PostGIS には、パラメーター化 SQL と SQLAlchemy の Engine/Connection を使用してください。 if_exists="replace" は破壊的な操作です。既定では "fail" を使用し、トランザクションを 使用してください。

データ I/Oを参照してください。

移行チェックリスト

GeoPandas 0.14 以前からコードを移行する場合:

  • GeoPandas 1.0 は Shapely >=2 のみをサポートします。PyGEOS、Shapely <2、および rtree 空間インデックスバックエンドは削除されました。
  • インストール時およびデフォルトの I/O エンジンは Fiona から pyogrio に置き換わりました。engine= を明示的に設定し、スキーマ、空データ、日時、エンコーディング、追加時の動作をテストしてください。
  • sjoin(op=...) は predicate= に、sindex.query_bulk() は sindex.query() に、unary_union は union_all() に、GeometryArray.data は to_numpy()/np.asarray に置き換えてください。
  • read_file(include_fields=...|ignore_fields=...) は columns= に置き換えてください。削除された GeoParquet の version= 互換機能ではなく、schema_version= を使用してください。
  • 削除された geopandas.datasets、内部の geopandas.io.* エントリポイント、プロットの axes/colormap、または集合演算子は使用しないでください。
  • explode() のデフォルトは index_parts=False になりました。set_geometry() に渡す名前付き Series は新しいアクティブ列名として使用されます。名前付きの右インデックスを指定すると、sjoin の出力で index_right を置き換えられます。
  • メタデータを上書きするために .crs を代入したり、非推奨の set_geometry(drop=...) に依存したりしないでください。明示的な set_crs() と、名前変更/削除の手順を使用してください。
  • GeoPandas 1.1 には Python >=3.10、pandas >=2.0、NumPy >=1.24、pyproj >=3.5 が必要です。バージョン 1.1.2 では PostGIS のジオメトリ列名を介した SQL インジェクションが修正されました。固定バージョンの 1.1.4 にはこの修正が含まれています。
プロットと探索

地図は分析結果です。単位、分類方法、欠損データ、正規化の分母、日付を明記してください。explore() はツールチップ/ポップアップですべての属性を公開し、タイル/CDN サーバーに接続する可能性があります。まず一般化し、ローカルの下書きでは tiles=None、tooltip=False、popup=False を使用してください。

可視化を参照してください。

同梱のローカル CLI

すべてのヘルパーは決定論的に動作し、ネットワーク/アーカイブのパスを拒否し、入力バイト数とフィーチャ数に上限を設け、インポートを遅延させて依存関係なしで --help を実行できるようにし、座標やレコード識別子を含まない JSON を出力します。

CLI目的
scripts/vector_inventory.pyローカルのベクター/GeoParquet の技術情報を、機密情報を伏せて一覧表示
scripts/crs_reprojection_plan.pyCRS の単位、軸、変換候補、日付変更線の処理計画
scripts/geometry_validity_report.pyジオメトリの妥当性を監査するドライラン。オプションで新しい GeoPackage に修復結果を出力
scripts/spatial_join_audit.py述語の意味、重複 ID、結合のカーディナリティ
scripts/export_plan.pyベクター/GeoParquet エクスポート仕様の計画(実行はしない)
scripts/sensitive_coordinates_checklist.pyプライバシー/一般化に関するリリース判定
python skills/geopandas/scripts/vector_inventory.py --help
python skills/geopandas/scripts/crs_reprojection_plan.py \
  --source-crs EPSG:4326 --target-crs EPSG:32631
python skills/geopandas/scripts/geometry_validity_report.py data.gpkg
python skills/geopandas/scripts/spatial_join_audit.py points.gpkg zones.gpkg \
  --predicate within --left-id point_id --right-id zone_id
python skills/geopandas/scripts/export_plan.py data.gpkg result.parquet \
  --format geoparquet --schema-version 1.0.0 \
  --stable-id-column feature_id --id-unique-verified
python skills/geopandas/scripts/sensitive_coordinates_checklist.py \
  --public-output --precise-points --contains-addresses

参考資料一覧

情報源(2026-07-23 に確認)

関連スキル

  • geomaster:GeoPandas、Rasterio、GDAL、Xarray、Shapely、Laspy、PDAL、Google Earth Engine などを使用する地理空間および地球観測のワークフローを提供します…

コメント