Линия горизонта (3D Analyst)
Краткая информация
Создает класс объектов линий или мультипатчей, содержащий результаты анализа очертаний линии горизонта.
Более подробно о том, как работает инструмент Линия горизонта (Skyline)
Рисунок
Использование
Анализ проводится из точки наблюдения поверх функциональной или виртуальной поверхности, также будут рассматриваться объекты, которые встречаются в процессе анализа. Если инструмент применяется вместе с другими инструментами, особенно с инструментом Граница видимости (Skyline Barrier), создаются объемы теней и другие подобные объекты.
Инструмент Линия горизонта (Skyline) часто используется совместно с инструментом Граница видимости (Skyline Barrier) и иногда с инструментом Схема горизонта (Skyline Graph). Другие применения инструмента Линия горизонта (Skyline) описываются в разделе Анализ угроз на маршруте полета в 3D.
Инструмент Линия горизонта (Skyline) используется для создания очертаний пространственных объектов, и эти очертания могут быть вытянуты в объемы теней при помощи инструмента Граница видимости (Skyline Barrier). См. дополнительную информацию в разделе Как работает инструмент Линия горизонта (Skyline).
Если вместо линии горизонта создаются очертания объекта, использование и описание некоторых параметров будет иным.
Если пространственные объекты не указаны, линия горизонта будет состоять только из хребтов.
Если не указана функциональная поверхность, будет использована виртуальная поверхность, созданная на основе указанных радиуса и рельефа.
-
Единственными необходимыми параметрами являются входные точки наблюдения и выходной класс пространственных объектов (линия горизонта).
-
Если выбраны один или несколько пространственных объектов, будут рассмотрены только выбранные объекты; в противном случае будут рассмотрены все.
Отдельный анализ линии горизонта выполняется для каждой точки наблюдения. Одна или несколько линий создаются для представления линии горизонта, видимой из каждой точки наблюдения.
На значение шага азимута влияет только степень детализации любой части хребта линии горизонта, но не части линии горизонта, которая идет вдоль каких-либо пространственных объектов.
У каждой выходной линии есть значение, обозначающее FID пространственного объекта точки наблюдения, используемого для создания линии горизонта, которую представляет линия.
Для создания объема тени одного или более пространственных объектов обычно рекомендуется установить отметку Сегментировать линию горизонта (Segment Skyline) для того, чтобы каждый объект, который составляет линию горизонта, обладал собственной полилинией.
При создании объема тени инструмент Линия горизонта (Skyline) обычно запускается каждый раз только с одним выбранным пространственным объектом, после чего следует запустить инструмент Граница видимости (Skyline Barrier) для специальной полилинии, которая представляет пространственный объект.
Полученная геометрия является 3D полилинией.
Следующие поля будут добавлены к выходному классу пространственных объектов, содержащему линии горизонта:
- OID – FID линии горизонта.
- Shape – геометрия линии горизонта.
- OBSV_PT_ID – FID точки наблюдения, используемой для создания этой линии горизонта.
- ORIGFTR_ID – FID пространственного объекта, например, здания.
Следующие поля будут добавлены к выходному классу пространственных объектов, содержащему очертания:
- FID – идентификатор пространственного объекта силуэта.
- Shape – геометрия силуэта.
- OBSV_PT_ID – FID точки наблюдения, используемой для создания этого силуэта.
- ORIGFTR_ID – FID исходного пространственного объекта, например здания, представляемого этим силуэтом.
- DIR_VECT_X – компонент X единичного вектора, представляющего направление световых лучей от наблюдателя.
- DIR_VECT_Y – компонент Y единичного вектора, представляющего направление световых лучей от наблюдателя.
- DIR_VECT_Z – компонент Z единичного вектора, представляющего направление световых лучей от наблюдателя.
- FEAT_CTR_X – компонент X центра внешней границы исходного пространственного объекта (например, здания).
- FEAT_CTR_Y – компонент Y центра внешней границы пространственного объекта.
- FEAT_CTR_Z – компонент Z центра внешней границы пространственного объекта.
- BHND_CTR_X – компонент X центра внешней границы пространственного объекта, перемещенной за этот объект.
- BHND_CTR_Y – компонент Y центра внешней границы пространственного объекта, перемещенной за этот объект.
- BHND_CTR_Z – компонент Z центра внешней границы пространственного объекта, перемещенной за этот объект.
- USED_PARLL – было ли создано очертание при помощи параллельных световых лучей (1 для ответа «да» и 0 для ответа «нет»).
- MADE_VERT – было ли очертание сделано вертикальным, а не перпендикулярным световым лучам (1 для ответа «да» и 0 для ответа «нет»).
- MOVED_BHND – было ли очертание перемещено за пространственный объект, а не оставлено в его центре (1 для ответа «да» и 0 для ответа «нет»).
Синтаксис
Параметр | Объяснение | Тип данных |
in_observer_point_features |
3D точки, которые представляют наблюдателей; для каждого создается отдельная линия горизонта. | Feature Layer |
out_feature_class |
Класс линейных объектов, в который будут помещены линии горизонта. В качестве альтернативы очертания пространственных объектов могут содержаться в классе пространственных объектов-мультипатчей. | Feature Class |
in_surface (дополнительно) |
Функциональная поверхность для определения горизонта. | LAS Dataset Layer; Raster Layer; TIN Layer; Terrain Layer |
virtual_surface_radius (дополнительно) |
Радиус виртуальной поверхности для определения горизонта вместо действительной поверхности. Должен быть положительным значением. Если действительная поверхность указана, игнорируется. Значение по умолчанию равно 1000. | Linear Unit |
virtual_surface_elevation (дополнительно) |
Высота виртуальной поверхности для определения горизонта вместо действительной поверхности. Если действительная поверхность указана, игнорируется. Значение по умолчанию равно 0. | Linear Unit |
in_features (дополнительно) |
Класс пространственных объектов для использования в анализе линии горизонта. Обычно пространственные объекты обозначают препятствия, например, городские здания. | Feature Layer |
feature_lod (дополнительно) |
Уровень прорисовки, на котором следует изучить каждый пространственный объект при анализе линии горизонта.
| String |
from_azimuth_value_or_field (дополнительно) |
Азимут в градусах, от которого должен начинаться анализ линии горизонта. Анализ начинается с точки наблюдения и идет направо, от начального азимута (From Azimuth) к конечному (To Azimuth). Должен быть больше -360 и меньше 360. По умолчанию равен 0. | Double; Field |
to_azimuth_value_or_field (дополнительно) |
Направление в градусах, в котором должен быть завершен анализ линии горизонта. Анализ начинается с точки наблюдения и идет направо, от начального азимута (From Azimuth) к конечному (To Azimuth). Должен превышать начальный азимут (From Azimuth) не больше, чем на 360. Значение по умолчанию равно 360. | Double; Field |
azimuth_increment_value_or_field (дополнительно) |
Угловой интервал в градусах, при котором должен быть вычислен горизонт при проведении анализа линии горизонта между начальным азимутом (From Azimuth) и конечным (To Azimuth). Должно быть не больше, чем конечный азимут (To Azimuth) минус начальный (From Azimuth). Значение по умолчанию равно 1. | Double; Field |
max_horizon_radius (дополнительно) |
Максимальная дистанция, для которой должен быть найден горизонт из местоположения наблюдателя. Значение 0 указывает на то, что ограничения не должны применяться. Значение по умолчанию равно 0. | Double |
segment_skyline (дополнительно) |
Вместо создания только одной линии для представления линии горизонта из каждой точки наблюдения, результат разбивается на несколько линий. Каждая из этих линий представляет разный пространственный объект или промежуток горизонта между пространственными объектами. Если создаются очертания, этот параметр покажет, должны ли использоваться дивергентные лучи; для солнечных теней обычно их быть не должно или соответствующая отметка должна быть снята.
| Boolean |
scale_to_percent (дополнительно) |
Указывает, какой процент исходного вертикального угла (угла над горизонтом, или угла высоты) или высоты каждой вершины линии горизонта должен быть размещен. При вводе значения 0 или 100 масштабирование не будет выполнено. По умолчанию используется 100. | Double |
scale_according_to (дополнительно) |
Значения, согласно которым должно определяться масштабирование.
| String |
scale_method (дополнительно) |
Вершина, относительно которой будет выполнен расчет.
| String |
use_curvature (дополнительно) |
Указывает, должна ли учитываться кривизна Земли во время создания хребта из функциональной поверхности.
| Boolean |
use_refraction (дополнительно) |
Указывает, должна ли учитываться атмосферная рефракция во время создания хребта из функциональной поверхности. Если действительная поверхность не указана, то установка этой отметки (или передача значения REFRACTION на Python) приведет к созданию очертаний вместо линий горизонта.
| Boolean |
refraction_factor (дополнительно) |
Если атмосферная рефракция учитывается, будет применено скалярное значение. Значение по умолчанию равно 0,13. | Double |
pyramid_level_resolution (дополнительно) |
Если для функциональной поверхности указан набор данных Terrain, то этот параметр заполняется разрешениями, находящимися в наборе данных Terrain. Для создания линии горизонта должно быть выбрано одно из разрешений. Значением по умолчанию является 0, полное разрешение. | Double |
create_silhouettes (дополнительно) |
Определите, будут ли выходные объекты представлять видимые с точки наблюдения очертания.
| Boolean |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Skyline_3d("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
В следующем примере показано использование этого инструмента в автономном скрипте Python:
'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the
Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# Set Local Variables
inPts = "observers.shp"
# Make sure output has a unique name
outFC = arcpy.CreateUniqueName("skyline_output.shp")
inSurface = "sample.gdb/featuredataset/terrain"
obstructionFCs = "buildings.shp; billboards.shp"
surfRad = "1000 meters"
surfElev = "100 meters"
LOD = "FULL_DETAIL"
fromAzim = 0
toAzim = 360
incAzim = 1
maxHorizRad = 0
segSky = "SEGMENT_SKYLINE"
scale = 100
scaleAcc = "ELEVATION"
scaleMethod = "SKYLINE_MAXIMUM"
# Execute Skyline
arcpy.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev,
obstructionFCs, LOD, fromAzim, toAzim, incAzim,
maxHorizRad, segSky, scale, scaleAcc, scaleMethod)
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)