基于ArcGIS创建三维虚拟城市流程
一、 ArcGIS 结合 SketchUp 建模
1. 流程概括
(1)使用ArcGIS桌面,即ArcMap,加载矢量数据;
(2)在ArcMap环境中,利用SketchUp插件工具,将所需要建模的 区域导入SketchUp中。
(3)在SketchUp创建模型。
(4)在SketchUp中将模型转成ArcGIS的Multipatch模型要素文件 并保存于Personal GeoDatabase(后面统称为PGDB)中。
环状建模流程图

2. 软件环境
软件 版本 安装先后顺序
ArcInfo 9.2 和 9.3.1 1
Google SketchUp 6.0 pro 版 2
模型转化插件 SketchUp6ESRI 3
软件安装及配置步骤如下:
(1)安装ArcGIS Desktop软件,如ArcInfo。(过程略)
(2)安装草图大师Goolge SketchUp软件。(过程略)
(3)安装SketchUp6 ESRI 插件,过程如下,
双击“SketchUp6ESRI.exe”,开始安装,
接受协议,点击“Next”,
第一个组件“GIS Plugin”,使用户能够在SketchUp中将模型以Multipatch要素的形式导入GDB。
第二个组件“3D Analyst SketchUp 3D Symbol Support”,用户可以在ArcMap中将GIS数据导入SketchUp中。
上述两个组件的安装位置尽量不要改变,可能会导致在SketchUp中导出3D模型失败。
执行组件安装,
(4)在ArcGIS环境中激活SketchUp6 ESRI插件,过程如下, 启动ArcMap界面,在工具栏上右键,单击“Customize”,
点击“Add from file”,加载SketchUp插件安装后,为 ArcGIS产品添加的动态库文件“FeaturesToSkp.dll”,该动态库的位置在ArcGIS安装目录下,
添加插件动态库后,在Toolbars项中可以找到SketchUp6的功能项,
选中“SketchUp 6 Tools”组件以后,在桌面上会弹出组件的功能按钮

二、 具体步骤
安装完“SketchUp6ESRI”插件以后,我们来开始实际的建模过程。
在利用ArcGIS结合SketchUp建模的过程,根据原始ArcGIS数据 质量的不同,我们的整个建模过程中的每一环细节上也有所变化。将原始 ArcGIS数据分为如下三类:
有属性的矢量数据:属性中包含建筑物的高度值、高程值等参 数。
无属性的矢量数据:属性中不包括对建筑物的关键性描述。
影像数据:基本能够反映出地表建筑物轮廓。
根据原始ArcGIS数据不同,实际的操作步骤也会有所调整,如下将分类介绍。
1. 矢量数据建模
数据简要说明:数据使用ESRI官方授权的美国首府华盛顿市区 建筑物二维轮廓矢量数据;该FeatureClass的名称为jmd;要素类型 为Polygon;
(1)在ArcMap中加载矢量数据,如下图,
(2)单击“Select Features”,在当前图上选择需要建模的矢量数据,
(3)点击之前添加的SketchUp插件“Export selected items to SketchUp 6”按钮,将弹出数据导出选项对话框,如下图,
系统将自动读出所选择矢量要素所在的FeatureClass,并且提供自动建模选项。
Elevate by field:依据属性字段,设置建筑物高程。
Extrude by field:依据属性字段,设置建筑物高度。
Name Group using:为导出数据,选择分组名称。
Launch SketchUp on completion:操作结束后,模型自动在SketchUp运行程序中打开。
Filename:指定导出模型文件的路径和名称。
单击确定,导出结束,弹出成功导出的提示对话框,如下图,
导出时候,原始的空间参考将被带入到SketchUp环境中。
同时,关联到SketchUp建模工具,将导出模型自动加载到建模 空间内,如下图,
(4)在SketchUp中添加适当的纹理,如下图,
需要特别注意的是,在SketchUp中贴纹理的标准单元是模型个体。
(5)在SketchUp中选择模型,并导出生成Multipatch。
该步骤需要用户谨慎对待,只有在SketchUp操作空间中被选中的 模型,才能以独立Multipatch要素导出。未被选中的模型也会被导出 成Multipatch要素导出,但是将作为一个整体要素存在于Multipatch 图层中。
同时,SketchUp中支持模型组合功能,一旦模型被组合后,将丢 失对应矢量数据源的ID值信息,这样就无法在后期添加原始矢量数 据的属性信息。该问题后面会介绍。
选择需要导出的模型,点击“文件——导出——3D模型”,如下图,
在指定导出模型的保存路径时,需选择的文件类型为“ESRI MultiPatch(*.mdb)”,
单击导出后,系统将弹出导出高级选项,如下图,
该对话框中主要有三个重要选项,介绍如下,
“Store SketchUp Data in Feature”:将SketchUp模型,对应的存 储于Multipatch模型要素中。
“Use Selected Items Only”:仅导出及转换被选中的模型。
“Create”:创建PGDB(.mdb)。
单击“ Create”,系 统将弹出提示对话框,提示用户创建Multipatch 图层(Feature Class),此时,我们可以看到,原始数据的空间参考确实 带入到了SketchUp环境中,并且在整个过程中将一直延续该空间参 考。
如果需要增加额外字段,可单击“Add Field”,
基本的字段类型,均可以在“Type”下拉菜单中找到(该插架对 Type下拉菜单中的Geometry和Raster两种字段类型支持不好,一旦 选择,系统将会报错)。本例中,新建三个字段,如下图,
单击“OK”后,字段添加完毕,返回到导出模型的初始窗口,
再次点击“OK”,导出完成,
(6)Multipatch说明
上面操作,已经将SketchUp模型导入GDB中,并 生 成 了 Multipatch模型图层,如下图,
在ArcCatalog中可直接浏览Multipatch要素,通过图层的属性查 看,可以知道,在创建Multipatch模型时,SketchUp插件自动为数据 创建了几个关键字段,如下图所示,
上述字段说明如下,
“OIDField”:系统自动分配的唯一ID。
“SUSourceFeatureID”:原始数据的ObjectID值。
“SUInstanceName”:在SketchUp环境中的图层名称。
“SketchUpData”:SketchUp模型的二进制形式存储字段。
“a/b/c”:自定义字段。
上图红色外边框的数据为Multipatch数据,下 层 为 原 始矢量图层, 首先,需要建立这两个数据的关联性,在目标层Multipatch层上右击 后依次选择“Joins and Relates——Join”,弹出如下窗口, PDF
上图中,“2”项为属性图层,“1”和“3”项中选择属性值能够匹配的关联字段。点击“OK”后,查看关联结果如下, PDF
这一操作的目的在于通过两个图层的公共字段,为 目 标层关联属 性表,但值得注意的是,这个属性的关联仅仅是关系上的链接,并没 有对实际数据作出改动。
此时,需要在Multipatch图层上右击,选择“Data——Export Data”,将模型重新输出一次即可,如下图,
“OK”后Multipatch模型要素图层就创建完毕了。我们可以检 验一下,Multipatch模型的几个显示效果。
ArcCatalog的3D View预览
ArcScene展示
ArcGlobe 展示
ArcGIS Explorer展示
(8)补充ArcGIS9.3桌面环境下建模过程
SketchUp6ESRI 插架是针对 ArcGIS9.2 定制的。目前广大用户的 ArcGIS 版本几乎都是 ArcGIS9.3 或更高级版本。该插件与 ArcGIS9.3软件的兼容性和数据的兼容性成为用户关注的焦点。
下面将介绍,该插件在 ArcGIS9.2 与 9.3 这两个版本中使用的不同。
ArcGIS9.3桌面创建的PGDB无法被ArcGIS9.2桌面支持。因 此,在 SketchUp6ESRI 插架在创建无法正常创建 PGDB。首 先,需要通过 ArcCatalog 手工创建一个 PGDB,同时新建一 个Multipatch的Feature Class,如下图,
新建一个 MultiPatch图层
字段设置:在新建 MultiPatch 图层后,需要设置该图层的必 要字段,需要添加的字段如下图所示,
特别说明 :如果原始数 据中的属性需要加载到创建的的模型中去, SUSourceFeature ID 字段的建立非常有必要。
纹理添加,要精确到面。
在SketchUp中为模型添加纹理时,需要选中建筑物的面,逐一添 加,否则在导出Multipatch数据使,纹理将不被继承。
空间参考
ArcGIS9.3 环境下,通过 SketchUp 插件导出的 Multipatch 图层没 有空间参考,需要手工添加空间参考(建议选择数据源空间参考)。 否则,将无法加载到ArcGlobe的三维场景中。

2. 借助影像数据建模
在ArcGIS环境下,从影像中提取矢量信息,再根据矢量信息建 模的方式处理。