ArcGlobe三维建筑物标注解决方案
一、概述
在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中对三维模型的动态标注还不支持,但我们仍旧可以通过变通的方式达到三维模型动态标注的效果。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权,作者将保留追究法律责任的权利。另外,也请转载者在评论处留下转载信息,谢谢合作。