Андрiй UR5RFF
Моделювання зони покриття ретранслятора за допомогою цифрової моделі висот
Кожен радіолюбитель знає, що хвилі VHF/UHF зазвичай розповсюджуються по прямій, тому для надійного зв’язку з ретранслятором бажано мати пряму видимість на антену передавача. То на який пагорб буде краще видратися, щоб добити до репітера в сусідньому місті з баофенга з резинкою? Або протилежне питання — яке місце краще вибрати для встановлення ретранслятора, щоб була оптимальна зона покриття? На допомогу приходять геоінформаційні системи — програмні продукти, що дозволяють проводити географічний аналіз і представлення інформації. В даній статті я спробую продемонструвати, як можна згенерувати карту покриття радіопередавача за допомогою безкоштовного програмного комплексу QGIS.
Digital Elevation model (DEM): Цифрова модель висотДоки в нас качається і інсталюється QGIS, треба забезпечити наші майбутні розрахунки вхідними даними. В першу чергу нам, звичайно, потрібна місцева карта висот. Точніше, цифрова модель висот, в якій висота кожної точки на карті закодована кольором/відтінком, на відміну від топографічних карт, де висоти вказані за допомогою горизонталей. Таку модель можна отримати з різних джерел, з різною точність, безкоштовно і платно. Для початку пошукаємо у відкритих джерелах, наприклад, на OpenTopography. Тиснемо SELECT A REGION
на карті, і обводимо регіон, яких нас цікавить. Дуже багато одразу не беремо, довго качатиметься, оброблятиметься, і місця займатиме. Нижче карти сайт нам виплюне датасети, на яких присутній наш регіон. Вибираємо більш цікавий. Я брав Copernicus Global Digital Elevation Model, точність 30м. Він більш-менш свіжий, а точність більше 30 у відкритих джерелах я не знайшов. Вибираємо, вказуємо, що нам треба формат GeoTIFF
, відмічаємо прапорцями, які дані нам треба. Для самого аналізу нам треба лише Digital Surface Model (DSM), але поки ми тут, можемо ще завантажити щось для візуалізації, якщо в майбутньому захочемо відрендерити красиву карту. Вказуємо назву для нашого датасету, опис, свій e-mail, і тиснемо Submit
. Через деякий час сервер підготує наш датасет, і пришле на пошту посилання для його завантаження. Я для прикладу завантажив DEM для шматочка рідної Чернігівщини.
QGIS встановився? Саме час. Відкриваємо програму, створюємо новий проект… Стоп. Тут не все так просто. Головне в картографії — це вибрати правильну систему координат. Земля ж у нас геоїд, а карти плоскі. Система координат — це якраз математичний спосіб натягування сови на глобус глобуса на площину. Більшість датасетів і карт, якими ми звикли користуватись, спроектовані в градусах. Градуси, мінути, секунди… як вчили на географії. Але програма моделювання в градуси не вміє, їй треба метрична проекція. Датасет, що ми завантажили, перед моделюванням треба підготовити, перепроектувати. Тож, створюємо новий проект, розпаковуємо архіви з датасетом, і мишкою тягнемо файл DEM з файлового менеджера у вікно QGIS з шарами.
Ось сюди:
Натиснувши правою кнопкою на шар, можна відкрити властивости, і на вкладці Інформація почитати інформацію про шар, наприклад, дізнатися, в якій системі координат він зроблений. В нашому випадку там EPSG:4326 - WGS 84
. WGS 84 - найбільш широко використовувана в географії глобальна система координат. Всю Землю охоплює. Вона звична, градусна. Нам не годиться. Нам кращою буде метрична система UTM. Більшу частину України перекриває зона UTM 36N
. Будемо перетворювати DEM.
Вибираємо шар DEM, йдемо в головному меню Растр - Проєкції - Викривлення (перепроекціювання)
. У вікні, що відкрилось, перевіряємо, що вихідний шар - то наша DEM. Початкову систему координат можна залишити порожньою, QGIS вже знає ії з властивостей шару. Цільову СК вказуємо WGS 84 / UTM zone 36N
. В списку її спочатку не буде, тому натискаємо на кнопочку селектора справа від випадаючого списку, там вибираємо Попередньо визначена СК
, і скористаємося пошуком. Вибравши WGS 84 / UTM zone 36N
, повертаємось назад (стрілка зліва вгорі вікна), задаємо Значення nodata для вихідних каналів
-9999
. Це досить важливо, дозволить відкинути фантомні дані, які з’являться при викривленні проекції. Роздільну здатність ставимо таку ж, як в нашій вихідній DEM — 30м
, більше намає сенсу.
Прокручуємо вікно вниз, в рядку, що називається Перепроекційований
, вибираємо, куди зберегти результат конвертації. Можемо одразу вибрати Зберегти у файл
, щоб більше до процесу конвертації не повертатись, якщо нам потрібно буде повторити моделювання. Зберігаємо знову ж у формат GeoTIF
, він має бути вибраний за замовчуванням. Все, запускаємо конвертацію, чекаємо. В головному вікні програми у вікні шарів має з’явитися результат конвертації у вигляді нового шару. Неконвертований шар на цьому етапі вже можна видалити.
Тепер нам необхідно підготувати другу частину нашого датасету — набір місць розміщення передавачів. В нашому найпростішому випадку — одного передавача. Зробити це можна різними способами — злити з GPS навігатора, задати у Shapefile
, імпортувати з файлу CSV
, тощо. Я скористався службою Google Earth. Відкривши сайт, можна поставити мітку на карту, а потім зберегти її у файл KML
і завантажити його на свій комп’ютер.
Далі, перетягнемо завантажений KML до списку шарів QGIS. Згенерований нами KML теж був в системі координат WGS 84
, тому його теж необхідно перепроектувати. Цього разу ми маємо справу не з растровими, а з векторними даними, тому вибравши шар з точками, йдемо в головному меню Вектор — Управління даними — змінити проекцію шару
, вибираємо шар, цільову СК WGS 84 / UTM zone 36N
(ми вже з нею працювали, тому вона вже має бути в випадаючому списку), вказуємо, яким чином зберегти результат. Можна у файл, а можна й у тимчасовий шар, тепер це не так важливо, бо скоріш за все ці дані ми використаємо всього раз. Конвертуємо, і видаляємо старий неконвертований шар.
Для безпосередньої побудови карти видимості потрібно встановити на QGIS плагін Visibility analysis. Це робиться в три кліки у внутрішньому менеджері плагінів. Плагіни — Управління та встановлення плагінів
, вводимо Visibility analysis
в пошук, натискаємо кнопку Встановити плагін
. Далі вибираємо в головному меню Обробка даних — Панель інструментів
. Справа з’явиться панель, десь внизу якої буде наш Visibility Analysis.
Спочатку треба перетворити нашу точку спостереження на допустимі вхідні дані для алгоритму. Вибираємо Create viewpoints
Вказуємо Observer location(s)
шар з розташуванням передавача минулого кроку, вибираємо Digital elevation model
вказуємо Radius of analysis
в метрах, Observer Height
- висоту антени передавача (відносно рельєфу), Target height
— висоту приймальної антени. Як і в минулі рази, вкажемо, як зберігати результуючий шар — у файл, чи тимчасово. Виконуємо, приховуємо чи видаляємо вихідний шар, бо в нас вже є новий.
Залишилось, нарешті, побудувати поле зору — те, заради чого це все починалось. Клікаємо Visibility Analysis — Аналіз — Viewshed
. Observer location(s)
— вибираємо шар, який ми отримали на попередньому кроці. Знову вказуємо Digital elevation model
, ставимо прапорець Take in account Earth curvature
, якщо хочемо мати поправку на кривизну Землі. Вибираємо Output file
, бо те, що ми зараз отримаємо, нам дуже треба. Запускаємо. Чекаємо, бо в залежності від розмірів наших вхідних даних, це може зайняти деякий час.
Ось і наш результат. Якщо зона покриття вийшла у вигляді еліпса — це тому, что у нас стоїть неправильна система координат всього проекту. в правому нижньому кутку головного вікна програми треба вибрати WGS 84 / UTM zone 36N
Ось, в принципі, і все з розрахунками. Ми отримали наш оверлей, де білі точки — місця, де наш передавач видно, а чорні — де не видно. Але поки що все виглядає не красиво, непрозорий круг з білими розводами, система координат нетипова…
Представлення данихДля початку, конвертуємо оверлей назад в систему координат EPSG:4326 - WGS 84
. Все, як в пункті 2, але в зворотньому порядку: як цільову СК вибираємо EPSG:4326 - WGS 84
або EPSG:3857 - WGS 84 / Pseudo-Mercator
, якщо хочемо надалі накладати цей оверлей на карти Google Maps. Зберігаємо сконвертований шар як окремий GeoTIFF
на диск, і тепер краще буде в QGIS створити новий проект. Шарів Google maps за замовчанням в QGIS немає, але іх не важко додати. Наприклад, додамо Google Terrain: в браузері (над панеллю з шарами) знаходимо XYZ tiles
, клікаємо правою кнопкою, Створити з'єднання
. Прописуємо назву, а в якості URL макрос https://mt1.google.com/vt/lyrs=p&x={x}&y={y}&z={z}
. Ще ставимо Максимальний рівень масштабування
19. Все, решту не міняємо.
Повний список адрес Google Maps:
Google Maps: https://mt1.google.com/vt/lyrs=r&x={x}&y={y}&z={z}
Google Satellite: http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}
Google Satellite Hybrid: https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}
Google Terrain: https://mt1.google.com/vt/lyrs=p&x={x}&y={y}&z={z}
Google Roads: https://mt1.google.com/vt/lyrs=h&x={x}&y={y}&z={z}
Тож, перетягуємо до шарів потрібну базову карту, у нашому випадку Google Terrain. Далі перетягуємо туди файл оверлея, який ми отримали після конвертації систем координат. Правою кнопкою на шарі оверлея, Властивості — Символіка
І починаємо гратися, поки буде красиво. Можна просто поміняти тип змішування в підпункті Рендерінг шарів
, і потягати повзунки яскравості, гамми, контрастності і насиченості. Але я б поміняв тип візуалізації на Одноканальний псевдоколір
, і зробив якось так, як на картинці.
Набагато краще. Тепер можна вибрати потрібні шари, і через меню Проект — Імпорт/Експорт
експортувати різні представлення нашої карти в картинки і показувати друзям-аматорам. Пiшить. Покажемо.