In the file: earth_observation_with_StatAPI.ipynb
code no: 12
code:
"wcs_true_color_request = WcsRequest(
data_collection=DataCollection.SENTINEL2_L1C,
data_folder="./cache/",
layer='TRUE-COLOR-S2-L1C',
bbox=bbox,
time=time_interval,
resx = "10m",
resy = "10m",
image_format= MimeType.TIFF
)
images = wcs_true_color_request.get_data(save_data=True)
len(images)"
output:
"
HTTPError Traceback (most recent call last)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/handlers.py:37, in fail_user_errors..new_download_func(self, request)
36 try:
---> 37 return download_func(self, request)
38 except requests.HTTPError as exception:
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/sentinelhub_client.py:90, in SentinelHubDownloadClient._execute_download(self, request)
88 continue
---> 90 response.raise_for_status()
92 LOGGER.debug("Successful %s request to %s", request.request_type.value, request.url)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/requests/models.py:1021, in Response.raise_for_status(self)
1020 if http_error_msg:
-> 1021 raise HTTPError(http_error_msg, response=self)
HTTPError: 400 Client Error: Bad Request for url: https://services.sentinel-hub.com/ogc/wfs/c294be23-f885-44c2-80fb-b867750a1bfa?SERVICE=wfs&WARNINGS=False&REQUEST=GetFeature&TYPENAMES=DSS1&BBOX=46.11%2C14.26%2C46.26%2C14.51&OUTPUTFORMAT=application%2Fjson&SRSNAME=EPSG%3A4326&TIME=2023-01-01T00%3A00%3A00Z%2F2023-05-01T23%3A59%3A59Z&MAXCC=100.0&MAXFEATURES=100&FEATURE_OFFSET=0
The above exception was the direct cause of the following exception:
DownloadFailedException Traceback (most recent call last)
Cell In[12], line 1
----> 1 wcs_true_color_request = WcsRequest(
2 data_collection=DataCollection.SENTINEL2_L1C,
3 data_folder="./cache/",
4 layer='TRUE-COLOR-S2-L1C',
5 bbox=bbox,
6 time=time_interval,
7 resx = "10m",
8 resy = "10m",
9 image_format= MimeType.TIFF
10 )
11 images = wcs_true_color_request.get_data(save_data=True)
12 len(images)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/ogc.py:295, in WcsRequest.init(self, resx, resy, **kwargs)
255 def init(self, *, resx: str = "10m", resy: str = "10m", **kwargs: Any):
256 """
257 :param resx: resolution in x (resolution of a column) given in meters in the format (examples 10m
,
258 20m
, ...). Default is 10m
, which is the best native resolution of some Sentinel-2 bands.
(...)
293 :param config: A custom instance of config class to override parameters from the saved configuration.
294 """
--> 295 super().init(service_type=ServiceType.WCS, size_x=resx, size_y=resy, **kwargs)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/ogc.py:132, in OgcRequest.init(self, layer, bbox, data_collection, time, service_type, size_x, size_y, maxcc, image_format, custom_url_params, time_difference, **kwargs)
128 self._check_custom_url_parameters()
130 self.wfs_iterator: Optional[WebFeatureService] = None
--> 132 super().init(SentinelHubDownloadClient, **kwargs)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/base.py:37, in DataRequest.init(self, download_client_class, data_folder, config)
35 self.download_list: List[DownloadRequest] = []
36 self.folder_list: List[str] = []
---> 37 self.create_request()
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/ogc.py:163, in OgcRequest.create_request(self, reset_wfs_iterator)
160 self.wfs_iterator = None
162 ogc_service = OgcImageService(config=self.config)
--> 163 self.download_list = ogc_service.get_request(self)
164 self.wfs_iterator = ogc_service.get_wfs_iterator()
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/ogc.py:335, in OgcImageService.get_request(self, request)
320 """Get download requests
321
322 Create a list of DownloadRequests for all Sentinel-2 acquisitions within request's time interval and
(...)
327 :return: list of DownloadRequests
328 """
329 size_x, size_y = self.get_image_dimensions(request)
330 return [
331 DownloadRequest(
332 url=self.get_url(request=request, date=date, size_x=size_x, size_y=size_y),
333 data_type=request.image_format,
334 )
--> 335 for date in self.get_dates(request)
336 ]
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/ogc.py:545, in OgcImageService.get_dates(self, request)
542 else:
543 self.wfs_iterator = request.wfs_iterator
--> 545 dates = self.wfs_iterator.get_dates()
546 dates = filter_times(dates, request.time_difference) # type: ignore[type-var]
548 LOGGER.debug("Initializing requests for dates: %s", dates)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/wfs.py:127, in WebFeatureService.get_dates(self)
121 """Returns a list of acquisition times from tile info data
122
123 :return: List of acquisition times in the order returned by WFS service.
124 """
125 tile_dates: List[Optional[dt.date]] = []
--> 127 for tile_info in self:
128 if not tile_info["properties"]["date"]: # could be True for custom (BYOC) data collections
129 tile_dates.append(None)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/base.py:274, in FeatureIterator.next(self)
269 """Method called to provide the next feature in iteration
270
271 :return: the next feature
272 """
273 while self.index >= len(self.features) and not self.finished:
--> 274 new_features = self._fetch_features()
275 self.features.extend(new_features)
277 if self.index < len(self.features):
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/api/wfs.py:105, in WebFeatureService._fetch_features(self)
102 params: JsonDict = {**self.params, "FEATURE_OFFSET": self.next}
103 url = f"{self.url}?{urlencode(params)}"
--> 105 new_features = self.client.get_json_dict(url)["features"]
107 if len(new_features) < self.max_features_per_request or self.latest_time_only:
108 self.finished = True
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/client.py:249, in DownloadClient.get_json_dict(self, url, extract_key, *args, **kwargs)
241 def get_json_dict(self, url: str, *args: Any, extract_key: Optional[str] = None, **kwargs: Any) -> JsonDict:
242 """Download request as JSON data type, failing if the result is not a dictionary
243
244 For other parameters see get_json
method.
(...)
247 :param extract_key: If provided, the field is automatically extracted, checked, and returned
248 """
--> 249 response = self.get_json(url, *args, **kwargs)
251 if not isinstance(response, dict):
252 raise MissingDataInRequestException(
253 f"Response from {url} was expected to be a dictionary, but got {type(response)}."
254 )
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/client.py:239, in DownloadClient.get_json(self, url, post_values, headers, request_type, **kwargs)
228 json_headers = {"Content-Type": MimeType.JSON.get_string(), **json_headers}
230 request = DownloadRequest(
231 url=url,
232 headers=json_headers,
(...)
236 **kwargs,
237 )
--> 239 return self._single_download_decoded(request)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/client.py:117, in DownloadClient._single_download_decoded(self, request)
115 def _single_download_decoded(self, request: DownloadRequest) -> Any:
116 """Downloads a response and decodes it into data. By decoding a single response"""
--> 117 response = self._single_download(request)
118 return None if response is None else response.decode()
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/client.py:130, in DownloadClient._single_download(self, request)
128 no_local_data = self.redownload or response_path is None or not os.path.exists(response_path)
129 if no_local_data:
--> 130 response = self._execute_download(request)
131 else:
132 if not request.return_data or response_path is None:
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/handlers.py:64, in retry_temporary_errors..new_download_func(self, request)
62 for attempt_idx in range(download_attempts):
63 try:
---> 64 return download_func(self, request)
66 except requests.RequestException as exception:
67 attempts_left = download_attempts - (attempt_idx + 1)
File ~/Downloads/ENTER/envs/eo/lib/python3.10/site-packages/sentinelhub/download/handlers.py:43, in fail_user_errors..new_download_func(self, request)
38 except requests.HTTPError as exception:
39 if (
40 exception.response.status_code < requests.status_codes.codes.INTERNAL_SERVER_ERROR
41 and exception.response.status_code != requests.status_codes.codes.TOO_MANY_REQUESTS
42 ):
---> 43 raise DownloadFailedException(
44 _create_download_failed_message(exception, request.url), request_exception=exception
45 ) from exception
46 raise exception from exception
DownloadFailedException: Failed to download from:
https://services.sentinel-hub.com/ogc/wfs/c294be23-f885-44c2-80fb-b867750a1bfa?SERVICE=wfs&WARNINGS=False&REQUEST=GetFeature&TYPENAMES=DSS1&BBOX=46.11%2C14.26%2C46.26%2C14.51&OUTPUTFORMAT=application%2Fjson&SRSNAME=EPSG%3A4326&TIME=2023-01-01T00%3A00%3A00Z%2F2023-05-01T23%3A59%3A59Z&MAXCC=100.0&MAXFEATURES=100&FEATURE_OFFSET=0
with HTTPError:
400 Client Error: Bad Request for url: https://services.sentinel-hub.com/ogc/wfs/c294be23-f885-44c2-80fb-b867750a1bfa?SERVICE=wfs&WARNINGS=False&REQUEST=GetFeature&TYPENAMES=DSS1&BBOX=46.11%2C14.26%2C46.26%2C14.51&OUTPUTFORMAT=application%2Fjson&SRSNAME=EPSG%3A4326&TIME=2023-01-01T00%3A00%3A00Z%2F2023-05-01T23%3A59%3A59Z&MAXCC=100.0&MAXFEATURES=100&FEATURE_OFFSET=0
Server response: "Parameter GEOMETRY and BBOX and the instance area of interest (if set) must intersect!"
"
Please help..