HYPACK之RAW文件读取编程实现

最近在做一个项目,需要将测量过程中的原始航迹线导出,之前基本是按照如下流程即可解决问题

(1)确定文件所在项目的大地参数的正确性

(2)《数据处理》----->《单波束编辑》,添加航迹文件,

          分两种方式:

            ①单独选择需要处理的RAW文件

            ②选择整个文件,*.log文件

              

 (3)按照单波束处理流程,完成航迹线的处理工作

 (4)返回主界面,选择《测量成果》--->《数据输出》,输出格式选择*.dxf格式

                 

(5)输出成果文件后,发现一个问题:

    ****通过处理输出后,航迹线不连续,这与实际测量航迹明显不相符****

原始航迹文件 数据处理输出文件

 (6)出现这种情况原因:暂时还没有发现

 (7)换个思路,直接在RAW文件中提取航迹点坐标信息

        通过解析RAW发现,航迹点信息,在文件中以PTS开头的行给出,RAW如下格式:

RAW文件原始记录信息

(8)考虑Python编程实现比较简单,代码如下# coding:utf-8
# __author__ ='Taloryu'
'''
ReadRaw第一版本
存在问题是,在读取行数较多(≥4000line)报错
'''
import re
f1 = open('0033_1601.RAW', 'r',encoding='UTF-8')
data1 = f1.readlines()
print(data1)
f1.close()
results = []

for line in data1:
data2 = line.split()
print (data2[0])
#m = re.findall(r"[0-9]:", data2[0])
#m = re.findall(r"^[PTS]:", data2[0])
#startswith函数用于判断字符串是否以指定字符或子字符串开头
m=data2[0].startswith('PTS')
#m=re.findall("PTS"==data2[0])
if m:
results.append(line)

# for i in data2[0]:
# data3=i.split(":")
# print data3
# if data3>=0 and data3<=50000:
# results.append(line)
# if i=='1':
# results.append(line)
f2 = open('deal.csv', 'w')
f2.writelines(results)
f2.close()
# 替换掉所有的逗号,
f4 = open('deal.csv', 'r')
data3 = f4.read()
f4 = data3.replace(',', ' ')
f5 = open('deal.csv', 'w')
f5.write(f4)
f5.close()
# 替换掉所有的冒号
f6 = open('deal.csv', 'r')
data4 = f6.read()
f6 = data4.replace(':', ' ')
f7 = open('deal.csv', 'w')
f7.write(f6)
f7.close()

(9)航迹点文件提取内容如下:

 (10) 需要进一步优化的问题:

    ① 实现可视化(GUI)读取任意目录下的相应格式文件

   ② 实现可视化(GUI)存储数据提取文件

 (11)在读取数据量较大的文件时,程序出现如下错误:

  出现此类问题是由于,RAW的编码方式是ANSI格式,而不是UTF-8格式,所以在提取航迹点数据之前,批量修改文件的编码方式为UTF-8

 

 

你可能感兴趣的:(程序开发,测绘专栏)