关于 ArcGlobe 中作为 3D 符号使用的拉伸符号

拉伸是通过垂直拉伸 2D 平面形状来创建 3D 对象的过程。这是一种基于二维要素创建三维符号的简单方法。例如,可将建筑物面拉伸一定的高度值,从而创建出逼真的建筑物形状。

三种基本几何类型(点、线和面)都支持拉伸。其他几何类型(例如,多面体 (multipatch)、栅格和注记要素)不支持拉伸。因此,拉伸选项在这些要素的图层属性中将自动不可用。

点和多点要素通过垂直拉伸可创建线。这对于简单任务(例如,高亮显示某个位置)特别有用。更复杂的应用就是,按照某个属性拉伸点来创建虚拟图形,例如美国各城市的人口。

按照人口拉伸的城市点要素

线要素通过垂直拉伸可创建墙面。该效果可用于以 3D 形式描绘重要的边界;表示垂直墙面;或者仅为凸起的线状要素创建视觉效果,例如输电线下的禁飞区。

拉伸了某个常数值的输电线,用来标记禁飞的净空高度

面要素通过垂直拉伸可创建箱体。最常见的面拉伸应用就是将建筑物覆盖区转换为 3D 建筑物。不过,面拉伸也可用来表示典型值,例如房产价格、县人口或者人口普查区块收入。

拉伸高度为楼层数乘以五米的建筑物覆盖区面

ArcGlobe 中的“Globe 拉伸”选项卡和 ArcScene 中的“拉伸”选项卡包含了为每个要素图层设置拉伸值或表达式和拉伸方法所需的图层属性。设置了要素的基本高度后,便可进行拉伸。通过合并高程和拉伸图层属性,即使没有 3D 要素也可以创建较逼真的 3D 视图。

拉伸方法

拉伸数据的方法分为四种:

  1. 向各要素的最小高度添加拉伸
    • 通过向要素的最小 z 值添加拉伸高度计算得出一个 z 值,要素将被拉伸到处于该值高度的平面。
    • 此方法仅适用于线和面。此方法不适用于点,因为点的最小 z 值和最大 z 值相同。
    • 您可将这种方法应用到诸如通过拉伸建筑物覆盖区来生成 3D 建筑物符号等项目中。
    下图显示的是基于最小 z 值拉伸一定距离的线要素类和面要素类(以绿色表示),拉伸后形成了平整的顶部。

    线拉伸 - 方法 1面拉伸 - 方法 1

  2. 向各要素的最大高度添加拉伸
    • 通过向要素的最大 z 值添加拉伸高度计算得出一个 z 值,要素将被拉伸到处于该值高度的平面。
    • 此方法仅适用于线和面。此方法不适用于点,因为点的最小 z 值和最大 z 值相同。
    • 尽管此方法与第一种方法相似,但是它还可用于拉伸建筑物覆盖区。这种方法尤其适用于坡地上的建筑物覆盖区。
    下图显示的是基于最大 z 值拉伸一定距离的线要素类和面要素类(以绿色表示),拉伸后形成平整的顶部。

    线拉伸 - 方法 2面拉伸 - 方法 2

  3. 通过将拉伸高度用作要素要拉伸到的目标值来添加拉伸高度
    • 无论要素的 z 值是多少,要素都会被拉伸到以指定 z 值作为平整的顶部。
    • 此方法适用于以下所有这三种几何类型:点、线和面。
    • 使用指定的 z 值意味着,在拉伸要素时将使用一个包含各要素的绝对拉伸高度的属性。例如,海平面以上的米数就是这样一种属性。
    下图显示的是拉伸到特定的 z 值(以黑色箭头标记)的点要素、线要素和面要素(以绿色表示),拉伸后形成了平整的顶部。拉伸值属于绝对值,所以不必考虑正负。

    点拉伸 - 方法 3线拉伸 - 方法 3面拉伸 - 方法 3

  4. 向各要素的基本高度添加拉伸高度
    • 为表示要素基本高度的每个折点计算 z 值,要素将被拉伸到各 z 值的高度。面要素还将自动生成顶面和底面,这些顶面和底面连接到拉伸的墙面,从而构成闭合形状。
    • 此方法适用于以下所有这三种几何类型:点、线和面。
    • 您可能经常会看到此方法应用于边界轮廓,例如,围墙边界。
    下图显示的是基于各折点的 z 值进行等量拉伸(以黑色箭头标记)的点要素、线要素和面要素(以绿色表示)。

    点拉伸 - 方法 4线拉伸 - 方法 4面拉伸 - 方法 4

关于拉伸方法 4 的建议

  • 该方法的计算开销很大,因此应充分考虑对于在 ArcGlobe 中使用该拉伸类型的完全缓存图层。
  • 由于精度原因,建议将采用该拉伸方法的 ArcGlobe 叠加图层改成配置为引用特定表面的浮动图层。在 ArcScene 中,浮动是唯一可用的选项。
  • 如果图层的 z 值获取自某个表面,则更改源高程数据并不会自动更新已拉伸图层的显示。而必须通过右键单击图层,然后单击“刷新”来手动刷新该图层。
  • 只有现有折点才会用作已拉伸形状的参考点。如果线或面从某山区的表面获取 z 值,您可能需要通过增加形状的折点数来使拉伸的结果更接近原始地形。

关于在 ArcGlobe 中拉伸大型面时的特殊考虑事项

在拉伸各种大小的面时,面的边界都会被拉伸,而顶部和底部则是通过计算得出的两个相对墙面之间的插值形状。

根据面的大小和形状范围而定,ArcGlobe 有时会显示一个“穿透”拉伸面内部的地球表面。这是由于基础 globe 的高程数据或者地球曲率(如果面非常大)。以下显示的是这些效果的示例。

“穿透”拉伸面的山脉 “穿透”拉伸面的地球曲率

有时可能需要这种效果。例如,您可能需要将雾表示为拉伸面,而使山体“穿透”顶部。不过,其他时候您需要避免出现这种效果。通过使用不同的可视化方法或数据可以做到这一点。

为避免所用的地球曲率导致地球表面穿透拉伸面,必须减小面的大小。最简单的方法就是将面分割为多个更小的部分。

不过,如果可视化的目标是将拉伸面显示为好像是表面自己升起的一样,则可通过多种方法来实现。一种方法是创建两个 TIN 表面(一个用作感兴趣区域的顶部,一个用作感兴趣区域的底部),然后使用在两个 TIN 间拉伸地理处理工具在两个表面之间创建多面体 (multipatch) 要素。另一种方法是使用面插值为多面体(Multipatch) 工具创建拉伸面的顶面,接着将拉伸面的边缘四周转换为折线 (polyline),然后通过拉伸线来创建垂直外部墙面。

相关主题

5/25/2014