二、当Name字段为中文时" />
当前位置: 代码迷 >> GIS >> 二、当Name字段为中文时
  详细解决方案

二、当Name字段为中文时

热度:227   发布时间:2016-05-05 06:28:36.0
CityEngine----三维模型导出与GIS属性挂接

在CityEngine中建立场景之后,我们需要对建立好的模型导出(以3ds和obj格式为例)。

导出模式可以选择两种:Use file size limit和Create one file per shape。

Use file size limit:将所选模型作为一个obj或3ds文件导出。

Createone file per shape:将模型按照shape导出,每一个shape产生的模型会生成一个3ds或obj文件。


图1 导出方式

下面我们讨论的是以Create one file per shape的方式将模型导出时,模型文件的命名问题。

一、当Name字段为非中文时

经测试,CityEngine的模型导出时的模型命名是有规律的,即模型文件的命名规则是: Name1 + ”_” + Name2

Name1为导出时设置的Name:


   图2 导出Name

Name2为shape的Name:


图3 shape的Name


其中需要注意的是:shape的Name是与GIS数据的属性表关联的,即:shape的Name==图层属性表的Name字段的内容。见图3与图4


图4 属性表的Name字段

导出后结果如下图:


 图5 模型导出结果

以上导出方式适用条件为Name字段的值为非中文字符。

二、当Name字段为中文时

 当Name字段为中文时,通过上述方法导出的模型文件命名形式如下:


图6 Name为中文时的命名

因系统无法识别shape的中文Name,故在shape的Name地方显示为unnamed,这种情况下我们需要进行通过空间连接的方式将模型文件与属性文件对应起来。具体步骤如下:

1、选中要导出的模型,导出模式为Create one file per shape,确定后将模型导出。


图7 三维场景


图8 模型导出设置


图9 模型导出结果

2、在arcmap的ToolBox中选择Import 3D Files通过该工具将第一步导出的3ds模型转换成Feature Class,该Feature Class的属性表中包含了模型的名称。


图10 Import 3D Files工具


图11Import 3D Files工具参数设置

图12 Import 3D Files导入结果

3、加载原始footprint数据,如下图


图13 3D模型数据与Footprint数据

4、生成的T3ds数据与原始Footprint重合,若有偏移过大的情况则将T3ds数据进行平移,使其与Footprint基本重合,之后使用Feature to Point工具将其转换为Point数据


图14 Feature to Point工具


图15 Feature to Point结果

5、最后通过spatial join工具将Footprint的属性与Point数据的属性进行空间连接,从而得到模型与Footprint的对应关系。


图16 Spatial Join工具


图17 Spatial Join最终结果

注意:若GIS数据使用CityEngine不支持的坐标系,则使用Import 3D Files工具转换后得到的MultiPatch数据无法与源数据很好重合,故无法使用Spatial Join工具进行属性的挂接。

 

批量导出建议:

1、 建议使用第一种方法导出,在GIS属性表中建立一个非中文的唯一标识字段

2、在进行自定义坐标系建模时,最好先将自定义坐标系转换成CityEngine支持的坐标系,建模完成之后在将坐标系转换回去
  相关解决方案