2018.08.02 添加详细数据导出功能

本文详细介绍如何在订单量页面中增加详细数据导出功能,包括修改页面代码、添加按钮及实现导出方法的具体步骤。参考了现有导出方法并新增了UserTopExcelDetailsDownAction类。

添加详细数据导出功能
添加详细数据导出功能点击订单量跳转到详细页面右上角添加一个详细数据导出功能按钮
在这里插入图片描述

在这里插入图片描述
1.根据数据库URL /shipping/top.action
---->/shipping-platform/web/pages/shipping/users_top.jsp页面
参考excelDown的导出方法
---->点击订单量
------>/shipping-platform/web/pages/shipping/users_top_next.jsp页面
------>添加按钮toolbar:{ items:[{text:“详细数据导出”,click:excelDetailsDown,icon:“ok”},{line:true}]},
------>参考function excelDown(){}的导出方法
----->添加方法function excelDetailsDown(){

$("#searchFormId").removeAttr("action").attr("action","${pageContext.request.contextPath}/shipping/UserTopExcelDetailsDownAction.action?excelDetailsDown");
$("#searchFormId").submit();
$("#searchFormId").removeAttr("action").attr("action","javascript:void(0);");

}
------->参考/shipping-platform/src/com/teamsun/oms/internat/action/shippingUser/UserTopExcelDownAction.java类
----->添加/shipping-platform/src/com/teamsun/oms/internat/action/shippingUser/UserTopExcelDetailsDownAction.java类
---->添加excelDetailsDown导出方法

<think>我们正在处理ICESat-2 ATL08数据的批处理。根据用户需求,我们需要使用Python对多个ATL08文件进行批处理。ATL08数据是ICESat-2提供的陆地高程产品,通常包含经纬度、高程等信息。目标:批处理多个ATL08文件,提取所需信息(如高程)并进行分析或导出。步骤:1.获取文件列表:遍历包含ATL08数据的文件夹,获取所有.h5文件。2.读取每个文件:使用h5py或pandas(需要合适的读取HDF5的库)读取每个文件。3.提取数据:从每个文件中提取需要的数据,例如经纬度、高程、时间等。4.数据处理:对提取的数据进行必要的处理,如计算统计量、筛选、合并等。5.输出结果:将处理后的数据保存到新文件(如CSV)或进行可视化。注意:ATL08数据存储在HDF5文件中,结构复杂,需要了解其数据结构。根据官方文档,ATL08数据包含多个组(groups)和数据集(datasets)。例如,高程数据可能在`/land_segments/`组下。参考代码结构:我们将使用h5py库来读取HDF5文件,并利用pandas进行数据处理和导出。示例代码:```pythonimport h5pyimportpandas aspdimport osimportnumpyas np#设置输入和输出目录input_dir ='path/to/ATL08/files' output_dir ='path/to/output' #获取所有ATL08H5文件file_list =[ffor fin os.listdir(input_dir) iff.endswith('.h5')]#循环处理每个文件forfilenamein file_list:filepath= os.path.join(input_dir, filename)with h5py.File(filepath,'r') asf:#获取数据,具体路径需要参考ATL08数据结构#例如,ATL08数据中,陆地高程数据在'/land_segments'组#注意:不同轨道的数据结构可能略有不同,请根据实际情况调整#提取经纬度、高程等#假设我们要提取:经度、纬度、高程、时间(delta_time)#注意:时间通常以秒为单位(从某个参考时间开始),需要转换为日期时间#获取land_segments组land_segments= f['/land_segments']#读取数据集lon= land_segments['longitude'][:]#经度lat =land_segments['latitude'][:]#纬度elev= land_segments['h_te_best_fit'][:]#最佳拟合高程delta_time =land_segments['delta_time'][:]#相对于ATLASSDPGPS纪元的秒数#转换为DataFramedf= pd.DataFrame({'longitude': lon,'latitude': lat,'elevation': elev,'delta_time':delta_time})#将delta_time转换为实际日期时间#ICESat-2的参考时间通常是2018-01-0100:00:00reference_time =pd.Timestamp('2018-01-01')df['time'] =reference_time+ pd.to_timedelta(df['delta_time'], unit='s')#保存为CSV文件,以原文件名命名output_filename =os.path.splitext(filename)[0]+ '.csv'output_path =os.path.join(output_dir,output_filename)df.to_csv(output_path,index=False)print(f"Processed:{filename}")print("Batch processingcompleted.") ```注意:以上代码假设ATL08文件中的数据结构如上所述。实际应用中,需要根据具体的ATL08数据版本和内容调整数据集的路径和名称。用户应查阅官方文档以确认数据结构。另外,由于ATL08数据量可能很大,批处理时注意内存使用。如果单个文件很大,可以考虑分块读取或只读取需要的部分。如果用户需要更复杂的处理,比如计算每个文件的高程平均值、最大值、最小值等,可以在循环内添加相应的计算,并汇总到一个总表中。例如,在循环内计算每个文件的高程统计量,并保存到一个汇总文件: ```python#在循环内添加统计计算summary_data= []for filenamein file_list:#... [读取文件并创建df]...#计算统计量mean_elev= df['elevation'].mean()max_elev =df['elevation'].max()min_elev= df['elevation'].min()#添加到汇总列表summary_data.append({'filename':filename,'mean_elevation': mean_elev,'max_elevation':max_elev,'min_elevation': min_elev}) #将汇总数据转换为DataFrame并保存summary_df= pd.DataFrame(summary_data) summary_df.to_csv(os.path.join(output_dir, 'summary_statistics.csv'), index=False)```请用户根据实际需求调整代码。参考文献:[^1]:ICESat-2 ATL08数据产品说明:https://nsidc.org/data/atl08</think>### Python批处理ICESat-2 ATL08数据指南 ICESat-2 ATL08数据包含陆地高程信息,批处理主要包括数据读取、特征提取和结果导出。以下是完整解决方案: #### 核心步骤 1. **数据准备** - 下载ATL08 HDF5文件(NSIDC提供) - 安装依赖库:`h5py`, `pandas`, `numpy`, `geopandas`(可选) ```bash pip install h5py pandas numpy geopandas ``` 2. **批处理脚本** ```python import h5py import pandas as pd import numpy as np import os from tqdm import tqdm # 进度条工具 def process_atl08(file_path): """处理单个ATL08文件""" with h5py.File(file_path, 'r') as f: # 提取主要数据集 land_segments = f['/land_segments'] df = pd.DataFrame({ 'latitude': land_segments['latitude'][:], 'longitude': land_segments['longitude'][:], 'elevation': land_segments['h_te_best_fit'][:], # 最佳高程估计 'delta_time': land_segments['delta_time'][:], # GPS秒数 'solar_elevation': land_segments['solar_elevation'][:] }) # 时间转换 (参考时间: 2018-01-01) df['utc_time'] = pd.to_datetime(df['delta_time'], unit='s', origin='2018-01-01') return df # 批处理主流程 input_dir = "path/to/ATL08_files" output_dir = "path/to/output" all_data = [] for filename in tqdm(os.listdir(input_dir)): if filename.endswith('.h5'): file_path = os.path.join(input_dir, filename) df = process_atl08(file_path) df['source_file'] = filename # 标记来源文件 all_data.append(df) # 合并并保存结果 final_df = pd.concat(all_data, ignore_index=True) final_df.to_csv(f"{output_dir}/ATL08_combined.csv", index=False) print(f"处理完成! 共合并{len(all_data)}个文件") ``` #### 关键处理说明 1. **数据结构路径** ATL08数据采用HDF5分层结构: ``` /land_segments ├── latitude (Nx1) ├── longitude (Nx1) ├── h_te_best_fit (Nx1) # 地形高程 └── delta_time (Nx1) # 相对于2018-01-01的秒数 ``` 2. **高级功能扩展** - **空间筛选**:添加地理范围过滤 ```python def spatial_filter(df, lat_range, lon_range): return df[(df['latitude'].between(*lat_range)) & (df['longitude'].between(*lon_range))] ``` - **质量控制**:使用`/land_segments/segment_quality`标志过滤低质量数据 - **导出Shapefile**: ```python import geopandas as gpd from shapely.geometry import Point gdf = gpd.GeoDataFrame( final_df, geometry=[Point(xy) for xy in zip(final_df.longitude, final_df.latitude)] ) gdf.to_file(f"{output_dir}/ATL08_points.shp") ``` #### 性能优化建议 1. 使用`dask`处理超大数据集 2. 并行处理(示例): ```python from concurrent.futures import ProcessPoolExecutor def batch_process(files): with ProcessPoolExecutor() as executor: results = list(tqdm(executor.map(process_atl08, files), total=len(files))) return pd.concat(results) ``` #### 注意事项 - 完整数据字段参考[ATL08产品文档](https://nsidc.org/data/atl08) - NASA Earthdata账号需配置下载权限 - 典型文件大小:100-200MB/轨道
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值