Saya ingin melakukan georeferensi raster menggunakan python
dan GDAL
. Pendekatan saya saat ini adalah menelepon gdal_translate
dan gdalwarp
menggunakan os.system
dan daftar titik kontrol tanah yang jelek. Saya benar-benar ingin cara untuk melakukan ini secara asli di dalam python
.
Ini adalah proses saat ini yang saya gunakan:
import os
os.system('gdal_translate -of GTiff -gcp 1251.92 414.538 -7.9164e+06 5.21094e+06 -gcp 865.827 107.699 -7.91651e+06 5.21104e+06 "inraster.tif" "outraster1.tif"')
os.system('gdalwarp -r bilinear -tps -co COMPRESS=NONE "outraster2.tif" "outraster3.tif"')
Ada pertanyaan dan jawaban sebelumnya dari 2012 yang menyatakan bahwa gdal_translate
dapat diakses setelah mengimpor gdal
. Saya tidak yakin apakah sudah usang, atau apakah itu salah tetapi ketika saya menjalankan from osgeo import gdal
saya tidak melihat gdal.gdal_translate
sebagai opsi.
Saya tidak tahu apakah itu ada tetapi saya akan senang jika saya bisa menerjemahkan dan memproyeksikan ulang raster dengan cara pythonic. Sebagai contoh:
# translate
gcp_points = [(1251.92, 414.538), (-7.9164e+06, 5.21094e+06)]
gdal.gdal_translate(in_raster, gcp_points, out_raster1)
# warp
gdal.gdalwarp(out_raster1, out_raster2, 'bilinear', args*)
Apakah pendekatan seperti itu mungkin?
Jawaban:
Berikut adalah contoh yang kira-kira sesuai dengan apa yang Anda minta. Parameter utama adalah
geotransform
larik yang gdal gunakan untuk menggambarkan lokasi raster (posisi, skala piksel, dan kemiringan) danepsg
kode proyeksi. Dengan itu, kode berikut harus melakukan georeferensi raster dengan benar dan menentukan proyeksi.Saya tidak menguji sebanyak ini, tetapi tampaknya berhasil bagi saya. Anda harus memastikan koordinat yang saya masukkan benar dan mungkin mengubah proyeksi dan skala pixel / ukuran. Semoga ini bisa membantu.
sumber