def sites(): """ API route that takes a latitude and longitude and responds with a fully computed Site object. """ if request.method == 'GET': lat = float(request.args.get('lat')) lng = float(request.args.get('lng')) position = Position(lat, lng) # find roads within 1500 ft road_distance = request.args.get('road_distance', 457.2) # find railways within 4500 ft rail_distance = request.args.get('rail_distance', 1371.6) # find airports within 15 miles airport_distance = request.args.get('airport-distance', 14140.2) road_client = HighwaysClient() roads = road_client.get_unique_segments(position, road_distance) county = None growth_rate = .015 if roads: county = road_client.county growth_rate = road_client.county.get_growth_rate() rail_client = RailroadsClient() rails = rail_client.get_unique_segments(position, rail_distance) airports_client = AirportsClient() airports = airports_client.get_airports(position, airport_distance) if airports: for a in airports: a.set_distance(position) site = Site(position=position, roads=roads, rails=rails, county=county, growth_rate=growth_rate, airports=airports) elif request.method == 'POST': site = SiteSchema().load(request.get_json()).data site.process() response = SiteSchema().dump(site).data return json.jsonify(response)