예제 #1
0
파일: views.py 프로젝트: alesf/arsoapi
def report(request):
	geocoded_radar.refresh()
	geocoded_toca.refresh()
	geocoded_aladin.refresh()
	
	try:
		lat = float(request.GET.get('lat'))
		lon = float(request.GET.get('lon'))
	except:
		return {
			'status': 'fail',
			'error': 'Invalid parameters.'
		}
	
	if not (45.21 <= lat <= 47.05 and 12.92 <= lon <= 16.71):
		return {
			'status': 'fail',
			'error': 'Coordinates out of bounds.'
			}
	else:
		posR, rain_mmph = geocoded_radar.get_rain_at_coords(lat, lon)
		posT, toca_level = geocoded_toca.get_toca_at_coords(lat, lon)
		posA, forecast = geocoded_aladin.get_forecast_at_coords(lat, lon)
		
		utc_diff = tz2utc_diff()
		
		resp = {
			'status': 'ok',
			'lat': request.GET.get('lat'),
			'lon': request.GET.get('lon'),
			'copyright': u'ARSO, Agencija RS za okolje',
			'radar': {
				'updated': _datetime2timestamp(geocoded_radar.last_modified + utc_diff),
				'updated_text': (geocoded_radar.last_modified + utc_diff).strftime('%Y-%m-%d %H:%M'),
				'x': posR[0],
				'y': posR[1],
				'rain_level': mmph_to_level(rain_mmph),
				'rain_mmph': rain_mmph,
			},
			'hailprob': {
				'updated': _datetime2timestamp(geocoded_toca.last_modified + utc_diff),
				'updated_text': (geocoded_toca.last_modified + utc_diff).strftime('%Y-%m-%d %H:%M'),
				'x': posT[0],
				'y': posT[1],
				'hail_level': toca_level,
			},
			'forecast': {
				'updated': _datetime2timestamp(geocoded_aladin.forecast_time.get(6, None)),
				'x': posA[0],
				'y': posA[1],
				'data': forecast,
			}
		}
		return resp
예제 #2
0
파일: tests.py 프로젝트: AndrejScak/arsoapi
	def test_mmph_to_level(self):
		self.assertEqual(mmph_to_level(0.0), 0)
		self.assertEqual(mmph_to_level(0.5), 25)
		self.assertEqual(mmph_to_level(2.5), 50)
		self.assertEqual(mmph_to_level(15.), 75)
		self.assertEqual(mmph_to_level(60.), 100)
		self.assertEqual(mmph_to_level(1000.), 100)
예제 #3
0
파일: tests.py 프로젝트: valil-test/arsoapi
 def test_mmph_to_level(self):
     self.assertEqual(mmph_to_level(0.0), 0)
     self.assertEqual(mmph_to_level(0.5), 25)
     self.assertEqual(mmph_to_level(2.5), 50)
     self.assertEqual(mmph_to_level(15.), 75)
     self.assertEqual(mmph_to_level(60.), 100)
     self.assertEqual(mmph_to_level(1000.), 100)
예제 #4
0
파일: views.py 프로젝트: valil-test/arsoapi
def report(request):
    geocoded_radar.refresh()
    geocoded_toca.refresh()
    geocoded_aladin.refresh()

    try:
        lat = float(request.GET.get('lat'))
        lon = float(request.GET.get('lon'))
    except:
        return {'status': 'fail', 'error': 'Invalid parameters.'}

    if not (45.21 <= lat <= 47.05 and 12.92 <= lon <= 16.71):
        return {'status': 'fail', 'error': 'Coordinates out of bounds.'}
    else:
        posR, rain_mmph = geocoded_radar.get_rain_at_coords(lat, lon)
        posT, toca_level = geocoded_toca.get_toca_at_coords(lat, lon)
        posA, forecast = geocoded_aladin.get_forecast_at_coords(lat, lon)

        utc_diff = tz2utc_diff()

        resp = {
            'status': 'ok',
            'lat': request.GET.get('lat'),
            'lon': request.GET.get('lon'),
            'copyright': u'ARSO, Agencija RS za okolje',
            'radar': {
                'updated':
                _datetime2timestamp(geocoded_radar.last_modified + utc_diff),
                'updated_text': (geocoded_radar.last_modified +
                                 utc_diff).strftime('%Y-%m-%d %H:%M'),
                'x':
                posR[0],
                'y':
                posR[1],
                'rain_level':
                mmph_to_level(rain_mmph),
                'rain_mmph':
                rain_mmph,
            },
            'hailprob': {
                'updated':
                _datetime2timestamp(geocoded_toca.last_modified + utc_diff),
                'updated_text': (geocoded_toca.last_modified +
                                 utc_diff).strftime('%Y-%m-%d %H:%M'),
                'x':
                posT[0],
                'y':
                posT[1],
                'hail_level':
                toca_level,
            },
            'forecast': {
                'updated':
                _datetime2timestamp(geocoded_aladin.forecast_time.get(6,
                                                                      None)),
                'x':
                posA[0],
                'y':
                posA[1],
                'data':
                forecast,
            }
        }
        return resp