Skip to content

Commit

Permalink
Wrapped tile.get_tile() response in tile.Tile class
Browse files Browse the repository at this point in the history
  • Loading branch information
migurski committed Apr 28, 2018
1 parent 1768c37 commit 9d08bf4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 20 deletions.
20 changes: 10 additions & 10 deletions sharedstreets/tests/test_tile.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,31 +231,31 @@ def test_get_tile(self, uri_expand, iter_objects):
everything.lonlats = [-122.27120, 37.80437, -122.27182, 37.80598]
iter_objects.return_value = [everything, everything]

geometries, intersections, references, metadata = tile.get_tile(16, 10509, 25324)
T = tile.get_tile(16, 10509, 25324)

self.assertEqual(len(uri_expand.mock_calls), 4)
for mock_call in uri_expand.mock_calls:
self.assertEqual(mock_call[1][0], tile.DATA_URL_TEMPLATE)

self.assertEqual(len(geometries), 1)
self.assertEqual(len(intersections), 1)
self.assertEqual(len(references), 1)
self.assertEqual(len(metadata), 1)
self.assertEqual(len(T.geometries), 1)
self.assertEqual(len(T.intersections), 1)
self.assertEqual(len(T.references), 1)
self.assertEqual(len(T.metadata), 1)

@mock.patch('sharedstreets.tile.iter_objects')
@mock.patch('uritemplate.expand')
def test_get_tile_alt_url(self, uri_expand, iter_objects):

iter_objects.return_value = []

geometries, intersections, references, metadata = tile.get_tile(16, 10509, 25324,
T = tile.get_tile(16, 10509, 25324,
data_url_template='https://example.com/{z}-{x}-{y}.{layer}.pbf')

self.assertEqual(len(uri_expand.mock_calls), 4)
for mock_call in uri_expand.mock_calls:
self.assertEqual(mock_call[1][0], 'https://example.com/{z}-{x}-{y}.{layer}.pbf')

self.assertEqual(len(geometries), 0)
self.assertEqual(len(intersections), 0)
self.assertEqual(len(references), 0)
self.assertEqual(len(metadata), 0)
self.assertEqual(len(T.geometries), 0)
self.assertEqual(len(T.intersections), 0)
self.assertEqual(len(T.references), 0)
self.assertEqual(len(T.metadata), 0)
26 changes: 17 additions & 9 deletions sharedstreets/tile.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@
# Used for Mercator projection and tile space
OSM = ModestMaps.OpenStreetMap.Provider()

class Tile:
''' Container for lists of SharedStreets geometries, intersections, references, and metadata.
'''
def __init__(self, geometries, intersections, references, metadata):
self.geometries = geometries
self.intersections = intersections
self.references = references
self.metadata = metadata

def truncate_id(id):
''' Truncate SharedStreets hash to save space.
'''
Expand Down Expand Up @@ -67,7 +76,7 @@ def is_inside(southwest, northeast, geometry):
return True

def get_tile(zoom, x, y, data_url_template=None):
''' Get geometries, intersections, and references inside a tile.
''' Get a single Tile instance.
'''
if data_url_template is None:
data_url_template = DATA_URL_TEMPLATE
Expand Down Expand Up @@ -112,7 +121,7 @@ def get_tile(zoom, x, y, data_url_template=None):

logger.debug('{} metadata'.format(len(metadata)))

return geometries, intersections, references, metadata
return Tile(geometries, intersections, references, metadata)

def geometry_feature(geometry, metadata):
'''
Expand Down Expand Up @@ -191,20 +200,20 @@ def reference_feature(reference):
]
}

def make_geojson(geometries, intersections, references, metadata):
def make_geojson(tile):
'''
'''
geojson = dict(type='FeatureCollection', features=[], references=[])

for geometry in geometries.values():
geojson['features'].append(geometry_feature(geometry, metadata[geometry.id]))
for geometry in tile.geometries.values():
geojson['features'].append(geometry_feature(geometry, tile.metadata[geometry.id]))
#break

for intersection in intersections.values():
for intersection in tile.intersections.values():
geojson['features'].append(intersection_feature(intersection))
#break

for reference in references.values():
for reference in tile.references.values():
geojson['references'].append(reference_feature(reference))
#break

Expand All @@ -217,6 +226,5 @@ def make_geojson(geometries, intersections, references, metadata):

def main():
args = parser.parse_args()
geometries, intersections, references, metadata = get_tile(args.zoom, args.x, args.y)
geojson = make_geojson(geometries, intersections, references, metadata)
geojson = make_geojson(get_tile(args.zoom, args.x, args.y))
print(json.dumps(geojson, indent=2))
2 changes: 1 addition & 1 deletion sharedstreets/webapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def get_index():

@app.route('/tile/<int:zoom>/<int:x>/<int:y>.geojson')
def get_tile(zoom, x, y):
return flask.jsonify(tile.make_geojson(*tile.get_tile(zoom, x, y)))
return flask.jsonify(tile.make_geojson(tile.get_tile(zoom, x, y)))

parser = argparse.ArgumentParser(description='Run a local SharedStreets tile webserver')

Expand Down

0 comments on commit 9d08bf4

Please sign in to comment.