以分割栅格为例实现FME模板的方案优化

news2025/7/21 10:49:55

一、利用FME分割栅格

(一)问题的产生

对于FME使用者来说,利用FME完成栅格的批量分割是一件极为平常且容易的事情。只需要输入栅格和确定分割方案就可以实现利用FME对栅格数据的分割,再配合FME的“扇出”功能,就能够实现栅格文件的自动命名与输出。

 图一 FME分割栅格模板示意图

可是,如果我们面对的是一个SuperBigTif呢?

有这样一张Tif数据,范围覆盖全国,文件大小4.8个T,没有影像金字塔文件。需要将其发布到地图服务。由于没有影像金字塔,不支持服务发布,需要先对Tif进行重构影像金字塔。

在构建影像金字塔的过程中,由于数据过大,没有能够成功加载Tif数据的软硬件环境,导致无法对其进行影像金字塔的构建。

 图二 中国行政范围示意图(来源于高德)

需要对4.8个T的庞然大物进行分割,使得满足现有软硬件环境构建影像金字塔的服务。有了这个想法的时候,问题好像又回到了原点——无论是ArcGIS还是ArcGIS Pro,现有的硬件环境下都没有办法对这个Tif进行处理,经过尝试其他的软件,如Global Mapper、ENVI、ERDAS这些软件也因为其巨大的体积而无能为力。

实际上,FME常规的分割栅格方案对这个巨大的栅格进行分割也是必然会失败的,因为FME在现有硬件条件下也无法一次性完全将这个超大的Tif读取出来,最终会因为内存溢出而失败。

(二)解决的思路

FME在读取栅格数据(tif、img……)的时候就存在一个只读取指定范围部分的功能,这个特殊的功能就为我们处理超大栅格数据的时候留下了一线生机。我们一次只需要读取这个数据的小范围区域即可,读取多次后就能够覆盖读取全部范围。

这个范围参数在添加读模块的时候是没有办法将其设置为发布参数的,在读模块添加完成后在导航栏里面就可以进行参数的发布。借用发布参数我们就可以利用批处理来实现自动批量分幅。

根据全国的范围找来了1:10万标准分幅图,准备利用分幅图来提取范围作为批量处理的基础。

利用FME软件中WorkspaceRunner批处理转换器实现批量的处理。

(三)实现过程

1、制作基础转换模板:

(1)打开FME软件(建议使用64位的FME可以提高内存的使用率);

(2)添加TIFF读模块,并设置指定区域读写模式。 “Clip to Search Envelope”参数一定要勾选,这是关键;

 图三 FME中TIFF读模块设置指定读取区域示意图

(3)将指定区域参数设置为发布参数;

 图四 在导航栏进行参数发布

(4)创建输出tif文件名发布参数;

(5)添加写模块,并设置输出路径参数。

图五 基础模板及参数示意图

基础模板没有用到Clipper这个转换器,是因为设置了“Clip to Search Envelope”,也可以实现裁剪功能。

2、制作批量转换模板:

(1)打开FME软件(建议与基础模板同一个版本);

(2)添加1:10万标准分幅数据,作为批量模板的驱动因子;
 

 图六 1:10万标准分幅图

(3)计算每个分幅的四至坐标信息;

(4)添加“WorkspaceRunner”转换器并设置相关参数,并将其进行发布。

 图七 WorkspaceRunner参数设置

 想·图八 批量分割栅格模板

二、FME模板的优化思路

(一)抓住源头

FME是最适合数据生产、数据处理的一款软件,这是毋容置疑的,在众多ETL/自动化工具中FME基本免去了代码环节,适合一线数据处理人员进行快速的学习运用。并且在工具开发成本上是最为节约的,最大程度避免开发项目的“眼高手低”(开发成本高利润空间少,开发成本低却又没人愿意开发),由一线人员直接从实际需求出发解决现场问题。

所以FME的核心是尽可能多的将多个独立的子功能镶嵌到项目生产的每个环节,如果能形成体系就最好不过了。

由此,FME模板优化的第一个核心就是:放眼项目技术体系,综合考虑子功能。将各个工艺环节进行连通,形成工艺上的衔接,这样就可以避免因为工艺衔接而导致的模板功能的无法使用,减少意外情况的冗余开发。

(二)理解FME

我们在FME相关的技术推广普及中都会提及到一个词“快进快出”,FME是一个数据处理的流程,每一个模板都是经历数据“从左向右”的流水线模式,上一个节点任务完成后才能进行下一个节点任务。就像施工进度计划图一样,最长工期一定是整个网络路径中最长消耗时间。优化模板的方案以应该是从减少最大消耗时间开始。

 图九 施工进度计划网络图

减少时间消耗实现“快进快出”的方法:

  1. 合理分配储存数据,杜绝出现全国范围一张TIF的恐怖场景,减少读写压力。
  2. 提升软硬件配置,这是一个客观的物质基础,8GB内存条的缓存永远无法是128GB内存条的缓存相比拟的(非“唯武器论”)。
  3. FME的选择上使用64位软件的处理效率明显高于32位软件(但是需要考虑少数只支持32位软件的例外)。
  4. 尽量优化模板中的处理环节,避免或者减少阻塞类转换器的使用,比如:Sorter、FeatureMerger、Clipper、StatisticsCalculator……
  5. 学会利用批处理“WorkspaceRunner”功能,这里有一个误区就是很多使用者都希望一次做完整个数据。我们的核心是快速的得出正确的结果,我们需要的是这个功能能够正常运算并输出结果,而不是一次计算得出结果,如果涉及空间几何运算,数据量的“1+1=2”所花费的时间而不是时间消耗上的“1+1=2”,有可能是数倍不止。科学的化繁为简,将原本拥堵在高速上的车流疏通到徐徐前行是批处理的最要思想。
  6. 发掘FME功能上的其他优点,比如有_xmin,_ymin,_xmax,_ymax这四个参数,我们是通过多次“VertexCreator”来实现BOX还原还是通过“2DBoxReplacer”一步来完成呢,只有逐步去发掘FME本身的优点才能减少模板过程中的弯路。
  7. 多多总结积累FME模板过程的优秀的技巧,比如,读写模块本身就支持我们一次性读取某个数据源的全部要素和自动写出模式。DWG文件中有100个图层,我们是选择先读取全部后根据图层名称来筛选的方式还是单个图层读取后再来逐个连接的方式呢?事实上整个过程中将足够的技巧积累后我们写出的模板会减少很多意外报错情况的发生,从而从另一个层面实现了模板的优化。
  8. 好的模板都是优化修改而来的,这是一个共识,在不断的数据运行处理的过程中,我们通过不断暴露的问题来优化我们的解决方案才能发现前面模板中的不足并加以改进,一旦到了改无可改的地步了,这个模板也一定是最优化的方案了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebDAV之葫芦儿·派盘+多彩笔记

多彩笔记 支持webdav方式连接葫芦儿派盘。 还记得小时候那款带密码锁的笔记本?有没有好用的笔记app可以将笔记加上密码,不怕小秘密被偷看?推荐朋友们体验下多彩笔记。 多彩笔记是一款简单又精致的记事软件,用户可以在多彩笔记app中存储,编辑,删除或查找记录,对于写作…

干货 | 如何获取Servlet内存马?

前言 对于回显的获取主要是在ApplicationFilterChain类的lastServicedRequest / lastServicedResponse两个属性,是使用的ThreadLocal进行修饰的,并且,在执行请求的过程中,通过反射修改属性值,能够记录下当前线程的req…

CS224W 7 A General Perspective on Graph Neural Networks

目录 A General GNN Framework A single GNN layer 基本形式 Classical GNN Layers: GCN Classical GNN Layers: GraphSAGE Classical GNN Layers: GAT 动机 Attenion Mechanism Multi-head attention Attenion Mechanism的优点 GNN Layer in Practice Stacking Lay…

股票交易接口软件服务涵盖范围有哪些?

通常所说的股票交易接口软件是指量化交易程序员们可以自行查询各大交易网站或交易所的股票历史数据及行情数据的工具,如:实时报价;走势图;价差图;基金、债券、期货、外汇、保险等各类金融数据查询等,进行数…

elasticsearch7.6安装教程及启动常见错误解决方法

elasticsearch就是一个类似数据库用来专门做搜索的一款工具,在大量的搜索条件下,效率很好,可以直接把它当成一个数据库。 1.打开官网 Download Elasticsearch | Elastic,下载历史版本 这里我选择7.6.1 然后点击linux sha 下载,我这里采用迅雷下载到本地后,再利用Xftp上…

【设计模式】装饰器模式( Decorator Pattern)

装饰器模式属于结构型模式,主要解决当系统需要添加新功能,需要向旧类中不断添加新的属性和方法,从而导致整个类的复杂度不断增长的问题。假如新加的代码仅仅是为了满足特定场景下才会执行的需要,那么就没必要全部写在主类中&#…

一个年薪20万软件测试工程师都具备的能力,你有吗?

今天和大家一起来讨论一下一个很火的问题:作为软件测试工程师需要具备哪些实力。 硬实力:学历技术 目前随着社会的发展,各个行业对岗位学历的要求也越来越高,尤其是对于工资水平高的技术岗位。 测试通用技能: 软件…

Revit中参数化弹簧族怎么做?

Revit中参数化弹簧族制作 第一步:新建族,族样板选择 “公制常规模型第二步:在平面视图中,在中心参照平面两端创建两条参照平面,等分标注,赋予其参数“一圈弹簧直径”,如图 1 第三步:…

环糊精-PEG-麦芽糖 maltose-Cyclodextrin 麦芽糖-环糊精

环糊精-PEG-麦芽糖 maltose-Cyclodextrin 麦芽糖-环糊精 英文名称:maltose-Cyclodextrin 别称:环糊精修饰麦芽糖,环糊精-麦芽糖 还可以提供PEG接枝修饰麦芽糖,麦芽糖-聚乙二醇-环糊精Cyclodextrin-PEG-maltose,环糊…

05、Spring事务详解

本文主要介绍Spring中的事务相关知识: 1、熟悉事务管理的三个核心接口 2、了解Spring事务的两种方式 3、掌握基于XML和注解的事务使用 1、Spring事务管理概述 1、事务管理的核心接口 1、PlatformTransactionManager PlatformTransactionManage接口是Spring平台提…

FineReport智能表格软件-JS实现大数据集导出(一)

前言 帆软FineReport大批量数据导出的时候,会对服务器、网络传输、数据库造成一定的压力。为了防止这样的风险,FineReport 11.0 新增了「大数据集导出」的功能,可直接根据数据集结果进行导出。 1.接口简介与注意事项 1.1 接口简介 大数据…

Redis订阅发布

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。(微信、微博、关注系统) Redis客户端可以订阅任意数量的频道 订阅发布消息图: 三个角色:消息发送者、频道、消息订…

VMware 安装Ubuntu22.04

0、前提条件 操作系统:Windows10 VMware Workstation版本:15.1.0 build-13591040 1、安装 下载地址:下载Ubuntu桌面系统 | Ubuntu 打开VMware,选择文件 -> 新建虚拟机 配置类型选择典型,单击“下一步”按钮 选择…

python操作Excel之提取字符串中的中文/过滤字符串(win32com)

Python实用篇-Excel1.前言2.关于Excel3.win32com库操作4.问题解决4.1.问题描述4.2.安装库4.3.编码与解决1.前言 本人大学期间自学了Python后,但是又因不是大数据相关专业,并且没有计划从事Python相关方向,之后就几乎没有怎么使用过Python了。…

智慧城市应用数据治理的作用有哪些?

智慧城市是基础设施发展的新热词。 主要是指在城市规划、设计、建设、管理与运营等领域中,通过物联网、云计算、大数据、空间地理信息集成等智能计算技术的应用,使得城市管理、教育、医疗、房地产、交通运输、公用事业和公众安全等城市组成的关键基础设施…

现代密码学导论-10-EAV安全

目录 3.2.1 安全的基本定义(EAV-安全) 不可区分实验 The adversarial indistinguishability experiment DEFINITION 3.8 EAV-安全的等价定义(一) DEFINITION 3.9 EAV-安全的等价定义(二) 证明EAV-安全…

[b01lers2020]Welcome to Earth

刚点进来会一直加载&#xff0c;然后跳转到了/die 看一下刚进来页面的源代码 <!DOCTYPE html> <html><head><title>Welcome to Earth</title></head><body><h1>AMBUSH!</h1><p>Youve gotta escape!</p>&l…

leetcode:1157. 子数组中占绝大多数的元素【暴力遍历 + 随机算法相信概率】

目录题目截图题目分析暴力二分随机二分总结题目截图 题目分析 一个很暴力的思路就是把每个num出现的idx记录起来&#xff0c;然后按出现的频率排序优化每次query&#xff0c;遍历每个元素和频率&#xff0c;频率如果已经比threhold小就没有看的必要&#xff0c;直接break如果比…

虎扑论坛数据分析

论坛为用户提供了相同的业余爱好&#xff0c;互动和交流的广阔平台&#xff0c;以及由此产生的庞大数据和复杂的用户交互场景也包含有价值的信息&#xff0c;本文关于虎扑论坛的帖子&#xff0c;个人信息分析&#xff0c;探讨虎扑论坛的用户是什么是什么特点&#xff1f;最近我…

Spring Cloud Stream绑定器架构解析与开发

Spring Cloud Stream绑定器架构解析与开发 根据不同的使用场景我们通常会选择相适应的消息中间件&#xff0c;例如对于日志收集场景可能会选择使用Kafka&#xff0c;对于订单场景通常会选择RocketMQ&#xff0c;不同消息中间件的客户端是不同的&#xff0c;我们需要针对不同消息…