Доступно с лицензией Spatial Analyst.
Доступно с лицензией 3D Analyst.
Сводка
С помощью геодезических методов определяет положения на поверхности растра, которые видимы для набора объектов наблюдателей.
Более подробно о том, как работает инструмент Обоюдная видимость 2
Иллюстрация
Использование
Этот инструмент выполняет два типа анализа видимости: Частота и Наблюдатели, которые можно задать при помощи параметра Тип анализа.
Для обеспечения точности выходных данных назначьте вертикальную систему координат для входного растра, если у него ее нет.
Для Обоюдной видимости 2 не нужен параметр z-коэффициент. Z-коэффициент будет вычислен внутренне при помощи вертикальных единиц измерения (Z) и единиц измерения карты (XY) из пространственной привязки входного растра.
Входные растры, которые содержат шум, обычно видимый в данных высокого разрешения, могут привести к некоторым неожидаемым результатам. Перед запуском инструмента можно скорректировать данные на этапе предварительной обработки или сгладить эффект от ошибки, применив инструмент Фокальная статистика или Фильтр до выполнения операции видимости.
Когда возникает необходимость пересчитать входной растр, используется метод билинейной интерполяции. Например, входной растр может быть пересчитан, когда выходные система координат, экстент или размер ячеек отличаются от входных.
Для улучшения производительности можно явно задать для параметра Внешний радиус значение, представляющее максимальное расстояние видимости, изучаемое в анализе.
По умолчанию параметр Метод анализа использует опцию Все линии визирования, дающую наиболее точный результат. Для улучшения производительности инструмента, если иметь ввиду время обработки, используйте опцию Линии визирования по периметру.
Параметры наблюдателей, связанные с высотой, а именно Смещение поверхности, Высота наблюдателя и Смещение наблюдателя, можно задать как линейные единицы измерения или как поле. В процессе вычисления значение линейных единиц измерения будет внутренне конвертировано в единицы 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})
Parameter | Объяснение | Тип данных |
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, то выходной растр видимости будет представлен значениями с плавающей точкой. В данном случае значение каждой ячейки выходного растра видимости представляет сумму вероятностей того, что ячейка будет видимой для любого из наблюдателей. Этот параметр отключается, когда используется тип анализа Наблюдатели или метод анализа Линии визирования по периметру. | Linear Unit |
out_observer_region_relationship_table (Дополнительный) | Выходная таблица для выявления регионов, которые видимы для каждого наблюдателя. Данная таблица может быть связана с входным классом объектов-наблюдателей и выходным растром видимости для выявления регионов, видимых для данных наблюдателей. Выходные данные создаются только в том случае, когда типом анализа является Наблюдатели. | Table |
refractivity_coefficient (Дополнительный) | Коэффициент преломления видимого света в воздухе. Значение, предлагаемое по умолчанию, равно 0,13. | Double |
surface_offset (Дополнительный) | Расстояние по вертикали, которое будет добавлено к z-значению каждой ячейки, поскольку оно учитывается для видимости. Это должно быть положительное целочисленное значение или значение с плавающей запятой. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. По умолчанию значение равно 0. | Linear Unit; Field |
observer_elevation (Дополнительный) | Высоты поверхности точек или вершин наблюдателя. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если этот параметр не будет указан, то высота наблюдателя будет определена по растру поверхности с использованием билинейной интерполяции. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. | Linear Unit; Field |
observer_offset (Дополнительный) | Расстояние по вертикали, которое должно быть добавлено к высоте наблюдателя. Это должно быть положительное целочисленное значение или значение с плавающей запятой. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. Значение по умолчанию: 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 (Дополнительный) | Предел верхнего угла по вертикали для сканирования по отношению к горизонтальной плоскости. Это значение указывается в градусах, оно может быть целочисленным или с плавающей запятой. Допустимый диапазон от -90 и до 90 (крайнее значение включено). Это значение параметра должно быть больше, чем значение параметра Вертикальный нижний угол. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. Значение по умолчанию - 90 (прямо вверх). | Double; Field |
vertical_lower_angle (Дополнительный) | Предел нижнего угла по вертикали для сканирования по отношению к горизонтальной плоскости. Это значение указывается в градусах, оно может быть целочисленным или с плавающей запятой. Допустимый диапазон: от -90 до 90 (не включая 90). Это значение параметра должно быть меньше, чем значение параметра Вертикальный верхний угол. Вы можете выбрать поле во входном наборе данных объектов - наблюдателей или указать числовое значение. Если для этого параметра задано какое-то значение, то это значение будет применяться для всех наблюдателей. Чтобы задать различные значения для каждого наблюдателя, установите этот параметр на поле во входном наборе данных объектов-наблюдателей. Значение по умолчанию: -90 (прямо вниз) | Double; Field |
analysis_method (Дополнительный) | Выберите метод, который будет использоваться для расчета видимости. Эта опция позволит вам увеличить производительность в обмен на некоторое снижение точности.
| String |
Значение отраженного сигнала
Name | Объяснение | Тип данных |
out_raster | Выходной растр. Для типа анализа Частота, когда параметр вертикальной ошибки равен 0 или не указан, в выходной растр записывается число раз, которое каждое местоположение ячейки входного растра поверхности можно увидеть из входных точек наблюдения. Когда параметр вертикальной ошибки больше 0, в каждую ячейку выходного растра записывается сумма вероятностей того, что ячейка будет видимой для любого из наблюдателей. Для типа анализа Наблюдатели, в выходной растр записываются уникальные ID регионов для видимых областей, которые могут быть связаны обратно с объектами-наблюдателями через выходную таблицу отношений наблюдатель-регион. | Raster |
Пример кода
Этот пример определяет видимые для ряда наблюдателей местоположения поверхности, не используя какие-либо параметры наблюдателей.
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")
Этот пример определяет видимые для ряда наблюдателей местоположения поверхности, используя атрибуты входного класса объектов в качестве параметров наблюдателей.
# 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")
Environments
Информация о лицензиях
- Basic: Требуется Spatial Analyst или 3D Analyst
- Standard: Требуется Spatial Analyst или 3D Analyst
- Advanced: Требуется Spatial Analyst или 3D Analyst