コード例 #1
0
    def test_map_custom_thumbs(self):
        bboxes = [
            [-9072629.904175375, -9043966.018568434, 1491839.8773032012, 1507127.2829602365, "EPSG:3857"],
            [-9701812.234583871, -8784567.895161757, 1183222.3819935687, 1672419.363018697, "EPSG:3857"],
            [-84665859.2306568, 32741416.215373922, -33346586.656875588, 29270626.9143408, "EPSG:3857"],
            [-72434308.4190976, -43082489.55758992, -7279981.1852046205, 8374322.207599477, "EPSG:3857"],
            [-77007211.63038959, -18303573.90737422, 781254.9545387309, 32089861.740146928, "EPSG:3857"],
        ]

        expected_results_dir = f"{EXPECTED_RESULTS_DIR}thumbnails/"
        expected_thumbs_paths = [
            f"{expected_results_dir}map_thumb1.png",
            f"{expected_results_dir}map_thumb2.png",
            f"{expected_results_dir}map_thumb3.png",
            f"{expected_results_dir}map_thumb4.png",
            f"{expected_results_dir}map_thumb5.png",
        ]

        for bbox, expected_thumb_path in zip(bboxes, expected_thumbs_paths):
            create_thumbnail(self.map_composition, bbox=bbox, overwrite=True)

            expected_thumb = Image.open(expected_thumb_path)
            self.map_composition.refresh_from_db()

            self._fetch_thumb_and_compare(self.map_composition.thumbnail_url, expected_thumb)
コード例 #2
0
 def _create_layer_thumbnail(self, geonode_layer):
     """Create a thumbnail with a WMS request."""
     create_thumbnail(
         instance=geonode_layer,
         wms_version=self.parsed_service.version,
         bbox=geonode_layer.bbox,
         forced_crs=geonode_layer.srid,
         overwrite=True,
     )
コード例 #3
0
 def _create_dataset_thumbnail(self, geonode_dataset):
     """Create a thumbnail with a WMS request."""
     create_thumbnail(
         instance=geonode_dataset,
         wms_version=self.parsed_service.version,
         bbox=geonode_dataset.bbox,
         forced_crs=geonode_dataset.srid if 'EPSG:' in str(
             geonode_dataset.srid) else f'EPSG:{geonode_dataset.srid}',
         overwrite=True,
     )
コード例 #4
0
ファイル: test_unit.py プロジェクト: pasing/geonode
    def test_create_map_thumbnail_using_ll_bbox_polygon(self):
        map = Map.objects.get(title_en="theaters_nyc_map")

        with patch("geonode.thumbs.thumbnails._datasets_locations") as _mck:
            _mck.return_value = [MagicMock(), MagicMock()]
            if not map.ll_bbox_polygon:
                thumbnails.create_thumbnail(map, overwrite=True)
                _mck.assert_called_with(map, compute_bbox=True, target_crs="EPSG:3857")

            ll_bbox_polygon = Polygon.from_bbox((0, 22, 0, 22))
            map.ll_bbox_polygon = ll_bbox_polygon
            map.save()
            thumbnails.create_thumbnail(map, overwrite=True)
            _mck.assert_called_with(map, compute_bbox=False, target_crs="EPSG:3857")
コード例 #5
0
 def finalize_resource_update(
         self, geonode_resource: ResourceBase,
         harvested_info: base.HarvestedResourceInfo,
         harvestable_resource: HarvestableResource) -> ResourceBase:
     """Create a thumbnail with a WMS request."""
     if not geonode_resource.srid:
         target_crs = settings.DEFAULT_MAP_CRS
     elif 'EPSG:' in str(geonode_resource.srid).upper() or 'CRS:' in str(
             geonode_resource.srid).upper():
         target_crs = geonode_resource.srid
     else:
         target_crs = f'EPSG:{geonode_resource.srid}'
     create_thumbnail(
         instance=geonode_resource,
         # wms_version=harvested_info.resource_descriptor,
         bbox=geonode_resource.bbox,
         forced_crs=target_crs,
         overwrite=True,
     )
コード例 #6
0
    def set_thumbnail_from_bbox(self, request, resource_id):
        try:
            resource = ResourceBase.objects.get(
                id=ast.literal_eval(resource_id))

            if not isinstance(resource.get_real_instance(), (Dataset, Map)):
                raise NotImplementedError(
                    "Not implemented: Endpoint available only for Dataset and Maps"
                )

            request_body = request.data if request.data else json.loads(
                request.body)
            bbox = request_body["bbox"] + [request_body["srid"]]
            zoom = request_body.get("zoom", None)

            thumbnail_url = create_thumbnail(resource.get_real_instance(),
                                             bbox=bbox,
                                             background_zoom=zoom,
                                             overwrite=True)
            return Response({"thumbnail_url": thumbnail_url}, status=200)
        except ResourceBase.DoesNotExist:
            logger.error(
                f"Resource selected with id {resource_id} does not exists")
            return Response(data={
                "message":
                f"Resource selected with id {resource_id} does not exists"
            },
                            status=404,
                            exception=True)
        except NotImplementedError as e:
            logger.error(e)
            return Response(data={"message": e.args[0]},
                            status=405,
                            exception=True)
        except ThumbnailError as e:
            logger.error(e)
            return Response(data={"message": e.args[0]},
                            status=500,
                            exception=True)
        except Exception as e:
            logger.error(e)
            return Response(data={"message": e.args[0]},
                            status=500,
                            exception=True)
コード例 #7
0
ファイル: views.py プロジェクト: rizkyfirmansyah/geonode
    def set_thumbnail_from_bbox(self, request, resource_id):
        import traceback
        from django.utils.datastructures import MultiValueDictKeyError
        try:
            resource = ResourceBase.objects.get(id=ast.literal_eval(resource_id))

            if not isinstance(resource.get_real_instance(), (Layer, Map)):
                raise NotImplementedError("Not implemented: Endpoint available only for Dataset and Maps")

            request_body = request.data if request.data else json.loads(request.body)
            try:
                bbox = request_body["bbox"] + [request_body["srid"]]
                zoom = request_body.get("zoom", None)
            except MultiValueDictKeyError:
                for _k, _v in request_body.items():
                    request_body = json.loads(_k)
                    break
                bbox = request_body["bbox"] + [request_body["srid"]]
                zoom = request_body.get("zoom", None)

            thumbnail_url = create_thumbnail(resource.get_real_instance(), bbox=bbox, background_zoom=zoom, overwrite=True)
            return Response({"message": "Thumbnail correctly created.", "success": True, "thumbnail_url": thumbnail_url}, status=200)
        except ResourceBase.DoesNotExist:
            traceback.print_exc()
            logger.error(f"Resource selected with id {resource_id} does not exists")
            return Response(
                data={"message": f"Resource selected with id {resource_id} does not exists", "success": False}, status=404, exception=True)
        except NotImplementedError as e:
            traceback.print_exc()
            logger.error(e)
            return Response(data={"message": e.args[0], "success": False}, status=405, exception=True)
        except ThumbnailError as e:
            traceback.print_exc()
            logger.error(e)
            return Response(data={"message": e.args[0], "success": False}, status=500, exception=True)
        except Exception as e:
            traceback.print_exc()
            logger.error(e)
            return Response(data={"message": e.args[0], "success": False}, status=500, exception=True)