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')
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
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