共通するキーで属性結合をしよう
今回はQGISだと手順がもっさりしていたテーブル結合(属性結合)を、GeoPandas(Pandas)を使って処理したいと思います。
0.QGISの属性結合の仕方(カンタンなおさらい)
CSVを読み込んで、シェープデータとの結合させて、その状態では保存されていないのでエクスポート。少しだが手作業が発生する・・・じゃあ、簡潔にしよう。
1.まずは読み込みを
test.shp : 地理座標を持ったデータ(結合キー:id)
buf.csv : 結合させたいデータ(結合キー:Id)
import geopandas as gpd
import pandas as pd
shp = gpd.read_file('test.shp',encoding='utf-8')
buf = pd.read_csv('buf.csv',encoding='utf-8')
2.結合コードはこれだけ
merge_data = pd.merge(shp, buf, left_on='id', right_on='Id')
このコードで結合します。shpをleft、bufをrightとしてキーを指定しています。
もし同一のキー名であれば、left_onとかright_onとか使わずに、「on='id'」でいけます。ちなみに下記コードでも同じ結果になります。わかりやすい方法で結合しましょう。もしかすると、速度違ったりするかもしれないけど、今回は省略。
merge_data = shp.merge(buf, left_on='id',right_on='Id')
3.シェープデータの生成
merge_data.to_file('merge.shp',encoding='utf-8')
エンコーディングを指定しないと「ISO-8859-1」という文字コードになります。利用しやすいよう、しっかり指定してあげましょう。
4.もっと汎用性を高めればかなり使える
上の6行にプラスして、コマンドライン引数の取得対応をすれば、いちいちコードを書かなくても良くなるのでオススメ。
この記事が気に入ったらサポートをしてみませんか?