область видимости простыми словами / Хабр
Доброго времени суток, друзья!
Область видимости — важная концепция, определяющая доступность переменных. Данная концепция лежит в основе замыканий, разделяя переменные на глобальные и локальные.
В этой статье я постараюсь простыми словами объяснить, что такое область видимости в JavaScript.
1. Область видимости
Перед тем, как погружаться в детали, связанные с областью видимости, рассмотрим небольшой пример.
Допустим, мы определили переменную:
const message = 'Hello' console.log(message) // 'Hello'
Мы легко можем вывести ее значение в консоль. Это понятно.
Теперь поместим объявление переменной message в блок if:
if (true) { const message = 'Hello' } console.log(message) // ReferenceError: message is not defined
На этот раз при попытке доступа к переменной выбрасывается исключение ReferenceError: message is not defined.
Почему это произошло?
Потому что блок if создал область видимости для переменной message. И message доступна только внутри этой области.
Таким образом, доступность переменных ограничена областью видимости, в которой они определены.
Итак, область видимости — это зона доступности переменных.
2. Блочная область видимости
Блок кода в JavaScript определяет область видимости переменных, объявленных с помощью ключевых слов const и let:
if (true) { // область видимости блока if const message = 'Hello' console.log(message) // 'Hello' } console.log(message) // ReferenceError
Первый console.log() благополучно выводит значение переменной message в консоль, поскольку доступ к этой переменной осуществляется в той области видимости, в которой она определена.
Однако вызов второго console.log() приводит к возникновению ошибки, поскольку переменная message недоступна во внешней по отношению к ней области видимости: в текущем контексте message не существует.
В инструкциях if, for, while также создается блочная область видимости.
Например:
for (const color of ['green', 'red', 'blue']) { // область видимости блока for const message = 'Hi' console.log(color) // 'green', 'red', 'blue' console.log(message) // 'Hi', 'Hi', 'Hi' } console.log(color) // ReferenceError console.log(message) // ReferenceError
Переменные color и message существуют только внутри блока for.
Тоже самое справедливо для инструкции while:
while (/* условие */) { // область видимости блока while const message = 'Hi' console.log(message) // 'Hi' } console.log(message) // ReferenceError
message, определенная в while, доступна только внутри данного цикла.
В JavaScript вы можете создавать самостоятельные блоки кода. Они также определяют собственную область видимости:
{ const message = 'Hi' console.log(message) // 'Hi' } console.log(message) // ReferenceError
2.1. var не имеет блочной области видимости
Как мы видели в предыдущих примерах, блок кода создает область видимости для переменных, объявленных с помощью ключевых слов const и let. Однако это не работает для переменных, объявленных с помощью ключевого слова var.
Рассмотрим пример:
if (true) { // область видимости блока if var count = 0 console.log(count) // 0 } console.log(count) // 0
Переменная count, как и ожидалось, доступна внутри блока if. Однако, она доступна и за пределами данного блока!
Дело в том, что блок кода не создает области видимости для переменных, объявленных с помощью ключевого слова var. Но это делает функция.
3. Область видимости функции
Функции в JavaScript создают область видимости для всех переменных, независимо от того, с помощью какого ключевого слова они объявлены (var, const или let).
Например:
function run() { // область видимости функции run() var message = 'Беги, Форрест, беги!' console.log(message) } run() // 'Беги, Форрест, беги!' console.log(message) // ReferenceError
Функция run() создает область видимости. Переменная message доступна внутри функции, но недоступна снаружи.
Аналогичным образом функция создает область видимости для переменных, объявленных с помощью const и let, и даже для других функций и функциональных выражений:
function run() { // область видимости функции run() const two = 2 let one = 1 function run2() {} var run3 = () => {} console.log(two) console.log(one) console.log(run2) console.log(run3) } run() // 2 1 ƒ run2() {} () => {} console.log(two) // ReferenceError console.log(one) // ReferenceError console.log(run2) // ReferenceError console.log(run3) // ReferenceError
4. Область видимости модуля
Модули ES6 также создают область видимости для переменных, функций и классов.
Модуль circle создает константу pi (для внутреннего использования):
// область видимости модуля circle const pi = 3.14 console.log(pi) // 3.14 // использование pi
Переменная pi объявляется внутри модуля circle и не экспортируется из него.
Затем модуль circle импортируется:
import './circle' console.log(pi) // ReferenceError
Переменная pi недоступна за пределами модуля circle (до тех пор, пока она не будет экспортирована с помощью export).
Модульная область видимости инкапсулирует модули. Это означает, что частные переменные (которые не экспортируются) используются для собственных нужд модуля и защищены от доступа извне.
Таким образом, можно сказать, что область видимости — это механизм инкапсуляции для блоков кода, функций и модулей.
5. Области видимости могут быть вложенными
Интересной особенностью областей видимости является то, что они могут быть вложены одна в другую.
В следующем примере функция run() создает область видимости, а внутри нее блок if создает еще одну область:
function run() { // область видимости функции run() const message = 'Беги, Форрест, беги!' if (true) { // область видимости блока if const friend = 'Бубба' console.log(message) // 'Беги, Форрест, беги!' } console.log(friend) // ReferenceError } run()
Область видимости блока if вложена в область видимости функции run().
Область видимости, находящаяся внутри другой области, называется внутренней областью видимости. В приведенном примере — это область видимости блока if.
Область видимости, содержащая другую область, называется внешней областью видимости. В приведенном примере — это область видимости фукнции run().
Что насчет доступности переменных? Нужно запомнить простое правило:
Переменные из внешней области видимости доступны во внутренней области.
Поэтому переменная message доступна внутри блока if.
6. Глобальная область видимости
Глобальная область видимости является самой внешней областью. Она доступна для любой внутренней или локальной области видимости. В браузере глобальной является область видимости, создаваемая при загрузке JavaScript-файла, указанного в атрибуте src тега script:
<script src="script.js">
// script.js
// глобальная область видимости
let counter = 1
Переменные, объявленные в глобальной области видимости являются глобальными переменными. Они доступны в любой другой области.
Глобальная область видимости — это механизм, который позволяет среде выполнения JavaScript-кода (браузеру, Node.js) предоставлять приложениям хостовые (т.е. принадлежащие среде) объекты как глобальные переменные.
Например, window и document являются глобальными переменными (объектами), предоставляемыми браузером. В Node.js такой переменной является, например, объект process.
7. Лексическая область видимости
Определим две функции, одна из которых вложена в другую:
function outer() { // область видимости функции outer() let v = 'Я из области видимости функции outer()!' function inner() { // область видимости функции inner() console.log(v) // 'Я из области видимости функции outer()!' } return inner } const f = outer() f()
Взгляните на последнюю строку: функция inner() вызывается за пределами области видимости функции outer(). Как JavaScript понимает, что значение, выводимое в консоль в функции inner(), принадлежит переменной v, объявленной в фукнции outer()?
Ответ: благодаря лексической области видимости.
JavaScript реализует механизм под названием лексическая или статическая область видимости. Лексическая область видимости означает, что доступность переменных определяется статически положением данных переменных внутри области видимости вложенной функции: переменные из области видимости внешней функции доступны в области видимости вложенной функции.
Формальное определение лексической области гласит следующее:
Лексическая область видимости состоит из внешних областей видимости, определенных статически, т.е. из внешних областей, зафиксированных использованием переменных из этих областей во внутренних функциях.
В приведенном примере лексическая область видимости функции inner() состоит из области видимости функции outer().
Более того, inner() — это замыкание, поскольку в ней используется значение переменной из лексической области видимости.
8. Изоляция переменных
Очевидно, что область видимости изолирует переменные. Благодаря этому разные области видимости могут содержать переменные с одинаковыми именами.
Вы можете использовать переменные count, index, current, value и т.д. в разных областях без угрозы возникновения коллизий (конфликтов имен).
Например:
function foo() { // область видимости функции foo() let count = 1 console.log(count) // 1 } function bar() { // область видимости функции bar() let count = 2 console.log(count) // 2 } foo() bar()
Заключение
Область видимости определяет доступность переменных. Переменная, объявленная в текущей области видимости, доступна только внутри нее.
В JavaScript области видимости создаются блоками, функциями и модулями.
Переменные, объявленные с помощью ключевых слова const и let могут иметь блочную, функциональную или модульную область видимости, а переменные, объявленные с помощью ключевого слова var, не имеют блочной области видимости.
Области видимости могут быть вложенными. Переменные, объявленные во внешней области видимости, доступны во внутренней области.
Лексическая область видимости состоит из внешних областей, определенных статически. Любая функция, независимо от места выполнения, имеет доступ к переменным из ее лексической области видимости (в этом заключается суть замыканий).
Надеюсь статья была вам полезной. Благодарю за внимание.
Область и видимость | Microsoft Learn
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 2 мин
Видимость идентификатора определяет части программы, на которые можно ссылаться, — ее область действия. Идентификатор является видимым (т. е. его можно использовать) только в частях программы, охватываемых ее областью, которая может быть ограничена (для повышения ограниченности) файлом, функцией, блоком или прототипом функции, в котором она отображается. Область идентификатора — это часть программы, в которой можно использовать имя. Иногда это называется лексической областью. Существует четыре типа областей: функция, файл, блок и прототип функции.
Все идентификаторы за исключением меток имеют область, определенную уровнем объявления. Видимость идентификаторов внутри программы регулируется следующими правилами для каждого типа области.
Область видимости файла
Декларатор или описатель типа идентификатора с областью видимости файла отображается вне любого блока или списка параметров и доступен из любого места записи преобразования после объявления. Имена идентификаторов с областью действия файла часто называются «глобальными» или «внешними». Область глобального идентификатора начинается с точки его определения или объявления и завершается в конце единицы преобразования.
Область функции
Метка — это единственный тип идентификатора, который имеет область видимости функции. Метка объявляется неявно путем использования в операторе. Имена меток должны быть уникальными внутри функции. (Дополнительные сведения о метках и именах меток см. в статье Оператор goto и помеченные операторы.)
Область действия блока
Декларатор или описатель типа идентификатора с областью видимости блока отображаются внутри блока или в списке объявлений формальных параметров в определении функции. Он является видимым только с момента его определения или объявления до конца блока, содержащего объявление или определение. Его область ограничена данным блоком и любыми блоками, которые является вложенными по отношению к данному блоку, и заканчивается на фигурной скобке, закрывающей связанный блок. Эти идентификаторы иногда называются локальными переменными.
Область видимости прототипа функции
Декларатор или описатель типа идентификатора с областью видимости прототипа функции отображается в списке объявлений параметров в прототипе функции (не является частью объявления функции). Эта область заканчивается в конце декларатора функции.
Описание соответствующих объявлений, используемых для отображения переменных в других исходных файлах, см. в статье Классы хранения в C. Однако переменные и функции, объявленные на внешнем уровне с описателем класса хранения static
, доступны только в том исходном файле, в котором они определены. Все остальные функции видимы глобально.
Время жизни, область, видимость и компоновка
видимости — CSS: каскадные таблицы стилей
Свойство CSS Чтобы одновременно скрыть элемент и удалить его из макета документа , установите для свойства Свойство Окно элемента видно. Поле элемента невидимо (не нарисовано), но по-прежнему влияет на компоновку как обычно. Потомки элемента будут видны, если для них Ключевое слово Использование значения При анимации значения видимости интерполируются между видимыми и невидимыми . Следовательно, одно из начальных или конечных значений должно быть Первый абзац виден. Второй абзац НЕ виден. Загрузка таблиц только в браузере с поддержкой JavaScript. Включите JavaScript для просмотра данных. Хотите принять участие? Узнайте, как внести свой вклад. Последний раз эта страница была изменена участниками MDN. Доступно с лицензией Spatial Analyst. Доступно с лицензией 3D Analyst. Определяет местоположения поверхности растра, видимые для набора объектов наблюдения, или определяет, какие точки наблюдения видны из каждого местоположения поверхности растра. Этот инструмент поддерживает два типа анализа видимости: «Частота» и «Наблюдатели», которые управляются параметром инструмента «Тип анализа». Для первого типа инструмент определяет, какие местоположения поверхности растра видны группе наблюдателей. Во-вторых, он определяет, какие наблюдатели видны из каждого положения растровой поверхности. Если входной растр содержит нежелательный шум, вызванный ошибками выборки, перед запуском этого инструмента можно сгладить растр с помощью фильтра нижних частот, такого как параметр Среднее в разделе Статистика очагов. Видимость центра каждой ячейки определяется путем сравнения угла высоты до центра ячейки с углом высоты до местного горизонта. Локальный горизонт вычисляется путем рассмотрения промежуточной местности между точкой наблюдения и текущим центром ячейки. Если точка лежит выше местного горизонта, она считается видимой. Инструмент предоставляет дополнительный выходной растр уровня земли (AGL). Каждая ячейка выходного растра AGL записывает минимальную высоту, которую необходимо добавить к этой ячейке, чтобы сделать ее видимой хотя бы для одного наблюдателя. Когда входные объекты-наблюдатели содержат несколько наблюдателей, выходным значением является минимальное значение AGL для всех отдельных наблюдателей. Используйте параметры наблюдателя, чтобы лучше контролировать процесс анализа видимости. Например, с помощью параметра смещения наблюдателя вы можете указать смещение высоты наблюдателя в анализе видимости. Когда входной растр необходимо передискретизировать, будет использоваться билинейный метод. Примером того, когда входной растр может быть передискретизирован, является ситуация, когда выходная система координат, экстент или размер ячейки отличаются от входных. Дополнительные сведения о средах геообработки, применимых к этому инструменту, см. в разделах Среды анализа и Spatial Analyst. in_raster Входная поверхность. in_observer_features Класс пространственных объектов, определяющий местоположения наблюдателей. Входными данными могут быть точечные или полилинейные объекты. out_agl_raster (Необязательно) Выходной надземный (AGL) растр. Результат AGL представляет собой растр, в котором значение каждой ячейки представляет собой минимальную высоту, которую необходимо добавить к невидимой в противном случае ячейке, чтобы сделать ее видимой хотя бы для одного наблюдателя. Уже видимые ячейки будут иметь значение 0 в этом выходном растре. analysis_type (Необязательно) Тип анализа видимости. nonvisible_cell_value (Необязательно) Значение, присвоенное невидимым ячейкам. z_factor (необязательно) Количество земных x,y единиц на одной поверхности z единиц. Z-фактор корректирует единицы измерения для z-единиц, когда они отличаются от x,y-единиц входной поверхности. Z-значения входной поверхности умножаются на z-фактор при расчете конечной выходной поверхности. Если единицы x,y и z выражены в одних и тех же единицах измерения, z-фактор равен 1. Это значение по умолчанию. Если единицы измерения x,y и z выражены в разных единицах измерения, для z-фактора необходимо установить соответствующий коэффициент, иначе результаты будут неверными. Например, если ваши единицы z — футы, а единицы x, y — метры, вы должны использовать z-фактор 0,3048 для преобразования единиц z из футов в метры (1 фут = 0,3048 метра). curvature_correction (дополнительно) Позволяет корректировать кривизну Земли. коэффициент преломления (Необязательно) Коэффициент преломления видимого света в воздухе. Значение по умолчанию: 0,13. surface_offset (необязательно) Это значение указывает расстояние по вертикали, которое следует добавить к z-значению каждой ячейки, поскольку оно учитывается для видимости. Это должно быть положительное целое число или значение с плавающей запятой. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле OFFSETB используется, если оно существует во входной таблице атрибутов объектов-наблюдателей. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию оно равно 0. Observer_Elevation (Необязательно) Это значение используется для определения отметок поверхности точек наблюдения или вершин. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле SPOT используется, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, он будет оцениваться посредством билинейной интерполяции со значениями высоты поверхности в соседних ячейках местоположения наблюдателя. Observer_offset (Необязательно) Это значение указывает расстояние по вертикали, которое нужно добавить к высоте наблюдателя. Это должно быть положительное целое число или значение с плавающей запятой. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле OFFSETA используется, если оно существует во входной таблице атрибутов объектов-наблюдателей. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию оно равно 1. inner_radius (Необязательно) Это значение определяет начальное расстояние, с которого определяется видимость. Ячейки ближе, чем это расстояние, не видны в выходных данных, но могут блокировать видимость ячеек между внутренним радиусом и внешним радиусом. Это может быть положительное или отрицательное целое число или значение с плавающей запятой. Если это положительное значение, то оно интерпретируется как трехмерное расстояние прямой видимости. Если это отрицательное значение, то оно интерпретируется как двумерное планиметрическое расстояние. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию используется числовое поле RADIUS1, если оно существует во входной таблице атрибутов объектов-наблюдателей. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию оно равно 0. external_radius (Необязательно) Это значение определяет максимальное расстояние, с которого определяется видимость. Ячейки за пределами этого расстояния исключаются из анализа. Это может быть положительное или отрицательное целое число или значение с плавающей запятой. Если это положительное значение, то оно интерпретируется как трехмерное расстояние прямой видимости. Если это отрицательное значение, то оно интерпретируется как двумерное планиметрическое расстояние. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле RADIUS2 используется, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию используется бесконечность. horizontal_start_angle (Необязательно) Это значение определяет начальный угол горизонтального диапазона сканирования. Значение должно быть указано в градусах от 0 до 360, либо как целое число, либо с плавающей запятой, где 0 ориентирован на север. Значение по умолчанию: 0,9.0009 Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле AZIMUTh2 используется, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию оно равно 0. horizontal_end_angle (дополнительно) Это значение определяет конечный угол горизонтального диапазона сканирования. Значение должно быть указано в градусах от 0 до 360, либо как целое число, либо с плавающей запятой, где 0 ориентирован на север. Значение по умолчанию — 360. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле AZIMUTh3 используется, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию оно равно 360. vertical_upper_angle (Необязательно) Это значение определяет верхний предел вертикального угла сканирования относительно горизонтальной плоскости. Значение указывается в градусах и может быть целым числом или с плавающей запятой. Допустимый диапазон от выше -90 до 9 включительно0. Значение этого параметра должно быть больше параметра Вертикальный нижний угол. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию числовое поле VERT1 используется, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию используется значение 90. vertical_lower_angle (Необязательно) Это значение определяет нижний предел вертикального угла сканирования относительно горизонтальной плоскости. Значение указывается в градусах и может быть целым числом или с плавающей запятой. Допустимый диапазон: от -90 до (но не включая) 90. Значение этого параметра должно быть меньше параметра Вертикальный верхний угол. Вы можете выбрать поле во входном наборе данных наблюдателей или указать числовое значение. По умолчанию используется числовое поле VERT2, если оно существует во входной таблице атрибутов объектов наблюдателя. Вы можете перезаписать его, указав другое числовое поле или значение. Если этот параметр не указан и поле по умолчанию не существует в таблице атрибутов входных объектов наблюдателя, по умолчанию используется значение -90. Выходной растр. Выходные данные либо записывают количество раз, которое каждая ячейка входного растра поверхности может быть видна входными точками наблюдения (тип частотного анализа), либо записывают, какие позиции наблюдателя видны из каждой ячейки растра поверхности ( тип наблюдателей). В этом примере определяются местоположения поверхности, видимые набору наблюдателей, определенных в шейп-файле. В этом примере определяется, какие наблюдатели видны в каждой точке на поверхности. видимость
показывает или скрывает элемент без изменения макета документа. Свойство также может скрывать строки или столбцы в .
display
значение none
вместо использования видимости
. /* Значения ключевых слов */
видимость: видимая;
видимость: скрытая;
видимость: коллапс;
/* Глобальные значения */
видимость: наследовать;
видимость: начальная;
видимость: вернуться;
видимость: обратный слой;
видимость: не установлена;
видимости
указано как одно из значений ключевого слова, перечисленных ниже. Значения
видимые
скрытый
видимость
установлена на visible
. Элемент не может получить фокус (например, при навигации по индексам вкладок). обрушение
свернуть
имеет разные эффекты для разных элементов: <таблицы>
строк, столбцов, групп столбцов и групп строк строки или столбцы скрыты, а занимаемое ими пространство удалено (как если бы
были применены к столбцу/строке таблицы). Однако размер других строк и столбцов по-прежнему рассчитывается, как если бы ячейки в свернутой строке (строках) или столбце (столбцах) присутствовали. Это значение позволяет быстро удалить строку или столбец из таблицы без принудительного пересчета ширины и высоты для всей таблицы. отображать
: нет свернуть
обрабатывается так же, как скрытый
. visible
hidden
для элемента удалит его из дерева специальных возможностей. Это приведет к тому, что элемент и все его дочерние элементы больше не будут объявляться технологией чтения с экрана. видимым
, иначе интерполяция невозможна. Значение интерполируется как дискретный шаг, где значения временной функции между 0
и 1
сопоставляются с видимыми
и другими значениями временной функции (которые возникают только в начале/конце перехода или как результат кубический-безье ()
функций со значениями y за пределами [0, 1]) сопоставляются с более близкой конечной точкой.: свернуть
отсутствует или частично некорректен в некоторых современных браузерах. Это может неправильно обрабатываться как видимость: скрытый
для элементов, отличных от строк и столбцов таблицы. видимость: свернуть
может изменить макет таблицы, если таблица имеет вложенные таблицы внутри свернутых ячеек, если только видимость: видимая
указывается явно для вложенных таблиц. Initial value visible
Applies to all elements Inherited yes Computed value as specified Animation type a visibility видимость =
видимость |
скрыто |
коллапс Базовый пример
HTML
CSS
.видимый {
видимость: видимая;
}
.невидимый {
видимость: скрытая;
}
Пример таблицы
HTML
1.1
1.2
1.3
<тд>2.1тд>
2.2
2.3
<тд>3.1тд>
<тд>3.2тд>
<тд>3.3тд>
таблица>
CSS
.collapse {
видимость: коллапс;
}
стол {
граница: 1px сплошной красный;
}
тд {
граница: 1px сплошной серый;
}
Спецификация Модуль отображения CSS Уровень 3
# видимость дисплей
Обнаружили проблему с содержанием этой страницы?
Видимость (Spatial Analyst)—ArcMap | Документация
Сводка
Иллюстрация
Выходные данные видимости с опцией «Частота», отображаемые на заштрихованной поверхности высот Выходные данные видимости с опцией «Наблюдатели», отображаемые на заштрихованной поверхности высот Использование
Синтаксис
Видимость(in_raster, in_observer_features, {out_agl_raster}, {analysis_type}, {nonvisible_cell_value}, {z_factor}, {curvature_correction}, {refractivity_coefficient}, {surface_offset}, {observer_elevation}, {observer_offset}, {inner_offset}, {inner_offset} , {внешний_радиус}, {горизонтальный_начальный_угол}, {горизонтальный_конечный_угол}, {вертикальный_верхний_угол}, {вертикальный_нижний_угол})
Параметр Объяснение Тип данных Растровый слой Слой объектов Набор растровых данных Строка Булево значение Двойной Логический Double Double; Поле Двойной; Поле Double; Поле Double; Поле Двойной; Поле Double; Поле Double; Поле Двойной; Поле Двойной; Поле Возвращаемое значение
Имя Объяснение Тип данных out_raster Растр Пример кода
Пример видимости 1 (окно Python)
импорт дуги
из окружения импорта arcpy
импорт из arcpy.sa *
env.workspace = "c:/sapyexamples/данные"
outvis = arcpy.sa.Visibility("высота", "observers.shp", "c:/sapyexamples/output/aglout1",
"ЧАСТОТА", "NODATA", "1", "CURVED_EARTH", "0,13",
"СМЕЩЕНИЕB", "ТОЧНО", "СМЕЩЕНИЕ", "РАДИУС1", "РАДИУС2",
"АЗИМУТ2", "АЗИМУТ3", "ВЕРТ1", "ВЕРТ2")
outvis.save("c:/sapyexamples/output/visiout1")
Пример видимости 2 (автономный сценарий)
# Имя: Visibility_Ex_02.py
# Описание: Определяет местоположения поверхности растра, видимые набору
# функции наблюдателя.
# Требования: Расширение Spatial Analyst
# Импорт системных модулей
импортировать аркпи
из окружения импорта arcpy
импорт из arcpy. sa *
# Установить параметры среды
env.workspace = "c:/sapyexamples/данные"
# устанавливаем локальные переменные
inRaster = "высота"
inObserverFeatures = "observers.shp"
aglOutput = "c:/sapyexamples/выход/aglout1"
analysisType = "НАБЛЮДАТЕЛИ"
невидимое значение = "НОЛЬ"
zфактор = 1
useEarthCurvature = "CURVED_EARTH"
Коэффициент преломления = 0,13
смещение поверхности = 500
наблюдатель Высота = 2000
наблюдательСмещение = 500
внутренний радиус = 20000
внешний радиус = 100000
горизонтальный угол старта = 45
горизонтальный угол = 215
вертупперангле = 5
вертловерангле = -5
# Ознакомьтесь с лицензией дополнительного модуля ArcGIS Spatial Analyst
arcpy.checkOutExtension("Пространственное")
# Выполнить видимость
outvis = arcpy.sa.Visibility(inRaster, inObserverFeatures, algOutput, analysisType,
nonVisibleValue, zFactor, useEarthCurvature,
коэффициент преломления, смещение поверхности, высота наблюдателя,
ObserverOffset, innerRadius, externalRadius, horizStartAngle,
horizEndAngle, vertUpperAngle, vertLowerAngle)
# Сохраняем вывод
outvis.