编程学习网 > 编程语言 > Python > 用Python读取全站仪内存卡里的.dat文件并导出为Excel
2026
03-16

用Python读取全站仪内存卡里的.dat文件并导出为Excel


做过外业的兄弟们肯定遇到过这事儿:全站仪内存卡导出来一堆.dat文件,想弄进Excel里算算坐标、检查一下数据,结果双击打开一看——要么是一堆乱码,要么是挤在一起的字符串,连个分隔符都没有。想用Excel的数据分列功能吧,格式还不统一,折腾半天还是对不上。

有些老款全站仪甚至导出的是二进制格式,肉眼看全是乱码,只能用厂家自带的小软件转。可那软件界面老旧,还不支持批量操作,遇到几百个文件头都大了。

全站仪产生的 DAT 数据原生可读性差,直接分析困难。本文给出一个简明的 Python 流程,把 DAT 转换为 Excel,方便后续分析,让你彻底告别手动分列的烦恼。

先搞清楚:你的DAT文件长啥样?

在动手写代码之前,最重要的一步是“侦察”。不同品牌的全站仪(徕卡、拓普康、索佳、南方等),导出的.dat文件格式差异很大。主要有两种情况:

第一种:文本格式(ASCII)

这种比较友好,用记事本打开能看到数字和字母,只是排列方式奇怪。比如常见的格式可能是:

或者没有逗号分隔,全是空格:

第二种:二进制格式(Binary)

这种最头疼,用记事本打开全是乱码符号。这种文件需要知道每个字节代表什么(比如前4个字节是点号,后面几个字节是坐标),必须用特定的解析方式读取。

今天我重点讲最常见的文本格式解析,同时也会给二进制格式提供思路。

解析思路:定位与提取

对于文本格式的DAT文件,核心思路其实就是三步:

  1. 读取每一行:按行把数据读进来。

  2. 拆分字段:利用分隔符(逗号、空格、制表符)把一长串字符切成小块。

  3. 清洗数据:剔除空行、注释行,把非数字字符转成数字。

对于二进制格式,则需要用struct库,按照厂家规定的字节长度一块块“切”数据,这个后面细说。

实战代码:文本格式DAT转Excel

假设我们拿到的DAT文件是这种格式:每行数据用逗号分隔,依次是点号、X坐标、Y坐标、高程。

进阶技巧:

有些DAT文件里混杂了日期、时间、编码等信息,甚至格式都不统一。这时候可以先用Python普通方式读取文件,逐行判断处理:

硬骨头:二进制DAT文件的解析

如果用记事本打开是乱码,那就是二进制文件了。这需要知道具体的字节结构。假设厂家手册告诉我们:每个记录占24字节,结构是点号(4字节整型) + X(8字节双精度) + Y(8字节双精度) + H(4字节浮点)。

注意: 二进制解析最麻烦的是不知道格式定义。如果没有说明书,可以尝试用十六进制编辑器打开文件,结合已知的控制点坐标去“猜”字节位置,这需要一定经验。

导出与验证:确保数据靠谱

转换完成后,别急着发成果,一定要验证一下:

  1. 数量核对:打开生成的Excel,看行数是否和全站仪屏幕上显示的点数一致。

  2. 坐标抽检:挑几个控制点,对比一下全站仪机载显示的坐标和Excel里的数字,小数点后几位要完全吻合。

  3. 可视化检查:如果有条件,把Excel导入CASS或者用之前的matplotlib脚本画个散点图,看看点位分布是不是符合测区形状,有没有跑到几万公里外的异常点。

将输出的 Excel 打开,确认列和样本数据的数量是否合理。这一步虽然简单,却是质量控制的最后一道防线。

写在最后

以前遇到这种奇怪的DAT文件,只能干瞪眼或者到处找转换软件。现在掌握了Python,任何格式的数据都逃不出你的手掌心。不管是逗号分隔、空格分隔,还是二进制乱码,只要掌握了split和struct这两个法宝,统统都能变成整齐的Excel表格。

建议把上面的代码保存成一个模板脚本,比如叫dat_to_excel.py。以后再遇到全站仪数据,直接把文件名改一下运行,几秒钟搞定。

以上就是“用Python读取全站仪内存卡里的.dat文件并导出为Excel的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取