ฉันต้องการเก็บไฟล์ GeoTIFF พิกเซลเป็นพิกเซลในฐานข้อมูล ฉันต้องการเก็บค่าพิกเซลพร้อมกับ lat / lon ของพิกเซลนั้นในภาพ GeoTIFF เป็นไปได้ไหมที่จะทำเช่นนั้น?
ฉันต้องการเก็บไฟล์ GeoTIFF พิกเซลเป็นพิกเซลในฐานข้อมูล ฉันต้องการเก็บค่าพิกเซลพร้อมกับ lat / lon ของพิกเซลนั้นในภาพ GeoTIFF เป็นไปได้ไหมที่จะทำเช่นนั้น?
คำตอบ:
ในแง่ทั่วไปให้ใช้พารามิเตอร์การแปลงเลียนแบบซึ่งควรจะใช้ได้กับทุกรูปแบบไฟล์แรสเตอร์ ด้วย GDAL นี้สามารถใช้ได้กับGetGeoTransform ()หรือ PostGIS' ST_GeoReference ()ฟังก์ชั่น หลังจากค้นหาพารามิเตอร์ทั้งหกนี้แล้วเราต้องการเพียงกำหนดว่าพวกเขาเป็นใครจากนั้นฟังก์ชั่นสามารถทำการแปลงในพื้นที่เชิงเส้น
เช่นกับ Python:
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)
ตัวอย่างเช่นหากมีพิกเซลที่ col = 10, แถว = 22 ดังนั้นพิกัดโลกแห่งความจริงไปที่ศูนย์กลางพิกเซลคือ:
>>> pixel2coord(10, 22)
(2780000.0, 6162300.0)
บางสิ่งบางอย่างที่คล้ายกันสามารถปรุงขึ้นสำหรับ PostGIS กับST_Affine ()
นี่อาจเป็นสิ่งที่ค่อนข้างล้าสมัย: แปลงพิกเซลเป็นจุดเพิ่มเขตข้อมูล lat และ long และเติมด้วยค่า lat และ long
ไฟล์โลก (.tfw) ที่มาพร้อมกับ GeoTIFF ประกอบด้วย: