Линия взгляда (3D Analyst)
Резюме
Определяет видимость для линии взгляда над поверхностью, заданной мультипатчем, растром, TIN, terrain или набором данных LAS.
Дополнительные сведения о том, как работает инструмент Линия взгляда (Line Of Sight)
Использование
-
Для определения наблюдателя и цели используются только конечные точки входной линии. В идеале линии взгляда должны представлять собой простые прямые линии с двумя вершинами, представляющими точку наблюдения и местоположение цели, для которой определяется видимость.
Если местоположение наблюдения определяется по точечным объектам, а местоположения целей хранятся в другом классе пространственных объектов, необходимо использовать Построить линии взгляда (Construct Sight Lines), чтобы создать входные данные для этого инструмента.
Можно задать дополнительный класс точечных объектов препятствий, чтобы определить для каждой линии местоположение первого препятствия, блокирующего видимость цели.
В таблице атрибутов выходного линейного объекта содержатся следующие поля:
- SourceOID – уникальный ID линейного объекта, использующегося при вычислении видимости.
- VisCode – видимость вдоль линии. Значение 1 – видимый, значение 2 – невидимый. Это поле существует, только если полученная геометрия представляет собой линию.
- TarIsVis – видимость цели вдоль линии. Значение 1 – видимый, значение 0 – невидимый. Это поле существует, только если полученная геометрия представляет собой линию.
- OBSTR_MPID – уникальный ID мультипатча, являющегося помехой на линии взгляда. Если мультипатч не препятствует линии взгляда, в поле содержится значение -1 или -9999. Если цель скрыта поверхностью, используется значение -1. Если цель видима, используется значение -9999.
Синтаксис
Параметр | Объяснение | Тип данных |
in_surface |
Растр, TIN, terrain или набор данных LAS, задающие поверхность, использующуюся при определении видимости. | Raster Layer; Terrain Layer; TIN Layer |
in_line_feature_class |
Линейные объекты, первая которых вершина определяет точку наблюдения, а последняя – местоположение цели. Высота наблюдения и местоположений цели берутся из z-значений для 3D объектов и интерполируются с поверхности для 2D объектов. Линии 2D также имеют смещение со значением по умолчанию 1, добавляемое к их высоте, чтобы поднять точки над поверхностью. Если объект имеет поле OffsetA, значение из этого поля будет добавлено к высоте точки наблюдения. Если имеется поле OffsetB, значение из этого поля будет добавлено к высоте местоположения цели. | Feature Layer |
out_los_feature_class |
Выходной класс линейных объектов, для которого определяется видимость. Создаются два поля атрибутов. Поле VisCode определяет видимость вдоль линии: 1 – видимая, 2 – невидимая. Поле TarIsVis определяет видимость цели: 0 – невидима, 1 – видима. | Feature Class |
out_obstruction_feature_class (дополнительно) |
Дополнительный класс точечных объектов, определяющий местоположение первого препятствия на линии взгляда наблюдателя до цели. | Feature Class |
use_curvature (дополнительно) |
Показывает, учитывается ли в анализе линии взгляда кривизна поверхности Земли. Для включения этих параметров необходимо, чтобы поверхность имела заданную пространственную привязку в координатах проекции и заданные z-единицы.
| Boolean |
use_refraction (дополнительно) |
Показывает, будет ли учитываться атмосферная рефракция при создании линии взгляда из функциональной поверхности.
| Boolean |
refraction_factor (дополнительно) |
Предоставляет значение, которое используется в коэффициенте рефракции. Значение коэффициента рефракции по умолчанию равно 0,13. | Double |
pyramid_level_resolution (дополнительно) |
Разрешение пирамидных слоев набора данных terrain, которое будет использоваться в геообработке. Значением по умолчанию является 0, полное разрешение. | Double |
in_features (дополнительно) |
Дополнительный класс объектов-мультипатчей, который может определять дополнительные препятствующие элементы, например здания. | Feature Layer |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp",
"obstruction.shp")
В следующем примере показано использование этого инструмента в автономном скрипте Python:
'''*********************************************************************
Name: Sight Line Visibility
Description: This script demonstrates how to calculate visibility
for sight lines against the obstructions presented by
terrain elevation & building models in a multipatch.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set Local Variables
env.workspace = 'C:/data'
obs_pts = "Observers.shp"
target = "Observation_Targets.shp"
sight_lines = "in_memory/sightlines"
surface = "sample.gdb/elevation/terrain"
buildings = "city_buildings.shp"
outLOS = arcpy.CreateUniqueName("Line_of_Sight.shp")
obstruction_pts = arcpy.CreateUniqueName("Obstruction_Points.shp")
arcpy.AddMessage("Constructing sight lines...")
arcpy.ddd.ConstructSightLines(obs_pts, target, sight_lines)
arcpy.AddMessage("Calculating line of sight...")
arcpy.ddd.LineOfSight(surface, sight_lines, outLOS, obstruction_pts,
"CURVATURE", "REFRACTION", 0.35, 0, buildings)
arcpy.GetMessages(0)
arcpy.CheckInExtension("3D")
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)