there is an existing library https://launchpad.net/osmxapi
On Fri, Nov 8, 2013 at 7:37 AM, Pierre Béland <pierz...@yahoo.fr> wrote: > Hi Phanindra, > > This is a late answer but I took time to test the solution using the > urllib2 module to send a request to a website and extract data. I give you > an example with the Overpass API. > > Using Overpass is a very interesting solution to extract for a bbox and > pass the result to Python. It is possible to output in json and then > convert easily to Python dictionary objects. The python script example > below uses the urllib2 module to send a request and read the result. > > The url contains the instructions sent to the Overpass API. In this > example, The nodes that have a name Tag are extracted for the given bbox. > > In the dictionary, elements contains the list of elements extracted from > OSM. The string function .decode('utf8') let's decode and print correctly > the UTF8 characters. > > Pierre > > Python script > > --------------------------------------------------------------------------------------------------------------------------------------------------- > import urllib2,urllib,json > # space replaced with + sign > url=' > http://overpass.osm.rambler.ru/cgi/interpreter?data=[out:json];(node[name](45.37301118463942,-72.80742645263672,45.416286468478475,-72.71095275878906););out+body > ;' > > try: > print "try request" > overpass_response = urllib2.urlopen(url) > print "info" > print overpass_response.info() > #overpass_response = urllib2.urlopen(url_o) > except urllib2.HTTPError as e: > # list of error codes at http://docs.python.org/2/howto/urllib2.html > print('The server couldn\'t fulfill the request.') > print('Error code: ', e.code, responses[e.code]) > print urllib2.info() > except urllib2.URLError as e: > print('We failed to reach a server.') > print('Reason: ', e.reason) > else: > # everything is fine > #overpass_response = open(overpass_request) > #print "apres open" > overpass_txt=overpass_response.read().decode('utf8') > overpass_response.close() > overpass_json = json.loads(overpass_txt) > > print "dictionnary elements - we access and print each element of the > list" > elements=overpass_json["elements"] > nb=0 > for element in elements: > nb+=1 > print "\n",nb,"\t",element > print "\t"+element["type"]+", id="+str(element["id"])+", > lat="+str(element["lat"])+", lon="+str(element["lon"]) > if ("name" in element["tags"]): > print "\tname="+element["tags"]["name"] > > > ------------------------------ > *De :* Phanindra Kuchipudi <phani....@gmail.com> > *À :* dev@openstreetmap.org > *Envoyé le :* Lundi 4 novembre 2013 0h26 > *Objet :* [OSM-dev] Downloading OSM data > > Hi, > > I want to write a python script to download OSM data based on a given > bounding box (implementing XAPI). > Can anyone help me how to develop this script, and also can you give > information on any other scripts available for this downloading > functionality? > > Thanks, > Phani > > _______________________________________________ > dev mailing list > dev@openstreetmap.org > https://lists.openstreetmap.org/listinfo/dev > > > > _______________________________________________ > dev mailing list > dev@openstreetmap.org > https://lists.openstreetmap.org/listinfo/dev > >
_______________________________________________ dev mailing list dev@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev