案例九:生成沉降分析报告
案例概述
本案例从 GDIM 读取沉降点信息与累计沉降数据,按所选监测点绘制沉降曲线图,进行沉降回归分析,最后按 Word 模板输出沉降分析报告。
你将学到
在 PipeLine 中连接读表、回归分析、图表绘制、报告输出,生成可在 GDIM 上运行的 .pipe 应用。
用
GdimTableReader读取沉降点信息表与累计沉降数据。用
AddTableColumns转换累计沉降数据,TimeSeriesRegression进行双曲线/指数时序回归。用
LineChartPlotter、ScatterChartPlotter与PlotMerger绘制及合并沉降预测曲线和沉降散点图。用
DocDataWriter、MergeDocData与DocPrinter将表格、回归结果与图表写入 Word 报告。
实现思路
创建
GdimTableReader,读取「沉降点信息表」与「累计沉降数据」,用TablesQuery按tpl_number筛选所选监测点。用
TableSelector提取累计沉降表,AddTableColumns生成「观测累计沉降」列。用
TimeSeriesRegression进行回归分析,得到预测曲线数据与回归参数;DocDataWriter将筛选后的点信息转为报告数据。绘制累计沉降折线图、预测曲线与观测散点图,
PlotMerger将预测曲线与散点图合并为对比图并导出图片。各分支经
DocDataWriter转为DocData,MergeDocData合并后由DocPrinter按模板输出.docx文件。
关键代码
本例关键在于时序回归、图表合并与报告数据汇总,对应代码如下。
query_table = TablesQuery("QueryTable")
query_table.query_template = "`沉降点编号` == {tpl_number}"
query_table.template_variables = {
"tpl_number": TemplateVariableConfig(
title="沉降点编号",
value_type="str",
schema_type="auto_select",
)
}
regression_table = TimeSeriesRegression("RegressionLineData")
regression_table.model_type = "hyperbolic"
regression_table.prediction_time = 365
plot_merger = PlotMerger("PlotMerger")
plot_merger.add_dynamic_ports_in("InputPlotData1")
plot_merger.add_dynamic_ports_in("InputPlotData2")
merge_doc_data = MergeDocData("MergeDocData")
merge_doc_data.add_dynamic_ports_in("InputDataDocData")
merge_doc_data.add_dynamic_ports_in("InputRegressionDocData")
merge_doc_data.add_dynamic_ports_in("InputImageDocData")
merge_doc_data.add_dynamic_ports_in("InputSettlementLineDocData")
pipeline.add_links(
plot_line.OutputPlotData >> plot_merger.InputPlotData1
| plot_sactter.OutputPlotData >> plot_merger.InputPlotData2
| merge_doc_data.OutputDocData >> print_doc.InputDocData
)
pipeline.run()
更进一步
完整代码请查看以下链接: