Example #1
0
def find_emergency_path(request):
    # if not can_fly():
    #     return HttpResponse(status=503)
    lat = request.GET.get('lat', '')
    lon = request.GET.get('lng', '')
    path = os.path.dirname(__file__) + "/static/kml/"
    generate_weather(path)
    last_distance = sys.maxint
    all_hangars = models.Hangar.objects.all()
    selected_hangar = None
    all_droppoints = models.DropPoint.objects.all()
    selected_droppoint = None
    point_location = Point(float(lon), float(lat))
    for droppoint in all_droppoints:
        distance = D(m=point_location.distance(
            Point(droppoint.longitude, droppoint.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_droppoint = droppoint
    last_distance = sys.maxint
    point_location = Point(selected_droppoint.longitude,
                           selected_droppoint.latitude)
    for hangar in all_hangars:
        distance = D(m=point_location.distance(
            Point(hangar.longitude, hangar.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_hangar = hangar
    selected_hangar.drone.destination_lat = selected_droppoint.latitude
    selected_hangar.drone.destination_lon = selected_droppoint.longitude
    if not selected_hangar.is_available:
        return HttpResponse(status=503)
    incidence = models.Incidence(lat=lat,
                                 long=lon,
                                 dropPoint=selected_droppoint,
                                 drone=hangar.drone,
                                 hangar=selected_hangar,
                                 is_active=True)
    incidence.save()
    # generate_mission_file(selected_hangar)
    kml_generator.find_drone_path(selected_hangar, selected_droppoint, path,
                                  incidence)
    return HttpResponse(status=201)
Example #2
0
def find_emergency_path(request):
    # if not can_fly():
    #     return HttpResponse(status=503)
    lat = request.GET.get('lat', '')
    lon = request.GET.get('lng', '')
    path = os.path.dirname(__file__) + "/static/kml/"
    generate_weather(path)
    last_distance = sys.maxint
    all_hangars = models.Hangar.objects.all()
    selected_hangar = None
    all_droppoints = models.DropPoint.objects.all()
    selected_droppoint = None
    point_location = Point(float(lon), float(lat))
    for droppoint in all_droppoints:
        distance = D(m=point_location.distance(
            Point(droppoint.longitude, droppoint.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_droppoint = droppoint
    last_distance = sys.maxint
    point_location = Point(
        selected_droppoint.longitude, selected_droppoint.latitude)
    for hangar in all_hangars:
        distance = D(m=point_location.distance(
            Point(hangar.longitude, hangar.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_hangar = hangar
    selected_hangar.drone.destination_lat = selected_droppoint.latitude
    selected_hangar.drone.destination_lon = selected_droppoint.longitude
    if not selected_hangar.is_available:
        return HttpResponse(status=503)
    incidence = models.Incidence(lat=lat, long=lon,
                                 dropPoint=selected_droppoint,
                                 drone=hangar.drone,
                                 hangar=selected_hangar, is_active=True)
    incidence.save()
    # generate_mission_file(selected_hangar)
    kml_generator.find_drone_path(
        selected_hangar, selected_droppoint, path, incidence)
    return HttpResponse(status=201)
Example #3
0
def find_emergency_path(request):

    MAX_WIND_SPEED = 20.0

    url = 'http://api.openweathermap.org/data/2.5/weather?q=Lleida&units=metric'
    response = requests.get(url=url)
    data = json.loads(response.text)

    #try:
    #    if data['wind']['speed'] >= MAX_WIND_SPEED or bool(data['rain']):
    #        print data['rain']
    #        print data['wind']['speed']
    #        return HttpResponse(status=503)
    #except KeyError:
    #    pass

    lat = request.GET.get('lat', '')
    lon = request.GET.get('lng', '')
    path = os.path.dirname(__file__) + "/static/kml/"

    last_distance = sys.maxint
    all_hangars = models.Hangar.objects.all()
    selected_hangar = None
    all_droppoints = models.DropPoint.objects.all()
    selected_droppoint = None
    point_location = Point(float(lon), float(lat))

    for droppoint in all_droppoints:
        distance = D(m=point_location.distance(
            Point(droppoint.longitude, droppoint.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_droppoint = droppoint

    last_distance = sys.maxint
    point_location = Point(selected_droppoint.longitude,
                           selected_droppoint.latitude)
    for hangar in all_hangars:
        distance = D(m=point_location.distance(
            Point(hangar.longitude, hangar.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_hangar = hangar

    # print selected_hangar.name, selected_hangar.drone.name, selected_droppoint.name

    selected_hangar.drone.destination_lat = selected_droppoint.latitude
    selected_hangar.drone.destination_lon = selected_droppoint.longitude

    if not selected_hangar.is_available:
        return HttpResponse(status=503)

    kml_generator.weather_info(
        os.path.dirname(__file__) + "/static/kml/meteo_info.kml",
        data['main']['temp'], data['main']['temp_max'],
        data['main']['temp_min'], data['wind']['speed'], data['clouds']['all'],
        data['main']['pressure'], data['main']['humidity'],
        data['weather'][0]['description'])

    generate_mission_file(selected_hangar)
    kml_generator.create_emergency_marker(lat, lon, path + "incidence.kml")
    Kml(name="incidence.kml", url="static/kml/incidence.kml",
        visibility=True).save()
    sync_kmls_file()
    sync_kmls_to_galaxy(emergency=True)
    kml_generator.find_drone_path(selected_hangar, selected_droppoint, path)

    Kml.objects.get(name="incidence.kml").delete()
    os.remove(path + "incidence.kml")

    for step in range(0, 34, 1):
        Kml.objects.get(name="drone_" + str(step) + ".kml").delete()
        os.remove(path + "drone_" + str(step) + ".kml")

    sync_kmls_file()
    sync_kmls_to_galaxy(emergency=True)

    return HttpResponse(status=201)
Example #4
0
def find_emergency_path(request):

    MAX_WIND_SPEED = 10.0

    url = 'http://api.openweathermap.org/data/2.5/weather?q=Lleida&units=metric'
    response = requests.get(url=url)
    data = json.loads(response.text)

    try:
        if data['wind']['speed'] >= MAX_WIND_SPEED or bool(data['rain']):
            print data['rain']
            print data['wind']['speed']
            return HttpResponse(status=503)
    except KeyError:
        pass

    lat = request.GET.get('lat', '')
    lon = request.GET.get('lng', '')
    path = os.path.dirname(__file__) + "/static/kml/"

    last_distance = sys.maxint
    all_hangars = models.Hangar.objects.all()
    selected_hangar = None
    all_droppoints = models.DropPoint.objects.all()
    selected_droppoint = None
    point_location = Point(float(lon), float(lat))

    for droppoint in all_droppoints:
        distance = D(m=point_location.distance(Point(droppoint.longitude, droppoint.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_droppoint = droppoint

    last_distance = sys.maxint
    point_location = Point(selected_droppoint.longitude, selected_droppoint.latitude)
    for hangar in all_hangars:
        distance = D(m=point_location.distance(Point(hangar.longitude, hangar.latitude)))
        if distance.m < last_distance:
            last_distance = distance.m
            selected_hangar = hangar

    # print selected_hangar.name, selected_hangar.drone.name, selected_droppoint.name

    selected_hangar.drone.destination_lat = selected_droppoint.latitude
    selected_hangar.drone.destination_lon = selected_droppoint.longitude

    if not selected_hangar.is_available:
        return HttpResponse(status=503)

    kml_generator.weather_info(os.path.dirname(__file__) + "/static/kml/meteo_info.kml",
                               data['main']['temp'], data['main']['temp_max'], data['main']['temp_min'],
                               data['wind']['speed'], data['clouds']['all'], data['main']['pressure'],
                               data['main']['humidity'], data['weather'][0]['description'])

    # generate_mission_file(selected_hangar)
    kml_generator.create_emergency_marker(lat, lon, path + "incidence.kml")
    Kml(name="incidence.kml", url="static/kml/incidence.kml", visibility=True).save()
    #sync_kmls_file()
    #sync_kmls_to_galaxy(emergency=True)
    kml_generator.find_drone_path(selected_hangar, selected_droppoint, path)

    Kml.objects.get(name="incidence.kml").delete()
    os.remove(path + "incidence.kml")

    for step in range(0, 34, 1):
        Kml.objects.get(name="drone_" + str(step) + ".kml").delete()
        os.remove(path + "drone_" + str(step) + ".kml")

    #sync_kmls_file()
    #sync_kmls_to_galaxy(emergency=True)

    return HttpResponse(status=201)