FME学习之旅---day28

我们付出一些成本,时间的或者其他,最终总能收获一些什么。

教程:CSV 入门

逗号分隔值 (CSV) 是一种以 ASCII 文件格式存储结构化信息的方法,从而使其成为一个非常简单的数据库。这使其成为电子表格、数据库和其他软件系统之间交换信息的非常流行的格式。

在 FME 中,CSV 被视为一种数据库格式。文件中的每一行都是一条记录,记录中的每个字段之间都有一个逗号(或其他)字符。

在 CSV 文件中,通常有一个标题行来提供字段的名称。FME 可用于将 CSV 数据转换为其他表格格式,例如 Excel、Oracle、SQL Server 或 XML。

查看和检查 CSV 数据

第 1 部分:检查表格数据

1.添加读模块,添加CSV格式的数据集

2.设置参数

在Visual Preview中检查数据之前,我们需要确保预期的格式正确。
在阅读器的“参数”中,在“字段”部分下,有三个参数:“分隔符”、“字段名称行”和“数据起始行”。分隔符是分隔 CSV 文件中每个属性的字符。通常,这设置为逗号“,”,但它也可以是其他字符,如分号“;”、管道“|”或制表符或多个空格。字段名称行是指读取后将用作属性标题(属性名称)的行。最后,数据起始行是指记录(属性值)开始的 CSV 行。
在此示例中,我们将分隔符设置为 auto,这将扫描文件中最常见的字符,并确定分隔符,在本例中,它将是一个逗号。请注意,在预览的顶部,前四行不是表的开头,而是有关表的标题信息。我们可以通过将字段名称行设置为 5 来忽略这些行,FME 会自动将数据起始行更改为 6。如果数据从不同的行开始,则可以手动设置。

最后,在单击“确定”之前,使用 CSV 时的一个好做法是更改将在读取器要素类型上显示的名称。默认情况下,“要素类型名称”设置为“从格式名称”,这将导致显示“CSV”。相反,将此参数更改为 From File Name(s),这将会显示文件的名称。当画布上有多个 CSV 阅读器时,这很有用。

3. 打开视觉预览

第 2 部分:检查空间数据

1.添加读模块,添加CSV格式的带经纬度坐标的空间数据集

2. 查看参数
在 CSV 参数中,我们需要确认 x 和 y 坐标设置正确,然后才能继续。FME 可以自动检测格式在数据集中何时具有纬度和经度坐标,并自动将它们分别设置为 y_coord 和 x_coord。在“参数”对话框的“属性”部分下,确保“纬度”和“经度”已y_coord,x_coord指定为值。如果没有,请将“属性定义”设置为“手动”,然后更正“值”。

将要素类型名称更改为“从文件名”,然后单击“确定”

3. 设置坐标系

我们需要定义坐标系,在坐标中输入 LL84

4. 打开可视化预览

如何将CSV转换为Microsoft Excel

1.添加读模块

        将新的 Reader 添加到画布,并将格式设置为 CSV。对于数据集并选择附加的CellSignals-Small.csv文件,然后设置坐标。系统符合 LL84。在参数中,确认“纬度”和“经度属性”分别设置了值 y_coord 和 x_coord。

2.使用 AttributeSplitter 转换器拆分字段(属性)

在参数中,将“属性”设置为“拆分为代码”,将“格式字符串”设置为 3s15s。
格式字符串使用 #s#s#s 格式 - 定义每个部分宽度的整数,用“s”字符分隔。这会将字段(属性)拆分为前导三个字符和尾随字符(最多 15 个),并将它们填充到列表数组中。

3. 使用 AttributeManager 转换器设置字段(属性)

4.添加编写器并设置参数

将 Microsoft Excel 编写器添加到画布,将文件另存为 CellSignals.xlsx。

我们希望为数据集中显示的每个 ID 创建一个新的 Excel 工作表,例如 ABC、ABD、TXU 和 TXV。我们可以通过执行特征类型扇出来实现这一点。打开写入器参数,然后为工作表名称输入 @Value(ID)。然后切换到“用户属性”选项卡。

5.运行后成果预览

属性处理示例工作空间(CSV 到 MapInfo)

1. 读取 DataPoints CSV 文件

将 CSV 阅读器添加到画布,以 CellSignals.csv 形式阅读。在参数中,将经度和纬度的数据类型分别设置为x_coordinate和y_coordinate。将坐标系设置为 LL84,然后单击确定。

2. 测试空值、缺失值或空值

将 NullAttributeMapper 转换器添加到工作区。NullAttributeMapper 转换器用于评估 null、missing 或空值的选定属性,将这些属性值映射到新值“missing”,并将新映射的缺失值路由到检查器进行进一步评估。

3. 删除缺失值

        现在我们已经映射了所有 null、missing 或 empty 值以读取为缺失值,我们可以轻松地将它们过滤掉。将 Tester 转换器添加到画布中。测试转换器用于评估对特征的一个或多个测试。我们将使用测试器来测试纬度、经度、功率、质量和num_measures是否包含缺失值。在 Tester 参数中,将 Left Value 设置为 latitude,将 Operator 设置为 Is Missing,然后启用 Negate,对 longitude、Power、Quality 和 num_measures 重复此操作,您可以使用 Duplicate 按钮并更改属性。最后,将“通过条件”设置为“所有测试 (AND)”。

4.删除重复项

我们有很多记录,有时会发生重复,幸运的是,我们可以使用 DuplicateFilter 轻松删除重复的纬度/经度对。添加 DuplicateFilter 并将其连接到测试器上的 Passed Output 端口。打开参数,对于关键属性,选择纬度和经度。

5. 格式化日期

接下来,我们需要重新格式化日期字段record_tstamp因为它包含小时和分钟,我们只对日期感兴趣。为此,我们将使用 DateTimeConverter 转换器,它用于获取以特定方式格式化的输入日期/时间,并以另一种方式输出。为了使 DateTimeConverter 正常工作,您需要知道输入日期的格式设置方式,因此最好事先检查数据。

record_tstamp的格式为 2011 年 4 月 12 日 1:04,这意味着日期可以包含一个或两个值,月份可以包含一个或两个值,年份是全年,小时包含一个或两个 24 小时格式的值,分钟包含两个值。对于输入格式,这看起来像这样:

%e/%N/%Y %k:%M

我们希望日期有两个值,月份有两个值,年份为满,都用反斜杠分隔,看起来像 04/12/2011,对于输出格式,它是:

%m/%d/%Y

若要找出所需的查询,DateTimeConverter 参数中有一个快速参考菜单。

在 DateTimeConverter 中,将输入格式设置为 %e/%N/%Y %k:%M,将输出格式设置为 %m/%d/%Y

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

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

相关文章

【Qt秘籍】[004]-Qt中的重要工具-介绍

QtCreator概览 当我们打开系统的菜单翻到刚刚下载的Qt文件,里面的内容却让我们眼花缭乱。 不过别急,下面我们将一一解析。 1.Assistant Qt自带的离线版本官方文档 2.Designer Qt图形化设计界面的工具,通过拖拽控件快速生成界面&#xff0c…

Linux 基础笔记(一)

1.ctrl A : 到开头位置; 2.CtrlE : 到结尾位置; 3.ctrlU: 删除光标前内容; 4.ctrlK:删除光标后内容; 5.ctrlL: 清屏; 6.ctrlC:结束当前命令操作; 7.ctrlD:退出当…

2024 最新版 Navicat 17 下载与安装步骤及演示 (图文版)

Navicat 是一款专业的数据库管理工具,支持多种数据库类型,包括 MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、Redis、MongoDB 和 SQLite。Navicat17包含的版本如下Navicat Premium 17, Navicat 17 for MySQL, Navicat 17 for Oracle, Navicat 17 fo…

YOLO算法输出图像含义以及理解

背景 近日使用YOLO算法进行目标检测任务的时候,对于输出的几张图片产生了疑惑,故在此复习与巩固。 图片说明 confusion_matrix(混淆矩阵): 混淆矩阵是一种用来衡量分类模型性能的表格。横坐标为实际真值&#xff0c…

CANDela studio使用小tips

打开软件的时候注意先选择英文,因为双击CDD/CDDT文件默认打开的是德文,所以最正确的打开方式是先打开CANDela studio,再导入CDD,不仅可以避免用德文打开,还能避免vector软件的bug。 不同的版本有不同的权限。 admin有…

TOPSIS综合评价

TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution)是一种常用的综合评价方法,该方法根据有限个评价对象与理想化目标的接近程度进行排序,是在现有的对象中进行相对优劣的评价。 TOPSIS法的原理是通过…

Java-文件操作

一、创建文件 1.创建文件夹 创建文件夹时,注意两个条件,该路径对应的是否为目录(dir),该文件夹是否存在。 File Apathnew File("./文件夹A"); //当前路径文件夹的存储路径if(!Apath.exists() &&am…

JAVA基础----线程池

①什么是线程池? 线程池是对所有线程进行统一的管理和控制,从而提高系统的运行效率。当我们要使用线程的时候可以直接从线程池中拿,用完也不用自己去销毁,省去创建和销毁的时间,提升系统的响应时间。 ②线程池的七大核…

单链表的相关题目

1.删除链表中给定值val的所有结点 public void removeall(int key) {//由于是删除链表中所有和key值相同的结点,所以可以设置两个ListNode类型的数据,一个在前面,一个在后面.//直到前面的走到链表的最后,这样完成了遍历.//先判断一下这个链表是否为空if(headnull){System.out.…

【ArcGIS For JS】前端geojson渲染行政区划图层并加标签

原理 通过DataV工具 生成行政区的geojson(得到各区的面元素数据), 随后使用手动绘制featureLayer与Label,并加载到地图。 //vue3加载geojson数据public/geojson/pt.json,在MapView渲染上加载geojson数据 type是"MultiPolygon"fetc…

Android项目实战 —— 手把手教你实现一款本地音乐播放器Dora Music

今天带大家实现一款基于Dora SDK的Android本地音乐播放器app,本项目也作为Dora SDK的实践项目或使用教程。使用到开源库有[https://github.com/dora4/dora] 、[https://github.com/dora4/dcache-android] 等。先声明一点,本项目主要作为框架的使用教程&a…

Unity【入门】环境搭建、界面基础、工作原理

Unity环境搭建、界面基础、工作原理 Unity环境搭建 文章目录 Unity环境搭建1、Unity引擎概念1、什么是游戏引擎2、游戏引擎对于我们的意义3、如何学习游戏引擎 2、软件下载和安装3、新工程和工程文件夹 Unity界面基础1、Scene场景和Hierarchy层级窗口1、窗口布局2、Hierarchy层…

多分支拓扑阻抗匹配

最近测试信号质量,发现在有过冲、振铃等问题的时候大部分硬件工程师喜欢直接调大匹配电阻或者减小驱动电流,虽然这种操作是有效果的,但是我认为应该还可以更严谨的计算下,而不是选几个电阻多次尝试,显得不是很专业。 …

推送镜像到私有harbor仓库

本地已制作镜像:tomcat-8.5.100-centos7.9:1.0。 本地已经搭建私有仓库:harbor.igmwx.com。 现在需要把镜像 tomcat-8.5.100-centos7.9:1.0 推送到harbor。 (1)查看本地镜像:sudo docker images zhangzkzhangzk:~/d…

java 对接农行支付相关业务(二)

文章目录 农行掌银集成第三方APP1:掌银支付对接快e通的流程1.1 在农行网站上注册我们的app信息([网址](https://openbank.abchina.com/Portal/index/index.html))1.2:java整合农行的jar包依赖1.3:把相关配置信息整合到项目中1.4:前端获取授权码信息1.5:后端根据授权码信…

【动态规划】速解简单多状态类问题

目录 17.16 按摩师 题⽬描述: 解法(动态规划): 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化: 4. 填表顺序 5. 返回值 代码 总结: 213.打家劫舍II(medium&#x…

C++ 基于vs2019创建并使用动态链接库(dll)

库的基本认识 静态库(Static Library) 基本概念:静态库是在编译时链接到目标程序中的库文件。它包含了程序运行所需的所有函数和数据,这些函数和数据会被直接嵌入到最终生成的可执行文件中。静态库通常以.a(在Unix-l…

分频器对相位噪声影响

本文我们将分析输入时钟被N分频之后的输出时钟的相位噪声如何变化。首先理想分频器的意思是我们假设分频器不会引入附加相位噪声,并且输入和输出时钟之间没有延时。我们假设每一个输出边沿的位置都完美的与输入边沿相对齐,这样便于分析。由于每N个输入时…

[FlareOn6]Overlong

很简单的逻辑 一度让我以为是加保护了 运行告诉我从未编码,懵逼 动调你也发现,你根本没什么可以操作的空间,密文什么的,都是固定的 但是这里大家发现没 我们只加密了28个密文 然后text是128 也就是 0x80 是不是因为密文没加密完呢 我也懒得去写代码了 汇编直接修改push 字…

axios和ts的简单使用

按照官网的使用案例简单记下笔记 1:安装 npm install axios 2:案例 一个简单的config配置信息 // 发起一个post请求 axios({method: post,url: /user/12345,data: {firstName: Fred,lastName: Flintstone} }); case // 在 node.js 用GET请求获取…