Skip to content

Commit ff51d63

Browse files
authored
Merge pull request #133 from KaartGroup/refactor
List comprehension, literal comparison, import ordering, staticmethod
2 parents 2bc8681 + f15a163 commit ff51d63

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

overpass/api.py

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,24 @@
33
# which is licensed under Apache 2.0.
44
# See LICENSE.txt for the full license text.
55

6-
import requests
7-
import json
86
import csv
9-
import geojson
7+
import json
108
import logging
119
import re
1210
from datetime import datetime
13-
from shapely.geometry import Polygon, Point
1411
from io import StringIO
12+
13+
import geojson
14+
import requests
15+
from shapely.geometry import Point, Polygon
16+
1517
from .errors import (
16-
OverpassSyntaxError,
17-
TimeoutError,
1818
MultipleRequestsError,
19+
OverpassSyntaxError,
1920
ServerLoadError,
20-
UnknownOverpassError,
2121
ServerRuntimeError,
22+
TimeoutError,
23+
UnknownOverpassError,
2224
)
2325

2426

@@ -110,14 +112,10 @@ def get(self, query, responseformat="geojson", verbosity="body", build=True, dat
110112
if self.debug:
111113
print(content_type)
112114
if content_type == "text/csv":
113-
result = []
114-
reader = csv.reader(StringIO(r.text), delimiter="\t")
115-
for row in reader:
116-
result.append(row)
117-
return result
115+
return list(csv.reader(StringIO(r.text), delimiter="\t"))
118116
elif content_type in ("text/xml", "application/xml", "application/osm3s+xml"):
119117
return r.text
120-
elif content_type == "application/json":
118+
else:
121119
response = json.loads(r.text)
122120

123121
if not build:
@@ -133,7 +131,7 @@ def get(self, query, responseformat="geojson", verbosity="body", build=True, dat
133131
if overpass_remark and overpass_remark.startswith("runtime error"):
134132
raise ServerRuntimeError(overpass_remark)
135133

136-
if responseformat is not "geojson":
134+
if responseformat != "geojson":
137135
return response
138136

139137
# construct geojson
@@ -301,21 +299,18 @@ def _as_geojson(self, elements):
301299
if member["role"] == "inner":
302300
points = [(coords["lon"], coords["lat"]) for coords in member.get("geometry", [])]
303301
# Check that the inner polygon is complete
304-
if points and points[-1] == points[0]:
305-
# We need to check to which outer polygon the inner polygon belongs
306-
point = Point(points[0])
307-
check = False
308-
for poly in polygons:
309-
polygon = Polygon(poly[0])
310-
if polygon.contains(point):
311-
poly.append(points)
312-
check = True
313-
break
314-
if not check:
315-
raise UnknownOverpassError("Received corrupt data from Overpass (inner polygon cannot "
316-
"be matched to outer polygon).")
317-
else:
302+
if not points or points[-1] != points[0]:
318303
raise UnknownOverpassError("Received corrupt data from Overpass (incomplete polygon).")
304+
# We need to check to which outer polygon the inner polygon belongs
305+
point = Point(points[0])
306+
for poly in polygons:
307+
polygon = Polygon(poly[0])
308+
if polygon.contains(point):
309+
poly.append(points)
310+
break
311+
else:
312+
raise UnknownOverpassError("Received corrupt data from Overpass (inner polygon cannot "
313+
"be matched to outer polygon).")
319314
# Finally create MultiPolygon geometry
320315
if polygons:
321316
geometry = geojson.MultiPolygon(polygons)

overpass/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
class Utils(object):
88

9-
@classmethod
10-
def to_overpass_id(cls, osmid, area=False):
9+
@staticmethod
10+
def to_overpass_id(osmid, area=False):
1111
area_base = 2400000000
1212
relation_base = 3600000000
1313
if area:

0 commit comments

Comments
 (0)