Я хочу привязать растр с помощью python
и GDAL
. Мой текущий подход состоит в том, чтобы вызвать gdal_translate
и gdalwarp
использовать os.system
и ужасный список наземных контрольных точек. Я действительно хотел бы сделать это изначально внутри python
.
Это текущий процесс, который я использую:
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"')
Существует предыдущий вопрос и ответ 2012 года, в котором говорится, что к нему gdal_translate
можно получить доступ после импорта gdal
. Я не уверен, устарел ли он или нет, но когда я бегу, from osgeo import gdal
я не вижу gdal.gdal_translate
в качестве варианта.
Я не знаю, существует ли он, но я бы хотел, чтобы я мог переводить и перепроектировать растры с помощью питона. Например:
# 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*)
Возможен ли такой подход?
Ответы:
Вот пример, который делает примерно то, что вы просите. Основными параметрами являются
geotransform
массив, который gdal использует для описания местоположения растра (положение, масштаб в пикселях и перекос) иepsg
код проекции. При этом следующий код должен правильно привязать растр и указать его проекцию.Я не слишком много тестировал, но мне показалось, что это сработало. Вы должны убедиться, что введенные мной координаты верны и, возможно, изменить проекцию и масштаб / размер пикселя. Надеюсь, поможет.
источник