Example #1
0
    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'])
Example #2
0
    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'])