CityEngine中如何导出带有属性信息的slpk

0
分享 2020-11-18
城市建模引擎软件CityEngine是一个基于规则驱动建模的桌面程序,能够实现三维模型的参数化调整,很好地服务于城市规划、三维城市建模、影视艺术等行业。
CityEngine可以直接将建好的模型打包成slpk将其上传至Portal或者保存在本地,然后发布为三维场景服务。相比ArcGIS Pro将建筑模型打包生成的slpk,CityEngine生成的slpk加载更加高效。目前CityEngine的最新版本是2019.1,2019.1版本支持i3s最新的1.7版本,基于i3s 1.7版本生成的slpk格式更加紧凑并且支持PBR材质,因此其能更快更好地在Scene Viewer以及其它web apps里加载与显示,下图是新版本和老版本的对比效果图:

但是用过CityEngine直接将3D Objects模型生成slpk的用户有可能会遇到这样一个问题,那就是该slpk发布到ArcGIS Enterprise或者ArcGIS Online后发现原本的属性信息都丢失了。

问题描述:

将CityEngine生成的slpk发布为服务后属性信息丢失。例如,原始二维数据的属性信息如下:

但是生成slpk,发布服务后在SceneViewer中查询结果如下:

那么如果后续想在web端查询原始building数据的属性怎么办呢?也就是如何用CityEngine导出带有属性的slpk呢?

解决方法:

首先需要修改CityEngine中的cga规则文件,将要导出的属性用report函数导出,这里的Height和usage字段为原始二维数据中的属性字段,Height字段为double类型,usage字段为string类型,我们以这两个字段的导出为例介绍,cga规则写法如下:
attr Height = 30
attr usage=""
@StartRule
Lot-->extrude(Height)
report("Height",geometry.height)
report("usage",usage)



然后需要在右侧将属性与字段关联,参考下面动图:

导出成slpk时有一点需要注意,就是需要勾选Emit Reports选项:

最后登陆ArcGIS Enterprise或者ArcGIS Online将其发布为场景服务,进行查询,发现Height以及usage属性信息已经成功挂载上了:

文章最后,感谢同事鹏飞的测试。

文章来源:https://blog.csdn.net/xinying180/article/details/103014076

0 个评论

要回复文章请先登录注册