Contribution au site Meteo France :
J’ ai finalement pu faire une bonne installation de QGIS, et faire exécuter la commande Raster/Divers/Information raster dans les menus déroulants, qui a appelé :
gdalinfo -mm -stats "C:/…./UNZIP COMEPHORE 202601/2026/2026013018_RR.gtif"
Lisant ainsi en particulier ceci :
METHOD["Polar Stereographic (variant B)",
PARAMETER["Latitude of standard parallel",45,
PARAMETER["Longitude of origin",0,
PARAMETER["False easting",0,
PARAMETER["False northing",0,
CS[Cartesian,2],
Data axis to CRS axis mapping: 1,2
Origin = (-619652.074055918143131,-3526818.337931886781007)
Pixel Size = (1000.000000000000000,-999.999999999999659)
Corner Coordinates:
Upper Left ( -619652.074,-3526818.338) ( 9d57'54.00"W, 53d40'12.00"N)
Lower Left ( -619652.074,-5062818.338) ( 6d58'40.37"W, 39d51' 8.50"N)
Upper Right ( 916347.926,-3526818.338) ( 14d33'52.95"E, 53d 4'17.92"N)
Lower Right ( 916347.926,-5062818.338) ( 10d15'33.19"E, 39d28' 4.26"N)
Center ( 148347.926,-4294818.338) ( 1d58'41.79"E, 46d59'42.82"N)
Band 1 Block=1536x1536 Type=UInt16, ColorInterp=Gray
C’ est une IA qui m’ a ensuite permis de saisir le détail, et recommandé d’ utiliser le module pyproj, qui est derrière gdal. Cette IA m’ a permis de réaliser les conversions nécessaires entre une longitude/latitude et la lignes et la colonne du pixel le plus proche sur la grille, par exemple.
Le code Python élémentaire ci-après peut aider tout autre débutant, et il est cohérent avec ce que gdal lit dans un fichier RR, comme coordonnées des quatre coins.
Puis je suggèrer que Météo-France publie l’ équivalent, officiellement, pour permettre à tout utilisateur d’ exploiter plus facilement les données COMEPHORE.
OH
Code Python :
import pyproj as pp
crs_proj = pp.CRS.from_proj4('+proj=stere +lat_0=90 +lat_ts=45 +lon_0=0 +datum=WGS84 +units=m')
def lonlat(x,y):
transformer = pp.Transformer.from_crs( crs_proj , "EPSG:4326" ,always_xy=True)
# noter que l' ordre des deux premiers arguments donne le sens de la transformation
lon, lat = transformer.transform(x, y)
return lon,lat
# jeu d’ essai :
# >>>lonlat(-619652.074055918,-3526818.337931887)
# (-9.964999999999996, 53.66999999999362)
# >>>lonlat(-619652.074,-5062818.338)
# (-6.97788119478683, 39.852361410269275)
def xy(lon,lat):
transformer = pp.Transformer.from_crs( "EPSG:4326" , crs_proj ,always_xy=True)
# noter que l' ordre des deux premiers arguments donne le sens de la transformation
x,y = transformer.transform(lon,lat)
return x,y
# jeu d’ essai :
# >>>xy(-9.964999999999996, 53.66999999999362)
# (-619652.074056022, -3526818.337932479)
# >>>xy(-6.97788119478683, 39.852361410269275)
# (-619652.0740000024, -5062818.33800002)
def xypixel(col,lig):
X0 = -619652.074055918;Y0 = -3526818.337931887
return X0+(col+0.5)*1000,Y0-(lig+0.5)*1000
def collig(x,y):
""" le pixel le plus proche de x,y """
X0 = -619652.074055918;Y0 = -3526818.337931887
col=(x-X0)/1000 - 0.5;lig=(Y0-y)/1000 - 0.5
return round(col), round(lig)
# jeu d’ essai :
# >>>xypixel(23,18)
# (-596152.074055918, -3545318.337931887)
# >>>collig(-596152.074055918, -3545318.337931887)
# (23, 18)
# >>>collig( 148347.926,-4294818.338)
# (768, 768)
# >>>xypixel(768, 768)
# (148847.92594408197, -4295318.337931886)