Şu anda ArcGIS içine CANGRID iklim verilerini (Surfer Grid ascii, ".grd" dosyaları olarak sağlanan) almak için çalışıyorum. Izgara 95 satır x 125 sütun boyutundadır. Meta veriler lat / lon menşei (sol alt köşe), hücre boyutu (50km) ve ayrıca merkezi meridyen (110 derece W) ve orijin enlemi (60 derece N) ile polar stereografik olarak nota projeksiyonu sağlar.
İlk olarak .grd'yi .ascii ve .flt olarak rasterlere dönüştürmeyi denedikten sonra, kapsamı ve projeksiyonu ayarlamak için GDAL kullanmayı başardım, ancak veri kümesi istenen alanın sınırları ile doğru bir şekilde hizalanmıyor. Aşağıdaki resme bakın.
Polar stereografik için bu hizalama eksikliğini açıklayabilecek kabul edilmiş bir jeotransformasyon var mı?
Örneğin, kullanmam gereken belirli bir dönüşüm faktörü veya rotasyonu var mı?
Veri kümesinden bir örnek dosya burada: "t201113.grd"
İşte şu anda GDAL'de kullandığım kod
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
`
Ayrıca, girdi tarafından tanımlanan projeksiyon bilgisi, yani "GetProjection ()" dan:
]] 'PROJCS [ "North_Pole_Stereographic", GEOGCS [ "GCS_WGS_1984", VERİ [ "WGS_1984", küremsi [ "WGS_1984", 6378137.0,298.257223563]], PRIMEM [ "Greenwich", 0.0], BİRİM [ "derecesi",, ,0174532925199433, PROJEKSİYON [ "Stereographic"], pARAMETRE [ "False_Northing", 0.0], pARAMETRE, pARAMETRE [ "Central_Meridian", 0.0], pARAMETRE [ "Scale_Factor", 1.0], pARAMETRE [0.0 "False_Easting"] [ "Latitude_Of_Origin", 90.0 ] BİRİM [ "50_Kilometers", 50000,0]]'
Ve GeoTransform girişi:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
Enlem, ızgara koordinatlarının uzun değerleri de sağlanır ve yansıtılan koordinat sistemindeki görünüm aşağıdaki gibi görünür. Geotransform, sol alt (sarı) veya sağ üst (pembe) kordinatın koordinatları ile tanımlandığında, kapsamı etkili bir şekilde ayarlayabilirim, ancak raster boyunca hizalama sorunları kalır.