Trouver la tuile Sentinel pour une coordonnée spécifique Long / Lat

11

Je crée un outil qui télécharge des images de "Sentinel-2 sur AWS"

J'ai du mal à traduire les coordonnées Long / Lat vers une tuile Sentinel spécifique. Je sais que Sentinel 2 utilise MGRS et j'ai essayé de convertir simplement Long / Lat en MGRS et avec une faible précision, j'obtiens l'ID de tuile S2A. Et ça marche, mais pas toujours.

Par exemple, Long / Lat 34.665,31.625 se résout en "36R XA" dans MGRS, mais la tuile Sentinel 36RXA n'existe pas.

Quelle serait la bonne façon de déterminer la tuile Sentinelle en utilisant les coordonnées Long / Lat?

GetUsername
la source
1
Intersection avec la grille de carrelage Sentinel-2 ?
user2856
Oui, j'ai vu ce KML. Ce serait mon dernier recours car les recherches sont chères. J'espère que je peux le faire avec le calcul
GetUsername
3
Consultez github.com/sat-utils/sentinel2-util
bugmenot123
Vous pouvez le faire dans Google Cloud car ils ont toutes les métadonnées dans BigQuery, par exemple SELECT * FROM [bigquery-public-data:cloud_storage_geo_index.sentinel_2_index] where north_lat < 50 and north_lat > 49 order by sensing_time LIMIT 10, mais vous mentionnez AWS, donc je suppose que cela n'aidera pas.
John Powell

Réponses:

4

Le partitionnement S2 dans MGRS est particulièrement délicat lorsque les données se trouvent entre des zones UTM et que les tuiles se chevauchent, voir la figure ci-dessous. Les tuiles de gauche à droite sont 20_M_QE, 20_M_RE, 21_M_SV et 21_M_TV:

Une recherche effectuée par OpenSearch pour la région renvoie une acquisition S2 divisée en deux tuiles, 20_M_RE et 21_M_TV:

20_M_RE

entrez la description de l'image ici

Donc, si vous êtes intéressé par les données dans la région de tuiles 21_M_SV représentée, vous devez utiliser 20_M_RE. Notez que la représentation utilisée dans les exemples (fichier de formes obtenu à partir de NGA) le chevauchement entre les tuiles n'est pas représenté.

Le moyen le plus sûr d'obtenir les tuiles semble être de rechercher votre AOI en utilisant opensearch puis de récupérer les tuiles retournées, ou en utilisant l'outil sentinel2-util comme mentionné par bugmenot123.

Si vous choisissez de mapper le Long / Lat aux tuiles, je recommande d'utiliser le KML fourni par l'ESA comme définition de la grille de tuilage:

https://sentinel.esa.int/web/sentinel/missions/sentinel-2/data-products

Fred Liporace
la source
4

Un tel outil existe déjà. Il s'appelle Sentinelsat et la source est disponible sur GitHub . Il offre une interface de ligne de commande et une API Python. Cela fonctionne avec Sentinel 1 et 2. La requête spatiale est basée sur un polygone et non sur un point, mais sinon c'est exactement ce dont vous avez besoin.

EDIT: 1) vous pouvez renvoyer l'ID de produit (ou la liste d'ID de produit) à l'aide de la fonction de requête. Et depuis la ligne de commande, vous pouvez omettre l'option -d pour ne pas lancer le téléchargement (et utiliser l'option -f pour créer l'empreinte de chaque image) 2) Concernant le geojson, vous pouvez voir ci-dessous qu'un wkt pourrait être utilisé directement à la place. Comme mentionné par @ThingumaBob, vous pouvez créer un minuscule polygone basé sur vos coordonnées lat / long. Mais en fait, je l'ai testé avec un point GeoJason et cela a aussi bien fonctionné. Il n'est donc pas nécessaire de convertir votre point en polygone.

# search by polygon, time, and Hub query keywords
footprint = geojson_to_wkt(read_geojson('map.geojson'))
products = api.query(footprint,
                     date = ('20151219', date(2015, 12, 29)),
                     platformname = 'Sentinel-2',
                     cloudcoverpercentage = (0, 30))

qui pourrait être ajusté en

# search by point, time, and Hub query keywords

products = api.query('POINT({0} {1})'.format(longitude,latitude),
                     date = ('20151219', date(2015, 12, 29)),
                     platformname = 'Sentinel-2',
                     cloudcoverpercentage = (0, 30))
radouxju
la source
merci @radouxju, je connais Sentinelsat, mais mon besoin spécifique est d'obtenir le nom de la tuile pour un lat / lon correspondant. Je ne sais pas si Sentinelsat fait ça
user1186
@ user1186 produire une minuscule bbox autour du lat / lon pour alimenter l'API? semble idiot mais pourrait être tout ce dont vous avez besoin ...
geozelot
@ThingumaBob, je pourrais le faire mais l'API retournera les valeurs NDVI. Je veux seulement l'ID de tuile, s'il y a un moyen de le faire via l'API, j'aimerais savoir
user1186