Расчет процента видимого неба?


14

Кто-нибудь может объяснить, как можно проще, как рассчитать процент видимого неба?

Я сделал спутниковую съемку и определил высоту зданий и расстояние между ними.

Как я могу использовать эти данные для расчета процента видимого неба в зависимости от того, где я стоял?

Ответы:


12

У нас обычно есть данные о том, где находится земля , поэтому мы должны это использовать. Земля определяет твердую фигуру в 3D. Вы проецируете эту фигуру радиально на единичную сферу с центром в зрителе: это отображает землю на область в сфере. Вычислите площадь оставшейся области: это телесный угол, образованный небом (в стерадианах ). Разделите его на общую площадь сферы (равную 4 пи) и умножьте на 100, чтобы получить процент неба.

Если вы предпочитаете более яркое объяснение, поместите зрителя в центр небольшого сферического пузыря и попросите его нарисовать небо. Разделите количество краски, которое она использует, на количество, необходимое, чтобы нарисовать весь пузырь, и умножьте на 100.

На самом деле есть некоторые не очень простые технические детали.

Проекция на сферу довольно проста, когда земля задана как триангулированная сеть (TIN), потому что вам нужно только написать код для проецирования треугольника на сферу. Когда земля задана как сеточная модель рельефа (DEM), вы можете представить каждую ячейку сетки как трехмерный четырехугольник. Вы можете разбить это на два треугольника вдоль диагонали и отобразить каждый треугольник на сферу. В любом случае у вас останется коллекция спроецированных треугольников на сфере. Путем проецирования сферы на карту (например, с помощью стереографической проекции) объединение этих треугольников в многоугольную область может быть сведено к стандартной задаче вычислительной геометрии плоскости (например, с использованием метода развертки плоскости). В остальном все просто (для ГИС).

На этом изображении изображен небольшой город имитируемых небоскребов в гномической проекции с центром в центре города, смотрящий прямо вверх. ГИС может «объединить» (образовать объединение) полигоны, представляющие стороны и крыши этих зданий, а затем вычислить площадь оставшегося (белого) пространства. Гномоническая проекция была выбрана потому, что прямые архитектурные линии отображаются в виде отрезков, а не кривых.

Имитация зданий

ГИС может быть введена в эксплуатацию для выполнения этого расчета, когда у вас есть только земля и здания. Здания, скорее всего, доступны в виде наборов прямоугольников. Вершина прямоугольника имеет евклидовы координаты (x, y, z) относительно зрителя. Преобразуйте их в сферические координаты: широту и долготу. Создайте многоугольник для преобразованного прямоугольника. Сделайте это для всех прямоугольников для всех частей всех зданий, в результате чего получится «слой многоугольников». Затем в ГИС, (1) вычисляем теоретико-множественное объединение элементов, (2) вычисляем полученную площадь, (3) вычитаем это из половины площади поверхности земли (другая половина - для земли), и (4) разделить на всю площадь земли (умножить на 100, чтобы получить процент). Вычислительное усилие пропорционально N * log (N), где N - количество вершин. Точность зависит от того, насколько хорошо ГИС представляет прямоугольники (вам может потребоваться разбить стороны прямоугольника на последовательности из более близко расположенных вершин). В зависимости от ваших требований к точности, вы можете рассмотреть подходы на основе Монте-Карло (например, трассировка лучей рекомендуется в другом ответе), когда у вас есть более нескольких сотен тысяч вершин, то есть, когда зритель полностью окружен (и может видеть части) десятками тысяч зданий :-).


Я провел спутниковую съемку и определил высоту зданий и расстояние между ними. Как я могу использовать эти данные для расчета процента видимого неба в зависимости от того, где я стоял? и если возможно, не могли бы вы показать пример, я должен был написать это в первую очередь извините

@ Крис Это нормально, чтобы отредактировать свой оригинальный вопрос. Просто укажите, какие аспекты вопроса вы изменили, чтобы люди понимали контекст любых существующих ответов и комментариев.
whuber

Возможно, вы захотите сделать более явным, что после проекции требуется шаг объединения, чтобы предотвратить двойной счет перекрывающихся окклюдеров?
Дан С.

@Dan Слово «союз» прямо в оригинале на шаге 1 :-).
whuber

@whuber Так оно и есть; Я думаю, что мой комментарий пришел до вашего редактирования. Либо это, либо это следствие острой нехватки кофеина вчера.
Дан С.

5

Вот ответ, который приходит из мира компьютерной графики, а не из ГИС - следовательно, это описание алгоритма, а не инструкции для какого инструмента (ов) использовать.

Определение: луч - это начало + направление; это линия, которая начинается в начале координат и продолжается до бесконечности вдоль этого направления.

Вам нужны следующие основные ингредиенты:

  • Возможность проверить, не падает ли данный луч на землю.

  • Возможность проверить, попадает ли данный луч в здание.

  • Все ваши данные (здания, информация, которая представляет землю) в трехмерном декартовом координатном пространстве.

Точные формулы, которые нужно реализовать для лучевых испытаний, зависят от того, как вы представляете «землю» (идеальная сфера? Рельеф?) И «здание» (вытянутый прямоугольник? Полная трехмерная модель?). Для простой геометрии их легко найти и легко реализовать. (например, поиск «пересечение куба луча»).

В любом случае, оттуда ответ относительно% видимости неба из точки тривиален: запустите множество лучей со случайными направлениями от точки запроса. Доля неба, которая видна из вашей контрольной точки, равна количеству лучей, которые не попали в здание или на землю.

Ответ не точный, но вы можете вычислить его с любым желаемым уровнем точности, просто добавив больше лучей.

Как описано выше, это не обязательно очень быстро; но есть множество хорошо документированных оптимизаций, которые вы можете применить.

(Я ожидаю, что для расчета видимости неба по нескольким точкам и одному и тому же набору данных о зданиях этот подход выдувает подходы, основанные на перепроектировании, из воды после добавления простого пространственного индекса.)


Основная проблема заключается в том, что точность увеличивается только с квадратным корнем из числа лучей. Например, если процент неба составляет 50%, вам нужно 100 лучей, чтобы получить 5% точности (что на самом деле означает, что вы примерно на 95% уверены в достижении + -10%), 10000 лучей, чтобы получить 0,5%, 1 000 000, чтобы получить 0,05 %, (три цифры) и т. д.
whuber

@whuber Я согласен, но (1) для вопроса, который описан, точность, превышающая цифру или две, является делом дурака, и (2) адаптивная выборка упала бы в «огромное количество хорошо документированных оптимизаций», которые я махал рукой мимо ;). Однако, является ли это «лучшим» подходом, безусловно, ситуативным.
Дан С.

@ Дэн, хорошо, адаптивная выборка - хорошая идея. Но как это осуществить на практике? Предположим, у вас есть DEM и, скажем, несколько десятков зданий поблизости. Как именно будет работать алгоритм? Трудно представить эффективный алгоритм, который был бы проще или точнее, чем прямой расчет покрытия неба.
whuber

@whuber Я отвечу в нескольких частях ... Первая: адаптивная выборка сводится к смещению лучей туда, где они с большей вероятностью предоставляют информацию, а затем учитывает смещение при интеграции. Простой, эффективный подход состоит в том, чтобы выполнить равномерную начальную выборку, а затем рекурсивно подразделить и повторно выбрать полупространства, которые были достаточно неоднородными. Окончательный ответ = средневзвешенное значение выборок (вес = площадь выборочного пространства поиска).
Дан С.

Точность: адаптивная выборка означает, что точность сложнее рассуждать. Вы получаете ту же базовую точность, что и при исходных единообразных выборках, плюс дополнительную точность, которая сильно зависит от техники адаптации и масштаба высокочастотных элементов в геометрии сцены. Тем не менее, я считаю, что в ситуации «реального мира» вы могли бы достаточно быстро сойтись с ошибкой%, чем ошибка исходных данных.
Дан С.

3

Коэффициент обзора неба (SVF) определяется частью видимого неба (Ω) над определенной точкой наблюдения, как видно из двумерного представления (см. Рисунок а). Алгоритм вычисляет вертикальный угол места горизонта γi в n (восемь представлены здесь) направлениях до заданного радиуса R (b).

Определение фактора неба Был предложен фактор обзора неба, чтобы преодолеть недостатки существующих методов визуализации, например, проблемы направленного освещения при аналитическом затенении холмов.

Наиболее удобной мерой для выражения части видимого неба является телесный угол Ω. Это мера того, насколько большой объект кажется наблюдателю. Телесный угол объекта пропорционален площади А проекции объекта на единую сферу с центром в точке наблюдения.

SVF находится в диапазоне от 0 до 1. Значения, близкие к 1, означают, что почти все полушарие является видимым, что имеет место в открытых объектах (плоскостях и пиках), в то время как значения, близкие к 0, присутствуют в глубоких раковинах и нижних частях глубоких долин от где почти нет неба видно. SVF - это физическая величина (если мы не манипулируем данными высот вертикальным преувеличением).

Как указал @mic_cord, в Remote Sens. 2011, 3 (2), 398-415 опубликована статья о визуализации данных с использованием SVF. DOI: 10,3390 / rs3020398.

Бесплатный инструмент для вычисления SVF (и не только) доступен по адресу http://iaps.zrc-sazu.si/en/rvt#v.


+1 Иллюстрации и ссылки добавляют ясности и авторитета этому, вашему первому посту здесь. Добро пожаловать на наш сайт!
whuber

2

Ecotect (теперь инструмент AutoDesk ) позволяет вам сделать это. В целом, это часто рассматривается в области дневного освещения, и инструмент из этой области может быть проще в использовании, чем ГИС. (Хотя я слышал о плагине ГИС, который может сделать это и рассчитать солнечную экспозицию, но мне так и не удалось его найти).


Солнечный аналитик ESRI? (Он работает, создавая сетку проецируемого неба и затем суммируя сетку.)
whuber

1
Я подумал, что это подходит только для растительности и не учитывает затенение зданий и т. Д. Esri.com/software/arcgis/extensions/spatialanalyst/solar.html В справочном файле упоминается, что он рассматривает топографию, но не здания, например: help. arcgis.com/en/arcgisdesktop/10.0/help/index.html#/…
djq

здания (по крайней мере, те, у которых нет свесов) можно легко «сжечь» в решетках. Вероятно, это неэффективный способ сделать это, потому что вам нужен маленький размер ячейки (а у Solar Analyst есть свои ограничения ...). Я просто подумал, что вы, возможно, думали об этом.
whuber

@whuber Я больше думал о солнечном воздействии стен (например, какая область обращена на юг). Я предположил, что в расчете учитывается только область ячейки сетки, а не «стена» (пиксели, а не вокселы могут быть другим способом ее описания).
djq

2

В GRASS GIS версии 7 (фактически не стабильной) есть команда r.skyview (основанная на команде r.horizon , доступная также в стабильной GRASS v.6).

Он считывает растровое изображение, представляющее модель местности, со значением пикселя, соответствующим высоте элемента местности (например, высотам здания), и рассчитывает для каждого пикселя «коэффициент обзора неба».

Сначала вам нужно преобразовать ваши данные (неизвестный формат) в набор растровых данных.

Видеть:

http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html

http://www.mdpi.com/2072-4292/3/2/398

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.