gpt4 book ai didi

python - 使用移位向量进行 GDAL 变形

转载 作者:行者123 更新时间:2023-12-01 08:06:47 26 4
gpt4 key购买 nike

有没有办法通过 GDAL(使用 Python API)使用移位向量来扭曲图像?

通过移位向量,我的意思是例如。包含以下列的 CSV(或 numpy)文件:starting_x,starting_y,target_x,target_y。该图像是例如。 Tiff(或 GeoTiff)文件。

我在文档中没有找到类似支持多个移位向量的内容( https://www.gdal.org/gdalwarp.htmlhttps://gdal.org/gdal_translate.html ),但也许有人知道如何做到这一点。

编辑

我生成了带有一些示例坐标的 VRT 文件。这是我使用的命令:

gdal_translate -gcp 100 100 200 200 -gcp 200 200 300 300 -gcp 500 500 600 600 -of VRT original.tif original.vrt

这是输出文件:

<VRTDataset rasterXSize="16285" rasterYSize="8251">
<Metadata>
<MDI key="TIFFTAG_RESOLUTIONUNIT">1 (unitless)</MDI>
<MDI key="TIFFTAG_XRESOLUTION">1</MDI>
<MDI key="TIFFTAG_YRESOLUTION">1</MDI>
</Metadata>
<Metadata domain="IMAGE_STRUCTURE">
<MDI key="INTERLEAVE">BAND</MDI>
</Metadata>
<GCPList>
<GCP Id="" Pixel="100.0000" Line="100.0000" X="2.000000000000E+02" Y="2.000000000000E+02" />
<GCP Id="" Pixel="200.0000" Line="200.0000" X="3.000000000000E+02" Y="3.000000000000E+02" />
<GCP Id="" Pixel="500.0000" Line="500.0000" X="6.000000000000E+02" Y="6.000000000000E+02" />
</GCPList>
<VRTRasterBand dataType="Byte" band="1">
<Metadata domain="IMAGE_STRUCTURE">
<MDI key="NBITS">1</MDI>
</Metadata>
<Metadata>
<MDI key="STATISTICS_MAXIMUM">1</MDI>
<MDI key="STATISTICS_MEAN">0.074397271632616</MDI>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_STDDEV">0.26241630590769</MDI>
</Metadata>
<ColorInterp>Palette</ColorInterp>
<ColorTable>
<Entry c1="255" c2="255" c3="255" c4="255" />
<Entry c1="0" c2="0" c3="0" c4="255" />
</ColorTable>
<SimpleSource>
<SourceFilename relativeToVRT="1">original.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SourceProperties RasterXSize="16285" RasterYSize="8251" DataType="Byte" BlockXSize="16285" BlockYSize="4" />
<SrcRect xOff="0" yOff="0" xSize="16285" ySize="8251" />
<DstRect xOff="0" yOff="0" xSize="16285" ySize="8251" />
</SimpleSource>
</VRTRasterBand>
</VRTDataset>

现在,我尝试使用它作为变形的输入:

import gdal

InputImage = 'original.vrt'
OutTileName = 'warped.tif'
OutTile = gdal.Warp(OutTileName, InputImage, options=gdal.WarpOptions(tps=True))
OutTile = None

它没有破裂,但结果我得到了完全相同的图像 - 就像它根本没有扭曲一样。另一件事是输入图像的大小为 16 MB,结果图像的大小为 140 MB。我做错了什么?

最佳答案

您可以使用 gdal_translate -gcp x1 y1 x2 x2 将指定偏移的 gpc 分配给您的文件。将输出写入 VRT 文件可以让您查看格式,因此如果您有大量的 gcp,从某些模板生成 VRT 可能会更容易,而不是使用命令行。

分配gcp后,您可以使用gdalwarp“应用”转换。如果输入文件已经指定了投影,您可能需要添加 -tps 标志以强制使用 gcp 而不是投影。我不确定最后一部分。

关于python - 使用移位向量进行 GDAL 变形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55495061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com