Hi Teo,
it is currently not possible to search by orbit as we kind of believe that most people do not know/care about it.
For the DEM. According to the User guide PlanetDEM, which is mostly based on SRTM, which was acquired in 2000.
Hi Grega/Matej,
Do you know if it would be possible to add e.g. a letter/digit into an output name that would simply distinguish between acquisitions from sentinel 2B and 2A?
Teo
Hi Teo,
in sentinelhub
Python package it is possible to get info about each tile that will be used for your WmsRequest
or WcsRequest
. In the process of providing data Sentinel Hub services might join multiple tiles together into single image. However it is possible for user to filter obtained images by orbit. Here is the basic idea:
request = WmsRequest(...) # WMS or WCS request
wfs_iterator = request.get_tiles()
for tile_info in wfs_iterator:
print(tile_info) # info about each tile provided by WFS service
print(tile_info['properties']['id']) # this should specify the name of the orbit
print(tile_info['properties']['date'], tile_info['properties']['time'] # exact acquisition time
images = request.get_data() # Images
dates = request.get_dates() # List of acquisition times of these images in the same order as images
# By comparing acquisition times from `dates` and acquisition times from `wfs_iterator` user
# can now filter `images` by desired orbit
Currently user will still have to download all images and then filter them by orbit. In the next version of the package we plan to add an option to filter images (by index) before the download.
P.S.
In the code above orbit name tile_info['properties']['id']
will be in a form e.g.
“S2A_OPER_MSI_L1C_TL_SGS__20180131T143733_A013633_T32VNK_N02.06”.
Hence orbit of Sentinel-2 A will start with “S2A” and orbit of Sentinel-2 B will start with “S2B”.
Thanks! I will give it a try. Yes that makes sense.
That won’t ever appear in the wcs request in this form though? : wcs_B88_EPSG32632_423141.785505… .tiff (e.g. wcs_S2A_… .tifff)?
Teo
Great, I hope it works.
Info about S2A/S2B won’t appear in the image file name as it is not a parameter specified by user. Also, by specifying a large enough time_difference
parameter of WmsRequest
/WcsRequest
, it is even possible to get an image composed of both S2A and S2B data.
Thanks Matej! My goal is to only download scenes for either S2A or S2B, not for both at once, hence the question - if there is an option to specify S2A or S2B option for Wcs/Wms requests.
There is no parameter to simply specify which of the two satellites data will come from.
However if you leave time_difference
parameter unchanged each image will be either from S2A or from S2B and not both. So with the approach described above you will be able to determine which image came from which satellite and use only those.
At the moment you would still have to first download all images and then filter them. However the next version of sentinelhub
package (released probably by the end of this week) will have an option to specify by index exactly which images (out of all available) will be downloaded.
Best regards,
Matej
Sounds good! Thanks Matej!
Hi Matej, Grega,
Is there a way to extract / display the relative orbit number in the downloaded file? (Sentinel 2A and 2B)
Teo
Hi Teo,
it is possible for user to access names of files before they are downloaded and change them. I have just now released a new package version 2.1.1
where this can be done a bit nicer than before.
Basically once you determine which satellite each image will be taken from (as discussed in previous posts), you can change the names like this:
request = WmsRequest(...)
for download_request in request.get_download_list():
old_filename = download_request.filename
new_filename = 'S2A_{}'.format(old_filename) # create new name
download_request.set_filename(new_filename)
request.save_data()
By the way, since the version 2.1.0
it is also possible to specify which images will be downloaded. E.g.:
request.save_data(data_filter=[0, 2, -1])
This will download only 1st, 3rd and last image of your request.
Hi Matej,
It is possible though to have images from the same satellite e.g S2A but from two different neighbouring orbits. Will I be able to specify one orbit only? The goal is to use a specific orbit only.
Teo
Yes, if you join instructions from my previous posts you will be able to do that. But, as you can see, the solution will require some coding at your end as well. There is no simpler way than that.
Let me know if you run into any problems during the implementation.
Hi Matej,
From the above, it is not possible to find the relative orbit (only an absolute one). I know that absolute orbit can be changed to relative orbit (1-143) but it’s not always reliable. Can you find the relative orbit number through the request?
In that case you could for each tile read the URL path to its location at s3 bucket and read the productInfo.json
file from there.
from sentinelhub import get_json
...
wfs_iterator = request.get_tiles()
for tile_info in wfs_iterator:
tile_url = tile_info['properties']['path'] # E.g. s3://sentinel-s2-l1c/tiles/32/V/NK/2018/6/17/0
product_info_url = '{}/productInfo.json'.format(tile_url)
product_info = get_json(product_info_url)
print(product_info['name']) # This is product ID which contains relative orbit number
# E.g. S2A_MSIL1C_20180617T104021_N0206_R008_T32VNK_20180617T125156
For now none of our services directly outputs relative orbit number so the only way is to read it from s3. In order to download productInfo.json
from s3 using sentinelhub
package (in code above) you will first have to set your AWS keys as described in configuration instructions.
Hi Matej, am I right that to get that, I need to create my own AWS account (S3) that is a paid service?
Yes, you need an AWS account but the price of such requests is really minimal as you only have to request for small json files. price list
More about this was discussed in the following topic:
To all AWS Public Datasets users of S2 L1C data. This thread will be used to communicate changes happening to the S2 bucket. As we expect to gather some feedback from power users in this thread, we might change the approach a bit during the discussion in ongoing. The summarized and harmonized description will be available on this FAQ link.
End of June we will set S2 L1C bucket as “Requester pays” similarly as it is for S2 L2A and S1 GRD. This move is required to allow further increase of the sh…
Correction: I just noticed productInfo.json
will actually also remain available publicly. So you won’t need AWS account.
In order to do this you would just have to change s3 url to http url in code:
from s3://sentinel-s2-l1c/tiles/32/V/NK/2018/6/17/0
to http://sentinel-s2-l1c.s3-website.eu-central-1.amazonaws.com/#tiles/32/V/NK/2018/6/17/0