मैं डेटाबेस में पिक्सेल द्वारा जियोफाई फ़ाइल को स्टोर करना चाहता हूं। मुझे GeoTIFF छवि पर उस पिक्सेल के lat / lon के साथ पिक्सेल मूल्यों को संग्रहीत करने की आवश्यकता है। क्या यह करना मुमकिन है?
मैं डेटाबेस में पिक्सेल द्वारा जियोफाई फ़ाइल को स्टोर करना चाहता हूं। मुझे GeoTIFF छवि पर उस पिक्सेल के lat / lon के साथ पिक्सेल मूल्यों को संग्रहीत करने की आवश्यकता है। क्या यह करना मुमकिन है?
जवाबों:
एक सामान्य अर्थ में, एफाइन ट्रांसफॉर्म मापदंडों का उपयोग करें , जो किसी भी रेखापुंज फ़ाइल प्रारूप के साथ उपलब्ध होना चाहिए। GDAL के साथ, यह GetGeoTransform () , या PostGIS ' ST_GeoReference () फ़ंक्शन के साथ उपलब्ध है। इन छह मापदंडों को खोजने के बाद, किसी को केवल यह निर्धारित करने की आवश्यकता है कि वे कौन से हैं, फिर एक फ़ंक्शन को रैखिक स्थान में बदलने के लिए बनाया जा सकता है।
जैसे, पायथन के साथ:
from osgeo import gdal
ds = gdal.Open('myfile.tif')
# unravel GDAL affine transform parameters
c, a, b, f, d, e = ds.GetGeoTransform()
def pixel2coord(col, row):
"""Returns global coordinates to pixel center using base-0 raster index"""
xp = a * col + b * row + a * 0.5 + b * 0.5 + c
yp = d * col + e * row + d * 0.5 + e * 0.5 + f
return(xp, yp)
उदाहरण के लिए, यदि कोई पिक्सेल = 10, पंक्ति = 22 पर पिक्सेल है, तो पिक्सेल केंद्र के लिए वास्तविक दुनिया निर्देशांक हैं:
>>> pixel2coord(10, 22)
(2780000.0, 6162300.0)
ST_Affine () के साथ PostGIS के लिए कुछ इसी तरह पकाया जा सकता है ।
दुनिया फ़ाइल (.tfw) जिसमें एक GeoTIFF शामिल है: