免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 5376|回复: 4
收起左侧

[二次开发] 基于SketchUp和ArcGIS Engine的三维浏览查询系统研究

[复制链接]

341

主题

8893

铜板

118

好友

版主

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
5359

灌水勋章宣传勋章

发表于 2010-3-14 16:16 | 显示全部楼层 |阅读模式
基于SketchUpArcGIS Engine的三维浏览查询系统研究
马素颜
(华东师范大学地理信息科学教育部重点实验室,上海200062)
摘要:ArcGIS软件不能直接创建Multipatch三维模型,只能通过ArcObject编程实现或导入其他建模软件的模型,然而这两种方式都不够全面。本文借助Google SketchUp软件在ArcGIS环境中,以华东师范大学为例,将SketchUp比较完美的建模效果、强大的属性信息编辑与Arc Engine中的属性查询统一起来,开发了一个简单的三维浏览查询系统。
关键词: 三维GISMultipatch三维模型,Google SketchUp

Research on 3D Navigation and Inquiry System Based on SketchUp and ArcGIS Engine
MA Su-yan
(Key Laboratory of Geographic Information Science, Ministry of Education,
East China Normal University, Shanghai 200062,China)

Abstract: Software ArcGIS cannot directly create Multipach Model of ESRI format, which means it could only load models created by other software or create models by means of AO programming, while these two measures have their limitations in editing property information or creating models respectively. This paper is based on the models created by SketchUp, using SketchUp6 ESRI plugin to transform the models into Multipach Model of ESRI format. Moreover, this paper takes the buildings in ECNU as an example to realize the function of searching property information by AE programming.
Key words: 3D GIS; Multipach Model of ESRI format; Google SketchUp


0   引言
三维地理信息系统(3DGIS)是当今GIS发展的一个热点。三维GIS对客观世界的表达能给人以更真实的感受,它不仅能够表达空间对象间的平面关系,而且能描述和表达它们之间的垂向关系[1]。目前,3DGIS的开发方式主要有两种:一是在专业的二维GIS软件平台上进行三维的二次开发,如ArcGISSuperMap等平台都提供了三维功能的开发接口;二是以其他三维或者2.5维软件作为平台,进行开发,如Skyline软件等。比较这两种方法,前者较后者的三维空间分析功能更强大,而后者较前者的三维模型建立方面有优势。其中ArcGIS作为GIS行业基础软件的领头羊,在社会生产、生活实践中有着广泛地应用,很自然地成为构建三维地理信息系统的重要选择,但ArcGIS中模型的精确建立受到自身技术的一些限制。而利用Google SketchUp软件(以下简称SU)可以很好的解决这一问题,并且所建的模型能够直接转换为ArcGIS 的三维模型格式Multipatch。本文将SU强大的建模功能与ArcGIS Engine(以下简称AE)结合起来,并在三维的浏览与查询功能开发方面做了一个尝试。
1   ArcScene平台与Multipatch三维数据模型
ArcGIS 3D分析系统是ArcGIS桌面产品的三维可视化和分析扩展模块。它可以有效地显示和分析表面数据及内含的三维可视化和地形建模功能。3D分析扩展模块的核心是ArcScene应用,它为多层三维数据图的显示观察以及表面数据生成和分析提供了用户界面。[2]
新实用的Multipatch技术更是强大了ArcScene构建三维模型方面的功能。Multipatch模型从抽象类Geometry中继承,它是一系列3D表面的集合。所有的3D表面在几何上主要是由Triangle Strips, Triangle FansRingsring-groups)所代表,如图1所示。


2   SU中三维建模方法
在地理信息系统中,地理要素分为地物要素和地形要素两大类。
2.1 地形建模
地物都是建在或长在地形基础之上的。要实现三维景观的比较真实的虚拟,对于起伏大的地区,地形的三维构建很重要。在SU中,有专门创建地形的扩展工具栏-----沙盒(SandBox),使用该工具创建的地形是许多个小三角形的集合,类似TIN(不规则三角网)。只要把等高线直接导入进来,就可以通过该工具直接创建真实的三维地形。[4]
2.2地物建模
与其他建模软件类似,SketchUp中完整的建模过程包括几何建模和贴图纹理制作两步。
2.2.1     几何建模
地物要素可分为点状要素、线状要素、面状要素三大类。
1、  点状要素建模
地理环境中,行道树、路灯、垃圾桶等往往被抽象成点状要素。路灯和垃圾桶等具有规则的几何形状,与面状要素的建模类似。树木的建模相对来讲比较困难。其他的建模软件如MultiGen Creator中对树木的建模采用BillBoard技术,将树木抽象成两个交叉的十字面,建出来的模型只可远观,效果不太理想。
而在SU中,有一个自由手绘(Freehand)工具,可以实现树木的精确建模。Freehand工具的使用就像随手涂鸦一样,允许用户在三维空间内画出想要的复杂模型。用此工具建出来的树以及其他植被比较真实。而且SU的网络资源很丰富,有大量的树木模型可供用户免费下载使用。




2、  线状要素建模
线状要素包括河流、航线、道路等。以道路为例,首先应该在SU中将其扩展成面的形式,才能对其进行后面的贴图纹理制作,使其具有很高的仿真性。对于一条位于起伏地形基础上的道路,可以使用Sandbox(沙盒)系列工具中的Drape工具,将一条平面上的道路投影到起伏地形的曲面之上。
3、  面状要素建模
地理环境中很多地物以面状要素形式存在,如建筑物、草坪、空旷的场地等。本系统中建筑物是最重要的地物。
对建筑物的建模基本就是画线成面,挤压成型。所用到的工具有:推拉工具和路径跟随工具。本系统是要精确到层,因此应以层为单位进行建模,对于比较规则的、层与层之间相同的建筑物,将每层设置为一个组件(Component),只需复制粘贴就可完成其他层的建模,最后,整栋建筑物作为一个组(group),组的名称对应相应的建筑物名。
2.2.2     贴图与材质
几何建模只是给了我们建筑物的几何框架,需要在其表面或内部赋上纹理和贴图使其更加真实。贴图的好坏至关重要,直接影响到三维景观的视觉效果。
SketchUp中贴图制作集中在Paint Bucket工具中。可以利用程序自带的材质库中的材质和纹理,也可以自己拍摄、处理贴图,导入到SU中使用;可以设置贴图的具体尺寸;贴图的调整主要是通过贴图坐标来调整,可以实现曲面贴图,包裹贴图等高级贴图方式;吸管工具可以很方便地完成具有相同贴图的面的贴图操作;另外还可以对贴图进行扭曲变形达到想要的效果。SU也支持镂空贴图,将带有Alpha通道的图片导入进来就能实现透明效果;将不同的对象赋予不同的材质,根据材质可以很方便的计算出某种对象的面积。[4-5]
3   SketchUp模型转换为Multipatch模型方法
SketchUp6版本推出了SketchUp6 ESRI插件,该插件实现了从SketchUp模型直接转为Multipatch模型。这就大大方便了和改进了ArcGIS中三维模型的构建。而在此之前,创建Multipatch模型的方法主要有两种:一是通过ArcObjects编程实现,二是将其他一些建模软件的创建的三维模型直接转化为Mulitipatch模型。[6]其中后者虽然也比较简单,但是由此得到的Mulitipatch模型的属性信息很简单,只有GeometryObjectIdenFile Name三个字段,限制了进一步的三维查询以及其他更复杂的分析功能的开发。
安装好SketchUp6 ESRI插件后,在ArcMapArcScene中会加载一个SketchUp 6 Tools工具。此工具的作用是将ArcMapArcScene中打开的数据(包括TIN数据、矢量数据、栅格数据)导入到SketchUp中作为底图或者参考图层进行地物或地形的三维建模。[7]需要说明的是,所有导入到SketchUp的数据均会保留原来与ArcGIS中一致的坐标信息,这样的话将SketchUp的模型或地形导到ArcGIS中时与原来的位置能保持完全一致。
        同时在SketchUpExport/3D Models里的Export Type中会多出ESRI Multipatch*.mdb)项,这样就可以把skp的模型直接导成Multipatch格式。并且在导出模型的同时可以设置每个multipatch模型的属性信息。
对于本系统中的建筑物,因为要实现每个楼层的查询,所以将每个楼层作为一个组(Group)导出,对应一个Multipatch模型。其属性信息主要包括ID(楼号)、Attribute(属性)、Name(名称)、Floor(楼层)、Usage(用途)五个字段。如图4所示:

4   三维浏览查询程序实例
由于华东师范大学中山北路校区的地势比较平坦,而且区域面积相对比较小,所以本系统中不考虑三维地形的构造。
校园地物主要分为四类:建筑物、道路、植被、河流。每一种地物的建模利用上述所讲的方法进行模型制作。然后将每个地物依照上面所述方法转换成Multipatch模型,在此基础上利用ArcGIS EngineVB编程主要实现了以下功能:
1、浏览功能
包括对视图的放大、缩小、旋转、NavigateFly功能等。这一部分主要通过设置ToolBar的属性,获得ArcScene中浏览系列工具的重用。

2、查询功能
1)查询建筑物的属性信息
点击建筑物的某个楼层,可以显示详细的属性信息,包括所属建筑物的名称、编号、属性、楼层、用途等属性信息。功能实现方法如下:
1)调用IScenegraphLocate()方法将鼠标点击位置的屏幕坐标转换为三维空间点坐标;
2)返回点击选择的建筑物对象;
3)将建筑物对象传递给属性显示窗体。
结果如图6所示:

2)根据属性字段定位建筑物
比如要查华东师范大学的球类场馆在哪个位置,在查询的下拉框中选择Usage球类场馆,目标楼层就会定位在大学生活动中心的四层,并在视图中高亮显示。实现方法:
1)创建查询过滤器,并赋予其条件查询语句;
2)调用IFeatureClassSelect方法选择符合条件的要素;
3)将选中的要素在SceneControl中高亮显示。
结果如图7所示:

5   结语
Google SketchUp软件为强大ArcGIS中三维显示方面提供了一条新思路,利用它提供的插件可以灵活地对Multipach的属性信息进行直接的添加和修改,从而将ArcGIS强大的空间分析功能与三维显示紧密的结合了起来。本文从最基本的功能做起,初步实现了对建筑物楼层的查询。其中还有很多高级功能有待于进一步实现。当然SketchUp也有一些不足之处,它缺乏专业建模软件中的一些高级技术,如LODmipmapBSPOCTREEocclusion等技术[4-5] ,势必会增加数据量,因此减少数据量也成为今后研究的必要内容之一。

参考文献
[1] 刘骏,蒲蔚然.小议城市绿地指标[J].重庆建筑大学学报,2001,2(4)35-38
[2] 俞锐,黄阳等.一种基于ArcScene平台的城市生活垃圾填埋场堆体温度场信息系统[J].市政技术,2004,222):120-121.
[3] ESRI Shapefile Technical Description[M]. An esri white paper.1998.
[4] http://download.sketchup.com/OnlineDoc/gsu6_win/gsuwin.html. SketchUp UsersGuide.
[5] 鲁英灿,康玉芬等.SketchUp设计大师提高[M].清华大学出版社,2006.
[6] 范力铭,吴健平等.ArcObjects中三维模型的创建方法[J].苏州科技学院学报,2007:54-58.
[7] http://www.sketchup.com. SketchUp and ArcGIS how they work together.

2

主题

16

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
138
发表于 2010-5-16 16:47 | 显示全部楼层
very good

0

主题

2230

铜板

15

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2033
发表于 2021-6-17 21:05 | 显示全部楼层
楼主  谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1684

铜板

1

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
643
发表于 2022-2-15 14:41 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

339

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
38
发表于 2022-2-15 15:25 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表