FeuerGIS - пространственная библиотека для отображения показаний датчиков

FeuerGIS — пространственная библиотека для отображения показаний датчиков

… Тут я долго хотел написать лирическое введение, но все время выходила какая-то чушь, поэтому сразу к делу.

Я сижу сейчас здесь в половине четвертого ночи, вместе со своей простудой, пивом и Оффенбахом и наслаждаюсь тем дивным состоянием, которое описал еще По в моем любимом рассказе «Человек толпы». Все чувства обострены болезнью и я, как никто другой вижу в вас руководителя компании, связанной с установкой разнообразных датчиков.

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

Но в машине сидят далеко не дураки (вы же не станете нанимать дураков, верно?). Первое, что они спрашивают после адреса — детали размещения датчика. На каком этаже? Какой датчик? Может и вообще ехать не нужно? В ответ на это девочка под побеленным потолком достает папку с файлами и долго листая ее, сообщает, что сработал противопожарный датчик на первом этаже дома по улице 12 Реабилитированных Валютчиков. И что этот датчик стоит на ремонте и к нему можно не ехать. Ой, подождите, я перепутала, это другой датчик на ремонте. Но и к этому можно не ехать. Хотя, подождите. Так, нет, к этому ехать надо обязательно!

А тем временем, на улице 12 Реабилитированных Валютчиков все обширнее разгорается пламя, согревая своим теплом цех по настройке и лакировке пианин. И Оффенбах тонет в языках пламени вместе с Тило Вольффом, Шнитке и Сибелиусом вместе взятыми.

Исключительно, по воле неудержимой тяги к искусству, я подумал над ускорением процесса работы оператора. В целях спасения буратин, пианин и прочих горючих произведений я представляю вам пространственную библиотеку FeuerGIS (можете сразу посмотреть в виде демо-версии).

Ладно, отставим лирику. Патетичные речи про оптимизацию, инновации и подобные прибамбасы продекларировать, пожалуй можно, но я не стану лепить косого. Все что позволяет библиотека FeuerGIS — это отображать на карте точки местоположения датчиков наблюдения с их текущим состоянием.

1

Отображение датчиков построено на библиотеке leaflet.js с подключаемым geojson-файлом и картой OpenStreetMap-Mapnik в качестве подложки. На текущий момент доступно четыре цвета датчиков, но это количество очень легко меняется в несколько строк кода.

Датчикам присущ селектор, который позволяет отобразить точки только одного значения.

3

Может случиться так, что сработает датчик, который в настоящий момент на карте не отображается. Что-бы оператор мог следить за состоянием всего комплекса, в левом верхнем иглу помещен индикатор, который принимает следующие значения: «датчики в норме», «работает датчик» и «утеряна связь с сервером». Все это выделяется цветом для заметности.

По клику на каждом датчике открывается окно с трехмерной схематичной моделью здания.

2

На этой модели цветом выделен этаж расположения датчиков, и их состояние в текущий момент. По клику для каждого этажа открываются его характеристики: установленное оборудование и схема этажа. Загрузка схем не представляет никаких проблем. Все что для этого необходимо — это поместить в директорию с идентификатором здания картинки в формате x.jpg, где x — номер этажа («-2.jpg» — второй уровень подвала, «5.jpg» — пятый этаж)

4

Сами здания конструируются подобно кубикам лего по принципу, отдаленно напоминающему CSS. Вот переменные для конструирования трехмерной сцены:

lightCamera1 – Интенсивность освещения лицевой стенки здания (от 0 до 1);
 lightCamera2 – Интенсивность освещения задней стенки здания (от 0 до 1);
SphereX0, SphereY0, SphereZ0 – Координаты датчика;
 SphereR0 – Радиус фигуры-датчика;
 SphereColor0 – Цвет фигуры датчика в формате hex-color (0xff9900);
 SphereTipe0 – тип фигуры-датчика (0 –сетка, 1-твердотельная модель);
 SphereOpac0 – прозрачность фигуры-датчика (от 0 до 1);
 SphereInfo0 – атрибут фигуры-датчика (отображается по клику);
TextX1, TextY1, TextZ1 – координаты размещения подписи;
 Text1 – текст подписи;
ConerAu5, ConerBu5 - Координаты углов этажей;
 Opacityu5 - Прозрачность этажа;
 HeightLevelu5 - Высота этажа в метрах;
 ColorLevelu5 - Цвет этажа;
 LevelLayeru5 - Уровень этажа в метрах;
TIL100_0 – Описание датчика на этаже

Такая функциональность стала возможной благодаря использованию библиотек three.js, proj4.js и плагина для QGIS qgis2three.

Ключевые особенности системы на текущий момент:
Все переменные настройки вынесены в отдельный файл;
Максимальная высота здания в этажах — 20 этажей;
Глубина подвала — 5 этажей;
На этаже может быть расположено максимум 100 датчиков;
В здании может быть максимум 100 датчиков. При необходимости этот параметр легко изменяется в обе стороны;
Этажам можно задавать прозрачность;
Высоту этажей можно менять;
Точки датчиков могут быть размещены в произвольном месте, иметь заливку фигуры, произвольный размер и цвет. При срабатывании датчика возможно не только подсветить его цветом, но и увеличить его размер;
Код оптимизирован для развития проекта, в частности гораздо проще стало применять дизайнерские решения в оформлении;
При срабатывании датчика оформление здания и этажа может быть произвольным (в зависимости от настроек пользователя);
Появилась возможность добавлять перегородки на этаже;

Ну и самое главное. Система лицензирована под GPLv3. Так что ловите исходники. Можете хоть прямо сейчас скачивать и развертывать на предприятии. Понадобиться только серверный скрипт, который будет обрабатывать приходящие с вашего пульта XML-ки (или что там у вас) и менять значения соответствующих переменных.

Всех заинтересованных во внедрении прошу писать в комментарии либо на мою личную электропочту: schwejk-rpnt@rambler.ru

Добавить еще что-то? Да нечего тут добавлять — пойду пиво пить.

Добавить комментарий

Ваш e-mail не будет опубликован.