地理问题:如何在给定一些地面控制点的情况下生成 .wld 文件?
好的,我有一个 jpeg 和一堆地面控制点(x/y 像素和相应的纬度/经度参考)。
我想从命令行生成一个 .wld 世界文件来伴随 jpeg。我的坐标系是Google Maps,即EPSG:900913。
我知道我可以使用 gdal_transform 在给定 gcps 的情况下生成 .vrt,但我需要的是 .wld 文件。 (不太清楚区别,但这绝对是我需要的!)
有人知道如何做到这一点吗?
谢谢 理查德
OK, so I have a jpeg and a bunch of ground control points (x/y pixels and corresponding lat/lon references).
I'd like to generate a .wld world file to accompany the jpeg, from the command line. My coordinate system is Google Maps, i.e. EPSG:900913.
I know that I can use gdal_transform to generate a .vrt given the gcps, but what I need is a .wld file. (Not really clear on the difference, but that's definitely what I need!)
Anyone have any idea how to do this?
Thanks
Richard
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
世界文件基本上是一个 6 行 ascii 文本文件,用于确定您的地理配准。如果您有一组 GCP,则需要将它们(使用 gdal 等工具)映射到单个仿射变换。
我不相信 gdal 命令行实用程序能够让您直接创建世界文件,尽管如果您在驱动程序中设置 WORLDFILE=yes,GDAL 中的某些驱动程序会在您写入图像时为您执行此操作。您必须检查驱动程序的特定格式,看看它是否支持此格式。
但如果没有,您可以手动轻松完成此操作。只需使用 GCP 制作 .VRT 文件,然后在文本编辑器中查看它。它将有一个像这样的部分:
这个“GeoTransform”是世界文件使用的仿射变换。您需要做的就是创建一个 ascii 文件,其中每行包含一个值,如下所示:
这将是您的应用程序的有效 .WLD 文件。
仅供参考 - 这 6 个数字是 x 像素大小、每个 x 值的 y 偏移、每个 y 像素的 x 偏移、x 原点,然后是 y 原点。 (移位在仿射变换中提供旋转/剪切功能。通常,它们将为 0/0,因为您通常需要正射校正图像)。
有关详细信息,请参阅维基百科有关世界文件的条目。
A world file is basically a 6 line ascii text file determining your georeferencing. If you have a set of GCPs, you'll need to map them (using some tool like gdal) to a single affine transform.
I don't believe the gdal command line utilities give you the ability to just directly make a world file, although some drivers within GDAL will do this for you when you write an image if you set WORLDFILE=yes in the driver. You'll have to check the driver for your specific format to see if it supports this.
If it does not, though, you can do this easily by hand. Just make the .VRT file using the GCPs, and look at it in a text editor. It will have a section like this:
This "GeoTransform" is the affine transform used by a world file. All you need to do is make an ascii file that puts that with one value per line, like so:
That will be a valid .WLD file for your application.
FYI - The 6 numbers are the x pixel size, y shift per x value, x shift per y pixel, x origin, then y origin. (The shifts provide rotation/shearing capabilities in the affine transform. Typically, they'll be 0/0, since you normally want orthorectified imagery).
For details, see Wikipedia's entry on Worldfiles.
有Python脚本 gcps2wld.py 在GDAL 存储库,将文件上的 GCP 集转换为世界文件格式的一阶近似。
我想在 Reed 的回答中补充一点,可以将 GCP 作为命令行参数提供给 gdal_translate:
There is Python script gcps2wld.py in GDAL repository which translates the set of GCPs on a file into first order approximation in world file format.
I would add to Reed's answer that it's possible to give GCPs as command line parameters to gdal_translate: