Overpass API를 사용하여 OpenStreetMap에서 쇠고기 가게에 대한 정보를 가져와 Google 내 지도에 표시

이 기사는 다음 기사에서 영감을 받고 썼습니다.

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 파일을 얻을 수 있습니다.
그러나 마커의 정보가 표 형식이 되어 보기 어렵다.


uMap과 같은 가독성이 있는 표시가 되도록(듯이) 합니다.


이번에는 Python을 사용해 보았습니다.

Json 구문 분석



파이썬 json 라이브러리를 사용합니다.

파이썬 표준 라이브러리 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 파일 만들기



파이썬 simplekml 라이브러리를 사용합니다.

simplekml : A Simple KML creator
import simplekml

kml = simplekml.Kml()

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

소스 코드의 전체는 아래에.

Google 내 지도 만들기



아래에서 로그인합니다.

KML 파일을 업로드합니다.

만든 Google 내 지도

스크린샷





좋은 웹페이지 즐겨찾기