Схема горизонта (Skyline Graph) (3D Analyst)
Резюме
Вычисляет видимость неба и строит дополнительную таблицу и полярный график.
Таблица и график представляют горизонтальные и вертикальные углы, идущие из точки наблюдения к каждой вершине линии горизонта.
Рисунок
Использование
- Точка наблюдателя и линия горизонта (линия 3D) необходимы в качестве входных.
- Азимут и вертикальный угол из точки наблюдателя, до которой вычисляется каждая вершина.
- Инструмент всегда выдает соотношение видимого неба (между 0 и 1; например 0,8, если небо видно на 80%).
- Инструмент может дополнительно выдавать таблицу углов. Если выводится таблица, дополнительно может быть выведен полярный график.
- Инструмент всегда отображает в окне Результаты (Results) (или на панели информации Результаты (Results), если окно не отображается) процент видимого неба вместе с минимальными и максимальными вертикальными углами.
- Если выводится таблица, она будет содержать строки двух или нескольких чисел двойной точности. Каждая строка содержит по крайней мере арифметический горизонтальный угол и зенитный угол. Оба угла выражены в градусах.
- Если выбран параметр Дополнительные поля (Additional Fields), будут созданы дополнительные столбцы, включающие информацию, такую как источник ребра, который следует за вершиной на линии горизонта (FEATURE_ID), расстояние от точки наблюдателя до вершины и координаты вершины. (Источником может быть код FID объекта, который задействован в линии горизонта или код, чтобы указать, что линия горизонта находится на поверхности.)
Ниже приведены поля, которые будут всегда отображаться в таблице.
- HORIZ_ANG – горизонтальный угол.
- ZENITH_ANG – зенитный угол.
Дополнительные поля:
- VERTEX_X – координата X вершины.
- VERTEX_Y – координата Y вершины.
- VERTEX_Z – координата Z вершины.
- DIST_2D – горизонтальное расстояние от наблюдателя до вершины.
- DIST_3D – расстояние по уклону от наблюдателя до вершины.
Дополнительные поля не нужны для создания диаграммы.
Арифметический горизонтальный угол равен 90 градусам минус азимут и зенитный угол равен 90 градусам минус вертикальный угол. Арифметический горизонтальный угол 0 градусов направлен на восток, а угол на 90 градусов направлен на север. Зенитный угол в 90 градусов является горизонтальным, а угол в 0 градусов направлен непосредственно вверх.
- Дополнительная диаграмма является полярной. Она отображается, как будто линия горизонта (полилинии 3D) была спроецирована на поверхность сферы, а наблюдатель диаграммы был направлен вниз из точки выше центра сферы (центр сферы находится в точке наблюдателя).
- Полярный график является линейным от центра. Это значит, что кольцо/круг, представляющее экватор, состоит из двух радиусов кольца, представляющего угол высоты в 45 градусов, если предположить, что центр диаграммы представляет угол высоты в 90 градусов (зенитный угол равен 0).
- Процент видимого неба всегда отображается в результатах. Это значение равно области над линией горизонта, разделенной на область над видимым углом базы (один из параметров со значением по умолчанию, равным 0, который означает, что высота аналогична высоте наблюдателя). Оно вычисляется только в диапазоне азимута линии горизонта.
Диаграмма отображается, только если инструмент запускается в ArcMap, ArcScene или ArcGlobe.
Синтаксис
Параметр | Объяснение | Тип данных |
in_observer_point_features |
Входной класс объектов, содержащий одну или несколько точек наблюдения. | Feature Layer |
in_line_features |
Класс линейных объектов, представляющий линию горизонта. | Feature Layer |
base_visibility_angle (дополнительно) |
Вертикальный угол, который используется как размерная линия для вычисления процента видимого неба. 0 – это горизонт, 90 – угол непосредственно вверх; -90 – непосредственно вниз. Значение по умолчанию равно 0. | Double |
additional_fields (дополнительно) |
Определяет, выводить ли дополнительные поля в таблицу вместо вывода значений двух углов.
| Boolean |
out_angles_table (дополнительно) |
Таблица, которую необходимо создать для вывода углов. Значением по умолчанию является пусто. Это значит, что таблица отсутствует. | Table |
out_graph (дополнительно) |
Имя дополнительной диаграммы. Таблица, которую необходимо создать для создания диаграммы. Диаграмма отображается и ее можно сохранить и/или редактировать. Значением по умолчанию является пусто. Это значит, что диаграмма отсутствует. | Graph |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.SkylineGraph_3d("observers.shp", "skyline_outline.shp", 0, "ADDITIONAL_FIELDS", "table.dbf")
В следующем примере показано использование этого инструмента в автономном скрипте 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"
inLines = "skyline_outline.shp"
baseVisibility = 25
# Ensure output table has unique name
outTable = arcpy.CreateUniqueName("angles_table.dbf")
#Execute SkylineGraph
arcpy.SkylineGraph_3d(inPts, inLines, 0, "ADDITIONAL_FIELDS", outTable)
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)