自動化・効率化ならKTパソコンスクール

powerd by うなぎいもプロジェクト

uMapのデータから経度、緯度を取得してCSVファイルに保存するPythonプログラム

カテゴリー │Python

uMapのデータから経度、緯度を取得してCSVファイルに保存するPythonプログラム

最近、掛川OSM勉強会に参加しています。OSMとはオープンストリートマップの略で、道路地図などの地理情報データを誰でも利用できるよう、フリーの地理情報データを作成することを目的としたプロジェクトです。Google マップなどの一般的な地図サイトデータは著作権の対象として保護されており、無断で複製することはできないとのことで、Google マップに対抗するような形で注目されているようです。

uMapは オープンストリートマップのレイヤを使い、サイト埋め込み用の地図を即座に作成することが可能なサービスとのことです。掛川OSM勉強会の代表者の方から、uMapからダウンロードしたデータをCSVファイルにして保存できないかというお話があり、uMapからダウンロードした拡張子.umapのファイルからname属性と経度、緯度を取得してCSVファイルに保存するプログラムをPython(3.5)で作ってみました。エラーの処理等は全くしていないのでご注意ください。○○のところに拡張子.umapのファイルがあるフォルダの絶対パスを入れてください。



#ダウンロードしたumapのファイルからnameと経度、緯度を取得して
#CSVファイルに保存するプログラム

import os, json, csv

#○○は拡張子.umapのファイルがあるフォルダの絶対パス
path = r"○○"

#path内のフォルダ、ファイルをチェック
for filename in os.listdir(path):
if filename.endswith('.umap'):
umap_file = os.path.join(path, filename)
with open(umap_file, 'r', encoding='utf-8') as fin:
content = fin.read()

jsonData = json.loads(content)

#jsonDataのpropertiesのnameを取得
name = jsonData['properties']['name']

#name + '.csv'のファイルがあるか調べる
csv_file = os.path.join(path, name + '.csv')
if os.path.exists(csv_file):
continue

#CSVファイルの見出しのリスト
header_list = [name, '経度', '緯度']

#地理データのリスト
geo_list = []

#jsonDataのlayersを取得
layers = jsonData['layers']
for layer in layers:
#jsonDataのfeaturesを取得
features = layer['features']
for f in features:
p = f['properties']
g = f['geometry']

#Pointのみを取得
if g['type'] != 'Point':
continue

if 'name' in p.keys():
name_list = []
name_list.append(p['name'])
elif 'name ' in p.keys():
name_list = []
name_list.append(p['name '])
else:
name_list = []
name_list.append('')

geo_list.append(name_list + g['coordinates'])

with open(csv_file, 'w') as fout:
csv_writer = csv.writer(fout, lineterminator='\n')
csv_writer.writerow(header_list)
csv_writer.writerows(geo_list)



  • このエントリーをはてなブックマークに追加
  • LINEで送る

同じカテゴリー(Python)の記事


上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
uMapのデータから経度、緯度を取得してCSVファイルに保存するPythonプログラム
    コメント(0)