見出し画像

【python】CSVからgeoJSONファイルに変換する

CSVファイルを地図に載せたいなと思っていたのですが、ネットだと色々な変換サービスだったり、QGISを使えばできると思います。

それぞれのサービスを立ち上げるのが面倒(ごめんなさい!汗)な性格な僕にとって、簡単に変換するツールが作れないかと思いまして、開発してみました。

ソースコード

import csv
import json
import os

# ファイル名を取得
filepath = "./toilet.csv"

basename = os.path.splitext(os.path.basename(filepath))[0]


# CSVファイルを読み込む
with open( filepath , "r", encoding='utf_8') as f:
    reader = csv.reader(f)
    header = next(reader)
    items = list(reader)

# CSVファイルをGeoJSONに変換する
features = []
for item in items:
    feature = {
        "type": "Feature",
        "geometry": {
        "type": "Point",
        "coordinates": [item[3], item[2]]
        },
        "properties": {
        "name": item[0],
        "address": item[1],
        "floor": item[4],
        "tel": item[5],
        "start": item[6],
        "exit": item[7],
        "time_remarks": item[8],
        "remarks1": item[9],
        "remarks2": item[10]
        }
    }

    features.append(feature)

# GeoJSONファイルを書き込む
with open("./" + basename + ".geojson", "w", encoding='utf_8') as f:
    json.dump({"features": features}, f, indent = 2, ensure_ascii=False)

子育て支援マップを開発したときに、乳幼児対応トイレを作っていたのですが、その時のコードです。

CSVファイルの中身(Googleスプレッドシート)

CSVファイルを読み込んで、featuresの配列を指定して、geoJSONファイルの規格通りに、値を読み込んでいく、という感じです。

Pythonで実行する

python3 実行ファイル名.py

pythonで実行するコード

これでサクッと変換できちゃいます。

変換されたgeJSONファイルの中身

ソースコード最後の、indent = 2は改行コードで、綺麗に整列してくれます。

pythonでサクッとgeoJSONファイルが作れました!

興味のある方、ぜひ、やってみてくださいね!

この記事が気に入ったらサポートをしてみませんか?