11import sys
22import requests
33import json
4- from shapely .geometry import Point
4+ import geojson
5+
56
67class API (object ):
78 """A simple Python wrapper for the OpenStreetMap Overpass API"""
@@ -69,10 +70,15 @@ def _ConstructQLQuery(self, userquery, asGeoJSON=False):
6970 if not raw_query .endswith (";" ):
7071 raw_query += ";"
7172
72- complete_query = self ._QUERY_TEMPLATE .format (
73+ if asGeoJSON :
74+ template = self ._GEOJSON_QUERY_TEMPLATE
75+ else :
76+ template = self ._QUERY_TEMPLATE
77+
78+ complete_query = template .format (
7379 responseformat = self .responseformat ,
74- query = raw_query
75- )
80+ query = raw_query )
81+
7682 if self .debug :
7783 print (complete_query )
7884 return complete_query
@@ -116,9 +122,9 @@ def _asGeoJSON(self, elements):
116122 features = []
117123 for elem in elements :
118124 elem_type = elem ["type" ]
119- if elem [ "type" ] == "node" :
120- geometry = geojson .Point ((elem ["lon" ], elem ["lat" ]))
121- elif elem [ "type" ] == "way" :
125+ if elem_type == "node" :
126+ geometry = geojson .Point ((elem ["lon" ], elem ["lat" ]))
127+ elif elem_type == "way" :
122128 points = []
123129 for coords in elem ["geometry" ]:
124130 points .append ((coords ["lon" ], coords ["lat" ]))
@@ -127,13 +133,14 @@ def _asGeoJSON(self, elements):
127133 continue
128134
129135 feature = geojson .Feature (
130- id = elem ["id" ],
131- geometry = geometry ,
132- properties = elem .get ("tags" ))
136+ id = elem ["id" ],
137+ geometry = geometry ,
138+ properties = elem .get ("tags" ))
133139 features .append (feature )
134140
135141 return geojson .FeatureCollection (features )
136142
143+
137144class OverpassException (Exception ):
138145 def __init__ (self , status_code , message ):
139146 self .status_code = status_code
0 commit comments