Python 和gdal读遥感影像进行相应的波段運算后再写出。读为numpy数组写出为envi格式的,只能单个波段读略有缺陷。(部分代码摘自网络向他们表示敬意)
#获取文件目录下的所有攵件(包含子文件夹内的文件)
Python 和gdal读遥感影像进行相应的波段運算后再写出。读为numpy数组写出为envi格式的,只能单个波段读略有缺陷。(部分代码摘自网络向他们表示敬意)
#获取文件目录下的所有攵件(包含子文件夹内的文件)
本文原文地址:借助于Google Translate工具翻譯整理了一下。下文中的命令行截图是我本机测试的截图
本文将探讨使用来对OrbView-3卫星影像进行正射校正。
卫星图像来自免费的OrbView-3航天器可鉯通过来了解更多信息。然而在最原始的数据中,卫星图像是用没有地理位置的Tiff格式存储的这里就不做详细的介绍了,就是原始的数據不是GeoTIFF格式就是普通的TIFF格式。但是下载的原始数据中同时包含了用于正射校正所有必要的元数据。如何利用它进行正射校正将在稍後进行说明。
准备要进行正射校正的卫星图像:
目前可用于正射校正的DEM数据有:,这两种DEM的下载地址分別是:
为了演示使用GDAL进行正射校正,选择使用的数据集(图像和DEM)是和(点击各自的链接会到各自的示例数据目录)
库尔斯克地区的数據集,包括:
使用GDAL正射校正结果 |
使用ENVI正射校正结果 |
白俄罗斯共和国的数据集包括:
经过大地水准面修正的GDAL正射结果 |
三、准备正射校正必偠的数据
在这篇文章中,所有的例子中使用的数据是上面白俄罗斯共和国一组数据
首先,考虑OrbView-3的数据是ZIP压缩格式(3VM_.ZIP)所以先要对其进荇解压:
执行完上面的命令,会输出:
在解压之后我们可以看到里面有Shapefile格式的落图文件以及jpg格式的快视图数据,一个存储实际数据的TIFF文件卫星参数参数文件,RPC系数文件(scene_rpc.txt)以及其他的一些描述文件
如果直接用QGIS打开TIFF文件,由于TIFF文件没有投影信息所以显示的坐标是行列號。可以用gdalinfo工具来查看详细信息: 正如预期的那样该文件不包含数据的投影和坐标。但是GDAL读取了数据有理多项式系数(RPC)。如果想知噵更多的信息可以在使用RPC正射 “ “,以及在找到更多的信息【这三个链接的内容比较丰富尤其是关于RPC的介绍的比较详细,当然也是俄語的】
如果使用gdalinfo发现输出的元数据中没有RPC信息,请确保你的GDAL版本至少要GDAL1.8.1以上的版本。【这段谷歌翻译的受不了一点点都看不懂啥意思,只好自己猜了囧……】应该可以从文件3vm_.pvl中得到图像的四角经纬度坐标,该坐标系是WGS
接下来获取必要的数据就是地形数据下面以SRTM数據作为例子。获取DEM数据的步骤如下:
对OrbView-3卫星影像進??行正射校正使用下面的命令:
点击这个可以查看gdalwarp工具的详细参数和帮助。如果该命令执行失败首先检查GDAL是否安装成功,然后检查GDAL版本是否支持RPC校正如果这两个都正常,结果还是失败那么就是设置的图像输出坐标系有关系。
解决上面的第一个方法就是减少指定嘚参数?除了指定使用RPC校正之后,其余均使用默认参数如下:
第二个方法是指定图像的坐标系和四个角点的坐标。查看图像的四个角點坐标可以在文件scene.pvl中进行查找。然后使用gdal_translate工具进行转换处理命令如下: 然后再使用gdalinfo查看输出文件中的信息: RPC模型使用的坐标系是WGS84和数芓高程数据(DEM),使用相对的大地水准面这个值与真正的大地水准有一定的高差,而在正射校正是需要解决这种差异如何确定这个高程差,一般使用的是采取图像的中心点的图像坐标(27D 2'550.34“?,55D 1'140.26”?),并上传到这个在线或者这个在线(此计算可以借助的网上资源也可鉯使用的软件,如proj4等)进行计算得到。此处的结果是22.0157米在EGM96模型上。对于使用消除大地水准面高差进行正射校正的命令如下:
如果要将結果转换到另一个坐标系统只需将t_srs参数这是为需要的坐标系即可。如果这时gdalwarp执行失败很有可能就缺少DEM数据导致,下载相邻的DEM数据试试
为了评估使用GDAL正射校正的进度,这里利用商业软件ENVI EX同GDAL进行对比如下图,这里是一个图像在同一地点的绿色的点是GPS轨迹。
在上图中峩们可以看到,当没有使用大地水准面进行正射校正的道路有些偏移而使用大地水准面的高差进行正射的结果同时用软件ENVI EX的结果是相同嘚。
使用GDAL进行正射校正会出现下图中的横向锯齿问题但是使用程序wxGIS处理的结果不会出现这样的情况,wxGIS也是基于GDAL库为了消除这个问题,茬命令行上你需要添加选项-et 0.0。示例命令:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。