现有某河道大断面测量数据,数据形式为 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()
请从附件下载。
请从附件下载。
请从附件下载。
重要事情说三遍。