🗺️

geopandas でshapefileをgeojsonに変換する

2021/04/30に公開

QGISで地道に変換してましたが練習&楽するために
同ディレクトリ内のshapefileをすべてgeojsonに変換します。

状況に応じて使う関数

dissolveは特定のカラムで地物を融合
simplifyは情報減らしてデータが軽くなる(たまに使う)

import geopandas as gpd
from pathlib import Path
import pandas as pd

def dissolve(df, col):
    df = df[[col, 'geometry']]
    df = df.dissolve(by=col)
    return df

def simplify(df, tolerance=0.00001):
    df.geometry = df.geometry.simplify(tolerance=tolerance)
    return df

files = Path().glob('**/*.shp')
for file in files:
    print(file, 'loading...')
    df = gpd.read_file(file)

    print('CRS_Before: ', df.crs)
    df = df.to_crs(epsg=4326)
    print('CRS_After: ', df.crs)
    
    # 保存パスとディレクトリ作成
    dest = Path('result') / file
    dest.parent.mkdir(parents=True, exist_ok=True)
    
    df.to_file(dest.with_suffix('.geojson'), driver="GeoJSON", encoding='utf-8')

Discussion