CSV转Shape

本文介绍了如何利用FME模板将CSV格式的文本数据,包含经纬度信息,转换为Shape文件。主要步骤包括设置读模块参数,使用NeighborFinder、ListElementCounter+Tester、VertexCreator和LineCombiner等转换器,将点数据连接成线段。


前言

闲来无事,再来一发关于FME应用技巧的文章,文中不足之处还请指正。废话不多说,要进入正题了。

模板概述

首先看下模板的整体概览:


本模板的大致思路是这样的:

a)  读入以固定分隔符分隔的文本数据读入(如果源数据中的数据不是以固定分隔符进行分隔,则可以先进行数据整理、清洗,这不在本文讨论的范畴);

b)  将含有经纬度信息的数据矢量化为点(本文采用更简便的方式,直接在参数中选择数据中的XY信息,矢量化为点);

c)  使用临近查找转换器进行相邻点的连接;

d)  将短线段连接成长线段。

详细介绍

读模块参数设置:


经过这样的设置读入的csv直接就成了矢量点。

转换器设置

转换器概览

CSV 文件换为 H5 文件有多种方法,以下为你介绍不同场景下的换方式及示例代码。 ### 大量 CSV 文件写入一个 H5 文件制作数据集 当每一个样本的数据被写入一个 CSV 文件,需要将大量的 CSV 文件写入到一个 H5 文件中时,可以使用如下代码: ```python import os import sys import h5py import numpy as np ''' arg[1]: bins file folder path arg[2]: x of shape arg[3]: y of shape arg[4]: h5 file name ''' if len(sys.argv) != 5: exit(-1) data_folder = sys.argv[1] shape_x = int(sys.argv[2]) shape_y = int(sys.argv[3]) total_count = len([name for name in os.listdir(data_folder)]) h5f = h5py.File(sys.argv[4], 'w') dset = h5f.create_dataset('spectrum_bins', (total_count, shape_x, shape_y)) n = 0 for dp, d, name in os.walk(data_folder): file_path = os.path.join(dp, ''.join(name)) if os.path.isdir(file_path): continue print("open file ", file_path) csv = np.genfromtxt(file_path, delimiter=",", dtype='float32') dset[n, :, :] = csv n = n + 1 h5f.close() ``` 在运行此代码前,需在命令行中传入 4 个参数,分别为 CSV 文件所在文件夹路径、数据集的 x 维度、数据集的 y 维度以及要生成的 H5 文件名称。例如: ```bash python script.py /path/to/csv/folder 100 200 output.h5 ``` ### 多个文件夹下的 CSV 文件批量化为 H5 文件 若要将多个文件夹下的 CSV 文件批量化为 H5 文件,可使用以下代码: ```python import os import pandas as pd def csv_save_as_hdf(data_path): for dirpath, dirname, filenames in os.walk(data_path): for fname in filenames: file_name = os.path.join(dirpath, fname) if file_name.endswith('.csv'): df = pd.read_csv(file_name) floder, name = os.path.splitext(file_name) df.to_hdf(f"{floder}.h5", file_name) print(f'{file_name} 换成功啦!') print('-----------------------------------------------------------------------------------------------------------') os.remove(file_name) print('finished...') data_path = r"D:\wangxiaoying\shujuji\data" # csv 文件所存的位置 csv_save_as_hdf(data_path) ``` 你只需修改 `data_path` 为 CSV 文件所在的根目录,运行该脚本即可完成批量换,换完成后会删除原 CSV 文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值