geopandas について
Pythonで平面ベクターデータを扱うGeoPandas向けスキルです。バージョンに対応した資料とローカル監査・計画CLIにより、分析、検証、安全な取り扱いを支援します。
主な機能
- 01GeoSeriesとGeoDataFrameのワークフロー
- 02CRSとジオメトリの検証ガイド
- 03空間結合とオーバーレイ
- 04ベクターとGeoParquetの入出力
- 056種類のローカル監査・計画CLI
活用シーン
- 01分析前のジオメトリ有効性監査
- 02CRS変換の計画と確認
- 03空間結合のカーディナリティ確認
- 04検証済みベクターのエクスポート準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill geopandasインストール後、Claude Code で/geopandasを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/crs-management.mddata-io.mddata-structures.mdgeometric-operations.mdspatial-analysis.mdvisualization.mdscripts/_common.pycrs_reprojection_plan.pyexport_plan.pygeometry_validity_report.pysensitive_coordinates_checklist.pyspatial_join_audit.pyvector_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、操作パラメーター、述語、結合のカーディナリティ、精度や修復の選択、および行数チェックが必要です。
正確性の確認項目
結果を信頼する前に、次の項目を確認してください。
- 識別情報と出所 — ソースレイヤー、安定した地物キー、重複 ID、行数、ジオメトリ列、パーサー/ドライバー、コンテンツハッシュを特定します。
- ジオメトリの状態 — null、空、無効、混在、Z/M、縮退したジオメトリをそれぞれ個別に数えます。
Noneは欠損を表します。空の Shapely ジオメトリは実在するジオメトリです。 - CRS の意味 — CRS メタデータが必須です。
set_crs()はメタデータを設定し、to_crs()は座標を変換します。座標値の範囲から CRS を推測してはいけません。 - 単位と操作 — GeoPandas は平面上で処理します。地理座標は角度単位です。バッファー、距離、面積、最近傍結合、精度グリッド、許容差に地理座標を直接使用しないでください。用途に適したローカル CRS/等積 CRS、または測地線に基づく方法を選んでください。
- 変換の品質 — 軸順序、適用範囲、測地系変換パイプライン、期待精度、概算変換かどうか、グリッドの欠落を確認します。ユーザーがグリッドの取得を明示的に承認しない限り、PROJ のネットワーク機能は無効のままにしてください。
- トポロジーと精度 — 修復やオーバーレイの前後で妥当性を検証します。ソースの精度と CRS の単位に基づいて精度グリッドを選んでください。根拠のないスナップは、地物を縮退させたり、偏りを生じさせたりすることがあります。
- カーディナリティ —
merge、sjoin、sjoin_nearestの前に、想定される 1 対 1、1 対多、または多対多の動作を明示します。その後、未一致の行や行数の増加を監査します。 - 出力の要件 — 新しい出力パスを使用し、安定した地物 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.py | CRS の単位、軸、変換候補、日付変更線の処理計画 |
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 に確認)
- PyPI の GeoPandas 1.1.4 — 2026-06-26 リリース。
- GeoPandas 1.1.4 リリース — バグ修正リリース。
- GeoPandas 1.1.4 のタグ付き依存関係。
- GeoPandas の安定版ドキュメント。
- GeoPandas 1.0 移行リリース。
関連スキル
geomaster:GeoPandas、Rasterio、GDAL、Xarray、Shapely、Laspy、PDAL、Google Earth Engine などを使用する地理空間および地球観測のワークフローを提供します…