python 在测绘作业中的一些小应用(与cad交互)-1
2018-02-02 22:33
651 查看
虽然笔者已经基本上告别了本科的测绘工程专业,但是笔者的本科同学他们在实际作业中难免会遇到一些批量化、重复性劳动问题,如果会编程,写上一个小脚本,无疑会提高工作效率。
下面是笔者本科同学处理测量数据时遇到的问题,笔者通过python与CAD的交互完美的解决了!
问题1:提取断面上地性线上的高程
问题2:场平设计高程,十字丝交点的坐标(x,y,z)
首先,python 作为一个胶水语言,与各行各业的接口是无与伦比,与cad的接口库有:autocad、dxfgrabber、dxfwrite。笔者目前就知道这三个,孤陋寡闻。如有兴趣,可以关注freecad,一个开源的python 与cad软件。
笔者程序使用的是dxfgrabber库,读取dxf文件。
对于第一个问题:笔者写了一个GUI
“`
下面是笔者本科同学处理测量数据时遇到的问题,笔者通过python与CAD的交互完美的解决了!
问题1:提取断面上地性线上的高程
问题2:场平设计高程,十字丝交点的坐标(x,y,z)
首先,python 作为一个胶水语言,与各行各业的接口是无与伦比,与cad的接口库有:autocad、dxfgrabber、dxfwrite。笔者目前就知道这三个,孤陋寡闻。如有兴趣,可以关注freecad,一个开源的python 与cad软件。
笔者程序使用的是dxfgrabber库,读取dxf文件。
对于第一个问题:笔者写了一个GUI
from PyQt5 import QtWidgets from cass import Ui_MainWindow from PyQt5.QtWidgets import QFileDialog import dxfgrabber class height(QtWidgets.QMainWindow,Ui_MainWindow): def __init__(self): super(height,self).__init__() self.setupUi(self) self.openfile.triggered.connect(self.o1) self.extract_h.triggered.connect(self.e1) self.save_txt.triggered.connect(self.s1) def o1(self): self.file,ok=QFileDialog.getOpenFileName(self,"打开",None,"*.dxf") def e1(self): dxf=dxfgrabber.readfile(self.file) h1=[] c=[] allGCD=[h for h in dxf.entities if h.layer=='GCD'] alldmx=[line for line in dxf.entities if line.layer=='dmx'] l1=[line for line in alldmx if line.dxftype=='LINE'] for heigh in allGCD: h1.append(heigh.insert) for i in l1: c.append([i.start,i.end]) #计算每个线的斜率 k1=[] for i in range(len(c)): k1.append((c[i][1][1]-c[i][0][1])/(c[i][1][0]-c[i][0]0])) #计算高程点与直线的斜率,#,以所有线的起点为基准,判断每个高程点和起点连线的斜率与所有线的斜率,如果相同,则高程点再地性线上 k2=[] for i in range(len(c)): for j in range(len(h1)): k3=(h1[j][1]-c[i][0][1])/(h1[j][0]-c[i][0][0]) if abs(k3)-abs(k1[i])>-0.2 and abs(k3)-abs(k1[i])<0.2: k2.append(j) self.allresult_h=[] for i in k2: self.allresult_h.append(h1[i]) def s1(self): path,ok=QFileDialog.getSaveFileName(self,"保存结果",None,"*.txt") with open(path,'w') as file: for line in self.allresult_h: for i in line: file.writelines(str(i)+',') file.writelines('\n') if __name__=='__main__': import sys app=QtWidgets.QApplication(sys.argv) myapp=height() myapp.show() app.exec_()
“`
相关文章推荐
- python 在测绘作业中的一些小应用(与cad交互)-2
- 使用Docker部署Python应用的一些经验总结
- 合并多个python list以及合并多个 django QuerySet 的方法在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技
- 『Python』序列学习总结之五 ——列表推导式的一些应用
- 二、Python的一些基本应用
- python 3中的zip函数,以及一些巧妙应用
- [Python]分享一些用来简化与SQL Server交互的函数
- 在用python数据分析时一些应用
- Python学习中的关键点1.3 - python中的一些函数应用
- python和rails交互应用
- Python应用与Hbase交互实例(来源找不着了)
- 关于python写GUI桌面应用的一些研究结果
- 文件操作之增删改查3---文件的修改,f.replace(),在linux里的一些应用sed,with语句方法来打开一个或多个文件避免忘记关闭,python一行写的太长,怎么编写多行的规范
- python一些小的应用
- Python3.6应用Pyinstaller打包py文件的一些注意事项
- 应用 Python 解决一些实际问题
- 使用Docker部署Python应用的一些经验总结
- python3 中numpy模块的一些应用(一)
- python中对象以及一些函数的应用