从栅格数据中提取时间序列特征
tsraster的Python项目详细描述
TS光栅
ts-raster是一个python包,用于分析光栅数据的时间序列特征。 它允许地理空间数据的特征提取、降维和机器学习技术的应用。
- 输入数据:历史光栅数据(例如每月温度数据(2000-2018) 提取特征:均值、最小值、最大值、方差、标准差…输入数据的
- 输出:将要素作为列的数据帧或将要素作为标注栏的光栅文件
安装
稳定版本:
pip install tsraster
来自github:
git clone https://github.com/adbeda/ts-raster
cd ts-raster
pip install e .
输入数据结构
将从中提取要素的输入光栅文件被组织为允许从包含多个文件夹的文件中提取。
示例数据:
temprature
2005
tmx-200501.tif
tmx-200502.tif
tmx-200503.tif ...
2006
tmx-200601.tif
tmx-200602.tif
tmx-200603.tif...
2007
...
温度:变量
- 2005年、2006年、2007年:年份
- tmx-200501.tif:图像
- tmx:每个图像的唯一标识符
- 200501:年和月
- tmx:每个图像的唯一标识符
- tmx-200501.tif:图像
TS光栅将把值“200501”视为唯一的时间标识符。
用法:
fromtsraster.prepimportsReadastrfromtsraster.calculateimportcalculateFeatures#directorypath="../docs/img/temperature/"image_name=tr.image_names(path)print(image_name)
['tmx-200601', 'tmx-200603', 'tmx-200602', 'tmx-200703', 'tmx-200702', 'tmx-200701', 'tmx-200501', 'tmx-200502', 'tmx-200503']
将每个图像转换为数组,并将其堆叠为带
rasters=tr.image2array(path)rasters.shape
(1120, 872, 9)
计算功能
可以通过从统计摘要的完整列表中进行选择来定制可以提取的特征数量 列出了here。 例如,下面的示例包含16个功能。
parameters = {
"mean": None,
"maximum": None,
"median":None,
"minimum":None,
"mean_abs_change":None,
"mean_change":None,
"quantile":[{"q": 0.15},{"q": 0.05},{"q": 0.85},{"q": 0.95}],
"longest_strike_above_mean":None,
"longest_strike_below_mean":None,
"number_cwt_peaks":[{"n": 6},{"n": 12}],
"skewness":None,
"sum_values":None
}
ts_features=calculateFeatures(path=path,parameters=parameters,reset_df=False,tiff_output=False)
Feature Extraction: 100%|██████████| 50/50 [09:57<00:00, 2.31s/it]
../docs/img/temperature/extracted_features.csv
如果光栅文件已转换为pandas数据帧,请将rest_df
设置为True
。
要将提取的特征保存为一个geotiff文件中的堆叠带,请将tiff_output
转到True
。
输出选项(1):熊猫数据框
ts_features.describe()
variable value__longest_strike_above_mean value__longest_strike_below_mean value__maximum value__mean value__mean_abs_change value__mean_change value__median value__minimum value__number_cwt_peaks__n_12 value__number_cwt_peaks__n_6 value__quantile__q_0.05 value__quantile__q_0.15 value__quantile__q_0.85 value__quantile__q_0.95 value__skewness value__sum_values
count 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000 976640.000000
mean 6.848954 6.842414 12.174632 7.053721 2.441626 0.398589 5.764061 3.676642 0.381241 0.588133 3.836781 4.149142 10.977326 11.764437 0.226742 63.483490
std 2.873678 2.881861 16.604448 9.836145 3.339791 0.560275 8.230023 5.625607 0.529043 0.839891 5.801362 6.174634 15.021573 16.064091 0.310793 88.525303
min 1.000000 2.000000 0.000000 -0.569444 0.000000 0.000000 -4.375000 -7.250000 0.000000 0.000000 -7.100000 -6.800000 0.000000 0.000000 -0.686569 -5.125000
25% 3.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50% 9.000000 9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
75% 9.000000 9.000000 31.062500 17.548611 6.531250 1.000000 14.000000 8.687500 1.000000 1.000000 8.962500 9.512500 27.800000 29.975000 0.596130 157.937500
max 9.000000 9.000000 49.000000 30.666667 9.859375 2.000000 27.000000 20.000000 2.000000 3.000000 20.000000 20.200000 45.000000 47.800000 1.558534 276.000000
输出选项(2):多波段图像
TS光栅还支持:
- 识别相关特征
- 通过特征选择减小尺寸
- 从特征/光栅文件进行分层随机采样
- 培训和测试机器学习模型(随机森林、xgboost、elasticnet)