ArcGlobe三维建筑物标注解决方案
文章作者:   发布时间: 2012-09-06   浏览次数: 188   文章出处: http://www.cnblogs.com/wowMVP
 

一、概述

在ArcGlobe10中三维建筑物图层尚不支持标注显示,而在三维数字城市中往往又有将建筑物屋顶标注名称或高度的需求,所以本文将针对这个问题提出自己解决方案,以变通的方式来达到同样的效果。

二、主要思路

由于ArcGlobe10中三维MultiPatch图层本身并不支持动态标注,因此要想进行动态标注只能通过构建标注图层的方法,即从对三维建筑物图层的每个建筑物中提取标注点要素信息,并将这些要素写入新的点图层,然后在ArcGlobe中打开这个点图层的标注功能,利用点图层的标注功能来变通解决建筑物的动态标注的效果。

三、关键技术

该解决方案的关键点就是如何从三维MultiPatch图层中提取出标注点的信息,并创建独立的标注点图层。

A、提取标注点X坐标信息

标注点的X坐标应该与该模型质心点的X坐标保持一致。因此,为了提取X坐标的信息,可采取ArcToolbox中提供的“Calculate Field”工具,并使用计算表达式来动态计算当前模型质心点的X坐标,并将该坐标值赋给新建的标注点X坐标字段。如下图所示:

图1

B、提取标注点Y坐标信息

与标注点X坐标的提取原理一样,标注点的Y坐标应该与该模型质心点的Y坐标保持一致。因此,为了提取Y坐标的信息,可采取ArcToolbox中提供的“Calculate Field”工具,并使用计算表达式来动态计算当前模型质心点的Y坐标,并将该坐标值赋给新建的标注点Y坐标字段。如下图所示:

图2

C、提取标注点Z坐标信息

标注点的Z坐标可与该模型的最大高度保持一致。在ArcToolbox中提供了一个专门针对三维模型Z值提取的工具“Add Z Information”,该工具能够自动提取指定MultiPatch图层中的诸如最大Z值、最小Z值、平均Z值,以及模型体积等信息。在本解决方案中,我们就只是用该工具来提取当前模型的“最大Z值”。如下图所示

图3

D、依据XY坐标创建点图层

根据前面的步骤,将为MultiPatch图层中的每行模型记录添加了X、Y、Z值后,还需要使用ArcToolbox中提供的“Make XY Event Layer”工具。该工具能够根据输入表中的X、Y坐标信息,自动生成独立的点图层。如下图所示:

图4

四、数据处理模型

为了让整个标注点图层生成过程更加地自动化和简单化,本解决方案中还使用了ArcGIS Desktop中提供的Model Builder 工具,以流程化的方式将所涉及到的ArcToolbox工具整合起来。如下图所示:

图5

其中, 1、整个模型中的输入是:三维模型MultiPatch图层,输出是:标注点图层; 2、在提取X、Y、Z信息前先在原始三维模型Multipatch图层中创建相应的同名字段; 3、“Add Z Information”工具会自动在原始三维模型MultiPatch图层中创建名为“Z_Max”的字段(注,如果ArcGIS 10为中文版,则该字段名为:Z 最大值),所以在使用该工具提取了Z_Max值后,还需要使用“Calculate Field”工具将Z_Max字段的值赋给Z字段; 4、标注点字段完全生成后,还需要删除原始三维模型MultiPatch图层中生成的临时字段,如X、Y、Z、Z_Max等。

五、图层的符号化和标注配置方法

将新生成的点图层添加到ArcGlobe中,我们会发现这些点都分布在每个建筑物的屋顶上,那么接下来我们还需要进一步调整这些点的符号化、标注方式,以及标注显示比例尺等设置。

A、符号化设置

将点的符号设置为普通标记点,且内部填充为透明色,边框颜色为灰色,宽度设置为0.5。如下图所示:

图6

B、标注方式设置

打开标注功能,并将标注显示字段调整为“Z”,然后修改标注显示符号化,打开标注符号化掩膜。如下图所示:

图7

图8

C、标注显示比例尺设置

将标注的最小可见比例尺设置为1:3000。如下图所示:

 

图9

六、效果的展示

经过以上步骤后,即可达到非常好的三维模型动态标注的效果。如下视频:

七、结论

虽然,当前版本的ArcGlobe中对三维模型的动态标注还不支持,但我们仍旧可以通过变通的方式达到三维模型动态标注的效果。