【Python】03 河道横断面数据处理
问题描述现有某河道大断面测量数据,数据形式为 CAD 格式,如图所示。需将其转换为文本格式,如下图。实现方法数据提取思路由于CAD图中的起点距高程数据无法直接导出,不利于数据格式转换。考虑采用 OCR文字识别 提取出各断面数据,并存储到 Excel 表格中。方法采用 QQ截图 的文字识别功能,对图片中的数据提取,校正后存储到 Excel 表格中。数据格式转换方法由于断面数据较多,考虑使用 Pyth
问题描述
现有某河道大断面测量数据,数据形式为 CAD 格式,如图所示。
需将其转换为文本格式,如下图。
实现方法
数据提取
思路
由于CAD图中的起点距高程数据无法直接导出,不利于数据格式转换。考虑采用 OCR文字识别 提取出各断面数据,并存储到 Excel 表格中。
方法
采用 QQ截图 的文字识别功能,对图片中的数据提取,校正后存储到 Excel 表格中。

数据格式转换
方法
由于断面数据较多,考虑使用 Python 自动处理,发挥 Python 在数据处理方面的优势。
实现
模块安装
安装 xlrd 模块以读取 Excel 数据,安装方法自行百度,不再赘述。
数据读取与输出
import xlrd #导入读取Excel数据模块
#读取数据
data = xlrd.open_workbook("桐庐河道地形.xlsx")
table = data.sheet_by_name("Sheet1")
#输出数据
fo = open("桐庐河道地形.txt", "w", encoding = "ANSI")
fo.write("河道地形\n")
fo.write("22\n")
定义变量
#定义全局变量
n = 1 #序号
flag = 1 #标志:断面数据中即为1,断面间隔为0
输出断面文字部分
if flag:
fo.write("\n{} 断面{} {} 0.015\n".format(n, int(line), line))
fo.write("不规则形 1 {} ".format(int(table.cell_value(i, 1))))
n = n + 1
flag = 0
输出起点距高程对
if i != table.nrows - 1:
if line != "":
fo.write("{} ".format(table.cell_value(i+1, 0)))
else:
pass
完整程序
import xlrd #导入读取Excel数据模块
#读取数据
data = xlrd.open_workbook("桐庐河道地形.xlsx")
table = data.sheet_by_name("Sheet1")
#输出数据
fo = open("桐庐河道地形.txt", "w", encoding = "ANSI")
fo.write("河道地形\n")
fo.write("22\n")
#定义全局变量
n = 1 #序号
flag = 1 #标志:断面数据中即为1,断面间隔为0
#主体程序
for i in range(table.nrows):
line = table.cell_value(i, 0)
#输出断面文字部分
if flag:
fo.write("\n{} 断面{} {} 0.015\n".format(n, int(line), line))
fo.write("不规则形 1 {} ".format(int(table.cell_value(i, 1))))
n = n + 1
flag = 0
#输出起点距高程对
if i != table.nrows - 1:
if line != "":
fo.write("{} ".format(table.cell_value(i+1, 0)))
else:
pass
#如果遇到空格,则说明本断面数据已读取完毕,进入下一断面
if line == "":
flag = 1
fo.close()
处理结果

数据文件及程序
重要事情说三遍。
作者简介
很高兴认识您!
我叫卢家波,河海大学水文学及水资源博士研究生,研究兴趣为高效洪水淹没预测、洪水灾害预警、机器学习、替代模型和降阶模型。
变化环境下,极端洪水事件多发,我希望能通过研究为水灾害防御做出贡献,为人民服务。
欢迎交流讨论和研究合作,vx Jiabo_Lu。
主页 https://lujiabo98.github.io
简历 https://lujiabo98.github.io/file/CV_JiaboLu_zh.pdf
博客 https://blog.csdn.net/weixin_43012724?type=blog
来信请说明博客标题及链接,谢谢。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)