def get(self, request, *args): location_site = LocationSite.objects.all() # get by bbox zoom = request.GET.get('zoom', None) bbox = request.GET.get('bbox', None) icon_pixel_x = request.GET.get('icon_pixel_x', None) icon_pixel_y = request.GET.get('icon_pixel_y', None) if not zoom or not icon_pixel_x or not icon_pixel_y: return HttpResponseBadRequest( 'zoom, icon_pixel_x, and icon_pixel_y need to be ' 'in parameters. ' 'zoom : zoom level of map. ' 'icon_pixel_x: size x of icon in pixel. ' 'icon_pixel_y: size y of icon in pixel. ') if bbox: geom_bbox = Polygon.from_bbox( tuple([float(edge) for edge in bbox.split(',')])) sites_ids = BiologicalCollectionRecord.objects.filter( validated=True).filter( Q(site__geometry_point__intersects=geom_bbox) | Q(site__geometry_line__intersects=geom_bbox) | Q(site__geometry_polygon__intersects=geom_bbox) | Q(site__geometry_multipolygon__intersects=geom_bbox) ).values('site').distinct() location_site = location_site.filter(id__in=sites_ids) cluster = self.clustering_process(location_site, int(float(zoom)), int(icon_pixel_x), int(icon_pixel_y)) return Response(geo_serializer(cluster)['features'])
def get(self, request, format=None): zoom = request.GET.get('zoom', None) icon_pixel_x = request.GET.get('icon_pixel_x', None) icon_pixel_y = request.GET.get('icon_pixel_y', None) if not zoom or not icon_pixel_x or not icon_pixel_y: return HttpResponseBadRequest( 'zoom, icon_pixel_x, and icon_pixel_y need to be ' 'in parameters. ' 'zoom : zoom level of map. ' 'icon_pixel_x: size x of icon in pixel. ' 'icon_pixel_y: size y of icon in pixel. ') results = self.apply_filter(request) cluster = self.clustering_process(results, int(float(zoom)), int(icon_pixel_x), int(icon_pixel_y)) return Response(geo_serializer(cluster)['features'])