基于Visual Lisp的矢量地图栅格化技术研究与实现

2014-07-01 17:28黎慕韩沈飞飞尹志永
城市勘测 2014年5期
关键词:栅格切片矢量

黎慕韩,沈飞飞,赵 言,尹志永

(天津市测绘院,天津 300381)

基于Visual Lisp的矢量地图栅格化技术研究与实现

黎慕韩∗,沈飞飞,赵 言,尹志永

(天津市测绘院,天津 300381)

矢量地图栅格化是移动终端设备GIS应用程序开发的关键模块,本文通过对矢量地图栅格化技术方法的研究,提出了一种基于Visual Lisp的矢量地图快速栅格化方法,开发了矢量地图快速栅格化工具,实现了矢量地图数据在移动终端设备上的展示和共享。

AutoCAD;Visual Lisp;矢量地图;栅格化;移动终端

1 引 言

随着移动计算机和图形软件技术的快速发展,高性能的智能移动终端越来越普及,像基于iOS系统的iPad系列平板电脑以及更多的基于Android系统的平板电脑以及智能手机等等,它们有一个共同的特点:易携带、屏幕大、显示效果精细、触摸式互交操作;同时它还集成了网络、照相、定位等等模块。因此,本文提出并实现了一种基于Visual Lisp的矢量地图栅格化方法,将地图数据与智能移动终端高效结合,在移动终端显示、操作、编辑、使用地形图数据,为移动终端应用程序开发提供服务。

2 矢量地图栅格化技术

2.1 移动终端调问地图策略的选择

目前,矢量地图数据格式种类繁多,如本文将要研究的Dwg格式的地形图数据文件,其数据结构属于Autodesk公司的商业秘密,目前并未向iOS和Android等移动平台提供Dwg数据的API访问接口,一些处理CAD图形的专业人士往往能直接对dwg文件进行读写操作,但这种方法需要从底层实现,非常复杂,往往得不偿失。

通过对ArcGIS 10中动态调用松散型地图切片模式的研究,可将矢量格式的Dwg地形图按照ArcGIS松散型地图切片格式打包,然后利用ArcGIS开放的API函数,在移动终端中编程,变相实现对Dwg地形图数据的调用。

2.2 组织切片文件

在GIS中,切片文件是以层的概念来组织的,如L00、L01、L02……。不同的层,表示矢量地图数据在不同的地图比例尺时所输出的栅格图片的集合,对应在地图上,一层切片就是一张完整的地图。在同一层内,按照预先设置好的切片间隔、切图比例以及像素大小,将矢量数据划分为若干个区域分别输出栅格图片,栅格图片按照所在行位置的不同建立文件夹,如R00000000、R00000001、R00000002等,然后按照每张栅格图片按照所在列的不同命名,如C00000000.jpg、C00000001.jpg、C00000002.jpg等,具体文件组织形式如图1所示:

图1 输出栅格图片格式

图1 中,conf.xml和conf.cdi为切片配置文件,它定义了栅格数据包的层级结构、切图范围以及不同层的切片间隔、切图比例以及像素大小。

2.3 制作切片数据

那么针对一张矢量地图,这里采用AutoCAD自带的二次开发工具Visual Lisp作为开发工具,它提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具。部分编程思路及代码如下:

对于一张DWG地图,首先必须明确几个关键参数:

(setq Pixel 256);;设置输出图片的像素

(setq Level 7);;设置切图的级别

(setq Resolution 200) ;;设置像素的分辨率参数

(setq Scale 500) ;;设置地图比例尺;;确定坐标范围:

(setq extmin(getvar"extmin"))

(setq extmax(getvar"extmax"))

根据这些参数,计算出各个级别要输出的图片数量以及每一张图片对应的左下角、右上角坐标范围,所在级别以及行列位置,然后输出到相对应的文件夹下。

一般来说,从AutoCAD输出图片有4种方法,一是调用Windows API直接拷屏,然后根据地图视图的位置在拷屏获得的图片上去截取,这种方法涉及对图片的处理,用Lisp来处理有难度,而且速度上不占优势。二是利用AutoCAD自有的虚拟打印技术,它的优点是不需要待输出的对象在视图中显示出来,可以自定义输出坐标范围、像素,但是缺点是速度慢。三是用Export方法来输出,格式单一,一般只能输出BMP格式,图片占储存空间较大。最后一种方法,就是直接利用AutoCAD内建的命令Jpgout来输出制定坐标范围的地图,先设置好视口的像素大小,然后让当前视口显示到地图中要输出的坐标范围,然后指定输出路径和名称,整体速度非常快。

调整视口到指定像素:

(defun ChangeScreenSize(Width height doc/oldsize ori_w ori_h dw dh)

(setq oldsize(getvar"SCREENSIZE"))

(setq ori_h(vla-get-height doc))

(setq ori_w(vla-get-width doc))

(setq dw(-ori_w(car oldsize)))

(setq dh(-ori_h(cadr oldsize)))

(vla-put-width doc(+dw width))

(vla-put-height doc(+dh height)))

Jpg图片输出:

(defun jpg_out(lst acadobj/i x len lenstr)

(setq i 0)

(setq len(length lst))

(repeat len

(setq x(nth i lst))

(vla-ZoomWindow acadobj

(vlax-3d-point(nth 0 x))

(vlax-3d-point(nth 1 x)))

(vl-cmdf"jpgout"(nth 2 x)"")

(setq i(1+i))))

采用这种方法,栅格化处理的效率非常高,经过实验验证,一张5 km2的1∶500地形图,当切图级别为5级,输出图片的像素为512×512像素时,栅格化切片的时间是5 min,共计输出有效图片6 990张,并且栅格化地形图在移动终端中的显示效果清晰流畅。

3 应用实例

在传统的地形图外业检查模式中,前期准备必须先将地图数据进行分幅,然后按照一定的比例尺喷绘成纸质地图作为外业检查依据,检查过程中靠手工书写记录错误位置以及错误情况,最后逐条进行后期数据录入工作,这样的作业模式工作量大且容易出错。

基于以上矢量地图快速栅格化的方法,利用自主开发的矢量地图快速栅格化工具进行切片,只需将待检查的整片地形图数据切片打包,然后就可以移动终端上进行地图数据的查看、浏览,实时记录检查过程中位置、范围以及属性信息,自动化输出检查成果。采用这一平台之后,检查工作更加系统化、条理化,提高效率的同时,减少了人为错误的产生。具体显示效果如图2所示:

图2 iPad调用切片数据截图

4 结 论

通过对矢量地图栅格化技术的研究,本文在Visual Lisp开发平台下实现矢量数据栅格化处理,在各种移动终端提供图形发布调用,既保证了数据的安全性又有效解决了AutoCAD格式矢量数据的展示和共享。

参考文献

[1] 李长勋.AutoCAD ActiveX二次开发技术[M].北京:国防工业出版社,2005.

[2] 江雪松.AutoCAD 2000二次开发指南[M].北京:国防工业出版社,

[3] Autodesk.AutoCAD VBA Developers′Guide.AutodeskInc [R].2009.

[4] Esri中国信息技术有限公司.ArcGIS 10高级地图缓存策略[R].2012.

The Research and Implement on Vector Map Rasterizing Technology Based on Visual Lisp

Li Muhan,Shen Feifei,Zhao Yan,Yin Zhiyong
(Tianjin Institute of Surveying and Mapping,Tianjin 300381,China)

Vector map rasterizing is the key module to the mobile terminal equipment of GIS application development.Through to the research of vector map rasterizing method,this paper proposed a quick vector map rasterizing method based on Visual Lisp,and a quick vector map raterizing tool was deleloped,the vector map data showing and sharing on mobile devices was realized.

AutoCAD;Visual Lisp;vector map;rasterize;mobile terminal

2014—03—12

黎慕韩(1978—),男,高级工程师,主要从事城市测量技术工作。

猜你喜欢
栅格切片矢量
基于邻域栅格筛选的点云边缘点提取方法*
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
基于A*算法在蜂巢栅格地图中的路径规划研究
网络切片标准分析与发展现状
基于SDN与NFV的网络切片架构
基于矢量最优估计的稳健测向方法
三角形法则在动态平衡问题中的应用
肾穿刺组织冷冻切片技术的改进方法
不同剖面形状的栅格壁对栅格翼气动特性的影响