RasterConvolver示例:栅格坡度计算

2023-10-28 18:30

本文主要是介绍RasterConvolver示例:栅格坡度计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RasterConvolver转换器在FME 2018.1+中可用。

栅格坡度计算

FME已经有从栅格要素直接计算坡度的转换器;但是,RasterConvolver也可以用于创建相同的结果,栅格DEM卷积是一个很好的例子。

卷积是一个在栅格要素和数字矩阵(核)之间进行的数学运算。操作和核的定义通常叫做滤波

这个练习是用多种方法对栅格要素进行卷积,通过合并结果得到解决方案的很好的示例。

下载

Source Dataset

Completed Workspace as a Template

源数据

这些示例的源数据是CDED格式的栅格DEM。在FME Data Inspector中看起来是这样:

https://knowledge.safe.com/storage/attachments/18818-rasterconvolverslopes1.png

 

单元格的值表示高程。颜色越浅,海拔越高。较暗的区域代表低洼地区。

分布说明

1. 启动FME Workbench,在空白画布中开始。从菜单栏中选择 Readers(读模块) > Add Reader(添加读模块)

设置数据格式为Canadian Digital Elevation Data (CDED)U.S. Geological Survey Digital Elevation Model (USGSDEM)——这两个名字是同一种格式。

选择下载的数据作为源数据。

2. 在画布中添加一个RasterConvolver 转换器,然后把读模块要素类连接到该转换器。

打开参数对话框。选择Line Detection: Horizontal滤波

https://knowledge.safe.com/storage/attachments/18821-rasterconvolverslopes4.png

 

这个滤波识别东西(左右)方向的线。

3. 在画布中添加第二个RasterConvolver转换器,并把读模块要素类连接到该转换器:

https://knowledge.safe.com/storage/attachments/18822-rasterconvolverslopes5.png

 

打开参数对话框,这次选择Line Detection: Vertical滤波。

这两个滤波识别水平和竖直方向的坡度。这两种结果本身都差强人意,但可以组合在一起以得到所需的结果。

4. 在画布中添加一个RasterExpressionEvaluator转换器,先不连接任何对象,打开参数对话框。

设置Mode参数为Two Rasters

https://knowledge.safe.com/storage/attachments/18823-rasterconvolverslopes6.png

 

Band Expression(s)字段,设置InterpretationPreserve。在Expression字段,输入:

换言之,我们把两个栅格要素合并到一起。单元的新值为栅格A值的平方加上栅格B值的平方再开方。

https://knowledge.safe.com/storage/attachments/18824-rasterconvolverslopes7.png

 

关闭参数对话框,将两个RasterConvolver的输出端口连接到RasterExpressionEvaluatorAB输入端口:

https://knowledge.safe.com/storage/attachments/18825-rasterconvolverslopes8.png

 

5. 运行工作空间,使用缓存要素或Inspector转换器来查看RasterExpressionEvalautor 的输出。结果看起来是这样:

https://knowledge.safe.com/storage/attachments/18826-rasterconvolverslopes9.png

 

可选步骤

我们可以使用一些可选步骤来确认结果。

6. 因为FME中已经有一个RasterSlopeCalculator 转换器,在工作中添加一个该转换器。将读模块要素类连接到这个转换器上:

https://knowledge.safe.com/storage/attachments/18828-rasterconvolverslopes10.png

检查转换器的参数,并设置Output Measurement 参数为"Percent Rise"。运行工作空间的这部分,检查输出结果,确保它看起来和RasterConvolvers创建的一样。

7. 两个结果应该看起来一样,但是并不意味着它们是完全相同的。为了检查,在RasterExpressionEvaluatorRasterSlopeCalculator转换器后都添加RasterStatisticsCalculator转换器。打开参数对话框,设置为波段0统计最小(minimum)、最大(maximum)和and平均(mean)值。

https://knowledge.safe.com/storage/attachments/18829-rasterconvolverslopes11.png

因为重新运行工作空间并检查两个栅格要素的输出。你将注意最小、最大、平均值并不一样。因此数据可能具有相同的坡度,但并不是完全相同的值。如果我们只关心 图像,那么任何一个结果都可以;如果我们关心实际的值,我们可能更喜欢RasterSlopeCalculator,它的值为坡度百分比。

 

这篇关于RasterConvolver示例:栅格坡度计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295107

相关文章

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

SpringBoot 中 CommandLineRunner的作用示例详解

《SpringBoot中CommandLineRunner的作用示例详解》SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的... 目录1、CommandLineRunnerSpringBoot中CommandLineRunner的作用

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主