Actualmente estoy trabajando para importar datos climáticos CANGRID (proporcionados como Surfer Grid ascii, archivos ".grd") en ArcGIS. La cuadrícula tiene 95 filas por 125 columnas de tamaño. Los metadatos proporcionan lat / lon de origen (esquina inferior izquierda), tamaño de celda (50 km), así como proyección de notas como estereografía polar con meridiano central (110 grados W) y latitud de origen (60 grados N).
Después de intentar convertir el .grd a rásteres como .ascii y .flt sin éxito, logré usar GDAL para establecer la extensión y la proyección, sin embargo, el conjunto de datos no se alinea correctamente con los límites del área deseada. Ver la imagen de abajo.
¿Existe una geotransformación aceptada para la estereografía polar que pueda explicar esta falta de alineación?
Por ejemplo, ¿hay un factor de conversión específico o rotación que debería estar usando?
Un archivo de ejemplo del conjunto de datos está aquí: "t201113.grd"
Aquí está el código que estoy usando actualmente en 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
`
Además, aquí está la información de proyección, tal como se define por la entrada, es decir, desde "GetProjection ()":
'PROJCS ["North_Pole_Stereographic", GEOGCS ["GCS_WGS_1984", DATUM ["WGS_1984", SPHEROID ["WGS_1984", 6378137.0,298.257223563]], PRIMEM ["Greenwich", 0.0], UNIT ["Grado", 0.0174532, 0.0174532, 0.0174532 PROYECCIÓN ["Stereographic"], PARÁMETRO ["False_Easting", 0.0], PARAMETER ["False_Northing", 0.0], PARAMETER ["Central_Meridian", 0.0], PARAMETER ["Scale_Factor", 1.0], PARAMETER ["Latitude_Of_Origin", 90 ], UNIDAD ["50_Kilómetros", 50000.0]] '
Y la entrada GeoTransform:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
Lat, también se proporcionan longitudes de las coordenadas de la cuadrícula, y cuando se ve en el sistema de coordenadas proyectado, se ve a continuación. Cuando la geotransformada se define mediante coordenadas del cordinado inferior izquierdo (amarillo) o superior derecho (rosa), puedo establecer de manera efectiva la extensión, pero persisten problemas de alineación en todo el ráster.