Доступно с лицензией Spatial Analyst.
Доступно с лицензией 3D Analyst.
Краткая информация
С помощью геодезических методов определяет положения на поверхности растра, которые видимы для набора объектов наблюдателей.
Более подробно о том, как работает инструмент Обоюдная видимость 2
Иллюстрация
Использование
Этот инструмент выполняет два типа анализа видимости: Частота и Наблюдатели, которые можно задать при помощи параметра Тип анализа.
Для обеспечения точности выходных данных назначьте вертикальную систему координат для входного растра, если у него ее нет.
Для Обоюдной видимости 2 не нужен параметр z-коэффициент. Z-коэффициент будет вычислен внутренне при помощи вертикальных единиц измерения (Z) и единиц измерения карты (XY) из пространственной привязки входного растра.
Входные растры, которые содержат шум, обычно видимый в данных высокого разрешения, могут привести к некоторым неожидаемым результатам. Перед запуском инструмента можно скорректировать данные на этапе предварительной обработки или сгладить эффект от ошибки, применив инструмент Фокальная статистика или Фильтр до выполнения операции видимости.
Когда возникает необходимость пересчитать входной растр, используется метод билинейной интерполяции. Например, входной растр может быть пересчитан, когда выходные система координат, экстент или размер ячеек отличаются от входных.
Для улучшения производительности можно явно задать для параметра Внешний радиус значение, представляющее максимальное расстояние видимости, изучаемое в анализе.
По умолчанию параметр Метод анализа использует опцию ALL_SIGHTLINES, дающую наиболее точный результат. Для улучшения производительности инструмента, если иметь ввиду время обработки, используйте опцию PERIMETER_SIGHTLINES.
Параметры наблюдателей, связанные с высотой, а именно Смещение поверхности, Высота наблюдателя и Смещение наблюдателя, можно задать как линейные единицы измерения или как поле. В процессе вычисления значение линейных единиц измерения будет внутренне конвертировано в единицы Z входного растра. Однако если линейные единицы неизвестны, или указано числовое поле, предполагается, что значение измеряется в Z-единицах входного растра.
Параметры наблюдателей, связанные с расстояниями видимости, а именно Внутренний радиус и Внешний радиус, могут быть указаны как линейные единицы измерения или как поле. В процессе вычисления значение линейных единиц измерения будет внутренне конвертировано в единицы XY входного растра. Однако если линейные единицы неизвестны, или указано числовое поле, предполагается, что значение измеряется в XY-единицах входного растра.
Поле, указанное для параметра наблюдателя: Смещение поверхности или Смещение наблюдателя, может быть строкового типа и содержать числовые значения и единицы измерения. Например, если поле obs_height указано для Смещения наблюдателя, то оно может содержать значения типа '6 Feet'.
В скриптах параметры наблюдателя, например observer_offset, могут быть заданы в различных формах строк. Для каждой формы значение и линейные единицы измерений анализируются из строки. В следующей таблице перечислены некоторые примеры входных строк и определение линейных единиц в каждом случае Для других параметров можно следовать этому же порядку действий.
Примеры входных строк для Смещения наблюдателя Используемые линейные единицы ' ' или '#'
Использованы значение и единицы измерения по умолчанию, 1 метр.
'6'
Смещение наблюдателя равно 6, и так как единицы измерения не указаны, инструмент будет использовать единицы по умолчанию – метры.
'6 Feet'
Смещение наблюдателя равно 6 футам.
'6 Unknown'
Смещение наблюдателя равно 6, и так как единицы измерения не указаны, инструмент будет использовать единицы по умолчанию – метры.
Примеры входных строк и линейных единиц измерения Этот инструмент будет автоматически использовать преимущества GPU (Графического процессора) для улучшения производительности, если GPU есть в вашей системе, и он корректно настроен.
Более подробно о том, как настроить устройство GPU, см. статью справки Работа GPU с Spatial Analyst.
Если вы не хотите, чтобы инструмент использовал преимущества устройств GPU, установленных в вашей системе, создайте переменную системного окружения CUDA_VISIBLE_DEVICES, установите ее значение как -1 и перезапустите приложение. После этого инструмент будет выполняться только за счет CPU. Чтобы позволить инструменту снова использовать устройства GPU, удалите переменную системного окружения CUDA_VISIBLE_DEVICES или задайте для нее индексное значение (0 – для первого, 1 – для второго и т.д.) устройства GPU, которое хотите использовать, и перезапустите приложение.
См. раздел Параметры среды анализа и Spatial Analyst для получения дополнительной информации о среде геообработки данного инструмента.
Синтаксис
Viewshed2 (in_raster, in_observer_features, {out_agl_raster}, {analysis_type}, {vertical_error}, {out_observer_region_relationship_table}, {refractivity_coefficient}, {surface_offset}, {observer_elevation}, {observer_offset}, {inner_radius}, {inner_radius_is_3d}, {outer_radius}, {outer_radius_is_3d}, {horizontal_start_angle}, {horizontal_end_angle}, {vertical_upper_angle}, {vertical_lower_angle}, {analysis_method})
Параметр | Объяснение | Тип данных |
in_raster | Входной растр поверхности. Тип растра может быть целочисленным или с плавающей точкой. Во время расчета видимости входной растр преобразуется в трёхмерную (3D) геоцентрическую систему координат. Ячейки входного растра со значением NoData не блокируют определение видимости. | Raster Layer |
in_observer_features | Входной класс объектов, который идентифицирует местоположения наблюдателей. Это могут быть точечные, мультиточечные или полилинейные объекты. Во время расчета видимости входной класс объектов трансформируется в трёхмерную (3D) геоцентрическую систему координат. Наблюдатели, находящиеся за пределами экстента растра поверхности или помещённые в ячейки со значением NoData, при расчете будут игнорироваться. | Feature Layer |
out_agl_raster (Дополнительный) | Выходной растр над уровнем поверхности (AGL). AGL создает растр, в котором значение каждой ячейки является минимальной высотой, которая должна быть добавлена к невидимой ячейке, чтобы сделать ее видимой хотя бы для одного наблюдателя. Ячейки, которые уже были видны, в выходном растре будут иметь значение 0. Когда параметр ошибка по вертикали равен нулю, выходной растр AGL является одноканальным. Когда ошибка по вертикали больше нуля, для учета случайных эффектов от входного растра выходной растр AGL создается как трехканальный. В первом канале представлены средние значения, во втором – минимальные значения AGL, а в третьем – максимальные значения AGL. | Raster Dataset |
analysis_type (Дополнительный) | Выберите тип анализа видимости, который вы хотите выполнить, определив либо то, как будет видна наблюдателям каждая из ячеек, либо определив наблюдателей, видимых для каждого из местоположений поверхности.
| String |
vertical_error (Дополнительный) | Значение неточности (Среднеквадратическая ошибка или RMSE) в значениях высоты поверхности. Это значение с плавающей точкой, представляющее ожидаемую ошибку входных значений высот. Если данному параметру присваивается значение больше 0, то выходной растр видимости будет представлен значениями с плавающей точкой. В данном случае значение каждой ячейки выходного растра видимости представляет сумму вероятностей того, что ячейка будет видимой для любого из наблюдателей. Этот параметр отключается, когда используется тип анализа OBSERVERS или метод анализа PERIMETER_SIGHTLINES. | Linear Unit |
out_observer_region_relationship_table (Дополнительный) | Выходная таблица для выявления регионов, которые видимы для каждого наблюдателя. Данная таблица может быть связана с входным классом объектов-наблюдателей и выходным растром видимости для выявления регионов, видимых для данных наблюдателей. Выходные данные создаются только в том случае, когда типом анализа является OBSERVERS. | Table |
refractivity_coefficient (Дополнительный) | Коэффициент рефракции видимого диапазона света в воздухе. Значение, предлагаемое по умолчанию, равно 0,13. | Double |
surface_offset (Дополнительный) | Это значение определяет вертикальное расстояние, которое должно быть добавлено к z-значению каждой ячейки, в том случае, если этот параметр учитывается в анализе видимости. Его значение должно быть положительным целым числом или числом с плавающей точкой. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. По умолчанию значение равно 0. | Linear Unit; Field |
observer_elevation (Дополнительный) | Это значение используется для определения высоты точек или вершин наблюдения на поверхности. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если этот параметр не будет указан, то высота наблюдателя будет определена по растру поверхности с использованием билинейной интерполяции. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. | Linear Unit; Field |
observer_offset (Дополнительный) | Это значение определяет вертикальное расстояние, которое должно быть добавлено к z-значению высоты наблюдателя. Его значение должно быть положительным целым числом или числом с плавающей точкой. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. Значение по умолчанию: 1 метр. | Linear Unit; Field |
inner_radius (Дополнительный) | Это значение определяет начальное расстояние, от которого определяется видимость. Ячейки, расположенные ближе этого расстояния, являются невидимыми на выходном растре, но могут при этом блокировать видимость ячеек, расположенных между внутренним и внешним радиусом. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. По умолчанию значение равно 0. | Linear Unit; Field |
inner_radius_is_3d (Дополнительный) | Тип расстояния для параметра внутреннего радиуса.
| Boolean |
outer_radius (Дополнительный) | Это значение определяет максимальное расстояние, от которого определяется видимость. Ячейки за пределами этого радиуса исключаются из анализа. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. | Linear Unit; Field |
outer_radius_is_3d (Дополнительный) | Тип расстояния для параметра внешнего радиуса.
| Boolean |
horizontal_start_angle (Дополнительный) | Это значение определяет начальный угол диапазона горизонтального сканирования. Это значение задается в градусах от 0 до 360; может быть как целым, так и с плавающей запятой, 0 ориентирован на север. По умолчанию значение равно 0. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. | Double; Field |
horizontal_end_angle (Дополнительный) | Это значение определяет конечный угол диапазона горизонтального сканирования. Это значение задается в градусах от 0 до 360; может быть как целым, так и с плавающей запятой, 0 ориентирован на север. Значение, предлагаемое по умолчанию, равно 360. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. | Double; Field |
vertical_upper_angle (Дополнительный) | Это значение определяет верхнюю границу вертикального угла сканирования над горизонтальной плоскостью. Это значение задается в градусах от 0 до 90, как целочисленное или с плавающей точкой. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. Значение по умолчанию равно 90. | Double; Field |
vertical_lower_angle (Дополнительный) | Это значение определяет нижнюю границу вертикального угла сканирования под горизонтальной плоскостью. Это значение задается в градусах от 0 до 90, как целочисленное или с плавающей точкой. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. По умолчанию значение равно -90. | Double; Field |
analysis_method (Дополнительный) | Выберите метод, который будет использоваться для расчета видимости. Эта опция позволит вам увеличить производительность в обмен на некоторое снижение точности.
| String |
Возвращаемое значение
Название | Объяснение | Тип данных |
out_raster | Выходной растр. Для типа анализа FREQUENCY, когда параметр вертикальной ошибки равен 0 или не указан, в выходной растр записывается число раз, которое каждое местоположение ячейки входного растра поверхности можно увидеть из входных точек наблюдения. Когда параметр вертикальной ошибки больше 0, в каждую ячейку выходного растра записывается сумма вероятностей того, что ячейка будет видимой для любого из наблюдателей. Для типа анализа OBSERVERS, в выходной растр записываются уникальные ID регионов для видимых областей, которые могут быть связаны обратно с объектами-наблюдателями через выходную таблицу отношений наблюдатель-регион. | Raster |
Пример кода
Viewshed2, пример 1 (окно Python)
Этот пример определяет видимые для ряда наблюдателей местоположения поверхности, не используя какие-либо параметры наблюдателей.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outViewshed2 = Viewshed2("elevation", "obser1.shp", "", "OBSERVERS", "",
"C:/sapyexamples/output/obstable01.dbf",
analysis_method="ALL_SIGHTLINES")
outViewshed2.save("C:/sapyexamples/output/outvwshd2_01")
Viewshed2, пример 2 (автономный скрипт)
Этот пример определяет видимые для ряда наблюдателей местоположения поверхности, используя атрибуты входного класса объектов в качестве параметров наблюдателей.
# Name: Viewshed2_Ex_02.py
# Description: Determines the raster surface locations visible to a set of
# observer features.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.checkOutExtension("Spatial")
inRaster = "elevation"
inObservers = "obser2.shp"
outAGL = ""
analysisType = "OBSERVERS"
verticalError = ""
outAnalysisRelationTable = "C:/sapyexamples/output/obser_region2.dbf"
refractCoeff = ""
surfaceOffset = "offsetb"
observerElevation = "spot"
observerOffset = "offseta"
innerRadius = "radius1"
innerIs3D = "False"
outerRadius = "radius2"
outerIs3D = "True"
horizStartAngle = "azimuth1"
horizEndAngle = "azimuth2"
vertUpperAngle = "vert1"
vertLowerAngle = "vert2"
analysisMethod = "ALL_SIGHTLINES"
# Execute Viewshed2
outViewshed2 = Viewshed2(inRaster, inObservers, outAGL, analysisType,
verticalError, outAnalysisRelationTable, refractCoeff,
surfaceOffset, observerElevation, observerOffset,
innerRadius, innerIs3D, outerRadius, outerIs3D,
horizStartAngle, horizEndAngle, vertUpperAngle,
vertLowerAngle, analysisMethod)
# Save the output
outViewshed2.save("C:/sapyexamples/output/outvwshd2_02")
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Требует Spatial Analyst или 3D Analyst
- ArcGIS Desktop Standard: Требует Spatial Analyst или 3D Analyst
- ArcGIS Desktop Advanced: Требует Spatial Analyst или 3D Analyst