2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Overpass API を使って OpenStreetMap から牛丼店の情報を取得し、Google マイマップに表示する

Last updated at Posted at 2020-10-17

この記事は、下記の記事に触発されて書きました

uMapとOverpass API(overpass turbo)を使ってOpenStreetMatsuyaマップを作る

Overpass API

OpenStreetMap の地理情報を取得するための API です。

OSM の Overpass API の説明

取得した情報のライセンスはODbL です。
オープンソースライセンスと同様に、共有、創作、翻案が行えます。

参考 : オープンデータのライセンスを考える(9)ODbLの概要

牛丼店の地理情報を取得するクエリは下記のようになる

OSMサーバー?data=[out:json];node["amenity"="fast_food"]["cuisine"="beef_bowl"];out;

約600件 登録されている。
全国の牛丼店の店舗数は 4000 店らいしので、網羅率は!5%くらいです。
網羅率を上げるのは、皆さんの協力が必要です。
興味を持った人はこちらから。
ポケモンGOマッパーのためのOSM入門

取得範囲を指定していないので、台湾に2店ほどあるが、気にしないことに。

Google マイマップ に表示する

Google マイマップ に表示するために KML ファイルを用意します。

overpass turbo を使うと、KML ファイルが取得できる。
しかし、マーカーの情報が表形式になって見難い。
osm_turbo_info.png

uMap のような可読性のある表示になるようにします。
osm_umap_info.png

今回は、Python を使ってみました。

Json を解析する

python のjsonライブラリを使います。

Python 標準ライブラリ json

import json

f = open('sample.json', 'r')
json_dict = json.load(f)

elements = json_dict["elements"]
for element in elements:

    lon = element["lon"]
    lat = element["lat"]
    tags = element["tags"]

    if "name" in  tags:
        name = tags["name"].encode('utf-8')

マーカーの情報を作成する

OSMのタグは多いので、どこまで対応するか悩ましい。
下記を参考にする。

OpenStreetMatsuya

    if "branch" in  tags:
        branch = tags["branch"].encode('utf-8')
        info += branch + LF
    if "opening_hours" in  tags:
        opening_hours = tags["opening_hours"].encode('utf-8')
        info += "営業時間: ".encode('utf-8') + opening_hours + LF

KML ファイルを作成する

python の simplekml ライブラリを使います。

simplekml : A Simple KML creator

import simplekml

kml = simplekml.Kml()

kml.newpoint( name=name, description=info, coords=[( lon, lat )] )

ソースコードの全体は下記に。

Google マイマップを作成する

下記からログインする。

KML ファイルをアップロードする。

作成した Google マイマップ

スクリーンショット

osm_mymap.png

osm_mymap_info.png

2
3
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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?