前言:比较 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.37.41
QGIS 3.162.45
ENVI 5.3.120.5
FME 20182.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精粹,关注我,带你飞!(长按扫码也行)
欢迎交流