J’ai récemment cherché des informations sur la convention de nommage des tuiles sur lesquelles seront découpées les données de Niveau 1C de Sentinel-2, et voici ce que j’ai trouvé :
- Un Manuel de l’utlisateur pour les produits de Sentinel-2 (qui n’explique pas vraiment la convention de nommage des tuiles)
- Un fichier kml qui fournit l’emprise de chaque tuile ainsi que son nom. L’accès au fichier se trouve sur la page officielle de Sentinel2, menu « key resources » sur la droite, cliquer sur « Sentinel-2 Level 1C tiling grid »
A partir de ces deux informations, voici ce que j’ai pu deviner :
- les 2 premiers numéros du nom d’une tuile (comme par exemple 31TCJ) correspondent à la zone UTM. Le monde est divise en 60 zones de 6 degrés de largeur en longitude, avec des numéros qui s’accroissent en allant vers l’est. La zone 1 se trouve sur l’océan pacifique..
- Chaque zone est divisée en latitude, en bandeaux de 8 degrés. Cette division est représentée par une lettre, qui s’accroît du Sud au Nord. Les deux premiers chiffres, et la première lettre définissent donc une grille de cases UTM.
- Chaque case de ce découpage est divisée en tuiles de 110*110 km², avec une superposition de 10 km des tuiles adjacentes. D’est en Ouest, c’est la 4e Lettre, du Sud au Nord, c’est la 5e lettre. Ce qui est étonnant, c’est que ces lettres ne commencent pas à A pour chaque case de la grille UTM, mais continuent à croître de case en case, mais sont remises à la valeur A quand le compteur dépasse Z.
Quelques exemples :
- La tuile de Toulouse porte le numéro, 31TCJ. 31 est la zone UTM, T désigne le bandeau en latitude, C correspond à la position de la tuile sur l’axe ouest-est, et J sur l’axe Sud Nord.
- Si vous cherchez la tuile à l’Est de Toulouse, qui contient Castres, c’est 31TDJ.
- Si vous cherchez la tuile au Nord Est de Toulouse, qui contient Aurillac, c’est 31TDK.
- Si vous cherchez la tuile à l’Ouest de Toulouse, qui contient la région de l’Armagnac c’est … 30TYP. 30T parce qu’on est passé à une zone UTM différente, et YP… parce que cette grille est mal fichue ?
- Enfin, la tuile plus au sud, celle que nous avons utilisée pour produire nos premiers produits de Niveau 2A est 30TYN (parce que la lettre O est exclue)
Il serait pratique d’avoir une formule pour déterminer la ou les tuiles qui contiennent un point de coordonnées (longitude et latitude) connues. Mais ça ne me parait pas évident. Il devrait être plus facile de créer un programme. Si quelqu’un a l’un ou l’autre, merci de nous le faire suivre ! Un collègue m’a dit que cette grille est née dans le cerveau d’un militaire américain (oui, les militaires ont un cerveau), en voici une description, pour laquelle on reste sur sa faim quand à la manière dont les deux dernières lettres ont été définies. Ceci dit, en 1789, lors de la révolution Française, un découpage administratif en tuiles avait déjà été envisagé par le comité Sieyes-Thouret. Le projet n’a finalement pas été adopté, mais je pense que les sages auraient trouvé des noms plus poétiques que les noms de tuiles de Sentinel-2.
Je pense que le moyen le plus sûr est d’utiliser le fichier définissant ces (> 34000 !!) tuiles (le KML cité ici fait l’affaire si on n’a pas accès au GIPP original qui est exploité lors de la fabrication des images L1C)Désolé pas de prog sous la main qui fait ça, mais voici un pseudo code (entrée : coordonnées lon/lat)A partir de lon/lat on retient les zones UTM candidates (2 maximum : outre le recouvrement de 10km des tuiles, elles peuvent aussi se recouvrir au changement de zone)Dans chacun de ces faisceaux, on traduit lon/lat en X/Y (les tuiles sont rectangulaires en UTM, pas en coordonnées géo 4326)On parcourt alors la liste des défs des tuiles en fitrant dans un premier temps par zone UTM (la zone est une des caractéristiques de déf de tuile) et en ne retenant que les identifiants mgrs des tuiles pour lesquelles le rectangle de la bounding box contient X/Y (simple calcul d’appartenance à un rectangle)Exemple de la tuile 30TYP extraite du fichier kml OOps le XML ne passe pas dans les posts..Voici une nouvelle version <Placemark> <name>30TYP</name> … <ExtendedData> <SchemaData schemaUrl="#s2a_L1C_global_tiling_gipp_v5_ovlp"> <SimpleData name="epsg">32630</SimpleData> <SimpleData name="utm_ul_x">699960</SimpleData> <SimpleData name="utm_ul_y">4900020</SimpleData> <SimpleData name="res1">10</SimpleData> <SimpleData name="res1_rows">10980</SimpleData> <SimpleData name="res1_cols">10980</SimpleData>…-> zone UTM 30N (epsg 32630), tuile contenant toutes les coordonnées UTM (mètres) variant de 699960+10*10980 en X et 4900020-10*10980 en Y.
Merci Jean Louis !Olivier
Olivier,Un utilisateur Sentinel 2 nous a indiqué un site qui calcule en ligne le nom de la tuile pour une position géographique donnée:http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=152d33%2722.24%22E+24d0%2718.94%22S&zone=-3&prec=-5&option=SubmitUne information qui peut-être utile à partager avec d’autres utilisateurs.Sébastien ClercS2 Mission Performance Center
Ca marche bien, merci Sébastien !\nOlivier
Bonjour
J’ai implementé un script Matlab qui extrait les tuiles S2 en fonction de la zone géographique definie par l’utilisateur [topLeft Lat/Lon et bottomRight Lat/Lon]. Voici le lien pour télécharger le script https://drive.google.com/file/d/0B0mCZ3I3CFSXQ1Vpa1U4MkpiMFU/view?usp=sharing
Instructions to follow
————————-
– prepare your bounding box coordinates defined by top left latitude/longitude and bottom right latitude/longitude
– Open the S2_tilefinder.m script and just fill in these parameters using your own coordinatestopLeftLat = 52;topLeftLon = 5;bottomRightLat = 50;bottomRightLon = 8;
-run the matlab script.The script will output the Sentinel2 tiles intersecting your region of interest.
Below an example of output using the exmaple coordinates listed above:
Found possible 31U UTM zone search
Found possible 32U UTM zone search
Found S2 tile :31UFR [minLon = 4.385169,minLat = 49.619417,maxLon = 5.821311,maxLat = 50.543380]
Found S2 tile :31UGR [minLon = 5.769058,minLat = 49.613658,maxLon = 6.000000,maxLat = 50.517741]
Found S2 tile :31UFS [minLon = 4.411339,minLat = 50.517741,maxLon = 5.876292,maxLat = 51.442352]
Found S2 tile :31UGS [minLon = 5.821311,minLat = 50.513270,maxLon = 6.000000,maxLat = 51.415884]
Found S2 tile :31UFT [minLon = 4.438877,minLat = 51.415884,maxLon = 5.934190,maxLat = 52.341175]
Found S2 tile :31UGT [minLon = 5.876292,minLat = 51.412780,maxLon = 6.000000,maxLat = 52.313844]
Found S2 tile :32UKA [minLon = 6.000000,minLat = 49.613658,maxLon = 6.230942,maxLat = 50.517741]
Found S2 tile :32ULA [minLon = 6.178689,minLat = 49.619417,maxLon = 7.614831,maxLat = 50.543380]
Found S2 tile :32UMA [minLon = 7.588661,minLat = 49.644257,maxLon = 9.000000,maxLat = 50.551932]
Found S2 tile :32UKB [minLon = 6.000000,minLat = 50.513270,maxLon = 6.178689,maxLat = 51.415884]
Found S2 tile :32ULB [minLon = 6.123708,minLat = 50.517741,maxLon = 7.588661,maxLat = 51.442352]
Found S2 tile :32UMB [minLon = 7.561123,minLat = 50.543380,maxLon = 9.000000,maxLat = 51.451182]
Found S2 tile :32UKC [minLon = 6.000000,minLat = 51.412780,maxLon = 6.123708,maxLat = 52.313844]
Found S2 tile :32ULC [minLon = 6.065810,minLat = 51.415884,maxLon = 7.561123,maxLat = 52.341175]
Found S2 tile :32UMC [minLon = 7.532122,minLat = 51.442352,maxLon = 9.000000,maxLat = 52.350293]
Elapsed time is 2.644927 seconds.In addition to output script, a figure is displayed showing :- the requested bounding box in blue color- the tested S2 tilesin red- the selected S2 tiles green
Any remarks or suggestion, please contact me iskander.benhadj@vito.comIskander Benhadj (VITO)
Excellent, merci Iskander !
Hi
You can use the small python package eotile: https://pypi.org/project/eotile/
Best
Mickaël
Merci Mickael, il faut que je teste ça
Olivier