制作读取文件夹型数据集的模板需注意的问题

原文发布时间:2013-11-04

原创:小新

对于文件夹型的数据集的定义可以参考视频培训的“重要术语”章节。按照我个人的理解,如果把图层或表理解为要素类的话,某种格式的一个文件不能再细分到图层时,则属于文件夹型数据集,一个文件即为一个要素类。像SHP、MapInfo TAB都是文件夹型的数据集。而Esri GDB、Esri MDB则是文件型数据集。

   通过读模块添加数据到工作空间时,默认以“Individual Feautre Types”(独立要素类)的方式将数据添加到工作空间中。以shp数据为例,一个shp文件为一个要素类,添加一个数据后将在画布中显示一个要素类。

图1 添加shp数据的读模块

 

 图2 画布中的要素类

 

右键单击该要素类,弹出属性框,在Feature Type Name中将显示当前添加的SHP数据的文件名。

 图3 读模块属性

这里显示的Feature Type Name意味着读模块每次处理时,只会处理要素类名称为“提供数据范围”的数据。由于SHP格式为文件夹型数据集,一个文件即为一个要素类。因此,如果制作好一个SHP模板,下次使用时,如果处理的SHP文件的名字不是“提供数据范围”,模板不会读取到任何要素,如下,我们运行模板时加载一个名字为“影像测试范围”的SHP数据,模板弹出如下提示:

 在模板中没有任何要素输出:

问题:那么这样就会导致如果我们需要批处理一批SHP数据,而这些数据名称不同时,将不能使用该模板进行处理。

解决方法:要使模板能处理名称不同的SHP数据,需要右键工作空间中的读模块,勾选“Merge Feature Type”,“Merge Filter”输入“*”,其中“*”表示通配符的意思。如果只输入一个“*”可以读取任意名称的SHP数据,如果想根据一定规则的文件名进行读取,可以通过Filter Type来进行控制。

关于“Merge Filter”(合并要素类过滤)的更详细的描述请大家参考毛毛虫的这篇文章:

http://blog.163.com/antufme@126/blog/static/140492492201010311546692/

在制作所有处理文件夹型数据集的时候,我们都要注意对读模块做类似的处理,否则将会导致数据不能读取的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你实现这个功能。首先需要明确一下问题的具体需求和条件: 1. 数据集的格式是怎样的? 2. 按分钟分割的意思是每个文件包含一分钟的数据吗? 3. 数据集的大小是否可以一次性读取到内存中? 假设数据集格式为csv,每个文件包含一秒钟的数据,数据集大小可以一次性读取到内存中。那么下面是实现的代码: ```python import os import pandas as pd # 设置数据集路径和分割后的文件夹路径 data_dir = 'path/to/data' output_dir = 'path/to/output' # 遍历数据集文件夹中的所有文件 for file_name in os.listdir(data_dir): # 读取csv文件 df = pd.read_csv(os.path.join(data_dir, file_name)) # 将时间戳转换为DatetimeIndex df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='s') df = df.set_index('Timestamp') # 按分钟进行分割 minute_groups = df.groupby(pd.Grouper(freq='1Min')) # 将每个分组保存为一个新文件 for minute, minute_group in minute_groups: minute_file_name = f"{file_name[:-4]}_{minute.strftime('%Y%m%d-%H%M%S')}.csv" minute_group.to_csv(os.path.join(output_dir, minute_file_name)) ``` 上面的代码中,我们使用了Pandas库来读取和处理csv文件。首先遍历数据集文件夹中的所有文件,对于每个文件,读取数据并将时间戳转换为DatetimeIndex。然后按分钟进行分割,将每个分组保存为一个新文件。新文件的命名方式为原文件名加上时间戳。注意,我们使用了strftime函数将时间戳转换为字符串格式,便于作为文件名的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值