LoginSignup
2
4

More than 3 years have passed since last update.

CSVファイルに地物情報を付加させて別形式で出力させる(Python3, GeoPandas)

Posted at

はじめに

何かと必要な情報はCSVで転がっているが、地物情報を付加させるのにひと手間必要でもう疲れた。のでフォルダ内全てのCSVをGeoJSONに変換することを検討した。

使用モジュール

geopandas
pandas
shapely
os

プログラム

読み込むフォルダーはhogefolder
ファイルは
20200222_1.csv
20200222_2.csv
....
と構成されており、それぞれのCSVファイルは

date londitude latitude data
2019-01-01 133.0000 33.0000 hoge
2019-01-02 132.0000 34.0000 hoge
... ... ... ...

のような形になっているものとする。

import geopandas as gpd
import pandas as pd
from shapely.geometry import Point
import os

file_list = os.listdir('./hogefolder')
for file in file_list:
    name = file[-14:-4]
    opfile = './OutputCSV/'+opfile
    df = pd.read_csv(file,header = 0)

    Geometry = [Point(xy) for xy in zip(df.longitude, df.latitude)]
    df = df.drop(['longitude', 'latitude'], axis=1)
    Crs = {'init': 'epsg:4326'}
    gdf = gpd.GeoDataFrame(df, crs=Crs, geometry=Geometry)

    outputname = './OutputJSON/'+str(name)+".geojson"
    gdf.to_file(outputname, driver='GeoJSON')

CSVファイルを直接geopandasには読み込めないためpandasを経由している。
pandasで読み込ませたデータフレームからlongitudeとlatitudeを読み込み、Point(XY)というgeopandasで読み込めるGeometry形式に書き換えをしている。
元のlon, latは今回dropで削除しているが、残しておいても問題ない。
CRS(今回はWGS84)を指定し、geopandasに読ませている。

出力は出力先と形式を指定すればよい。(シェープファイルやGeoPackageにも出力できる。)

様々な形に応用ができるので、活用してほしい。

簡単にでしたが以上です

何かご意見等ございましたら
twitterまでご連絡ください@ohcelot

2020/02/22 新規作成

参考サイト
GeoPandas公式
https://gist.github.com/nygeog/2731427a74ed66ca0e420eaa7bcd0d2b

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4