邱建康
(石狮市恒信房地产评估有限公司,福建石狮 362700)
AutoCAD下矢量数据栅格化输出的实现
邱建康∗
(石狮市恒信房地产评估有限公司,福建石狮 362700)
在AutoCAD下实现了矢量数据栅格化处理,既保证了数据的安全性又有效解决了AutoCAD格式矢量数据的传阅和共享,为大面积范围矢量数据的共享提供了解决方案。
矢量数据;栅格数据;AutoCAD;矢量数据栅格化;信息共享
信息化社会对空间信息的需求越来越迫切,随着经济社会的快速发展,各行业的业务发展对空间信息的需求不断增加,要求空间信息必须提供可靠、适用、及时的保障服务,如:房产、交通、规划、电力、土地、水利、农业、电子商务等行业;同时社会公众在旅游、购物、餐饮、娱乐等方面的需求同空间信息的结合亦不断增加。然而,作为房地产部门却因为数据量大,矢量数据不便于在互联网上发布等诸多因素,不能为购房者提供直观的房源交易信息查阅。同时,建设部门的图纸数据大部分采用AutoCAD软件存储,涉及各种专题数据如果直接发布到互联网上,存在数据安全的问题。那么,这种大面积的矢量数据如何将其栅格化处理[1],制作成图片,去除坐标信息,在互联网上发布呢。为此,笔者提出在AutoCAD下将矢量数据进行分块输出,组织成金字塔分块结构,按照指定分辨率输出图片,在保证图形清晰度的前提下,实现了矢量数据栅格化处理,为专题信息的共享和传阅提供了解决方案。
矢量图与分辨率无关,任意地放大时,电脑就会根据现有的分辨率重新计算出新的图像,不影响它的质量和效果。栅格图的质量取决于分辨率,一幅栅格图像放大几倍后,就会明显地出现“马赛克”的现象。但是对于公众普通用户来说,在不关心图形精度问题,满足一般性定位的使用要求前提下,栅格数据的应用不但能够解决方便直观的用图需求,而且具有快速调用显示的特点。
2.1 金字塔栅格文件组织
为了便于对数据的有效调用及减小栅格数据的细节层次深度,对数据进行分层和分块处理[3,5]。
图1 金字塔数据组织
例如图1所示在对于矢量数据分别输出0.1 m、0.2 m、0.4 m、0.8 m分辨率的栅格化数据文件,在实际应用时根据放大的比例尺层级范围选择相应分辨率的栅格分块数据显示。对不同尺度的数据以层结构的方式进行组织,分辨率递减的数据层形成金字塔式数据结构。在数据库中存储生成的有限数量的层,不同应用访问数据库中相应分辨率的栅格分块数据。
对于同一层分辨率的数据,按地域范围对数据进行分块处理,以便于对数据的动态调用、操作及可见性判断。如果场景中包含的数据块太多,则每帧场景描绘所需的时间会太长,显示效果没有流畅感;如果数据块太少,则描绘的速度很快,而从外存加载新的数据块所占时间显得更长,将会有明显的停顿感。
为此,金字塔数据分层按照四叉树[2]进行索引,在k维数据空间中,每一节点有2k子树。用于对空间点的表示索引。每个节点存储了一空间点的信息及2k个子节点的指针。如二维空间的四叉树,每个子节点对应一个矩形,用四种方位NW,NE,SW,SE表示。逐级将空间划分到含有数据的个数低于某一值的矩形为止。
不能再分的块构称为树的叶节点,有值的叶节点为黑节点,没有值的节点为白节点。k为树的高度,图2中k=3。四叉树的存储可按常规叶节点的顺序存储,称为常规四叉树。按特定叶节点顺序存储的称为线性四叉树。
图2 四叉树及其分割过程
2.2 矢量转为栅格文件输出
在AutoCAD中将绘制好的图形输出栅格图像文件有两种方法:
方法一:Export屏幕输出。鼠标左键单击“文件”菜单中的“输出”命令,或直接在命令区输入“Export”命令,系统将弹出“输出”对话框,在“保存类型”下拉列表中选择“∗.bmp”格式,单击“保存”,用鼠标依次选中或框选要输出的图形后回车,被选图形便被输出为bmp格式的图像文件。然而,此种方法输出图像时,完全以屏幕显示为标准。图形窗口中的图形按屏幕显示尺寸等大输出,输出结果与图形的实际尺寸无关,不能满足按照分辨率输出的需要。
方法二:虚拟打印文件输出。通过(Add a Printer)添加打印机,设置栅格图形输出驱动(TIFF Version (不压缩).pc3),在打印机属性设置中设置自定义纸张大小,即输出栅格图像的尺寸——长宽像素数。
该方法能够按照制定的分辨率输出栅格图像,为此采用第二种方式编程实现分层分块的栅格数据文件自定义输出。
用VB对AutoCAD进行二次开发[4],是基于新的ActiveX自动化界面技术。AutoCAD ActiveX技术使用户可以通过AutoCAD暴露出来的信息,用其他应用程序(如VB)通过编程从AutoCAD内部或外部来控制和操纵AutoCAD。笔者使用AutoCAD VB开发包,通过调用AutoCAD自动化对象接口,实现调用AutoCAD图形打印功能,自定义开发栅格数据输出功能。
3.1 程序设计
在栅格图像输出之前,必须要了解图纸打印比例的定义:举个例子来说,AuoCAD图形实际大小为250 m×250 m,图纸打印大小为50 cm×50 cm,则图纸与实际的比例为1∶500,也就是说图纸中的1个单位等于实际中的500个单位。如果图纸尺寸大小定义为(5 000×5 000像素),且把程序中的“打印比例:XX像素=XX单位(m)”中设置为“1像素=1单位(m)”,则表示该图纸可打印一个5 000 m×5 000 m的实际图形;若在程序中的“打印比例:XX像素=XX单位(m)”中设置为“1像素=0.5单位(m)”,则表示该图纸可打印一个2 500 m×2 500 m的实际图形。因此,如此类推,如果实际图形的大小为250 m×250 m,且图纸尺寸大小定义为(5 000×5 000像素),那么在打印比例设置中就应该设置为1∶0.05最为适合。
本文按照四叉树方式将图形进行栅格化,所以可以从2、4、8、16、…2K将指定范围的矢量数据输出为分块栅格数据,并且根据需要可以选择尺度更大的步距来输出分层的数据,如:输出2、32、1024、…25∗n分层分块栅格数据。并通过像素计算公式设定输出分辨率。
3.2 功能实现
在程序代码中将VB对象与AutoCAD运行程序连接起来后,按照分块和选择的图形范围计算输出分辨率,循环输出栅格文件。代码如下:
对于不同的层依次按照各层分块的数目设置对应的行列号,输出相应层的栅格数据文件。程序界面如图3左图所示。
启动ArcMap加载某分层所有分块的栅格数据,核查输出结果内容如图3中右图所示。
图3 AutoCAD中输出分块栅格图片(左)、在ArcMap中将分块图片调入查看(右)
通过在AutoCAD下实现矢量数据栅格化批量处理,并且按照金字塔组织结构分层分块输出,提供给网络图形发布调用,既保证了数据的安全性又有效解决了AutoCAD格式矢量数据的传阅和共享。不过,在数据安全性上,还需要进一步研究将矢量数据进行有效地加密处理后再输出金字塔栅格数据,而且使得加密处理是非对称性加密,充分保证数据安全,对此还需要进一步的研究。
[1] 龚健雅.地理信息系统基础[M].北京:科学出版社,2001
[2] 朱红缘,张福庆,杨崇俊等.基于四叉树技术的全球影像数据组织管理关键技术研究[J].首都师范大学学报(自然科学版),2009(05):72~76,80
[3] 陈静,龚建雅,朱欣焰等.海量影像数据的WEB发布与实现[J].测绘通报,2004(1):22~25
[4] Autodesk.AutoCAD VBA Developer's Guide.Autodesk Inc,2009
[5] Platings M,Dat A.2004.Compression of Large-Scale Terrain Data for Real-Time Visualization Using a Tiled Quad Tree [J].COMPUTER GRAPHICS,23(4):741~759
The Implementation of Converting Vector to Raster in AuotCAD
Qiu JianKang
(ShiShi HengXin Real Estate Appraisal Co.,Ltd.Quanzhou 362700,China)
This paper introduces coverting vector to raster in AutoCAD.It not only ensures the data security but also implements vector data distribution and sharing.This also provides a solution for huge vector data sharing.
Vector;Raster;AutoCAD;vector to Raster;Information Sharing
1672-8262(2010)06-120-03
P209
B
2010—04—18
邱建康(1969—),男,助理工程师,主要从事地理信息应用工程的研发工作。