一.软件安装及其说明
1.需要安装的软件及其安装:
这份报告主要涉及到的有三个需要安装的软件ArcGIS9.3(或9.2) 、Sketchup6.0和SketchUp6 ESRI 插件。
ArcGIS是本专业大家耳熟能详的重要软件,这里就不再介绍,主要介绍一下Google Sketchup软件,它是一套直接面向设计方案创作过程的设计工具,其创作过程不仅能够充分表达设计师的思想而且完全满足与客户即时交流的需要,它使得设计师可以直接在电脑上进行十分直观的构思,是三维建筑设计方案创作的优秀工具。
现在ArcGIS已经出到了10而sketchup已经出现了8.0版本,但是由于插件只有sketchup6版本的,这一版本的插件和ArcGIS9.2配合是最好的,所以可以的情况下尽可能安装ArcGIS9.2,这样会省去很多不必要的麻烦。因为我的电脑操作系统是win8专业版,此版本不支持9.2版本,所以我只能安装9.3.
ArcGIS和Sketchup的安装就不再赘述了,SketchUp6 ESRI插件安装有一些关键步骤需要注意!如图所示的安装界面:
其中,第一个组件“GIS Plugin”,使用户能够在SketchUp中将模型以Multipatch要素的形式导入GDB。 第二个组件 “ 3D Analyst SketchUp 3D Symbol Support ” ,用户可以在ArcMap中将GIS数据导入SketchUp中。所以GIS Plugin安装在Sketchup的安装目录下,3D Analyst SketchUp 3D Symbol Support 安装在ArcGIS的安装目录下,不能安装错路径,否则Sketchup和ArcGIS是无法连接起来的。
2.在ArcGIS环境中激活SketchUp6 ESRI插件
插件安装完成后,sketchup不用再进行任何设置就已经可以导出mdb文件,但是ArcGIS是要设置的。我们在三维建模前应该选择在哪里打地基,这项工作可以由ArcMap完成,所以我们需要在ArcMap中设置以导出数据到Sketchup中。设置很简单,在工具栏处点击右键单击“Customize” ,如下图:
点击“Add from file”,加载SketchUp插件安装后,为ArcGIS产品添加的动态库文件“FeaturesToSkp.dll” :
添加插件动态库后,在Toolbars项中可以找到SketchUp6的功能项,选中“SketchUp 6 Tools”组件以后点击关闭,就会出现如下图标:
另外,为了使用方便我还设置了快捷键,点击Customize界面的Keyboard(中间下方)就可以设置了。
至此,ArcGIS就可以和Sketchup进行联合的建模与管理了。
二.Sketchup与ArcGIS联合三维建模流程
Sketchup是一款三维建模能力十分强大且操作简便的软件,ArcGIS又是一款管理数据和空间分析的王牌软件,但其模型构建和编辑能力并不强,把两者结合起来正好可以优势互补,在一个数字化的建筑或规划项目中,这样的软件组合有利于不同工作人员的分工,建筑设计师只需要用他们熟悉的Sketchup建模即可,而数据管理与分析人员可以通过ArcGIS进行各种空间分析和数据管理。
将Sketchup和ArcGIS结合的流程如下:
(1)使用ArcGIS桌面,即ArcMap,加载矢量数据;
(2)在ArcMap环境中,利用SketchUp插件工具,将所需要建模的区域导入SketchUp中。
(3)在SketchUp创建模型。
(4)在SketchUp中将模型转成ArcGIS的Multipatch模型要素文件并保存于Personal GeoDatabase中。
二.利用ArcGIS与SKetchup结合样例
1.数据来源
在ArcMap中矢量格式的数据才可以导出到Sketchup中,所以我们获得的数据要先进行转化,成为ESRI支持的Shapefile或GeoDatabase。一般栅格数据要进行矢量化,对于其他类型的矢量数据(如:CAD矢量文件,dwf格式数据),虽然ArcMap可以加载,但是它们往往不含有空间坐标,所以要在ArcCatalog中新建GeoDatabase或shp文件,导入这些数据,然后再添加空间参考。新建方法很简单,在目标目录下新建一个Personal GeoDatabase,按照ArcCatalog给的提示,一步步加载原始数据和空间参考。生成完成后,就可以用ArcMap加载,导入Sketchup了。
2.从ArcMap中导出数据
首先在ArcMap中加载想要建模的矢量数据,就是上面所说的从GeoDatabase或Shp文件,同时应该给它添加高程属性(Height) 如下图:
并给部分Polygon的Height属性添加属性值:
选中要导出的要素,按ctrl +s(我自己设置的快捷键)弹出如下对话框:
系统将自动读出所选择矢量要素所在的FeatureClass,并且提供自动建模选项。Elevate by field:依据属性字段,设置建筑物高程。 Extrude by field:依据属性字段,设置建筑物高度,即对其做拉伸。 Name Groupusing:为导出数据,选择分组名称。本例中勾选了Extrude by field
导出至Sketchup的结果如下:
其中突出的部分为在导出前给Polygon的Height属性赋予高度值的,然后勾选Extrude by field的结果,接下来设计师就可以在Sketchup中对它进行建模了。
3.Sketchup建模结果导出MultiPatch
用sketchup建模虽然简单易学,但是有一些绘图和设计的基本功才能设计出美观大方的模型,我在这方面就没什么天分了,所以就简单对这个模型做一些添加修改就可以了。
首先,想要对导出来的模型直接编辑是不行的,因为导入的数据都是以群组为单位存在的。要进行对面的操作,要选中一个群组,然后对它进行炸开操作,否则不能对面进行各种建模(画图,伸展等):
然后就可以对群组中的单个面进行编辑了。
编辑结束后,一定要对编辑结束的模型做创建群组操作,否则无法被导出,原因在于在su里面新建的建筑或其他地物,都是由面组成的,它们不是一个整体:
另外,本例中我并没有进行特别多编辑,仅是添加了两栋建筑物。
接下来就要把这些模型导出了,这又是关键的一步,因为稍有不慎,导出的结果就会不正确。只有在SketchUp操作空间中被选中的模型,才能以独立Multipatch要素导出。未被选中的模型也会被导出成Multipatch要素导出,但是将作为一个整体要素存在于Multipatch图层中。
导出的步骤应该如下:
首先,必须新建一个GeoDatabase,里面新建MultiPatch用来存储导出的数据。新建过程中一定要添加如下字段,原因在下一节解释:
序号 |
字段名称 |
字段类型 |
备注 |
1 |
SUSourceFeatureID |
LongInteger |
原始数据的唯一ID值 |
2 |
SUSourceFeatureClass |
Text |
原始数据的图层名称 |
3 |
SUInstanceName |
Text |
在SketchUp环境中的图层名称 |
4 |
SketchUpData |
Blob |
可保存SketchUp的模型字段 |
接下来,将模型导入这个新建的MultiPatch中:
点击确定后出现:
最后,选中刚才手动新建的MultiPatch,出现以下对话框表面成功了:
接下来就可以在ArcScene里面查看了,并且地物都是可以单独选中的:
导出后并没有结束,把从ArcMap中导出的数据也加入ArcScene,然后对它们做空间连接操作,让原图中高程、周长等属性也出现在新建的MultiPatch中:
四.常见错误及处理方法
1.不新建一个Geodatabase或新建了没有添加MultiPatch的情况下,从Sketchup中直接导出mdb会出现以下错误:
这是版本问题导致的,开头的时候就已经说过,Sketchup6和ArcGIS9.2的契合是最好的,所以如果用户使用的是ArcGIS9.2就不会出现这种问题。出现这种问题也是可以解决的,那就是新建Geodatabase并添加MultiPatch。
2.导出Multipatch时会出现以下的提示:
同样,在ArcGIS9.2的情况下直接导出一般不会出现这种问题。出现这种情况后,虽然能够导出,但是建模的一些信息会丢失,解决方案就是在新建Multipatch时要添加以下这些属性:
序号 |
字段名称 |
字段类型 |
备注 |
1 |
SUSourceFeatureID |
LongInteger |
原始数据的唯一ID值 |
2 |
SUSourceFeatureClass |
Text |
原始数据的图层名称 |
3 |
SUInstanceName |
Text |
在SketchUp环境中的图层名称 |
4 |
SketchUpData |
Blob |
可保存SketchUp的模型字段 |
3.在Sketchup中选中导出有时会出现以下的问题:
这表示编辑完后的建筑没有创建群组,导出会导致编辑部分丢失。解决方案就是一定要在导出前保证待导出的模型都是群组。