分享

ArcGIS QGIS ENVI FME 四种主流栅格镶嵌工具对比

 GIS荟 2021-09-19
前言:比较 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精粹,关注我,带你飞!
(长按扫码也行)


欢迎交流

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多