Расчет покрытий базовых станций сотовой сети: различия между версиями
Строка 23: | Строка 23: | ||
=== Алгоритм расчета покрытий === | === Алгоритм расчета покрытий === | ||
''''Используемые понятия''' | |||
''Сектор обзора станции:'' сектор радиуса MAX_RADIUS с центром в точке установки станции, дугою сектора 120 градусов, и направлением AZIMUTH. | |||
''Зона покрытия станции:'' искомый участок сектора обзора станции. Точки данного участка характеризуются тем, что расстояние от точки до данной станции будет меньше, чем до любой другой станции данного оператора, работающей по данной технологии (2G, 3G, 4G). | |||
'''Инициализация.''' | '''Инициализация.''' | ||
Производится группировка станций по оператору (т.е. по параметрам mcc и mnc) и технологии (2G, 3G, 4G). Для каждой группы алгоритм расчета покрытий производится независимо. | Производится группировка станций по оператору (т.е. по параметрам mcc и mnc) и технологии (2G, 3G, 4G). Для каждой группы алгоритм расчета покрытий производится независимо. | ||
'''Этап первый.''' Построение секторов обзора станций. | |||
Выбирается очередная группа станций, сформированная на этапе инициализации. Далее станции группируются по адресу и азимуту. Для каждой группы (т. е. станций, связанных с одним адресом, и одинаковым азимутом) строится строится сектор обзора. Данный сектор является общим для всей группы. Зона покрытия станции также строится одна на всю группу и изначально инициализируется сектором обзора. Уточнение зон покрытия происходит на втором этапе. | |||
'''Этап второй.''' Построение зон покрытия станций. | |||
Для каждого покрытия, инициализированного на предыдущем этапе, производится следующие действия: | |||
# Выбирается очередное покрытие (далее COVERAGE). | |||
#2. Находятся те сектора обзора, которые пересекаются с COVERAGE, и для каждого такого сектора обзора (далее currentSECT) производится: | |||
## Найти пересечение покрытия COVERAGE и текущего сектора currentSECT. | |||
## Вычислить тот участок пересечения, который лежит ближе к сектору currentSECT, чем к покрытию. | |||
## Отрезать от COVERAGE этот участок пересечения. | |||
# Вернуть результат всех обрезаний — COVERAGE содержит искомое покрытие станции. | |||
== Построение модели GeoAlchemy == | == Построение модели GeoAlchemy == | ||
Данные по базовым станциям и их покрытиям будем хранить в БД PostgreSQL с пространственным расширением PostGIS. | Данные по базовым станциям и их покрытиям будем хранить в БД PostgreSQL с пространственным расширением PostGIS. |
Версия от 07:51, 30 декабря 2013
В данной статье описывается пример использования библиотеки GeoAlchemy -- расширения библиотеки SQLAlchemy, которое предназначено для работы с пространственными БД. В качестве иллюстрации выбрана задача расчета покрытий базовых станций сотовой сети.
Данная статья не ставит цель дать всесторонний обзор данных библиотек или заменить их документацию. Цель статьи -- познакомить читателя с идеями, лежащими в основе этих библиотек и на конкретном примере и показать преимущества использования технологии ORM, обеспечивающей большую гибкость и прозрачность программного кода.
Краткие сведения о SQLAlchemy и GeoAlchemy
Библиотека на языке Python с открытым исходным кодом SQLAlchemy -- предназначена для работы с реляционными СУБД с применением технологии ORM. Она служит для синхронизации объектов Python и записей реляционной базы данных. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL.
GeoAlcemy -- пространственное расширение библиотеки SQLAlchemy, позволяющее производить обработку пространственных данных. В настоящий момент GeoAlchemy поддерживает такие базы данных и их пространственные расширения, как PostGIS, Spatialite, MySQL, Oracle, и MS SQL Server 2008.
Краткие сведения о задаче расчета покрытий
Для примера будем рассматривать задачу расчета покрытий базовых станций (БС) сотовой сети. Предположим, что имеется набор точек, которые помечают местоположения базовых станций. При этом с каждой станцией связаны следующие атрибуты:
- Идентификаторы станции т.е. mcc, mnc, lac, cid (подробнее об этих идентификаторах можно прочитать в википедии
- Частота, на которой работает БС.
- Высота подвеса.
- Тип сети (2G, 3G, 4G).
- Азимут "луча" станции.
- Ширина сектора станции в градусах.
Требуется определить возможное местоположение абонента сети по идентификаторам БС, к которой подключился абонент в данный момент.
Будем использовать простейший вариант расчета покрытия БС, когда точка будет считаться принадлежащей к зоне обслуживания той БС, к которой она расположена ближе. Это очень простая модель, которая не учитывает неоднородности среды, в которой распространяется радиосигнал, мощность данного сигнала, но, тем не менее, при достаточно большой плотности сети она позволяет найти приблизительное решение задачи.
Алгоритм расчета покрытий
'Используемые понятия Сектор обзора станции: сектор радиуса MAX_RADIUS с центром в точке установки станции, дугою сектора 120 градусов, и направлением AZIMUTH. Зона покрытия станции: искомый участок сектора обзора станции. Точки данного участка характеризуются тем, что расстояние от точки до данной станции будет меньше, чем до любой другой станции данного оператора, работающей по данной технологии (2G, 3G, 4G).
Инициализация.
Производится группировка станций по оператору (т.е. по параметрам mcc и mnc) и технологии (2G, 3G, 4G). Для каждой группы алгоритм расчета покрытий производится независимо.
Этап первый. Построение секторов обзора станций. Выбирается очередная группа станций, сформированная на этапе инициализации. Далее станции группируются по адресу и азимуту. Для каждой группы (т. е. станций, связанных с одним адресом, и одинаковым азимутом) строится строится сектор обзора. Данный сектор является общим для всей группы. Зона покрытия станции также строится одна на всю группу и изначально инициализируется сектором обзора. Уточнение зон покрытия происходит на втором этапе.
Этап второй. Построение зон покрытия станций. Для каждого покрытия, инициализированного на предыдущем этапе, производится следующие действия:
- Выбирается очередное покрытие (далее COVERAGE).
- 2. Находятся те сектора обзора, которые пересекаются с COVERAGE, и для каждого такого сектора обзора (далее currentSECT) производится:
- Найти пересечение покрытия COVERAGE и текущего сектора currentSECT.
- Вычислить тот участок пересечения, который лежит ближе к сектору currentSECT, чем к покрытию.
- Отрезать от COVERAGE этот участок пересечения.
- Вернуть результат всех обрезаний — COVERAGE содержит искомое покрытие станции.
Построение модели GeoAlchemy
Данные по базовым станциям и их покрытиям будем хранить в БД PostgreSQL с пространственным расширением PostGIS.