ArcGIS QGIS ENVI FME 四种主流栅格镶嵌工具对比
​前言:比较 ArcGIS QGIS FME ENVI 这四种专业软件工具的栅格镶嵌速度,帮助你做出最好的选择。到底谁最快,快来看一看... |
​
​
​
比较说明
说明“执行栅格镶嵌完成后,将结果完整保存下来。” 这是一个完整的测试过程,必须将镶嵌完成的结果保存到本地才行。 完成一次测试过程,记录一次完成时间。 另外保存下来的栅格像元输出类型都设置为16位的无符号整型格式,即 16bit unsigned ; 输出文件格式依然为 tif。 每次仅仅开启需要进行栅格镶嵌的软件。
配置情况使用的是自己的旧笔记本,已经是时代的眼泪了。不过也要开启倔强的性能模式。 CPU i5-7300HQ 基准频率2.5GHz,睿频3.2GHz; GPU GTX1050; 然后这些软件都是安装在固态硬盘中。
版本号ArcGIS 10.3 版本 未开启64位 gp,启动硬件加速模式; QGIS 3.16 版本; ENVI 5.3.1 64位 非 Classic 版本; FME 2018。
​
​
数据处理
SRTM 数据,就是高程栅格, 文件后缀为 HGT。 共24幅影像。
​ArcGIS 未镶嵌前 hgt格式
​
由于不知道是什么原因,ENVI5.3 sp1 暂时无法打开 HGT 格式的文件。 为了让每个软件工具都能打开文件,所以现在要将所有 HGT 格式转换为最为常见的 tif 格式。
使用 ArcPy 进行批量转换,代码量也很小:
- # -*- coding:utf-8 -*-
- # -------------------------------------------
- # Name: readraster
- # Author: Hygnic
- # Created on: 2021/4/19 23:31
- # Version:
- # Reference:
- """
- Description: 将Hgt文件转换为栅格tif
- Usage:
- """
- # -------------------------------------------
- from __future__ import absolute_import
- from __future__ import unicode_literals
- import os
- import arcpy
- ​
- ​
- arcpy.env.workspace = r"E:\MyD\dem\chengdu\t"
- arcpy.env.overwriteOutput = True
- ​
- ​
- class HGT2TIF(object):
-
- def __init__(self, hgt):
- self.hgt = hgt
-
- # function
- self.convert()
- ​
- def convert(self):
- raster = arcpy.Raster(self.hgt)
- name = os.path.basename(self.hgt) # N28E104.hgt
- purename = os.path.splitext(name)[0]
- raster.save("{}.tif".format(purename))
-
-
- if __name__ == '__main__':
- dir_path = r"E:\MyD\dem\chengdu\H48"
- hgt_files = os.listdir(dir_path)
- for hgt in hgt_files:
- hgt_path = os.path.join(dir_path, hgt)
- HGT2TIF(hgt_path)
复制代码
使用 arcpy.Raster 创建栅格对象,与栅格对象关联的栅格可使用 save 方法保存。 dir_path 是存放 HGT 文件的地址。
运行代码后,获得了栅格 tif 格式的影像。
​ArcGIS 未镶嵌前 tif格式
​
​
​
ArcGIS 栅格镶嵌
第一个测试的就是大家使用非常多的 ArcGIS desktop 软件,这个软件自然不必多说。其实我更想使用 ArcGIS pro 不过没有钱买不起,也无法破解。先打开ArcMap,打开工具栏; 使用镶嵌至新栅格工具进行镶嵌。该工具位于数据管理工具->栅格->栅格数据集->镶嵌至新栅格。
参数设置如下:
重复运行几次后的时间消耗表如下:
| 花费时间(秒) | 第一次 | 7.36 | 第二次 | 7.55 | 第三次 | 7.32 |
所以使用 ArcGIS 执行栅格镶嵌的时间就是7秒多。
​
​
QGIS 栅格镶嵌
QGIS,目前最火热、社区最活跃的开源 GIS 平台。打开 QGIS,使用 Merge 工具。 该工具来自于 GADL 包。位于QGIS 右侧工具栏,GDAL->Raster miscellaneous->Merge。 或者在上方工具栏中快捷打开
​Note: 该功能需要开启核心插件 GDAL 工具,该插件默认开启。但是如果找不到该工具的话就去设置中开启该核心插件。 |
​
栅格镶嵌参数设置如下:
其运行速度让人惊讶不已
其运行时间在2.4~2.57秒之间,速度完全秒杀了 ArcGIS,当然情理之中,毕竟一个20岁年轻人打一个60岁的中老年人。
​
​
ENVI 栅格镶嵌
ENVI 是图像处理和分析的行业标准软件。 图像分析人员、GIS 专业人员和科学家可以使用它从地理空间影像中提取及时、可靠、准确的信息。 ENVI 的各种功能经过科学验证,并且易于使用,同时与 Esri 的 ArcGIS 平台紧密集成。
作为专精遥感影像处理的 ENVI 来说,在栅格数据处理的强大不必多说。 但是就其速度而言能打败 QGIS 吗? 打开 ENVI ,添加数据。 在主界面的右边找到 Seamless Mosaic 工具,单击打开,进行镶嵌操作。
由于现这个版本不会显示工具运行的时间,故运行时间使用手机秒表计算。 运行时间为:20.5秒。确实时间挺长的。
但是 ENVI 栅格镶嵌方面的选项是最多的,同时各种效果和辅助线能帮助操作人员更精细化的操作。
​
​
FME 栅格镶嵌
按照官网的话来说,FME(Feature Manipulation Engine) 是一个对空间数据有着广泛支持的数据整合平台,是加拿大Safe Software公司开发的空间数据转换处理系统。
FME 不仅能在数百种空间数据和非空间数据之间进行转换,还能在空间数据的基础上对其进行空间分析、投影变换、计算等。 无需用户在不同的数据格式之间解码转换,即可构建自动化的工作流。
打开 FME workbench 直接搜索 mosaic,然后选择 RasterMosaicker 转换器(只要是栅格镶嵌,如果记不到名字,进入软件直接搜 mosaic 就行,这些软件关于栅格镶嵌工具的名称基本都是这个)。
添加一个读取器(黄色部分),读入 tif 文件,然后连接上左侧的 RasterMosaicker。
添加一个输出转换器,设置输出地址和输出格式,输出栅格名称为 all_fme。
点击上方 按钮,运行栅格镶嵌工作流,运行时间如下:
2.7秒,速度和 QGIS 一个等级。
​
​
结论
镶嵌结果4种软件工具最后镶嵌的成果基本一致,如下图,所以放上一张展示一哈:
时间比较一个程序运行的时间是分为几部分了,有单纯的 CPU 计算工作的时间,也包括了各种系统调用的消耗。 所以只能笼统的做一个比较; 同时由于测试的数据量不大,测试结果不能100%代表这4个程序在运行大量级栅格时的表现。
测试结果:
软件 | 平均耗时(秒) | ArcGIS 10.3 | 7.41 | QGIS 3.16 | 2.45 | ENVI 5.3.1 | 20.5 | FME 2018 | 2.82 |
ArcGIS desktop 10.3 版本已经很老了,历史很长,为了维护整个系统的稳定一定也有了很重的历史包袱 。所以时间较长可以理解; Ersi 公司已经推陈出新,投入到了新一代的 ArcGIS pro,相信 ArcGIS pro 的速度不会让人失望。
ENVI 在内部实现栅格镶嵌时的判定应该比较多吧,毕竟选项最多。可是20s的速度还是让我比较失望,可能 ENVI 在大量级数据处理上表现会好些吧; 尽管如此,使用 ENVI 提取、分析、计算遥感影像的数据依然是非常热门的选择。
QGIS,开源软件,没有 ArcGIS 的历史负担。前进势如破竹,其高性能表现让人惊讶。
FME 作为商业软件,行业级别的协议和标准。同时深耕于数据领域,在这方面的速度当然不会让人失望。
所以呢,综上所述,需要进行大批量的栅格镶嵌推荐使用 FME,毕竟是商业软件,稳定性不会太差。如果是好用免费的话推荐使用 QGIS。
​
​
结束语
日新月异,希望大家不要再抱着 ArcGIS desktop 不放,如今当 ArcGIS 已经广泛应用于政府单位的时候,你更应该朝前看,去学习拥抱更新、更先进的东西。 你应该走在客户的前面,在前面等他。
​
​
​分享GIS,不止于Python。荟GIS精粹,关注我,带你飞!
​
|