Attualmente sto lavorando per importare i dati climatici CANGRID (forniti come Surfer Grid ascii, file ".grd") in ArcGIS. La griglia ha 95 righe per 125 colonne. I metadati forniscono lat / lon di origine (angolo in basso a sinistra), dimensione della cella (50 km) e proiezione delle note come stereografica polare con meridiano centrale (110 gradi W) e latitudine di origine (60 gradi N).
Dopo aver tentato per la prima volta di convertire .grd in raster come .ascii e .flt senza successo, sono riuscito a utilizzare GDAL per impostare l'estensione e la proiezione, tuttavia il set di dati non si allinea correttamente con i confini dell'area prevista. Vedi sotto l'immagine.
Esiste una geotrasformazione accettata per la stereografia polare che potrebbe spiegare questa mancanza di allineamento?
Ad esempio, esiste un fattore di conversione o rotazione specifico che dovrei usare?
Un file di esempio dal set di dati è qui: "t201113.grd"
Ecco il codice che sto attualmente utilizzando in 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
`
Inoltre, ecco le informazioni sulla proiezione, come definite dall'input, ovvero da "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", ,0174532925199433]], PROIEZIONE [ "stereografica"], PARAMETRO [ "False_Easting", 0,0], PARAMETRO [ "False_Northing", 0,0], PARAMETRO [ "Central_Meridian", 0,0], PARAMETRO [ "Scale_Factor", 1.0], PARAMETRO [ "Latitude_Of_Origin", 90.0 ], unità [ "50_Kilometers", 50000,0]]'
E l'ingresso GeoTransform:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
Vengono inoltre forniti i long delle coordinate della griglia e, quando visualizzate nel sistema di coordinate proiettate, appaiono come di seguito. Quando la geotrasformazione è definita da coordinate della coordinata in basso a sinistra (gialla) o in alto a destra (rosa), posso effettivamente impostare l'estensione, ma permangono problemi di allineamento in tutto il raster.