基于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”,开始安装,
(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:指定导出模型文件的路径和名称。
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)。
“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”:自定义字段。
“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环境下,从影像中提取矢量信息,再根据矢量信息建
模的方式处理。