通视分析 (3D Analyst) 的工作原理
通过通视分析工具可在已知点对在 3D 空间中的位置以及相对于某表面或要素的位置时,计算点对之间的通视性。此外,在表面描绘这些点时,该工具还可确定线上这些点间的可见内容。
该工具需要两个输入:表面和线要素类。表面可以是栅格、不规则三角网 (TIN) 或 terrain 数据集。线要素类可包含一条或多条记录。每条记录都表示一次独立的通视线计算。各条折线 (polyline) 的第一个和最后一个折点可用作观察点和目标点。而其他折点则会被忽略。如果输入是 3D 折线 (polyline) 要素类,则可直接使用 3D 空间中的观察点和目标位置。如果将默认为 1 的偏移应用于观察点以将其提升到表面之上,则所有 2D 线都会在表面上为观察点和目标插值高度。工具会检查在要素类中是否存在名为 OffsetA 和 OffsetB 的字段。如果存在,将应用偏移值,OffsetA 对应观察点,OffsetB 对应目标点。
如果同时还提供了多面体 (multipatch) 要素类,则会根据要素检查各通视线。如果通视线在接触要素之前已接触到表面的任意位置,则障碍点将落在表面上。如果通视线在接触表面上的任意位置之前已接触到要素,则障碍点将位于实际交点处,并且通视线的其余部分可能会被视为不可见。
将生成 3D 折线 (polyline) 要素类。为每个输入都创建一条或两条线。如果仅存在一个输出,则表示线既可以为完全可见,也可以为完全不可见。而两条输出线则表示部分可见、部分不可见。输出中的 VisCode 字段可指出哪个部分可见、哪个部分不可见:VisCode 值为 1 表示可见,值为 2 表示不可见。添加的 SourceOID 字段中包含输入的对象/要素 ID,这样您便可以确定相互关联的输出记录与输入记录。此外,还会向输出中添加 TarIsVis 字段以表明目标点对于观察点是否可见。值为 0 表示目标不可见;值为 1 表示目标可见。
如果未提供任何多面体要素类,则 3D 线输出将会叠加到表面上。如果提供了多面体要素类,则输出线将笔直穿过自观察点至目标的空间和障碍物。
输出要素类还包含一个名为 OBSTR_MPID 的字段,它表示阻碍通视线的多面体的 OID。如果不存在阻碍通视线的多面体,则该字段含有一个为 -1 或 -9999 的值。如果目标被表面所阻碍,则该值为 -1。如果目标可见,则值为 -9999。
可生成输出障碍点要素类(可选)。通视线障碍点表示由观察点和目标定义的 3D 线与表面相交的第一个位置。是否为指定输入记录生成障碍点取决于观察点和目标的连线是否与表面相交。添加的 SourceOID 字段中包含输入的对象/要素 ID,这样您便可以确定相互关联的输出记录与输入记录。
曲率和折射校正
在执行通视线计算时,曲率选项会根据地球曲率进行调整。曲率选项的适用条件是:输入表面已定义空间参考并位于投影坐标系(非地理坐标系)中,同时,除 x,y 单位外还定义了 z 坐标单位。
折射校正会将光线在大气层中的弯曲情况列入考虑范围之内。有了折射现象,您可以比没有折射的时候看得更远。使用的默认值为 0.13,它是一个合理的平均值。要为特定应用程序指定更准确的值,您必须具备有关各种因素(如湿度)如何影响折射的知识。
在存在表面的投影信息时进行校正。此外,地面单位和表面 Z 单位必须为英尺、米或单位/米。用来进行校正的公式为:
Dist2 Dist2 Zactual = Zsurface - --------- + Rrefr * --------- DiamEarth DiamEarth
其中:
- Dist is the planimetric distance between the observation feature and the observed location. - Diam is the diameter of the earth. - Rrefr is refractivity coeeficient of light.
地球直径 (Diamearth) 的默认值将定义为 12,740,000 米,而折射系数 (Rrefr) 的默认值为 0.13。不同的 Rrefr 值可作为衡量大气条件变化对可见性影响的系数。