Skip to content
Snippets Groups Projects
Commit b2e0f040 authored by leufen1's avatar leufen1
Browse files

population density service uses now new View class

parent 2692b236
Branches
Tags
No related merge requests found
......@@ -28,6 +28,7 @@ Center (SEDAC), Columbia University. """),
# serializer classes
class AggSerializer(BaseSerializer):
""" see http://www.django-rest-framework.org/api-guide/serializers/#baseserializer """
......@@ -45,23 +46,32 @@ class AggSerializer(BaseSerializer):
except TypeError:
vlength = 1
if vlength > 1:
properties = OrderedDict([
('agg_function', agg_function),
('many', True),
(agg_function, OrderedDict([
(d, v) for d, v in zip(obj['direction'], val)
])),
('units', 'km-2'),
('radius', obj['radius']),
])
if obj['direction'] is None:
properties.pop('direction')
properties = OrderedDict([
('agg_function', agg_function),
('many', True),
(agg_function, OrderedDict([
(d, v) for d, v in zip(range(vlength), val)
])),
('units', ''),
('radius', obj['radius']),
])
else:
properties = OrderedDict([
('agg_function', agg_function),
('many', True),
(agg_function, OrderedDict([
(d, v) for d, v in zip(obj['direction'], val)
])),
('units', ''),
('radius', obj['radius']),
])
else:
properties = OrderedDict([
('agg_function', agg_function),
('many', False),
(agg_function, val),
('units', 'km-2'),
('units', ''),
('radius', obj['radius']),
('direction', obj['direction']),
])
......
......@@ -7,7 +7,7 @@ from rest_framework.response import Response
from toar_location_services.settings import DEBUG
from .population_file_extraction import read_proxydata
from .serializers import AggSerializer
from utils.views_commons import get_query_params, get_agg_function
from utils.views_commons import CommonViews
from utils.geoutils import Directions
from utils.extraction_tools import extract_value, extract_value_stats
......@@ -20,13 +20,17 @@ lonvec, latvec, data, datainfo = read_proxydata(FILENAME)
if DEBUG:
print("File %s successfully loaded" % (FILENAME), datainfo)
class PopulationView(APIView):
class PopulationView(APIView, CommonViews):
def __init__(self):
CommonViews.__init__(self)
def _extract(self, lat, lon, radius, agg, direction, by_direction):
"""perform actual extraction of desired quantity"""
print('**by_direction:', by_direction, '** radius, agg = ', radius, agg)
if agg is not None and radius is not None and radius > 0.:
agg_function = get_agg_function(agg)
agg_function = self.get_agg_function(agg)
min_angle = None
max_angle = None
if by_direction:
......@@ -56,7 +60,6 @@ class PopulationView(APIView):
# return data, also return agg and direction as they may have been overwritten
return result, agg, direction
def get(self, request, format=None):
"""process GET requests for population-density app
......@@ -79,7 +82,7 @@ class PopulationView(APIView):
by_direction: if True, data are returned as vector with one value aggregated
over each of 16 wind directions.
"""
lat, lon, radius, agg, direction, by_direction = get_query_params(request.query_params,
lat, lon, radius, agg, direction, by_direction = self.get_query_params(request.query_params,
['lat', 'lon', 'radius', 'agg', 'direction', 'by_direction'])
result, agg, direction = self._extract(lat, lon, radius, agg, direction, by_direction)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment