CityEngine导出模型与GIS属性挂接.docx
《CityEngine导出模型与GIS属性挂接.docx》由会员分享,可在线阅读,更多相关《CityEngine导出模型与GIS属性挂接.docx(12页珍藏版)》请在冰点文库上搜索。
![CityEngine导出模型与GIS属性挂接.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/dc6c42ab-53d2-482a-9d89-64d2b075e9ff/dc6c42ab-53d2-482a-9d89-64d2b075e9ff1.gif)
CityEngine导出模型与GIS属性挂接
在CityEngine中建立场景之后,我们需要对建立好的模型导出〔以3ds和obj格式为例〕.导出模式可以选择两种:
Usefilesizelimit和Createonefilepershape.
Usefilesizelimit:
将所选模型作为一个obj或3ds文件导出.
Createonefilepershape:
将模型按照shape导出,每一个shape产生的模型会生成一个3ds或obj文件.
图1 导出方式
下面我们讨论的是以Createonefilepershape的方式将模型导出时,模型文件的命名问题.
一、当Name字段为非中文时
经测试,CityEngine的模型导出时的模型命名是有规律的,即模型文件的命名规则是:
Name1+"_"+Name2
Name1为导出时设置的Name:
图2导出Name
Name2为shape的Name:
图3shape的Name
其中需要注意的是:
shape的Name是与GIS数据的属性表关联的,即:
shape的Name==图层属性表的Name字段的内容.见图3与图4
图4属性表的Name字段
导出后结果如下如:
图5模型导出结果
以上导出方式适用条件为Name字段的值为非中文字符.
二、当Name字段为中文时
当Name字段为中文时,通过上述方法导出的模型文件命名形式如下:
图6Name为中文时的命名
因系统无法识别shape的中文Name,故在shape的Name地方显示为unnamed,这种情况下我们需要进行通过空间连接的方式将模型文件与属性文件对应起来.具体步骤如下:
1、 选中要导出的模型,导出模式为Createonefilepershape,确定后将模型导出.
图7三维场景
图8模型导出
图9模型导出设置
图10模型导出结果
2、 在arcmap的ToolBox中选择Import3DFiles通过该工具将第一步导出的3ds模型转换成FeatureClass,该FeatureClass的属性表中包含了模型的名称.
图11Import3DFiles工具
图12Import3DFiles工具参数设置
图13Import3DFiles导入结果
3、 加载原始footprint数据,如下图:
图14 3D模型数据与Footprint数据
4、 生成的T3ds数据与原始Footprint重合,若有偏移过大的情况则将T3ds数据进行平移,使其与Footprint基本重合,之后使用FeaturetoPoint工具将其转换为Point数据
图15FeaturetoPoint工具
图16FeaturetoPoint结果
5、 最后通过spatialjoin工具将Footprint的属性与Point数据的属性进行空间连接,从而得到模型与Footprint的对应关系.
图17SpatialJoin工具
图18SpatialJoin最终结果
注意:
若GIS数据使用CityEngine不支持的坐标系,则使用Import3DFiles工具转换后得到的MultiPatch数据无法与源数据很好重合,故无法使用SpatialJoin工具进行属性的挂接.
批量导出建议:
1、 建议使用第一种方法导出,在GIS属性表中建立一个非中文的唯一标识字段
2、 在进行自定义坐标系建模时,最好先将自定义坐标系转换成CityEngine支持的坐标系,建模完成之后在将坐标系转换回去