python 在测绘作业中的一些小应用(与cad交互)-2
2018-02-02 22:50
603 查看
接上一篇,转为问题2:
简单粗暴,直接附上代码,平场高程中的十字丝两条直线长度是相同的,且满足中垂线,这种更简单了,但是笔者的程序更具有普适性,只要你两条线垂直,那么交点的坐标便可得到,如果想让其更具有普适性,那么就是利用直线AX+BY+C=0的前面的系数的外积求得不垂直情况下交点的坐标。因为平场的高程点很多,笔者程序得到的最后结果有4万多个坐标,如果手动实现将是一项浩大的工程,所以python 大法好。如果笔者的同学还有一些关于测绘(cass 、cad上一些重复性劳动),笔者会利用所学,编写小程序来解决。—-将不断更新,敬请期待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# -*- coding: utf-8 -*- import dxfgrabber import numpy as np from dxfwrite import DXFEngine as dxf1 dxf=dxfgrabber.readfile(r'C:\Users\Y\Desktop\heigh.dxf') allline=[l for l in dxf.entities if l.layer=='V-NODE'] #指定图层 l1=[line for line in allline if line.dxftype=='LINE'] lines=[] for i in l1: if i.start[2]!=0 and i.end[2]!=0: lines.append([list(i.start),list(i.end)])#?*2*3 def iscross(p1 ,p2,p3,p4): if p1[2]==p2[2]==p3[2]==p4[2]: return True with open(r"C:\Users\Y\Desktop\crossPoint.txt","w+") as file: for i in range(0,len(lines)-1,2):#两两直线(0,1),(2,3) if iscross(lines[i][0],lines[i][1],lines[i+1][0],lines[i+1][1]): if np.dot(np.array(lines[i+1][1])-np.array(lines[i+1][0]),np.array(lines[i][1])-np.array(lines[i][0]))==0: if lines[i][0][0]-lines[i][1][0]==0: #判断哪个是x轴(delta X?=0),i还是i+1 centerX=lines[i][0][0] centerY=lines[i+1][0][1] centerZ=lines[i][0][2] elif lines[i+1][0][0]-lines[i+1][1][0]==0: centerX=lines[i+1][0][0] centerY=lines[i][0][1] centerZ=lines[i][0][2] file.writelines(str(centerX)+","+str(centerY)+","+str(centerZ)) file.writelines("\n") #把点画到原图上 drawing = dxf1.drawing(r'C:\Users\Y\Desktop\heigh.dxf') point=dxf1.point((centerX,centerY,centerZ)) point['layer'] = 'V-NODE' point['color']=256 drawing.add(point) drawing.save()
简单粗暴,直接附上代码,平场高程中的十字丝两条直线长度是相同的,且满足中垂线,这种更简单了,但是笔者的程序更具有普适性,只要你两条线垂直,那么交点的坐标便可得到,如果想让其更具有普适性,那么就是利用直线AX+BY+C=0的前面的系数的外积求得不垂直情况下交点的坐标。因为平场的高程点很多,笔者程序得到的最后结果有4万多个坐标,如果手动实现将是一项浩大的工程,所以python 大法好。如果笔者的同学还有一些关于测绘(cass 、cad上一些重复性劳动),笔者会利用所学,编写小程序来解决。—-将不断更新,敬请期待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
相关文章推荐
- python 在测绘作业中的一些小应用(与cad交互)-1
- 使用Docker部署Python应用的一些经验总结
- 『Python』序列学习总结之五 ——列表推导式的一些应用
- Python3.6应用Pyinstaller打包py文件的一些注意事项
- 合并多个python list以及合并多个 django QuerySet 的方法在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技
- 应用 Python 解决一些实际问题
- python全栈开发-常用模块的一些应用
- 【莱斯大学 Python交互编程入门】 作业Week5 Memory
- 应用 Python 解决一些实际问题
- 关于python写GUI桌面应用的一些研究结果
- 使用 Docker 部署 Python 应用的一些经验总结
- 使用Docker部署Python应用的一些经验总结
- 关于UIWebView的一些应用,包括与JS交互,前进,后退等
- 应用 Python 解决一些实际问题
- Python应用与Hbase交互实例(来源找不着了)
- python中对象以及一些函数的应用
- python和rails交互应用
- python 3中的zip函数,以及一些巧妙应用
- 二、Python的一些基本应用