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

2. 软件环境

软件安装及配置步骤如下:
(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”,弹出如下窗口,

上图中,“2”项为属性图层,“1”和“3”项中选择属性值能够匹配的关联字段。点击“OK”后,查看关联结果如下,

这一操作的目的在于通过两个图层的公共字段,为目标层关联属性表,但值得注意的是,这个属性的关联仅仅是关系上的链接,并没有对实际数据作出改动。
此时,需要在 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 图层后,需要设置该图层的必要字段,需要添加的字段如下图所示,

特别说明:如果原始数据中的属性需要加载到创建的的模型中去,SUSourceFeatureID 字段的建立非常有必要。
■ 纹理添加,要精确到面。
在 SketchUp 中为模型添加纹理时,需要选中建筑物的面,逐一添加,否则在导出 Multipatch 数据使,纹理将不被继承。
■ 空间参考
ArcGIS9.3 环境下,通过 SketchUp 插件导出的 Multipatch 图层没有空间参考,需要手工添加空间参考(建议选择数据源空间参考)。否则,将无法加载到 ArcGlobe 的三维场景中。
2. 借助影像数据建模
在 ArcGIS 环境下,从影像中提取矢量信息,再根据矢量信息模的方式处理。
上一篇:Vega Prime视景仿真软件API简介[ 11-29 ]
下一篇:Vega 小镇(Town)视景仿真实践[ 01-19 ]