上一篇讲到GIS可以直接根据字段赋值给建筑轮廓shp文件,并在ArcScene中可视化,但很多人没装GIS,做方案又更多是用Sketchup,那有没有办法可以直接导出到Sketchup中展示呢?

先说结论:当然可以。有两种办法,一是用Google SketchUp Pro 6 GIS Plugin插件(安装在GIS平台)进行转换,另一种是直接用FME进行shp2skp的格式转换。

01 基于Google SketchUp Pro 6 GIS Plugin插件

直接安装,默认设置(后台回复“转换”获取该插件和安装教程)。

需要注意的是下图显示的两个组件需要分别设置安装路径,第一个默认,第二个组件(3D Analyst SketchUp 3D Symbol Support )必须放到ArcGIS 程序的安装目录下。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(1)

安装完后需要调出菜单,以Arcmap为例,自定义-自定义模式-从文件添加-勾选“Sketchup6 Tools”,之后菜单栏就会出现个sketchup的按钮。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(2)

选取好需要生成的地块范围后,摁按钮。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(3)

在Extrude by field中选取“建筑层数”字段,设置路径,确定。

Elevate by field,可以根据某个字段将Polygon升高(相当设置Z值)。

Extrude by field,可以根据某个字段将Polygon自动拉伸成立体。

Name group using,可以用来选择一个字段来进行分组。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(4)

可以设置默认1单位=1米,或者自定义,这里我按每层3.5m输出。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(5)

导出到SU后能正确显示层高。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(6)

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(7)

但缺点就是不能够一次性导出整个城市的建筑模型,因为数据量大,GIS会先崩溃,场地小的话还能凑合一下。

02 基于FME转换

这个就简单很多了。

利用Extruder模块,方向选“垂直”,距离=“层数”字段*层高,这里我按照每层3.5m设置,可按需调整,不清楚的话可以打开帮助文件参考下。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(8)

只需要把“建筑轮廓shp”和设置成skp格式的“写模块”用“Extruder模块”连起来就可以了,按F5运行一下。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(9)

耗时仅1分47秒,不到两分钟就可以拉伸完14万个要素并导出skp模型。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(10)

SU中打开的效果如下,能看到全深圳的现状建筑分布。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(11)

放大看看局部,作为场地背景应该是足够的了,优点是能够一次性导出整个城市的建筑模型,运算速度快,唯一的缺点就是文件体积比较大,全深圳建筑skp大概有近300M大小,电脑配置弱的话很容易卡死。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(12)

03 总结

其实两种方法都可以成功导出SU模型,可根据具体情况选择。

为什么我这么推荐FME呢?因为它是个采用数据流理念开发的平台型软件,除了实现从A格式到B格式的转换外其内置的三四百种转换器可以对数据进行各种底层处理,底层意味着什么呢,意味着不会被GIS图形化操作的界面所拖累、让更多的计算力集中在后台运算。

举个例子,最为接近的就是GIS种的model builder理念,可以把GIS中的很多地理处理步骤整合到一起,直接运行完整个流程并输出结果,少了中间自己选路径、等上一步运行完的时间。最后可以打包成一个工具在GIS中进行调用。

怎么在gis生成数据图层(教程如何把GIS生成的建筑体块导出sketcup模型)(13)

所以运行上会更快、处理的数据量也更大,把数据处理运算的工作交给FME后,GIS更多的是承担可视化显示、数据建库等工作,减少GIS崩溃的情况。


欢迎关注公众号:平纸杂货铺

,