2009年4月10日金曜日

Python から OpenStreetMapのデータを修正してみる はてなブックマークに追加

ハンディGPSデータロガー m-241を買ってから、ちょこちょことOpenStreetMapにデータを投稿していたのですが、編集ソフトを使ってやるよりAPIから操作したくなるのが人情というもの、APIのドキュメントをみていると追加や削除の情報はいろいろ乗っていたのですが、拠点の修正がよく分からなかったのでテストしたメモです。


OSMのAPIの基本


・HTTPのMETHODでデータを管理する
・1アクセス1オブジェクト
・XMLでデータを表現する

OSMの種類



目的HTTP METHODサンプル
作成 PUT http://api.openstreetmap.org/api/0.5/(node|way)/create
取得 GET http://api.openstreetmap.org/api/0.5/(node|way)/{ID}
修正 PUT http://api.openstreetmap.org/api/0.5/(node|way)/{ID}
削除 DELETE http://api.openstreetmap.org/api/0.5/(node|way)/{ID}


Python から OpenStreetMapのデータを修正した場合のサンプル


この例では花やしきのPointデータを修正します。花やしきのIDは「369934997」になるのでこちらを{ID}にしています。

-*- coding: utf-8 -*-
import httplib, base64
username="xxxx"
password="yyyy"

authheader = "Basic %s" % base64string
headers = {"Authorization": authheader}

body='''








'''
conn = httplib.HTTPConnection("api.openstreetmap.org:80")
conn.request("PUT", "/api/0.5/node/369934997", body, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
#print data
conn.close()


※2週間後にはAPIのバージョンが0.6に変わるようなので、すぐに役に立たなくなります