基于AutoCAD平台的图件动态坐标标注系统设计与实现

2019-09-05 01:10余章蓉王友昆董国桥
城市勘测 2019年4期
关键词:图件样式高斯

余章蓉,王友昆,董国桥

(1.昆明理工大学津桥学院,云南 昆明 650106; 2.武汉大学测绘学院,湖北 武汉 430079;3.昆明市测绘研究院,云南 昆明 650051)

1 引 言

AutoCAD的dwg格式的图件在工程规划、设计、建设中应用广泛。坐标标注是工程设计图、审批图、竣工图等工程图件绘制中常用的功能,其目的是将重要位置的坐标醒目地显示在图纸上,便于识图者使用[1]。AutoCAD自带命令可以实现图件平面坐标的快速标注,一些学者基于AutoCAD平台也研究开发一些快速标注的插件[2~4]。对于测绘成果图件的坐标标注,除了标注平面坐标外,有时还需要标注地理坐标,甚至需要标注该点的其他坐标系的坐标成果。基于地理坐标的标注,部分学者也做了相应的研究工作[5],但对于标注其他坐标系成果的研究较少。传统的方式是先利用坐标转换工具将需要标注的位置坐标进行转换,然后利用坐标标注工具将转换的文本内容标注在图件中[6]。这种方法不但工序烦琐,而且容易出错。本文将坐标转换的功能集成在坐标标注模块之中,将坐标转换和坐标标注有机结合,同时将转换参数加密存储于加密狗中达到保密的效果,系统在多个规划建设项目中得到了应用,大大提高了坐标标注的效率。

2 系统设计与实现

2.1 需求分析

图件标注一般是将图件关键位置的平面坐标标注在图上,也有标注地理坐标的需求。针对一些特殊要求,需要在同一图件中标注该位置的其他坐标系成果坐标。一般的CAD图件均为平面坐标系,标注平面坐标时可直接获取图件位置的坐标值进行标注。当要标注地理坐标时,需要将获取的图件平面坐标通过高斯反算为经纬度值后再标注。当需要标注其他坐标系成果坐标时,需要先将获取的图件坐标值进行坐标转换,然后标注转换后的坐标值。

2.2 系统设计

为了实现AutoCAD平台下同一坐标系成果图件的不同坐标系成果的坐标标注功能,标注系统采用Visual Studio 2012开发平台和C#语言开发,利用AutoCAD ObjectARX .NET技术实现AutoCAD标注点获取和视窗操作的交互,基于加密狗实现坐标转换参数的存储、调用及坐标转换等功能,搭建开发多坐标系成果坐标动态标注系统。系统主要包括系统设置、坐标点选择、坐标转换、高斯反算、坐标标注等步骤,如图1所示。

(1)系统设置,对成果的坐标标注类型和是否需要坐标转换进行设置。

(2)坐标点选择,通过AutoCAD的互操作选择需要标注的源坐标点位置,其平面坐标记为(x,y)j。

(3)坐标转换,如果标注的坐标需要坐标转换则根据系统设置,自动判断后调用对应的函数进行坐标转换,转换后的目标平面坐标记为(x,y)k。

(4)高斯反算,如果坐标标注类型为地理坐标,设置椭球参数,将(x,y)k高斯反算为(B,L)k。

(5)坐标标注,按照设置的标注样式,将坐标值(x,y)k或(B,L)k标注图元添加到图形中。

2.3 功能实现

(1)系统设置

参数设置主要实现对成果图件的标注类型和坐标转换参数进行设置。标注类型是设置标注平面坐标或标注地理坐标。如果需要进行坐标转换,需要对转换区域、源坐标名称和目标坐标名称进行设置,以便后续调用相应的转换参数进行坐标转换。设置示意图如图2所示。

图2 系统设置

(2)坐标转换

坐标转换主要以平面四参数模型实现源坐标转换为目标坐标。平面四参数模型为相似变换模型[7],模型包括2个坐标平移参数△x/△y,1个尺度参数m,1个角度旋转参数α,转换关系如式(1)。

(1)

式中(xj,yj)为转换前源坐标,(xk,yk)为转换后目标坐标,a=mcosα,b=msinα

坐标转换计算方法简单,将4个参数及源坐标带入式(1)即可计算出目标坐标。为提高用户体验,用户只需选择转换区域、源坐标名称、目标坐标名称,程序自动根据用户选择通过索引的方式调用转换参数,实现坐标的自动转换,坐标转换流程如图3所示。

为保证转换参数不被泄密,转换参数用户是不可见的,转换参数加密后存储于加密狗[8~10]。通过加密狗唯一的硬件ID进行识别,确保标注程序同加密狗对应。同时,采用加密狗自带的RSA非对称算法[11~13],利用公钥和私钥分别实现转换参数的加密和解密。为降低坐标转换的精度,可将坐标混淆及坐标转换的代码‘移植’到加密狗内,极大地提高保密性。

图3 坐标转换流程

当标注坐标为地理坐标时,需要先采用高斯反算将高斯投影平面直角坐标(x,y)转换为大地坐标(B,L)后标注,一般采用迭代法计算[14]。

(3)标注样式

通过图元的标注样式设置,用户可以标注出符合不同出图要求的标注图元。平面坐标标注和地理坐标标注的标注样式设置,均包括标注图层、箭头样式、文字样式、字体大小、小数位、坐标前缀等内容。标注图层、箭头样式、文字样式列表框,由程序读取图形全部图层名称、箭头样式、文字样式至列表框,供用户选择设置。坐标前缀可以增加坐标的前缀符,如平面坐标可加入“X=”、“Y=”前缀符。

平面坐标标注的样式设置如图4所示,可以设置坐标的比例,如可以将米为单位的坐标放大1 000倍以毫米为单位标注。此外,还可以标注图元的高程,并可互换X/Y的坐标位置。

图4 平面坐标标注样式设置

地理坐标标注的样式设置,比平面坐标标注多了椭球参数设置和角度格式样式的设置,椭球参数的中央经线及椭球定义用于高斯反算,角度格式用于设置标注的经度和纬度的,如图5所示。

图5 地理坐标标注样式设置

(4)动态标注

AutoCAD ObjectARX .NET提供的JIG(Just in Time Graphic 即时绘图)技术可以实现动态标注[15],通过标注过程的交互操作,用户在标注过程中可以预览标注结果,大大提高了用户的体验效果。基于本文的需求,如图6所示,其实现的交互过程如下:

①用户点击需要标注的P1点。

②程序获取点坐标,根据系统设置将该坐标转换后将标注的内容传入JIG类。

③鼠标移动,程序获取鼠标的临时点P2坐标,JIG类根据P1和P2点的位置将箭头、横线、标注文字等图元临时绘制出来,绘制的结果随用户的鼠标位置动态移动。

④用户鼠标在P3位置处点击确认后,程序将标注图元添加至图形,结束命令。

图6 动态标注示意图

动态标注的核心是对ObjectARX .NET提供的EntityJig类和DrawJig类进行继承重写[16],不同之处在于EntityJig只能操作单个图元,DrawJig可以操作多个图元。由于标注的图元至少有4个,加上高程则有5个图元,因此采用继承DrawJig类来实现动态标注。继承DrawJig类,重写类的Sampler和WorldDraw函数即可。Sampler用于获取用户命令(鼠标)状态,判断鼠标是否点击第二个点,如果没有则调用WorldDraw用于绘制动态的图元,如果点击了第二个点则将图元绘制添加到图形中。

3 实例应用

以昆明市长水机场遮蔽角及障碍物测量项目为例,1∶500地形图采用城市独立坐标系测制,图件需要标注城市独立坐标系平面坐标、长水机场AB坐标系平面坐标、1954北京坐标系地理坐标。首先,第一次坐标标注前需要进行系统设置,也可在标注过程中重新设置。

长水机场AB坐标系平面坐标需要经过坐标转换后标注,因此标注类型勾选“标注XY”、坐标转换勾选“是否转换”,并设置源坐标和目标坐标,如图7所示。城市独立坐标系平面坐标可根据获取的图件坐标直接标注,因此不用勾选“是否转换”。1954北京坐标系地理坐标需要坐标转换和高斯反算后标注,标注类型勾选“标注BL”,目标坐标选择1954北京坐标系。

图7 机场AB平面坐标系标注设置

点击确定后,如果需要坐标转换,程序根据源坐标和目标坐标名称自动索引存放于加密狗内对应的转换参数,将获取的坐标进行转换。为查看不同标注样式的标注效果,城市独立坐标系采用空心箭头、两位小数进行标注,机场AB坐标系采用无箭头、三位小数、前缀A/B标识、高程进行标注,1954北京坐标系采用实心箭头、一位小数、前缀B/L、‘°′″’角度格式进行标注,结果如图8所示。

图8 坐标标注实例示意图

4 结 语

本文将坐标转换和动态标注有机结合,实现了不同坐标系成果坐标在同一图件中标注的应用需求。基于加密狗的安全性和编辑性,实现了软件的保护、转换参数存储和坐标转换过程的保密。同时,基于即时绘图(JIG)技术,实现了动态标注。系统操作简便、功能齐全,减少了独立坐标转换的环节,极大地提高了坐标标注效率。

猜你喜欢
图件样式高斯
CPMF-I 取样式多相流分离计量装置
一种地质图件数据管理系统设计思路
CPMF-I 取样式多相流分离计量装置
遥感解译成果图件矢量化方法技术研究*
取样式多相流分离计量装置
数学王子高斯
天才数学家——高斯
基于MapGIS和ArcGIS的遥感解译成果图件数据库设计与实现
这是巴黎发布的新样式
从自卑到自信 瑞恩·高斯林