Расчет покрытий базовых станций сотовой сети
В данной статье описывается пример использования библиотеки GeoAlchemy -- расширения библиотеки SQLAlchemy, которое предназначено для работы с пространственными БД. В качестве иллюстрации выбрана задача расчета покрытий базовых станций сотовой сети.
Краткие сведения о 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).
- Азимут "луча" станции.
- Ширина сектора станции в градусах.
Требуется определить возможное местоположение абонента сети по идентификаторам БС, к которой подключился абонент в данный момент.
Будем использовать простейший вариант расчета покрытия БС, когда точка будет считаться принадлежащей к зоне обслуживания той БС, к которой она расположена ближе. Это очень простая модель, которая не учитывает неоднородности среды, в которой распространяется радиосигнал, мощность данного сигнала, но, тем не менее, при достаточно большой плотности сети она позволяет найти приблизительное решение задачи.
Построение модели GeoAlchemy
Данные по базовым станциям и их покрытиям будем хранить в БД PostgreSQL с пространственным расширением PostGIS.