跳转到内容
RailWise KB已发布

AI测量数据分析工具

RailWise AI测量数据分析工具提供强大的测量数据处理、统计分析和可视化能力,支持时间序列分析、变形计算、精度评定等专业功能,帮助工程师快速从原始数据中提取有价值的信息。

复核 2026-07-09入门公开可引用RailWise 技术团队
ai-guide

AI测量数据分析工具是 RailWise 提供的专业测量数据处理与分析工具,面向工程测量与安全监测领域的工程师和技术人员。工具基于 Python 科学计算生态(Pandas、NumPy、SciPy、Statsmodels)构建,集成了机器学习算法,支持从原始测量数据到专业分析结论的全流程自动化处理。

场景 说明
沉降分析 建筑物、桥墩、地表沉降的时间序列分析
位移分析 水平位移、收敛变形的三维分析
倾斜分析 建筑物倾斜度计算与趋势分析
应力分析 支撑轴力、锚索拉力监测数据分析
地下水位 水位变化趋势与相关性分析
数据质量 测量数据精度评定与异常检测
相关性分析 多测点、多参数间的相关性研究
预测分析 基于历史数据的变形趋势预测
项目 版本
AI测量数据分析工具 2.1.0
Python 3.11+
Pandas 2.2+
NumPy 1.26+
SciPy 1.12+
Statsmodels 0.14+
Scikit-learn 1.4+

功能模块 说明 算法/方法
数据导入 支持多种数据格式导入 CSV, Excel, JSON, SQLite
数据清洗 缺失值处理、异常值检测 插值、3σ准则、IQR
坐标计算 三维坐标转换与计算 七参数转换、高斯投影
变形计算 累计变形、变形速率 差分计算、移动平均
统计分析 描述统计、假设检验 t检验、F检验、K-S检验
趋势分析 时间序列趋势提取 线性回归、LOESS、HP滤波
频谱分析 周期性成分识别 FFT、小波变换
相关性分析 多变量相关性 Pearson、Spearman、Kendall
预测分析 变形趋势预测 ARIMA、Prophet、LSTM
可视化 专业图表生成 Matplotlib、Seaborn、Plotly
监测类型 数据格式 分析维度
垂直位移(沉降) 高程值 累计沉降、沉降速率、差异沉降
水平位移 X,Y坐标 位移矢量、位移方向、位移速率
收敛 净空距离 收敛量、收敛速率
倾斜 倾斜角/坐标差 倾斜度、倾斜方向
深层水平位移 测斜数据 位移曲线、最大位移深度
支撑轴力 力值 轴力变化、预警状态
地下水位 水位高程 水位变化、降雨相关性
裂缝 缝宽 开合量、变化速率

项目 最低要求 推荐配置
Python 3.11 3.12
内存 4 GB 16 GB
磁盘 1 GB 10 GB
操作系统 Windows 10 / macOS 12 / Ubuntu 22.04 -
Terminal window
# 创建虚拟环境
python -m venv railwise-analysis
source railwise-analysis/bin/activate # Linux/macOS
# 或
railwise-analysis\Scripts\activate # Windows
# 安装核心包
pip install railwise-analysis
# 安装完整版(包含所有可选依赖)
pip install "railwise-analysis[full]"
# 验证安装
python -c "import railwise_analysis; print(railwise_analysis.__version__)"
Terminal window
# 核心依赖
pip install pandas numpy scipy matplotlib seaborn
# 统计分析
pip install statsmodels scikit-learn
# 时间序列预测
pip install prophet neuralprophet
# 高级可视化
pip install plotly bokeh
# 地理空间分析(可选)
pip install geopandas shapely pyproj

from railwise_analysis import MeasurementAnalyzer
# 创建分析器实例
analyzer = MeasurementAnalyzer(
project_id="proj_rw_2026_001",
config={
"timezone": "Asia/Shanghai",
"decimal_places": 2,
"output_dir": "./analysis_output"
}
)
# 加载数据
analyzer.load_data(
source="api", # 或 "file", "database"
api_client=tsm_client, # 如果使用API
# file_path="./data/survey_data.csv", # 如果使用文件
point_ids=["P1", "P2", "P3", "P4", "P5"],
date_range=("2026-07-01", "2026-07-08")
)
# 清洗数据
cleaned_data = analyzer.clean_data(
methods={
"missing_values": "interpolate", # 或 "forward_fill", "backward_fill", "drop"
"outliers": "winsorize", # 或 "remove", "flag", "none"
"outlier_threshold": 3.0, # 3σ准则
"duplicate_handling": "keep_last"
}
)
# 查看清洗报告
print(cleaned_data.cleaning_report)
# 计算累计变形
deformation = analyzer.calculate_deformation(
reference_date="2026-07-01", # 基准日期
metrics=["cumulative", "rate", "acceleration"]
)
# 查看结果
print(deformation.summary)
# 描述统计
stats = analyzer.descriptive_statistics(
group_by="point_id",
metrics=["mean", "std", "min", "max", "range", "cv"]
)
# 假设检验
test_result = analyzer.hypothesis_test(
test_type="t_test",
group_a="P1",
group_b="P2",
alpha=0.05
)
# 提取趋势
trend = analyzer.extract_trend(
method="loess", # 或 "linear", "moving_average", "hp_filter"
span=0.3, # LOESS平滑参数
period=24 # 周期性(小时)
)
# 趋势评估
trend_evaluation = analyzer.evaluate_trend(
trend=trend,
criteria={
"stability_threshold": 0.5, # mm/天
"alert_threshold": 2.0 # mm/天
}
)
# 变形预测
forecast = analyzer.forecast(
horizon=72, # 预测未来72小时
model="auto", # 自动选择最优模型
confidence=0.95
)
# 预测结果
print(forecast.summary)
for point_id, pred in forecast.predictions.items():
print(f"测点 {point_id}:")
print(f" 预测值: {pred.value:.2f} mm")
print(f" 置信区间: [{pred.lower:.2f}, {pred.upper:.2f}] mm")
print(f" 预警概率: {pred.alert_probability:.1%}")

from railwise_analysis.modules import SettlementAnalysis
# 创建沉降分析器
settlement = SettlementAnalysis(analyzer)
# 执行沉降分析
result = settlement.analyze(
point_ids=["P1", "P2", "P3"],
reference_elevation={ # 初始高程
"P1": 10.000,
"P2": 10.500,
"P3": 9.800
},
analysis_type="comprehensive" # 或 "basic", "trend", "differential"
)
# 输出结果
print("=== 沉降分析结果 ===")
print(f"分析期间: {result.period}")
print(f"测点数: {result.point_count}")
print(f"最大累计沉降: {result.max_settlement:.2f} mm @ {result.max_settlement_point}")
print(f"最大沉降速率: {result.max_rate:.2f} mm/天 @ {result.max_rate_point}")
print(f"差异沉降: {result.differential_settlement:.2f} mm")
print(f"倾斜度: {result.tilt:.4f}‰")
# 生成沉降曲线图
settlement.plot(
output="./settlement_curve.png",
include_trend=True,
include_forecast=True
)
from railwise_analysis.modules import HorizontalDisplacementAnalysis
# 创建水平位移分析器
disp = HorizontalDisplacementAnalysis(analyzer)
# 执行分析
result = disp.analyze(
point_ids=["P1", "P2", "P3"],
reference_coordinates={
"P1": {"x": 100.000, "y": 200.000},
"P2": {"x": 105.000, "y": 205.000},
"P3": {"x": 110.000, "y": 210.000}
}
)
# 输出结果
print("=== 水平位移分析结果 ===")
for point in result.points:
print(f"测点 {point.id}:")
print(f" 累计位移: {point.cumulative_displacement:.2f} mm")
print(f" 位移方向: {point.direction:.1f}°")
print(f" X方向位移: {point.dx:.2f} mm")
print(f" Y方向位移: {point.dy:.2f} mm")
print(f" 位移速率: {point.rate:.2f} mm/天")
# 生成位移矢量图
disp.plot_vector_map(
output="./displacement_vector.png",
scale=10, # 矢量比例尺
include_contour=True
)
from railwise_analysis.modules import ConvergenceAnalysis
# 创建收敛分析器
convergence = ConvergenceAnalysis(analyzer)
# 执行分析
result = convergence.analyze(
section_id="S1",
measurement_pairs=[
("P1", "P2"), # 对向测点
("P3", "P4")
],
reference_distances={
("P1", "P2"): 10.500,
("P3", "P4"): 12.300
}
)
# 输出结果
print("=== 收敛分析结果 ===")
for pair in result.pairs:
print(f"测线 {pair.point_a}-{pair.point_b}:")
print(f" 初始距离: {pair.initial_distance:.3f} m")
print(f" 当前距离: {pair.current_distance:.3f} m")
print(f" 收敛量: {pair.convergence:.2f} mm")
print(f" 收敛速率: {pair.convergence_rate:.2f} mm/天")
print(f" 预警状态: {pair.alert_status}")
from railwise_analysis.modules import CorrelationAnalysis
# 创建相关性分析器
corr = CorrelationAnalysis(analyzer)
# 执行多变量相关性分析
result = corr.analyze(
variables=[
{"type": "point", "id": "P1", "metric": "settlement"},
{"type": "point", "id": "P2", "metric": "settlement"},
{"type": "environmental", "id": "rainfall"},
{"type": "environmental", "id": "temperature"}
],
methods=["pearson", "spearman"],
lag_analysis=True, # 滞后分析
max_lag=72 # 最大滞后72小时
)
# 输出结果
print("=== 相关性分析结果 ===")
print(result.correlation_matrix)
# 最强相关性
print(f"最强正相关: {result.strongest_positive}")
print(f"最强负相关: {result.strongest_negative}")
# 滞后相关性
if result.lag_correlations:
print("滞后相关性:")
for lag_corr in result.lag_correlations:
print(f" {lag_corr.variable_a} vs {lag_corr.variable_b}:")
print(f" 最优滞后: {lag_corr.optimal_lag} 小时")
print(f" 相关系数: {lag_corr.correlation:.3f}")

图表类型 适用数据 输出格式
时程曲线 时间序列数据 PNG, SVG, HTML
散点图 相关性分析 PNG, SVG, HTML
柱状图 分类对比 PNG, SVG, HTML
等值线图 空间分布 PNG, SVG, HTML
矢量图 水平位移 PNG, SVG, HTML
热力图 相关性矩阵 PNG, SVG, HTML
箱线图 统计分布 PNG, SVG, HTML
3D图 三维变形 HTML
from railwise_analysis.visualization import ChartGenerator
chart = ChartGenerator(style="railwise") # 使用RailWise标准样式
# 时程曲线
chart.time_series(
data=analyzer.data,
point_ids=["P1", "P2", "P3"],
metric="settlement",
title="沉降时程曲线",
xlabel="日期",
ylabel="累计沉降 (mm)",
include_trend=True,
include_thresholds=True,
output="./settlement_time_series.png"
)
# 相关性热力图
chart.heatmap(
data=result.correlation_matrix,
title="测点相关性矩阵",
cmap="RdBu_r",
output="./correlation_heatmap.png"
)
# 交互式图表(Plotly)
chart.interactive(
data=analyzer.data,
chart_type="time_series",
output="./interactive_chart.html"
)
from railwise_analysis.reporting import AnalysisReport
# 生成分析报告
report = AnalysisReport(
title="绕城高速管廊工程监测数据分析报告",
project="proj_rw_2026_001",
period=("2026-07-01", "2026-07-08")
)
# 添加分析章节
report.add_section("沉降分析", settlement_result)
report.add_section("水平位移分析", displacement_result)
report.add_section("相关性分析", correlation_result)
report.add_section("预测分析", forecast_result)
# 添加图表
report.add_figure("沉降时程曲线", "./settlement_time_series.png")
report.add_figure("相关性热力图", "./correlation_heatmap.png")
# 输出报告
report.generate(
format="pdf", # 或 "word", "html"
output="./analysis_report.pdf",
template="railwise_standard" # 使用标准模板
)

from railwise_analysis import BatchProcessor
# 创建批量处理器
batch = BatchProcessor(
max_workers=4, # 并行工作线程数
output_dir="./batch_output"
)
# 定义分析任务
tasks = [
{
"project_id": "proj_rw_2026_001",
"analysis_types": ["settlement", "displacement"],
"date_range": ("2026-07-01", "2026-07-08")
},
{
"project_id": "proj_rw_2026_002",
"analysis_types": ["settlement", "convergence"],
"date_range": ("2026-07-01", "2026-07-08")
}
]
# 执行批量分析
results = batch.process(tasks)
# 查看结果
for result in results:
print(f"项目 {result.project_id}: {result.status}")
if result.status == "success":
print(f" 报告: {result.report_path}")
else:
print(f" 错误: {result.error}")
from railwise_analysis import ScheduledAnalysis
from datetime import timedelta
# 创建定时分析任务
scheduled = ScheduledAnalysis(
analyzer=analyzer,
schedule=timedelta(hours=4), # 每4小时执行
analysis_config={
"types": ["settlement", "displacement"],
"generate_report": True,
"send_alert": True
}
)
# 启动定时任务
scheduled.start()
# 停止定时任务
# scheduled.stop()

from railwise_tsm import TSMClient
from railwise_analysis import MeasurementAnalyzer
# 创建TSM客户端
tsm = TSMClient(
base_url="https://tsm.railwise.cn",
api_key="rw_tsm_xxxxxxxx"
)
# 创建分析器并绑定TSM
analyzer = MeasurementAnalyzer(
project_id="proj_rw_2026_001",
tsm_client=tsm
)
# 自动从TSM加载数据
analyzer.load_data_from_tsm(
point_ids=["all"],
date_range=("2026-07-01", "2026-07-08"),
auto_refresh=True # 自动刷新数据
)
# 执行分析
result = analyzer.analyze_settlement()
# 将分析结果回写到TSM
tsm.upload_analysis_result(
project_id="proj_rw_2026_001",
result=result
)
Terminal window
# 使用CLI执行分析并生成报告
railwise-cli analyze trend \
--project "proj_rw_2026_001" \
--points "P1,P2,P3" \
--output-format pdf \
--output "./analysis_report.pdf"
# CLI内部调用Python分析工具
# 分析结果自动同步到TSM和WorkWise

# 分析前检查数据质量
quality_check = analyzer.check_data_quality()
if quality_check.score < 80:
print("数据质量不足,建议先进行数据清洗")
print(f"问题: {quality_check.issues}")
analyzer.clean_data(methods={"outliers": "flag"})
数据特点 推荐方法 说明
数据量小(<30) 灰色模型 小样本友好
线性趋势 线性回归 简单直观
周期性变化 Prophet 自动识别周期
复杂非线性 LSTM 精度高,需大数据
实时分析 移动平均 计算快
# 交叉验证
from sklearn.model_selection import cross_val_score
scores = cross_val_score(
model, X, y,
cv=5, # 5折交叉验证
scoring="neg_mean_squared_error"
)
print(f"交叉验证RMSE: {np.sqrt(-scores.mean()):.3f}")
  • 大数据集使用分块处理
  • 缓存中间结果避免重复计算
  • 使用并行处理加速批量分析
  • 合理设置内存限制

限制项 说明
数据量 单次分析建议不超过100万条记录
内存使用 大数据集可能占用大量内存
预测精度 预测结果受数据质量和模型选择影响
算法适用性 不同算法适用于不同数据特点
计算时间 复杂模型可能需要数分钟
结果解释 AI分析结果需结合工程经验判断

注意: 数据分析结果仅供参考,工程决策应结合现场实际情况和专业判断。


  1. 检查数据格式是否符合要求
  2. 确认编码为UTF-8
  3. 检查日期格式(推荐ISO 8601)
  4. 查看错误日志获取详细信息
# 数据格式示例
# CSV格式:
# point_id,timestamp,x,y,z
# P1,2026-07-08T08:00:00+08:00,100.000,200.000,10.000
# P1,2026-07-08T12:00:00+08:00,100.001,200.001,9.998
  1. 检查数据清洗参数
  2. 确认基准日期/坐标设置正确
  3. 尝试不同的分析方法
  4. 检查是否有异常数据未处理
# 使用分块处理
analyzer.load_data(
source="file",
file_path="./large_dataset.csv",
chunksize=10000 # 每次读取10000行
)
# 或使用采样
analyzer.sample_data(n=10000, method="stratified")
from railwise_analysis import CustomAnalysis
class MyCustomAnalysis(CustomAnalysis):
def analyze(self, data):
# 自定义分析逻辑
result = my_algorithm(data)
return result
# 注册自定义分析
analyzer.register_analysis("custom", MyCustomAnalysis)
# 使用自定义分析
result = analyzer.analyze(method="custom")

版本 日期 变更内容
2.1.0 2026-07-08 新增LSTM预测模型;优化大数据处理性能;新增批量处理模块
2.0.0 2026-04-20 全新分析引擎;支持Prophet预测;新增相关性分析模块
1.5.0 2026-01-10 新增收敛分析;优化可视化输出;支持交互式图表
1.0.0 2025-10-15 初始版本发布;支持沉降、位移、倾斜分析


技术支持: 如有疑问,请联系 RailWise 技术支持团队

引用与复核把知识带回真实工程判断

引用时保留页面与来源线索;涉及标准条文、阈值、频率和项目结论,请回到现行依据与责任人复核。

查看 Agent 使用规则