In [1]:
#!/usr/bin/python
#coding=utf-8
by openthings@163.com, 2016-04-23.
overpy-使用overpass api接口的python library,这里将返回结果集保存为JSON格式。
- 安装:$ pip install overpy
- 文档:http://python-overpy.readthedocs.org/en/latest/example.html#basic-example
- 接口:http://wiki.openstreetmap.org/wiki/Overpass_API
本工具例程基于上述文档例程进行编写。
In [1]:
import os, sys, gc
import time
import json
import overpy
from pprint import *
In [2]:
#范围:纬度1,经度1,纬度2,经度2
#返回:result
def get_osm():
query = "[out:json];node(50.745,7.17,50.75,7.18);out;"
osm_op_api = overpy.Overpass()
result = osm_op_api.query(query)
print("Nodes: ",len(result.nodes))
print("Ways: ",len(result.ways))
print("Relations: ",len(result.relations))
return result
In [3]:
result = get_osm()
In [4]:
nodeset = result.nodes[0:3]
pprint(nodeset)
In [5]:
for n in nodeset:
print(n.id,n.lat,n.lon)
In [6]:
def node2json(node):
jsonNode="{\"id\":\"%s\", \"lat\":\"%s\", \"lon\":\"%s\"}"%(node.id,node.lat,node.lon)
return jsonNode
def node2jsonfile(fname,nodeset):
fnode = open(fname,"w+")
for n in nodeset:
jn = node2json(n) + "\n"
fnode.write(jn)
fnode.close()
print("Nodes:",len(nodeset),", Write to: ",fname)
In [7]:
node2jsonfile("overpass.osm_node.json",result.nodes)
In [8]:
!ls -l -h
In [ ]: