Обчислення відсотка видимого неба?


14

Чи може хтось пояснити, як найпростіше, як обчислити відсоток видимого неба?

Я зробив супутникове обстеження та опрацював висоту будівель та відстань між ними.

Як я можу використовувати ці дані для обчислення відсотка видимого неба відповідно до місця, де я стояв?

Відповіді:


12

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

Якщо ви віддаєте перевагу більш яскраве пояснення, поставте глядача в центр маленького кулястого міхура і попросіть її намалювати небо. Розділіть кількість фарби, яку вона використовує, на кількість, необхідну для фарбування всього бульбашки, і помножте на 100.

Насправді є деякі не дуже прості технічні деталі.

Проекція на сферу є досить простою, коли земля задається у вигляді трикутної мережі (TIN), оскільки вам потрібно лише написати код, щоб спроектувати трикутник на сферу. Коли земля задана як сітчаста модель висоти (DEM), ви можете уявити кожну комірку сітки як 3D чотирикутник. Ви можете розбити його на два трикутники вздовж діагоналі та зіставити кожен трикутник на сферу. В будь-якому випадку вам залишається колекція проектованих трикутників на кулі. Проектуючи сферу на карту (наприклад, за допомогою стереографічної проекції), агрегація цих трикутників у полігональну область може бути зведена до стандартної задачі обчислювальної геометрії площини (наприклад, використовуючи метод зчитування площин). Решта легко (для ГІС).

На цьому зображенні зображено невелике місто з імітованих хмарочосів у гномонічній проекції, зосередженій у глядачі в центрі міста, дивлячись прямо вгору. ГІС може "об'єднати" (утворювати об'єднання) полігонів, що представляють сторони та дахи цих будівель, а потім обчислити площу (білого) простору, що залишилася. Гномонічна проекція була обрана тому, що прямі архітектурні лінії відображаються як сегменти лінії, а не криві.

Модельовані будівлі

ГІС може бути введений в експлуатацію для здійснення цього розрахунку, коли у вас просто земля та будівлі. Будинки, швидше за все, доступні у вигляді колекцій прямокутників. Вершина прямокутника має евклідові координати (x, y, z) щодо глядача. Перетворіть їх у сферичні координати: тобто широту та довготу. Створіть багатокутник для перетвореного прямокутника. Зробіть це для всіх прямокутників для всіх частин усіх будівель, в результаті чого вийде "шар багатокутника". Потім у ГІС (1) обчислюють множинно-теоретичний об'єднання ознак, (2) обчислюють отриману площу, (3) віднімають це від половини поверхні землі (інша половина - для землі), і (4) розділити на всю площу землі (помноживши на 100, щоб отримати відсоток). Обчислювальні зусилля пропорційні N * log (N), де N - кількість вершин. Точність залежить від того, наскільки GIS представляє прямокутники (можливо, вам знадобиться розбити сторони прямокутника на послідовності більш розташованих вершин). Залежно від ваших вимог до точності, ви можете розглянути підходи, засновані на Монте-Карло (наприклад, трасування променів, що пропагується в іншій відповіді), як тільки у вас є більше декількох сотень тисяч вершин - тобто, коли глядач повністю оточений (і може побачити частини) десятків тисяч будівель :-).


я зробив супутникове опитування і розробив висоту будівель та відстань між ними, як я використовую ці дані для обчислення відсотка видимого неба відповідно до місця, де я стояв? і якщо можливо, ви могли б показати приклад, я повинен був написати це в першу чергу вибачте

@chris Добре редагувати своє оригінальне запитання. Просто вкажіть, які аспекти питання ви змінили, щоб люди зрозуміли контекст будь-яких існуючих відповідей та коментарів.
whuber

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

@Dan Слово "союз" прямо в кроці 1 :-).
whuber

@whuber Так і є; Я думаю, що мій коментар був опублікований перед вашою редагуванням. Або це, або це результат сильного дефіциту кофеїну вчора.
Дан С.

5

Ось відповідь, що надходить із світу комп'ютерної графіки, а не ГІС - отже, це опис алгоритму, а не інструкції, якими інструментами (ими) користуватися.

Визначення: промінь - це походження + напрямок; це лінія, яка починається від початку і продовжує нескінченність уздовж цього напрямку.

Вам потрібні такі основні інгредієнти:

  • Можливість тестування, щоб побачити, чи заданий промінь потрапляє на землю.

  • Здатність перевірити, чи потрапив даний промінь на будівлю.

  • Усі ваші дані (будівлі, інформація, яка представляє землю) у 3D-декартовому координатному просторі.

Точні формули, які потрібно застосувати для променевих випробувань, залежать від того, як ви представляєте "грунт" (ідеальна сфера? Місцевість?) Та "будівлю" (екструдований прямокутник - повна 3D-модель?). Для простої геометрії їх легко знайти і легко здійснити. (наприклад, пошук "перетину куба променя").

У будь-якому випадку, звідти відповідь щодо% видимості неба з точки є тривіальною: Вистріліть багато променів із випадковими напрямками від точки запиту. Частка неба, яка видно з вашої тестової точки, дорівнює кількості променів, які не потрапили на будівлю чи землю.

Відповідь не точна, але ви можете обчислити її до будь-якого бажаного рівня точності, просто додавши більше променів.

Як описано вище, це не обов'язково дуже швидко; але існує величезна кількість добре задокументованих оптимізацій, які ви можете застосувати.

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


Основна проблема полягає в тому, що точність збільшується лише при квадратному корені числа променів. Якщо відсоток неба становить 50%, наприклад, вам потрібно 100 променів, щоб отримати 5% точності (що насправді означає, що ви приблизно 95% впевнені, що потрапите в межах + -10%), 10 000 променів, щоб отримати 0,5%, 1 000 000, щоб отримати 0,05 %, (три цифри) тощо
whuber

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

@Dan OK, адаптивна вибірка - хороша ідея. Але як це зробити на практиці? Припустимо, у вас поблизу є DEM і, скажімо, кілька десятків будівель. Як би точно працював алгоритм? Важко уявити ефективний алгоритм, який був би простішим або точнішим, ніж прямий розрахунок покриття неба.
whuber

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

Щодо точності: Адаптивний вибірки означає, що точність важче міркувати. Ви отримуєте таку саму точну точність, як і у початкових рівномірних зразків, а також додаткову точність, яка сильно залежить від технології адаптації та масштабу високочастотних характеристик геометрії сцени. Однак я вважаю, що в ситуації "реального світу" ви зможете досить швидко сходитися до помилки на% менше, ніж у вихідних даних.
Дан С.

3

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

Визначення коефіцієнта виду на небо Для подолання недоліків існуючих методів візуалізації запропоновано фактор зору неба, наприклад, проблеми спрямованого освітлення в аналітичному затіненні пагорба.

Найбільш зручним заходом для вираження частини видимого неба є суцільний кут Ω. Це міра того, наскільки великий об’єкт видається спостерігачеві. Суцільний кут об'єкта пропорційний площі A проекції об'єкта на сферу єдності, зосереджену в точці спостереження.

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 ) дозволяє вам це зробити. Загалом, це часто досліджується в області денного освітлення, і інструмент з цього поля може бути простішим у використанні, ніж ГІС. (Хоча я чув про плагін GIS, який може це зробити і обчислити сонячне опромінення, але мені його так і не вдалося знайти).


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

1
Я вважав, що це підходить тільки для рослинності, і не вважав затінення будівель тощо. Esri.com/software/arcgis/extensions/spatialanalyst/solar.html У довідці зазначається, що він вважає топографію, але не для будівель, наприклад: допомогу. 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.