Skip to content

Commit e0b2fcf

Browse files
author
Lukas Müller
committed
Implemented feedback
1 parent f6ba57a commit e0b2fcf

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

overpass/api.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,28 +206,37 @@ def _as_geojson(self, elements):
206206
# First obtain the outer polygons
207207
for member in elem.get("members", []):
208208
if member["role"] == "outer":
209-
points = [(coords["lon"], coords["lat"]) for coords in member.get('geometry', [])]
209+
points = [(coords["lon"], coords["lat"]) for coords in member.get("geometry", [])]
210210
# Check that the outer polygon is complete
211211
if points and points[-1] == points[0]:
212212
polygons.append([points])
213+
else:
214+
raise UnknownOverpassError("Received corrupt data from Overpass (incomplete polygon).")
213215
# Then get the inner polygons
214216
for member in elem.get("members", []):
215217
if member["role"] == "inner":
216-
points = [(coords["lon"], coords["lat"]) for coords in member.get('geometry', [])]
218+
points = [(coords["lon"], coords["lat"]) for coords in member.get("geometry", [])]
217219
# Check that the inner polygon is complete
218220
if points and points[-1] == points[0]:
219221
# We need to check to which outer polygon the inner polygon belongs
220222
point = Point(points[0])
223+
check = False
221224
for poly in polygons:
222225
polygon = Polygon(poly[0])
223226
if polygon.contains(point):
224227
poly.append(points)
228+
check = True
225229
break
230+
if not check:
231+
raise UnknownOverpassError("Received corrupt data from Overpass (inner polygon cannot "
232+
"be matched to outer polygon).")
233+
else:
234+
raise UnknownOverpassError("Received corrupt data from Overpass (incomplete polygon).")
226235
# Finally create MultiPolygon geometry
227236
if polygons:
228237
geometry = geojson.MultiPolygon(polygons)
229238
else:
230-
continue
239+
raise UnknownOverpassError("Received corrupt data from Overpass (invalid element).")
231240

232241
if geometry:
233242
feature = geojson.Feature(

0 commit comments

Comments
 (0)