好的,所以我有一个jpeg和一堆地面控制点(x / y像素和相应的纬度/经度参考)。
我想从命令行生成一个.wld世界文件以伴随jpeg。我的坐标系是谷歌地图,即EPSG:900913。
我知道我可以使用gdal_transform在给定gcps的情况下生成.vrt,但我需要的是.wld文件。 (不太清楚差异,但这绝对是我需要的!)
任何人都知道如何做到这一点?
由于 理查德
答案 0 :(得分:3)
世界文件基本上是一个确定地理配准的6行ascii文本文件。如果您有一组GCP,则需要将它们(使用gdal等工具)映射到单个仿射变换。
我不相信gdal命令行实用程序可以直接创建一个world文件,但是如果你在驱动程序中设置了WORLDFILE = yes,那么当你编写一个图像时,GDAL中的某些驱动程序会为你做这个。您必须检查驱动程序的特定格式,看它是否支持此功能。
如果没有,你可以手动轻松完成。只需使用GCP制作.VRT文件,然后在文本编辑器中查看。它将有一个这样的部分:
<GeoTransform>440720.0, 60, 0.0, 3751320.0, 0.0, -60.0</GeoTransform>
这个“GeoTransform”是世界文件使用的仿射变换。您需要做的就是创建一个ascii文件,每行放一个值,如下所示:
60
0.0
0.0
-60.0
440720.0
3751320.0
这将是您的应用程序的有效.WLD文件。
FYI - 6个数字是x像素大小,每x值y移位,每y像素x移位,x原点,然后是y原点。 (这些变化在仿射变换中提供旋转/剪切能力。通常,它们将为0/0,因为您通常需要经过正射校正的图像。)
有关详细信息,请参阅Wikipedia's entry on Worldfiles。
答案 1 :(得分:1)
GDAL存储库中有Python脚本gcps2wld.py,将文件上的GCP集转换为世界文件格式的一阶近似值。
我想补充一下Reed的答案,可以将GCP作为命令行参数提供给gdal_translate:
gdal_translate -gcp 1 2 3 4 -gcp 6 7 8 9 [-gcp ...] -of GTiff inp.img out.tif