Beispiel #1
0
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)