Skip to main content

I have this polygon:


poly = { "type": "Polygon", "coordinates": [ [ [ -120.75119, 37.46308 ],
[ -120.75121, 37.46658 ],
[ -120.75364, 37.46659 ],
[ -120.75363, 37.46311 ], [ -120.7534, 37.4631 ],
[ -120.75339, 37.46364 ], [ -120.75336, 37.46367 ],
[ -120.7532, 37.46369 ], [ -120.75302, 37.46369 ],
[ -120.75289, 37.46364 ], [ -120.75283, 37.46361 ],
[ -120.75283, 37.46315 ], [ -120.75281, 37.46313 ],
[ -120.75278, 37.46311 ], [ -120.75274, 37.46309 ],
[ -120.75119, 37.46308 ] ] ] }

And I use the Catalog API via Python request in this way:



headers_request = {"Authorization" : "Bearer %s" %token['access_token']}
url = 'https://services.sentinel-hub.com/api/v1/catalog/1.0.0/search'
data = {
"intersects": poly,
"datetime": "2023-01-01T00:00:00Z/2023-01-30T23:59:59Z",
"collections": ["sentinel-2-l2a"],
"limit": 50
}

response = oauth.request('POST',url, headers=headers_request, json=data)

if response.status_code == 200:
print('success')
else:
print("Failed to download image. Error code:", response.status_code)

This works great and I get the expected results.


However, I couldn’t find how to do the same when the CRS is in UTM.

For example, here is another polygon (EPSG_code = 32636):


poly2= { "type": "MultiPolygon", "coordinates": : [ [ [ 711762.185586089035496, 3603291.295094058383256 ],
711241.673942331806757, 3603280.280911926180124 ],
711247.285023313015699, 3603090.362972270697355 ],
711766.242771786637604, 3603099.790665935259312 ],
711762.185586089035496, 3603291.295094058383256 ] ] ] ] }

How do I modify the above search to get results?

Hi, make sure to add the crs parameter to your polygon or bounding box like the below example:


bbox = BBox(bbox=[711241.6739423318, 3603090.3629722707, 711766.2427717866, 3603291.2950940584], crs=UTM_36N)


Then your request should work correctly. If you still have issues then let us know.


Thank you, but my geometry is in json format, and I do not wish to use the BBOX.

Isn’t there a parameter that I can add to the request specifying the EPSG code (like in the process API)?


The parameter is the same; for example:


geometry = Geometry(geometry={"type":"Polygon","coordinates":[[[711110.751142,3603339.639959],[711492.741097,3603395.862623],[711589.589755,3602820.035824],[711198.230431,3602823.741394],[711247.285023,3603090.362972],[711110.751142,3603339.639959]]]}, crs=UTM_36N)


Hi, thanks again, but I do not wish to use the sentinelhub package.


Any other solution using Python? maybe with geopandas, shapely, fiona or something like that?


I need the CRS to be something I can automatically insert, like in the process API where I just need to specify the EPSG code.


Reply