वर्तमान में मैं आर्काइविस में CANGRID जलवायु डेटा (सर्फर ग्रिड ascii, ".grd" फ़ाइलों के रूप में) प्रदान करने के लिए काम कर रहा हूँ। ग्रिड 95 पंक्तियों में 125 स्तंभों के आकार का है। मेटाडाटा लेट / लोन ऑफ ओरिजिन (निचले बाएं कोने), सेल आकार (50 किमी) के साथ-साथ केंद्रीय मेरिडियन (110 डिग्री डब्ल्यू) और मूल के अक्षांश (60 डिग्री एन) के साथ ध्रुवीय स्टीरियोग्राफिक के रूप में नोट प्रक्षेपण प्रदान करता है।
पहले .grd को .ascii और .flt के रूप में चूहों में बदलने का प्रयास करने के बाद, मैं GDAL का उपयोग करने के लिए हद और प्रक्षेपण सेट करने में कामयाब रहा, हालांकि डेटासेट सही ढंग से इच्छित क्षेत्र की सीमाओं के साथ संरेखित नहीं करता है। छवि के नीचे देखें।
क्या ध्रुवीय स्टीरियोग्राफिक के लिए एक स्वीकृत जियोट्रांसफॉर्मेशन है जो संरेखण की इस कमी को समझा सकता है?
उदाहरण के लिए, क्या कोई विशिष्ट रूपांतरण कारक या रोटेशन है जिसका मुझे उपयोग करना चाहिए?
डेटासेट से एक उदाहरण फ़ाइल यहाँ है: "t201113.grd"
यह कोड मैं वर्तमान में 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
`
इसके अलावा, यहाँ प्रक्षेपण जानकारी है, जैसा कि इनपुट द्वारा परिभाषित है, "गेटप्रोजेक्ट ()" से:
'PROJCS [ "North_Pole_Stereographic", GEOGCS [ "GCS_WGS_1984", गृहीत [ "WGS_1984", उपगोल [ "WGS_1984", 6378137.0,298.257223563]], PRIMEM [ "ग्रीनविच", 0.0], यूनिट [ "डिग्री", .0174532925199433]], अनुमान [ "Stereographic"], पैरामीटर [ "False_Easting", 0.0], पैरामीटर [ "False_Northing", 0.0], पैरामीटर [ "Central_Meridian", 0.0], पैरामीटर [ "Scale_Factor", 1.0], पैरामीटर [ "Latitude_Of_Origin", 90.0 ], यूनिट [ "50_Kilometers", 50,000.0]] '
और इनपुट GeoTransform:
(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)
लैट, ग्रिड निर्देशांक के लंबे हिस्से भी प्रदान किए जाते हैं, और जब अनुमानित समन्वय प्रणाली में दृश्य नीचे की तरह दिखता है। जब जियोट्रांसफॉर्म को निचले बाएं (पीले) या ऊपरी दाएं (गुलाबी) कॉर्डिनेट के निर्देशांक द्वारा परिभाषित किया जाता है, तो मैं प्रभावी रूप से सीमा निर्धारित कर सकता हूं, लेकिन पूरे रेखापुंज में संरेखण मुद्दे रहते हैं।