Saat ini saya sedang bekerja untuk mengimpor data iklim CANGRID (disediakan sebagai Surfer Grid ascii, file ".grd") ke ArcGIS. Grid berukuran 95 baris dengan 125 kolom. Metadata menyediakan lat / lon asal (sudut kiri bawah), ukuran sel (50 km) serta catatan proyeksi sebagai stereografi polar dengan meridian pusat (110 derajat W) dan garis lintang asal (60 derajat N).
Setelah pertama kali mencoba mengubah .grd menjadi raster sebagai .ascii dan .flt tidak berhasil, saya berhasil menggunakan GDAL untuk menetapkan tingkat dan proyeksi, namun set data tidak benar sesuai dengan batas-batas area yang dimaksud. Lihat gambar di bawah.
Apakah ada geotransformasi yang diterima untuk stereografi polar yang dapat menjelaskan kurangnya penyelarasan ini?
Misalnya, apakah ada faktor konversi atau rotasi tertentu yang harus saya gunakan?
Contoh file dari dataset ada di sini: "t201113.grd"
Berikut kode yang saya gunakan saat ini di 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
`
Juga, inilah info proyeksi, seperti yang didefinisikan oleh input, yaitu dari "GetProjection ()":
'PROJCS ["North_Pole_Stereographic", GEOGCS ["GCS_WGS_1984", DATUM ["WGS_1984", SPHEROID ["WGS_1984", 6378137.0.2998.257223563]], PRIMEM ["Greenwich", 0,0], 0,01253 "0,334,324" PROYEKSI ["Stereografis"], PARAMETER ["False_Easting", 0,0], PARAMETER ["False_Northing", 0,0], PARAMETER ["Central_Meridian", 0,0], PARAMETER ["Scale_Factor", 1.0], PARAMETER ["Latitude_Of_Origin, ".0.0, 90.0, 90.0) ], UNIT ["50_Kilometer", 50000.0]] '
Dan input GeoTransform:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
Lat, panjang koordinat grid juga disediakan, dan ketika tampilan dalam sistem koordinat yang diproyeksikan terlihat seperti di bawah ini. Ketika geotransform didefinisikan oleh koordinat kordinat kiri bawah (kuning) atau kanan atas (merah muda), saya dapat secara efektif mengatur luasnya, tetapi masih ada masalah penyelarasan di seluruh raster.