Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
result_len=1, img_min=0.0013400, img_max=MimeType.TIFF_d32f.get_expected_max_value(),
img_mean=0.1135815, img_median=0.0620000, tile_num=2),
cls.OgcTestCase('S1 EW ASC Test',
WmsRequest(data_source=DataSource.SENTINEL1_EW_ASC, data_folder=cls.OUTPUT_FOLDER,
image_format=MimeType.TIFF_d32f, layer='BANDS-S1-EW',
width=img_width, height=img_height, bbox=wgs84_bbox_2,
time=('2018-2-7', '2018-2-8'),
time_difference=datetime.timedelta(hours=1)),
result_len=1, img_min=0.0003, img_max=0.2322, img_mean=0.02199, img_median=0.0101,
tile_num=2),
cls.OgcTestCase('S1 EW SH ASC Test',
WmsRequest(data_source=DataSource.SENTINEL1_EW_SH_ASC,
data_folder=cls.OUTPUT_FOLDER,
image_format=MimeType.TIFF_d16, layer='BANDS-S1-EW-SH',
width=img_width, height=img_height, bbox=wgs84_bbox_3,
custom_url_params={CustomUrlParam.SHOWLOGO: True}, time=('2018-2-6', '2018-2-8'),
time_difference=datetime.timedelta(hours=1)),
result_len=1, img_min=465, img_max=59287, img_mean=5321.8241, img_median=937.0,
tile_num=1),
cls.OgcTestCase('S1 IW DES Test',
WmsRequest(data_source=DataSource.SENTINEL1_IW_DES, data_folder=cls.OUTPUT_FOLDER,
image_format=MimeType.TIFF_d32f, layer='BANDS-S1-IW',
width=img_width, height=img_height, bbox=wgs84_bbox,
time=('2017-10-01', '2017-10-05'),
time_difference=datetime.timedelta(hours=1)),
result_len=1, img_min=0.0, img_max=0.0768,
img_mean=0.0210801, img_median=0.0132, tile_num=1),
cls.OgcTestCase('S1 EW DES Test',
WmsRequest(data_source=DataSource.SENTINEL1_EW_DES, data_folder=cls.OUTPUT_FOLDER,
image_format=MimeType.TIFF_d32f, layer='BANDS-S1-EW',
width=img_width, height=img_height, bbox=wgs84_bbox_2,
time=('2018-2-7', '2018-2-8'),
def setUpClass(cls):
super().setUpClass()
bbox1 = BBox([-90.9216499, 14.4190528, -90.8186531, 14.5520163], crs=CRS.WGS84) # From examples
bbox2 = BBox([46.16, -16.15, 46.51, -15.58], crs=CRS.WGS84) # From sentinelhub-py examples
cls.custom_url_params = {
CustomUrlParam.SHOWLOGO: True,
CustomUrlParam.TRANSPARENT: False,
CustomUrlParam.EVALSCRIPT: 'return [B01]',
CustomUrlParam.ATMFILTER: 'DOS1'
}
cls.wms_request = WmsRequest(layer='S2-DOS1', bbox=bbox1, time=('2017-12-01', '2017-12-31'), width=60,
height=None, image_format=MimeType.TIFF, custom_url_params=cls.custom_url_params,
instance_id=cls.CONFIG.instance_id)
cls.wcs_request = WcsRequest(layer='S2-ATMCOR', bbox=bbox2, time='2016-07-18T07:14:04',
resx='100m', resy='100m', image_format=MimeType.PNG, data_folder='.')
cls.test_cases = [
TestCaseContainer('WMS', CloudMaskRequest(cls.wms_request, threshold=0.6, average_over=2, dilation_size=5),
clm_min=0, clm_max=1, clm_mean=0.343827, clm_median=0, clp_min=0.00011, clp_max=0.99999,
clp_mean=0.23959, clp_median=0.01897, mask_shape=(7, 81, 60)),
TestCaseContainer('WCS, partial no data', CloudMaskRequest(cls.wcs_request, all_bands=True), clm_min=0,
time=('2017-1-1', '2017-2-1'),
resolution="50m",
histogram_type=HistogramType.STREAMING,
bins=5),
raw_result=results[0],
result_length=1),
cls.FisTestCase('bbox',
FisRequest(layer='BANDS-S2-L1C',
geometry_list=[bbox],
time='2017-1-1',
resolution="50m",
maxcc=0.2,
custom_url_params={
CustomUrlParam.ATMFILTER: "ATMCOR",
CustomUrlParam.DOWNSAMPLING: "BICUBIC",
CustomUrlParam.UPSAMPLING: "BICUBIC"}
),
raw_result=results[1],
result_length=1),
cls.FisTestCase('list',
FisRequest(data_source=DataSource.LANDSAT8,
layer='BANDS-L8',
geometry_list=[bbox, geometry1],
time=('2017-1-1', '2017-1-10'),
resolution="100m",
bins=32, data_folder=cls.OUTPUT_FOLDER),
raw_result=results[2], result_length=2,
save_data=True),
cls.FisTestCase('Polygon in WGS84',
FisRequest(layer='TRUE-COLOR-S2-L1C',
geometry_list=[geometry2],
time=('2017-10-1', '2017-10-2'),
service_type=None, data_source=None,
size_x=None, size_y=None, maxcc=1.0, image_format=MimeType.TIFF_d32f,
instance_id=None, custom_url_params=None, time_difference=datetime.timedelta(seconds=-1)):
# pylint: disable=too-many-arguments
self.layer = layer
self.feature_name = layer if feature_name is None else feature_name
self.valid_data_mask_name = valid_data_mask_name
self.service_type = service_type
self.data_source = data_source
self.size_x = size_x
self.size_y = size_y
self.maxcc = maxcc
self.image_format = image_format
self.instance_id = instance_id
custom_params = {CustomUrlParam.SHOWLOGO: False,
CustomUrlParam.TRANSPARENT: True}
if custom_url_params is None:
self.custom_url_params = custom_params
else:
self.custom_url_params = {**custom_params, **custom_url_params}
self.time_difference = time_difference
def __init__(self, feature_type, layer, feature_name=None, data_source=None,
image_format=MimeType.TIFF_d32f, instance_id=None, custom_url_params=None):
self.feature_type = feature_type
self.layer = layer
self.feature_name = layer if feature_name is None else feature_name
self.data_source = data_source
self.image_format = image_format
self.instance_id = instance_id
custom_params = {CustomUrlParam.SHOWLOGO: False,
CustomUrlParam.TRANSPARENT: False}
if custom_url_params is None:
self.custom_url_params = custom_params
else:
self.custom_url_params = {**custom_params, **custom_url_params}
def __init__(self, feature_type, layer, feature_name=None, data_source=None,
image_format=MimeType.TIFF_d32f, instance_id=None, custom_url_params=None):
self.feature_type = feature_type
self.layer = layer
self.feature_name = layer if feature_name is None else feature_name
self.data_source = data_source
self.image_format = image_format
self.instance_id = instance_id
custom_params = {CustomUrlParam.SHOWLOGO: False,
CustomUrlParam.TRANSPARENT: False}
if custom_url_params is None:
self.custom_url_params = custom_params
else:
self.custom_url_params = {**custom_params, **custom_url_params}
# definition of possible types and target features
classification_types = {
'SCL': FeatureType.MASK,
'CLD': FeatureType.DATA,
'SNW': FeatureType.DATA
}
if sen2cor_classification not in classification_types:
raise ValueError('Unsupported Sen2Cor classification type: {}.'
' Possible types are: {}'.format(sen2cor_classification, classification_types))
evalscript = 'return [{}];'.format(sen2cor_classification)
super().__init__(feature=(classification_types[sen2cor_classification], sen2cor_classification),
layer=layer, data_source=DataSource.SENTINEL2_L2A,
custom_url_params={CustomUrlParam.EVALSCRIPT: evalscript}, **kwargs)
"""
service_type = ServiceType(meta_info['service_type'])
# Raise error if resolutions are not specified
if self.cm_size_x is None and self.cm_size_y is None:
raise ValueError("Specify size_x and size_y for data request")
# If WCS request, make sure both resolutions are set
if service_type == ServiceType.WCS:
if self.cm_size_y is None:
self.cm_size_y = self.cm_size_x
elif self.cm_size_x is None:
self.cm_size_x = self.cm_size_y
custom_url_params = {CustomUrlParam.SHOWLOGO: False,
CustomUrlParam.TRANSPARENT: False,
CustomUrlParam.EVALSCRIPT: self.model_evalscript}
request = {ServiceType.WMS: self._get_wms_request,
ServiceType.WCS: self._get_wcs_request}[service_type](bbox,
meta_info['time_interval'],
self.cm_size_x,
self.cm_size_y,
meta_info['maxcc'],
meta_info['time_difference'],
custom_url_params)
request_dates = request.get_dates()
download_frames = get_common_timestamps(request_dates, timestamps)
request_return = request.get_data(raise_download_errors=False, data_filter=download_frames)
bad_data = [idx for idx, value in enumerate(request_return) if value is None]
self.feature_type, self.feature_name = next(self._parse_features(layer if feature is None else feature,
default_feature_type=FeatureType.DATA)())
self.valid_data_mask_feature = self._parse_features(valid_data_mask_feature,
default_feature_type=FeatureType.MASK)
self.service_type = service_type
self.data_source = data_source
self.size_x = size_x
self.size_y = size_y
self.maxcc = maxcc
self.image_format = image_format
self.instance_id = instance_id
if custom_url_params is None:
custom_url_params = {}
self.custom_url_params = {**{CustomUrlParam.SHOWLOGO: False,
CustomUrlParam.TRANSPARENT: True},
**custom_url_params}
self.time_difference = time_difference
self.raise_download_errors = raise_download_errors
def _get_wms_request(self, bbox, size_x, size_y):
"""
Returns WMS request.
"""
bbox_3857 = transform_bbox(bbox, CRS.POP_WEB)
return GeopediaWmsRequest(layer=self.layer,
theme=self.theme,
bbox=bbox_3857,
width=size_x,
height=size_y,
image_format=self.image_format,
custom_url_params={CustomUrlParam.TRANSPARENT: True})