1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

緯度・経度をもつCSVを GeoDataFrame に変換する

Posted at

この記事について

仕事で GIS データを扱うことになったので、基本から学ぶことにしました。
以下の講座を受けながら、緯度・経度を持つCSVをGeoDataFrameに変換する方法をメモ。

※この記事のデータは講座で出てくるものとは違うものを使います。

やりかた

準備 - 緯度・経度を持つCSVを用意する

今回は東京都のオープンデータで、多摩市のスポーツ施設の一覧を使います。

データは以下のように、緯度と経度の情報が入ってはいるものの、geojson などの形式になっていないただのCSVです。

Screenshot 2025-01-08 at 10.26.20.png

以下のサイトでデータの内容を参照できます。

⬆️にもリンクがありますが、以下のリンクから CSV をダウンロードできます。

csvを任意のフォルダに置いた状態で、以下に進みます。

Step1. CSVを普通の pandas の DataFrame として読み込む

まず、CSVを普通の pandas の DataFrame として読み込みます。

# 普通の pandas の DataFrame として読み込む
path = './132241_tama_sportsfacilities.csv'
df = pd.read_csv(path)

path の指定は、適宜変更してください。

今回の多摩市のデータは、カラム数がやたら多い(23行、122列)ので、必要に応じてほしい列だけに絞ります。

# ほしい列だけを取り出す
wanted_cols = "ID 名称 緯度 経度 電話番号 利用可能曜日".split()
df = df[wanted_cols]

Step2. 緯度と経度の列を geometry 列として定義する

現時点では、緯度と経度の情報は名前こそ緯度・経度であるものの、データ型としては numpy の float 型として入っています。

image.png

以下の記事で記載したとおり、GeoPandasには アクティブなジオメトリ列 の定義が必要です。

なので緯度・経度情報を、ジオメトリ型に変換しつつ、アクティブなジオメトリ列 として使えるように準備する必要があります。

以下のコードで、緯度と経度をまとめて GeometryArray にすることができます。

geometry として使う列を定義する
# geometry として使う列を定義する
geometry_cols = gpd.points_from_xy(df['経度'], df['緯度'])

Step3. もとの DataFrame に geometry 列を合わせて GeoDataFrame を作る

以下のコードで、今作った geometry 列用の GeometryArray をもとの df に足して、GeoDataFrame を作ることができます。

GeoDataFrame を作る
# もとの df に geometry 列を足して GeoDataFrame を作る
gdf = gpd.GeoDataFrame(df, geometry=geometry_cols)

gdf を表示すると、以下のように、緯度経度を Point として持つ geometry 列が、もとの df のうしろにくっついた形になっていることがわかります。

Screenshot 2025-01-08 at 10.57.37.png

おまけ

上記の gdf を geojson として保存することは、以下のコードで可能なのですが、今のままだとcrsの情報がないと怒られます。

outpath = './tama.geojson'
gdf.to_file(outpath, driver='GeoJSON', encoding='shift-jis')

image.png

たぶんcrsの情報を別途定義する方法があるのだろうと思いますが、そちらはわかり次第(必要になり次第)まとめたいと思います。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?