Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ GeoPandasによる空間結合 | 空間解析手法
Pythonによる地理空間解析

GeoPandasによる空間結合

メニューを表示するにはスワイプしてください

空間結合は、属性値の一致だけでなく、空間的な関係に基づいて地理空間データセットを結合する強力な手法。 geopandas を使用すると、「どのポイントがどのポリゴン内にあるか」や「どのフィーチャが互いに最も近いか」といった問いに簡単に答えることが可能。 この機能の中心となるのが geopandassjoin() メソッドであり、2つの GeoDataFrame オブジェクトを空間的な関係で結合する。

例えば、学校の位置(ポイント)を含むデータセットと、地域の境界(ポリゴン)を含む別のデータセットがあるとする。 空間結合を行うことで、どの学校がどの地域に位置しているかを特定したり、地域ごとの学校数を集計したりできる。

sjoin()geopandas メソッドでは、結合に使用する空間関係(withincontainsintersects など)を指定可能。 さらに、leftrightinner などの結合タイプも選択でき、各データセットのレコードがどのようにマッチし、結果に保持されるかを制御できる。

123456789101112131415161718192021222324252627282930313233343536
import geopandas as gpd from shapely.geometry import Point, Polygon # Create GeoDataFrame of points (e.g., schools) points = gpd.GeoDataFrame({ "school": ["A", "B", "C"], "geometry": [ Point(1, 1), Point(2, 2), Point(3, 3) ] }) # Create GeoDataFrame of polygons (e.g., neighborhoods) polygons = gpd.GeoDataFrame({ "neighborhood": ["Red", "Blue"], "geometry": [ Polygon([(0,0), (0,2), (2,2), (2,0)]), # Red neighborhood Polygon([(2,2), (2,4), (4,4), (4,2)]) # Blue neighborhood ] }) # Spatial join: which school is in which neighborhood? left_join = gpd.sjoin(points, polygons, how="left", predicate="within") right_join = gpd.sjoin(points, polygons, how="right", predicate="within") inner_join = gpd.sjoin(points, polygons, how="inner", predicate="within") print("Left Join Result:") print(left_join[["school", "neighborhood"]]) print("\nRight Join Result:") print(right_join[["school", "neighborhood"]]) print("\nInner Join Result:") print(inner_join[["school", "neighborhood"]])

上記の例では、3種類の結合タイプを確認できる:

  • Left join:すべてのポイント(学校)を保持し、利用可能な場合は地域情報を追加。
  • Right join:すべてのポリゴン(地域)を保持し、その中に含まれる学校を追加。
  • Inner join:地域内に存在するポイントのみを保持。

適切な結合タイプの選択は、分析目的によって異なる。 例えば、地域内外を問わずすべての学校を取得したい場合は left join を使用。 すべての地域とその中に含まれる学校を確認したい場合は right join を使用。 地域内に存在する学校だけに関心がある場合は inner join を使用。

question mark

geopandasにおける空間結合について正しい記述はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  1
some-alt