geopandas
シェープファイル・GeoJSON・GeoPackageなどの地理空間ベクターデータを扱うPythonライブラリ。空間分析・ジオメトリ演算・座標変換・空間結合・オーバーレイ処理・コロプレスマップ作成など、地理データの読み書きや分析が必要な場面で使用する。バッファ分析・境界の統合・データのクリッピング・面積/距離の計算・座標系の再投影・空間ファイル形式の変換にも対応し、PostGISデータベースやmatplotlib/folium/cartopyとの連携もサポートする。
description の原文を見る
Python library for working with geospatial vector data including shapefiles, GeoJSON, and GeoPackage files. Use when working with geographic data for spatial analysis, geometric operations, coordinate transformations, spatial joins, overlay operations, choropleth mapping, or any task involving reading/writing/analyzing vector geographic data. Supports PostGIS databases, interactive maps, and integration with matplotlib/folium/cartopy. Use for tasks like buffer analysis, spatial joins between datasets, dissolving boundaries, clipping data, calculating areas/distances, reprojecting coordinate systems, creating maps, or converting between spatial file formats.
SKILL.md 本文
GeoPandas
GeoPandas は pandas を拡張して、幾何学的型に対する空間操作を可能にします。pandas と shapely の機能を組み合わせて、地理空間データ分析を実現します。
インストール
uv pip install geopandas
オプション依存関係
# インタラクティブマップ用
uv pip install folium
# マッピングの分類スキーム用
uv pip install mapclassify
# より高速な I/O 操作 (2-4倍高速化)
uv pip install pyarrow
# PostGIS データベース対応
uv pip install psycopg2
uv pip install geoalchemy2
# ベースマップ用
uv pip install contextily
# 地図投影法用
uv pip install cartopy
クイックスタート
import geopandas as gpd
# 空間データを読み込む
gdf = gpd.read_file("data.geojson")
# 基本的な探索
print(gdf.head())
print(gdf.crs)
print(gdf.geometry.geom_type)
# シンプルなプロット
gdf.plot()
# 別の座標参照系に再投影
gdf_projected = gdf.to_crs("EPSG:3857")
# 面積を計算 (正確さのために投影済み CRS を使用)
gdf_projected['area'] = gdf_projected.geometry.area
# ファイルに保存
gdf.to_file("output.gpkg")
コアコンセプト
データ構造
- GeoSeries: 空間操作を備えた幾何学的型のベクトル
- GeoDataFrame: ジオメトリ列を持つ表形式のデータ構造
詳細は data-structures.md を参照してください。
データの読み込みと書き込み
GeoPandas は複数の形式を読み込み・書き込みできます: Shapefile、GeoJSON、GeoPackage、PostGIS、Parquet。
# フィルタリング付きで読み込む
gdf = gpd.read_file("data.gpkg", bbox=(xmin, ymin, xmax, ymax))
# Arrow アクセラレーション付きで書き込む
gdf.to_file("output.gpkg", use_arrow=True)
包括的な I/O 操作については data-io.md を参照してください。
座標参照系
正確な空間操作のために、常に CRS を確認・管理してください:
# CRS を確認
print(gdf.crs)
# 再投影 (座標を変換)
gdf_projected = gdf.to_crs("EPSG:3857")
# CRS を設定 (メタデータが不足している場合のみ)
gdf = gdf.set_crs("EPSG:4326")
CRS 操作については crs-management.md を参照してください。
一般的な操作
幾何学的操作
バッファ、簡略化、重心、凸包、アフィン変換:
# 10 ユニットでバッファを作成
buffered = gdf.geometry.buffer(10)
# 許容度で簡略化
simplified = gdf.geometry.simplify(tolerance=5, preserve_topology=True)
# 重心を取得
centroids = gdf.geometry.centroid
すべての操作については geometric-operations.md を参照してください。
空間分析
空間結合、オーバーレイ操作、ディゾルブ:
# 空間結合 (交差)
joined = gpd.sjoin(gdf1, gdf2, predicate='intersects')
# 最近傍結合
nearest = gpd.sjoin_nearest(gdf1, gdf2, max_distance=1000)
# オーバーレイ交差
intersection = gpd.overlay(gdf1, gdf2, how='intersection')
# 属性でディゾルブ
dissolved = gdf.dissolve(by='region', aggfunc='sum')
分析操作については spatial-analysis.md を参照してください。
ビジュアライゼーション
静的および対話的なマップを作成:
# コロプレスマップ
gdf.plot(column='population', cmap='YlOrRd', legend=True)
# インタラクティブマップ
gdf.explore(column='population', legend=True).save('map.html')
# マルチレイヤーマップ
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
gdf1.plot(ax=ax, color='blue')
gdf2.plot(ax=ax, color='red')
マッピング技法については visualization.md を参照してください。
詳細なドキュメント
Data Structures- GeoSeries と GeoDataFrame の基礎Data I/O- ファイル、PostGIS、Parquet の読み込み/書き込みGeometric Operations- バッファ、簡略化、アフィン変換Spatial Analysis- 結合、オーバーレイ、ディゾルブ、クリッピングVisualization- プロット、コロプレスマップ、対話的マップCRS Management- 座標参照系と投影法
一般的なワークフロー
ロード、変換、分析、エクスポート
# 1. データを読み込む
gdf = gpd.read_file("data.shp")
# 2. CRS を確認・変換
print(gdf.crs)
gdf = gdf.to_crs("EPSG:3857")
# 3. 分析を実行
gdf['area'] = gdf.geometry.area
buffered = gdf.copy()
buffered['geometry'] = gdf.geometry.buffer(100)
# 4. 結果をエクスポート
gdf.to_file("results.gpkg", layer='original')
buffered.to_file("results.gpkg", layer='buffered')
空間結合と集約
# ポイントをポリゴンに結合
points_in_polygons = gpd.sjoin(points_gdf, polygons_gdf, predicate='within')
# ポリゴンで集約
aggregated = points_in_polygons.groupby('index_right').agg({
'value': 'sum',
'count': 'size'
})
# ポリゴンにマージバック
result = polygons_gdf.merge(aggregated, left_index=True, right_index=True)
マルチソースデータ統合
# 異なるソースから読み込む
roads = gpd.read_file("roads.shp")
buildings = gpd.read_file("buildings.geojson")
parcels = gpd.read_postgis("SELECT * FROM parcels", con=engine, geom_col='geom')
# CRS を一致させる
buildings = buildings.to_crs(roads.crs)
parcels = parcels.to_crs(roads.crs)
# 空間操作を実行
buildings_near_roads = buildings[buildings.geometry.distance(roads.union_all()) < 50]
パフォーマンスのヒント
- 空間インデックスを使用: GeoPandas はほとんどの操作で自動的に空間インデックスを作成します
- 読み込み時にフィルタリング:
bbox、mask、whereパラメータを使用して必要なデータのみを読み込みます - I/O に Arrow を使用:
use_arrow=Trueを追加して 2-4 倍高速化します - ジオメトリを簡略化: 精度が重要でない場合は
.simplify()を使用して複雑さを軽減します - バッチ操作を使用: ベクトル化された操作は行の反復より高速です
- 適切な CRS を使用: 面積・距離計算は投影済み CRS、ビジュアライゼーションは地理的 CRS を使用します
ベストプラクティス
- 空間操作の前に常に CRS を確認してください
- 面積と距離の計算には投影済み CRS を使用してください
- 空間結合またはオーバーレイの前に CRS を一致させてください
- 操作の前に
.is_validでジオメトリを検証してください - ジオメトリ列を変更する際は
.copy()を使用して副作用を避けてください - 簡略化時にトポロジを保持して分析用に使用してください
- モダンワークフローには GeoPackage 形式を使用 (Shapefile より優れています)
- sjoin_nearest でパフォーマンス向上のために max_distance を設定してください
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。