基于AutoCAD的高斯投影换带程序的实现

时间:2022-07-25 03:57:34

基于AutoCAD的高斯投影换带程序的实现

摘要:本文通过对AutoCAD图形dxf文件数据格式的分析,介绍了在AutoCAD系统中实现图形高斯投影换带及正反算的方法,同时也提供了直接在AutoCAD平台对坐标数据进行批量换带计算的思路。并利用visual basic语言编程实现了这些功能,可以简化相关测绘工作的流程,有效的提高工作效率,有较强的实用性。

关键词: AutoCAD;Dxf;高斯投影换带;高斯投影正算;高斯投影反算

Abstract: this article through to AutoCAD DXF file graphics data in the format of analysis, this paper introduces the realization of the system in AutoCAD graphics gaussian projection for belt and the method of positive and negative calculate, but also provide direct in AutoCAD platform for the coordinate data batch change to bring computing train of thought. And by using visual basic programming language realized the function, which can simplify the process of surveying and mapping work related, effectively improve the work efficiency, strong practicability.

Keywords: AutoCAD; Dxf; Gaussian projection for belt; Gaussian projection is calculate; Gaussian projection calculated

中图分类号:TU74文献标识码:A 文章编号:

目前,测绘空间原始数据大多数是在AutoCAD中形成;同时,工程设计人员也是利用AutoCAD数字地形图进行设计;在测量生产项目中,有些测区刚好处于投影带边缘,甚至有些工程横跨两个或两个以上投影带,如交通、水利、电力等较长的线路,为了坐标统一的需要,可以进行坐标换带,将相邻带的坐标换成同一系统的数据。但是AutoCAD却没有提供图形的投影换带功能,不能对图形进行投影换带处理。还需要将图形转换到其他GIS软件中进行换带处理,然后转换回AutoCAD中继续进行其他的工作。此过程中步骤繁琐,并且容易出错和丢失图形属性信息。

笔者利用AutoCAD提供的二次开发平台,采用visual basic语言开发了基于autocad高斯投影换带程序,可直接对dwg图形和txt数据文件进行高斯投影正、反算和换带计算,将不同子午线的图形和坐标转换为我们所需要的图形和坐标,为我们的工程服务。

一、高斯投影换带及坐标正反算

坐标换带有直接换带计算法和间接换带计算法两种,间接换带计算法就是根据第一带的平面坐标x1,y1和中央子午线的经度L1,按高斯-克吕格投影坐标反算公式求得大地坐标B、L,然后根据B,L和第二带的中央子午线经度L2,按高斯-克吕格投影坐标正算公式求得在第二带中的平面坐标x2、y2。由于在换带计算中,把椭球面上的大地坐标作为过渡坐标,因而称为间接换带法。这种方法理论上严密,精度高,而且通用性强,虽然计算量较大,但可用电子计算机计算来克服,已成为坐标换带中最基本的方法。

1.高斯投影反算即由已知点的高斯平面坐标(X,Y)计算其大地经纬度坐标(L,B)。

反算公式:B=Bf- NftgBfRf [D22 -(5+3Tf+Cf-9TfCf)D424 +(61+90Tf+45Tf2)D6720 ]

L=L0+1cosBf [D-(1+2Tf+Cf)D36 +(5+28Tf+6Cf+8TfCf+24Tf2)D5120 ]

核心程序如下:

Public Sub ZuoBiaoFanSuan( )

If Combo1.Text = "北京54坐标系" Then

……

Bf = Bradion + (50221746 + (293622 + (2350 + 22 * tt) * tt) * tt) / 10000000000# * Sin(Bradion) * Cos(Bradion)

Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 * DoubleBf) * DoubleBf) * DoubleBf '21562.267

ll = (1 - (b3 - b5 * Z * Z) * Z * Z) * Z

L = L0 + ll

End If

If Combo1.Text = "西安80坐标系" Then

……

Bf = Bradion + (50228976 + (293697 + (2383 + 22 * tt) * tt) * tt) / 10000000000# * Sin(Bradion) * Cos(Bradion)

Nf = 6399596.652 - (21565.047 - (109.003 - 0.612 * DoubleBf) * DoubleBf) * DoubleBf

ll = (1 - (b3 - b5 * Z * Z) * Z * Z) * Z

L = L0 + ll

End If

End Sub

2.高斯投影正算即由已知点的大地经纬度坐标(B,L)计算其高斯平面坐标(X,Y)。

正算公式:XN=k0{M+NtgB[A22 +(5-T+9C+4C2) A424 ]+(61-58T+T2+270C-330TC) A6720

YE=FE+ k0N[A+(1-T+C) A36 +(5-18T+T2+14C-58TC) A5120 ]

核心程序如下:

Public Sub ZuoBiaoZhengSuan( )

If Combo1.Text = "北京54坐标系" Then

X = 6367558.4969 * b - (a0 - (0.5 + (a4 + a6 * Doublell) * Doublell) * Doublell * N) * Sin(b) * Cos(b)

……

Y = (1 + (a3 + a5 * Doublell) * Doublell) * ll * N * Cos(b)

End If

If Combo1.Text = "西安80坐标系" Then

X = 6367452.1328 * b - (a0 - (0.5 + (a4 + a6 * Doublell) * Doublell) * Doublell * N) * Cos(b) * Sin(b)

……

Y = (1 + (a3 + a5 * Doublell) * Doublell) * ll * N * Cos(b)

End If

End Sub

3.高斯投影换带即由一个投影带的高斯平面坐标(X1,Y1)计算其在另一个投影带的高斯平面坐标(X2,Y2)。核心程序如下:

For i = 0 To N - 1

tempOfx = xl(i) '输入x坐标

tempOfy = yl(i) '输入y坐标

tempOfL01 = Text7.Text '转换前的中央子午线

ZuoBiaoFanSuan tempOfx, tempOfy, tempOfL01, tempOfB, tempOfL '反算B,L

tempOfL02 = Text8.Text '转换后的中央子午线

ZuoBiaoZhengSuan tempOfB, tempOfL, tempOfL02, tempOfx, tempOfy '正算x,y

xll(i) = tempOfx '返回x

yll(i) = tempOfy '返回y

……

Next

二、AutoCAD的DXF文件的应用

DXF文件即图形交换文件(Drawing Exchange File),是一种ASCII格式的文件。DXF文件的组成有:标题节,类节,表节,块节,实体节,对象节,图形预览节。每个节由众多的组码和组值构成,组码指示组值的类型。每一节以组码0和组值SECTION开始,以组码0和组值ENDSEC结束。

通常情况下,在DXF文件中,若组码为下述整数值则为AutoCADX绝对坐标值:10~18,110~112,1010~1013;若组码为下述整数值则为AutoCADY绝对坐标值:20~28,120~122,1020~1023。

本程序中利用DXF文件,对点、直线、多线、多段线、多边行、矩形、样条曲线、圆等一般实体和圆弧(arc)、椭圆(Ellipse)、填充(Hatch)、块(Block)等特殊实体的组码和组值进行分类提取其绝对坐标值用于计算。

核心程序如下:

Private Sub ChangeDXF(opendxffile As String, Savedxffile As String)

Open opendxffile$ For Input As #1

Open Savedxffile$ For Output As #2

Do

Line Input #1, INDEXX$

Print #2, INDEXX$

If Trim(UCase(INDEXX$)) = "ENTITIES" Then

If INDEXX$ = " 10" Then

Line Input #1, X_ZB$ '读入X的值

……

End If

Line Input #1, INDEXY$ '读入字母Y

……

Loop Until EOF(1) = True

Close #1;Close #2

End Sub

三、程序实现流程

基本流程图(图1)

图1AutoCAD换带和正反算流程

四、应用实例

笔者所在单位于2008年5~8月使用开发的换带软件对某市400平方公里的基础数字化地形图进行换带,分别提供某坐标系114和114°30′两套成果,精度可靠、图形属性完整。

1.Txt数据文件的换带计算。

程序中可直接打开txt数据文件或手工输入需转换坐标,也可直接“CAD拾取”需转换的坐标点。

2.AutoCAD图形的换带计算。

五、结论

笔者采用自主开发的高斯投影换带软件,实现了基于AutoCAD平台的图形直接处理,精度较好,实用性较强,大大提高了工作的效率。希望能够对从事测绘工作的技术人员对基于AutoCAD平台的二次开发给予一定的参考。

参考文献:

[1]宁津生,刘经南,陈俊勇等.现代大地测量理论与技术[M].武汉:武汉大学出版社,2006.

[2]孔祥元,郭际明,刘宗泉.大地测量学基础[M].武汉:武汉大学出版社,2006.

[3]马明栋,赵长胜.面对对象的测量程序设计[M].北京:教育科学出版社,2000.

[4]张宏敏.地图投影变换中的几种方法[J].科技信息,2006

注:文章内所有公式及图表请用PDF形式查看。

上一篇:简单论述工程中的建筑电气配管施工 下一篇:简析高层建筑施工技术