Построить линии взгляда (3D Analyst)
Резюме
Создает линейные объекты, представляющие линии взгляда с одной или более точек наблюдения к объектам целевого класса пространственных объектов.
Использование
-
Если целевые объекты линии или полигоны, периметр распределяется однородно.
-
Входные классы объектов должен быть классом точечных объектов. Мультиточки не применяются.
-
Если для обоих объектов обозревателя и целевого указан источник высоты, то создаются 3D выходные данные.
Присоединенное поле используется для определения одного или более целевых объектов для обозревателя. Если присоединенные поля не используются, все точки соединяются со всеми целями.
Источник высоты обозревателя и целевых объектов использует по умолчанию первое имя поля, перечисленное в этом списке:
- Shape.Z (доступно только для объектов с z-значениями)
- Spot
- Z
- Z_Value
- Высота
- Elev
- Рельеф
- Изолиния
Если нет подходящих полей высоты, применяется ключевое слово <None> по умолчанию, чтобы известить об отсутствии z-значений.
Если желаемое поле высоты не имеет высокого приоритета в секции поля по умолчанию, его необходимо указать отдельно. По аналогии, если поле высоты не является желаемым, но класс объектов содержит одно подходящее поле в секции списка по умолчанию, требуется указать ключевое слово <None>.
Единицы Расстояние разбиения (Sampling Distance) должны даваться в единицах x,y выходного класса объектов.
Следующие поля будут добавлены к выходному классу пространственных объектов, содержащему линии взгляда:
- OBSRVR_OID – OID точки наблюдения.
- ТARGET_OID – OID целевого объекта
- DIST_ALONG – Расстояние вдоль целевого объекта, если это линия или полигон.
Синтаксис
Параметр | Объяснение | Тип данных |
in_observer_points |
Отдельные точечные объекты, представляющие точки наблюдателя. Мультиточечные объекты не поддерживаются. | Feature Layer |
in_target_features |
Целевые объекты (точки, мультиточки, линии или полигоны). | Feature Layer |
out_line_feature_class |
Выходной класс пространственных объектов, содержащий линии взгляда. | Feature Class |
observer_height_field (дополнительно) |
Источник значений высоты для точек наблюдателя – его таблица атрибутов. Поле по умолчанию Поле высоты наблюдателя (Observer Height Field) выбирается из списка, составленного по приоритетам. В случае множества полей, или когда у поля нет высшего приоритета в выборке поля по умолчанию, поле необходимо задать. Если нет подходящих полей высоты, применяется ключевое слово <None>. По аналогии, если поле высоты не является желаемым, но класс объектов содержит только одно подходящее поле, следует указать ключевое слово <None>.
| String |
target_height_field (дополнительно) |
Поле высоты цели Поле по умолчанию Поле высоты цели (Target Height Field) выбирается из списка, составленного по приоритетам. В случае множества полей, или когда у желаемого поля не высший приоритет в секции поля по умолчанию, желаемое поля необходимо указать. Если нет подходящих полей высоты, применяется ключевое слово <None>. По аналогии, если поле высоты не является желаемым, но класс объектов содержит одно подходящее поле, требуется указать ключевое слово <None>. Если нет подходящих полей высоты, по умолчанию применяется ключевое слово <None>.
| String |
join_field (дополнительно) |
Присоединенное поле используется для сопоставления наблюдателей с определенными целевыми объектами. | String |
sample_distance (дополнительно) |
Расстояние между разбиениями, если целевой объект линия или полигон. Единицы Расстояние разбиения (Sampling Distance) даются в единицах x,y выходного класса объектов. | Double |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ConstructSightLines_3d('observer_pt.shp', 'target.shp',
'sightlines.shp', 'BASEHEIGHT',
'TOP_HEIGHT', 'NAME')
В следующем примере показано использование этого инструмента в автономном скрипте 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)