Je travaille actuellement pour importer des données climatiques CANGRID (fournies sous forme de fichiers Surfer Grid ascii, ".grd") dans ArcGIS. La grille est de 95 lignes par 125 colonnes. Les métadonnées fournissent le lat / lon d'origine (coin inférieur gauche), la taille des cellules (50 km) ainsi que la projection des notes en stéréographie polaire avec méridien central (110 degrés W) et latitude d'origine (60 degrés N).
Après avoir tenté de convertir le .grd en rasters en .ascii et .flt sans succès, j'ai réussi à utiliser GDAL pour définir l'étendue et la projection, mais l'ensemble de données ne s'aligne pas correctement avec les limites de la zone prévue. Voir l'image ci-dessous.
Existe-t-il une géotransformation acceptée pour la stéréographie polaire qui pourrait expliquer ce manque d'alignement?
Par exemple, y a-t-il un facteur de conversion ou une rotation spécifique que je devrais utiliser?
Un exemple de fichier de l'ensemble de données est ici: "t201113.grd"
Voici le code que j'utilise actuellement dans GDAL
ds = gdal.Open("t201113.grd")
array = ds.ReadAsArray()
x_rotation = 0
y_rotation = 0
xres = 1
yres = -1
llx = -129.8530
lly = 40.0451
ulx = -175.144
uly = 71.385
input_osr = osr.SpatialReference()
input_osr.ImportFromWkt(ds.GetProjection())
wgs84_osr = osr.SpatialReference()
wgs84_osr.ImportFromEPSG(4326)
wgs_to_nps_trans = osr.CoordinateTransformation(wgs84_osr, input_osr)
x, y, z = wgs_to_nps_trans.TransformPoint(llx,lly)
geo_transform = [ x, xres, x_rotation, y, y_rotation, yres ]
ncol = ds.RasterXSize
nrow = ds.RasterYSize
out_driver = gdal.GetDriverByName("HFA")
out_ds = out_driver.Create(t201113.img", ncol, nrow, 1, gdal.GDT_Float32)
out_ds.SetGeoTransform(geo_transform)
out_prj = 'PROJCS["North_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",60.0],UNIT["50_Kilometers",50000.0]]'
out_ds.SetProjection(out_prj)
out_ds.GetRasterBand(1).WriteArray(array)
out_ds.GetRasterBand(1).SetNoDataValue(1.70141e+038)
out_ds.FlushCache()
out_ds = None
`
Voici également les informations de projection, telles que définies par l'entrée, c'est-à-dire de "GetProjection ()":
'PROJCS ["North_Pole_Stereographic", GEOGCS ["GCS_WGS_1984", DATUM ["WGS_1984", SPHEROID ["WGS_1984", 6378137.0,298.257223563]], PRIMEM ["Greenwich", 0,0], UNIT ["Degree", 0,099432] PROJECTION ["Stereographic"], PARAMETER ["False_Easting", 0.0], PARAMETER ["False_Northing", 0.0], PARAMETER ["Central_Meridian", 0.0], PARAMETER ["Scale_Factor", 1.0], PARAMETER ["Latitude_Of_Origin", 90.0 ], UNIT ["50_Kilomètres", 50000.0]] »
Et l'entrée GeoTransform:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
Lat, les coordonnées longues de la grille sont également fournies, et lorsqu'elles sont affichées dans le système de coordonnées projeté, elles sont comme ci-dessous. Lorsque la géotransformation est définie par les coordonnées de la coordonnée inférieure gauche (jaune) ou supérieure droite (rose), je peux effectivement définir l'étendue, mais il reste des problèmes d'alignement tout au long du raster.
Réponses:
Trop de temps pour un commentaire, c'est pour accompagner la réponse de @ Matej .
Utilisez la fonction «Raster vers un autre format» et convertissez votre fichier .grd en un format ESRII GRID. Ceci est important car la plupart des fonctions raster d'ArcGIS sont accessibles uniquement pour ce format, soit cela, soit cela devient généralement trop lent lorsque vous l'utilisez sur d'autres formats.
Comme il a déjà le fichier de projection associé au fichier. Plutôt que de projeter les nouvelles données converties, définissez sa projection. ArcToolbox> Outils de gestion des données> Projections et transformations> Définir la projection. Vous pouvez naviguer vers la projection ESRII graphique stéréo polaire prédéfinie et voir si ses paramètres correspondent à ceux donnés dans les métadonnées (ce n'est pas le cas), vous pouvez donc la modifier selon @Matej. Seulement ici - plutôt que de modifier, créez-en une nouvelle basée sur la projection NPS avec le méridien central et la latitude d'origine modifiés et enregistrez-le sur le disque, puis accédez à la nouvelle projection et utilisez-la lors de la définition de votre projection. En effet, votre modification à la volée ne sera pas disponible ultérieurement lorsque vous souhaitez l'utiliser pour définir le système de coordonnées de votre bloc de données,
la source
Les informations de projection appropriées pour ces fichiers peuvent être trouvées ici: Définir la chaîne Proj4 pour le jeu de données CANGRD
la source
Je ne pense pas que vous ayez besoin de reprojeter l'image. Procédez uniquement comme suit:
Notez que l'image (grd) est déjà dans la projection StereoGraphic du pôle Nord, ce qui ne vous donne que des indications sur la façon d'ajuster le fond de carte qui sera aligné avec l'image.
Étape 1 :
Modifiez la projection stéréographique originale du pôle Nord (WKID: 102018) pour ajuster la latitude d'origine et le méridien central:
Étape 2:
Géoréférencer le fichier grd en définissant le coin inférieur gauche sur les coordonnées spécifiées (lat, lon). Lorsque vous mettez à jour le géoréférencement, le fichier .gdwx est créé dans le même dossier. Lors de l'attribution d'un coin SW à (40.0451, -129.853), le contenu du fichier se présente comme suit:
modifier: le fichier mondial ci-dessus a été modifié manuellement en fonction de la taille de la cellule et de l'emplacement du coin SW - la 5e et la 6e ligne représentent l'emplacement calculé du pixel supérieur gauche de l'image. La position de l'image a légèrement changé.
Les valeurs ci-dessus placent (décalent) l'image à l'emplacement spécifié et définissent l'échelle.
Et voici la sortie:
Si cela ne semble pas être correctement aligné, je remettrais en question les coordonnées fournies pour le coin SW de l'image. Dans le cas où vous avez accès aux coordonnées du coin NE de l'image, vous pouvez recalculer les paramètres de transformation qui redimensionneraient et tourneraient l'image entre deux (ou plus) points.
la source