Пример #1
0
 def test_reverse(self):
     for geometry in self.geometry_list:
         reversed_geometry = geometry.reverse()
         self.assertNotEqual(geometry, reversed_geometry,
                             'Reversed geometry should be different')
         self.assertEqual(
             geometry, reversed_geometry.reverse(),
             'Twice reversed geometry should equal the original')
Пример #2
0
    def _get_common_url_parameters(request):
        """ Returns parameters common dictionary for WMS, WCS and FIS request.

        :param request: OGC-type request with specified bounding box, cloud coverage for specific product.
        :type request: OgcRequest or GeopediaRequest
        :return:  dictionary with parameters
        :rtype: dict
        """
        params = {'SERVICE': request.service_type.value, 'WARNINGS': False}

        if hasattr(request, 'maxcc'):
            params['MAXCC'] = 100.0 * request.maxcc

        if hasattr(
                request,
                'custom_url_params') and request.custom_url_params is not None:
            params = {
                **params,
                **{
                    k.value: str(v)
                    for k, v in request.custom_url_params.items()
                }
            }

            if CustomUrlParam.EVALSCRIPT.value in params:
                evalscript = params[CustomUrlParam.EVALSCRIPT.value]
                params[CustomUrlParam.EVALSCRIPT.value] = b64encode(
                    evalscript.encode()).decode()

            if CustomUrlParam.GEOMETRY.value in params:
                geometry = params[CustomUrlParam.GEOMETRY.value]
                crs = request.bbox.crs

                if isinstance(geometry, Geometry):
                    if geometry.crs is not crs:
                        raise ValueError(
                            'Geometry object in custom_url_params should have the same CRS as given BBox'
                        )
                else:
                    geometry = Geometry(geometry, crs)

                if geometry.crs is CRS.WGS84:
                    geometry = geometry.reverse()

                params[CustomUrlParam.GEOMETRY.value] = geometry.wkt

        return params
Пример #3
0
    def _get_fis_parameters(request, geometry):
        """ Returns parameters dictionary for FIS request.

        :param request: OGC-type request with specified bounding box, cloud coverage for specific product.
        :type request: OgcRequest or GeopediaRequest
        :param geometry: list of bounding boxes or geometries
        :type geometry: list of BBox or Geometry
        :return:  dictionary with parameters
        :rtype: dict
        """
        start_time, end_time = serialize_time(parse_time_interval(
            request.time),
                                              use_tz=True)

        params = {
            'CRS': CRS.ogc_string(geometry.crs),
            'LAYER': request.layer,
            'RESOLUTION': request.resolution,
            'TIME': f'{start_time}/{end_time}'
        }

        if not isinstance(geometry, (BBox, Geometry)):
            raise ValueError(
                'Each geometry must be an instance of sentinelhub.{} or sentinelhub.{} but {} '
                'found'.format(BBox.__name__, Geometry.__name__, geometry))
        if geometry.crs is CRS.WGS84:
            geometry = geometry.reverse()
        if isinstance(geometry, Geometry):
            params['GEOMETRY'] = geometry.wkt
        else:
            params['BBOX'] = str(geometry)

        if request.bins:
            params['BINS'] = request.bins

        if request.histogram_type:
            params['TYPE'] = request.histogram_type.value

        return params