Skip to content

Commit f0c4560

Browse files
author
Lukas Müller
committed
Small code improvements
1 parent 171fcf3 commit f0c4560

File tree

1 file changed

+20
-32
lines changed

1 file changed

+20
-32
lines changed

overpass/api.py

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ def _as_geojson(self, elements):
190190

191191
features = []
192192
geometry = None
193-
no_match_count = 0
194193
for elem in elements:
195194
elem_type = elem.get("type")
195+
elem_tags = elem.get("tags")
196196
if elem_type and elem_type == "node":
197197
geometry = geojson.Point((elem.get("lon"), elem.get("lat")))
198198
elif elem_type and elem_type == "way":
@@ -218,17 +218,21 @@ def _as_geojson(self, elements):
218218
# also sometimes the next member may not actually connect to the previous member, so if necessary,
219219
# find a matching member
220220
if points:
221-
dist_start = (points[-1][0] - mem["geometry"][0]["lon"])**2 + (points[-1][1] - mem["geometry"][0]["lat"])**2
222-
dist_end = (points[-1][0] - mem["geometry"][-1]["lon"])**2 + (points[-1][1] - mem["geometry"][-1]["lat"])**2
221+
dist_start = (points[-1][0] - mem["geometry"][0]["lon"]) ** 2 + (
222+
points[-1][1] - mem["geometry"][0]["lat"]) ** 2
223+
dist_end = (points[-1][0] - mem["geometry"][-1]["lon"]) ** 2 + (
224+
points[-1][1] - mem["geometry"][-1]["lat"]) ** 2
223225
if dist_start == 0:
224226
pass # don't need to do anything
225227
elif dist_end == 0:
226228
# flip the next member - it is entered in the wrong direction
227229
mem["geometry"] = list(reversed(mem["geometry"]))
228230
else:
229231
# try flipping the previous member
230-
dist_flipped_start = (points[0][0] - mem["geometry"][0]["lon"])**2 + (points[0][1] - mem["geometry"][0]["lat"])**2
231-
dist_flipped_end = (points[0][0] - mem["geometry"][-1]["lon"])**2 + (points[0][1] - mem["geometry"][-1]["lat"])**2
232+
dist_flipped_start = (points[0][0] - mem["geometry"][0]["lon"]) ** 2 + (
233+
points[0][1] - mem["geometry"][0]["lat"]) ** 2
234+
dist_flipped_end = (points[0][0] - mem["geometry"][-1]["lon"]) ** 2 + (
235+
points[0][1] - mem["geometry"][-1]["lat"]) ** 2
232236
if dist_flipped_start == 0:
233237
# just flip the start
234238
points = list(reversed(points))
@@ -242,24 +246,22 @@ def _as_geojson(self, elements):
242246
for i in range(pos + 1, len(elem['members'])):
243247
if not point_found:
244248
new_pt = elem['members'][i]
245-
dist_start = (new_pt['geometry'][0]['lon'] - points[-1][0])**2 + (new_pt['geometry'][0]['lat'] - points[-1][1])**2
246-
dist_end = (new_pt['geometry'][-1]['lon'] - points[-1][0])**2 + (new_pt['geometry'][-1]['lat'] - points[-1][1])**2
249+
dist_start = (new_pt['geometry'][0]['lon'] - points[-1][0]) ** 2 + (
250+
new_pt['geometry'][0]['lat'] - points[-1][1]) ** 2
251+
dist_end = (new_pt['geometry'][-1]['lon'] - points[-1][0]) ** 2 + (
252+
new_pt['geometry'][-1]['lat'] - points[-1][1]) ** 2
247253

248254
if dist_start == 0 or dist_end == 0:
249255
point_found = True
250256
# swap the order of the members -- we have found the one we want
251-
elem['members'][pos], elem['members'][i] = elem['members'][i], elem['members'][pos]
257+
elem['members'][pos], elem['members'][i] = elem['members'][i], \
258+
elem['members'][pos]
252259
# save this new point as mem
253260
mem = elem['members'][pos]
254261

255262
if dist_end == 0:
256263
mem['geometry'] = list(reversed(mem['geometry']))
257264

258-
if not point_found:
259-
no_match_count += 1
260-
# don't work with this park
261-
continue
262-
263265
# address outer values
264266
if mem['role'] == 'outer':
265267
if prev == "inner":
@@ -293,7 +295,7 @@ def _as_geojson(self, elements):
293295
if points[-1] == points[0]:
294296
poly.append(points)
295297
points = []
296-
# update conditoin
298+
# update condition
297299
prev = "inner"
298300

299301
not_first = True
@@ -302,30 +304,16 @@ def _as_geojson(self, elements):
302304
polygons.append(poly)
303305

304306
if polygons != [[]]:
305-
# create MultiPolygon feature - separate multipolygon for each outer
306-
for outer_poly in polygons:
307-
poly_props = elem.get("tags")
308-
poly_props.update({'id': elem['id']})
309-
multipoly = {
310-
"type": "Feature",
311-
"properties": poly_props,
312-
"geometry": {
313-
"type": "MultiPolygon",
314-
"coordinates": [outer_poly]
315-
}
316-
}
317-
# add to features
318-
features.append(multipoly)
307+
geometry = geojson.MultiPolygon(polygons)
319308
else:
320309
continue
321310

322-
if elem_type and (elem_type == "node" or elem_type == "way"):
311+
if geometry:
323312
feature = geojson.Feature(
324313
id=elem["id"],
325314
geometry=geometry,
326-
properties=elem.get("tags")
315+
properties=elem_tags
327316
)
328317
features.append(feature)
329-
330-
# print('number of unmatched parks: {}'.format(no_match_count))
318+
331319
return geojson.FeatureCollection(features)

0 commit comments

Comments
 (0)