Python 在 gdal.Translate 中列出 GCP 的语法?

Python syntax for listing GCPs in gdal.Translate?

我想使用 gdal.Translate 将多个 GCP 添加到 Tiff 图像,但我不知道执行此操作的正确语法。 help(gdal.TranslateOptions) 告诉我需要使用 'GCPs' kwarg,这应该是一个 GCP 列表。有谁知道我如何将 GCP 添加为列表?

我已经使用命令行和 gdal_translate 完成了此操作,这非常简单,但我更希望使用 Python 来完成此操作,因为我项目的其余代码位于Python.

这是我在命令行中所做的:

gdal_translate -of GTiff -gcp 0 0 -4.717259 52.711651 -gcp 127 0 3.305363 51.733681 -gcp 0 31 -4.992584 51.498657 -gcp 127 31 2.828687 50.546162 -gcp 50 21 -1.762230 51.575226 "C:\PATH_TO_TIF\sds_001.tif" "Output_test.tif”

对于任何感兴趣的人,我最终只是在源目录中通过命令行执行以下操作,遍历我所有的 Tiff:

for %i in (*.tif) do gdal_translate -of GTiff -gcp 0 0 -4.717259 52.711651 -gcp 127 0 3.305363 51.733681 -gcp 0 31 -4.992584 51.498657 -gcp 127 31 2.828687 50.546162 -gcp 50 21 -1.762230 51.575226 %i %i.GCP.tif

这有点令人困惑,因为与命令行工具相比,Python 绑定期望参数的顺序不同。

import gdal

# x, y, lon, lat
gcps = [
    (0, 0, pt1.x, pt1.y),
    (width, 0, pt2.x, pt2.y),
    (width, height, pt3.x, pt3.y),
    (0, height, pt4.x, pt4.y),
]

ds = gdal.Open('filename.bmp')
gdal.Translate(
    'filename.tiff',
    ds,
    outputSRS='EPSG:4326',
    GCPs=[gdal.GCP(x, y, 0, pixel, line) for (pixel, line, x, y) in gcps],
)