Необходимо разработать управляющую систему (набор скриптов, whatever, ниже употребляется просто "скрипт"), которая будет автоматически производить конвертацию векторных файлов Mapinfo в полупрозрачные PNG-тайлы, пригодные для наложения штатным образом на Яндекс-карты. Пример корректного наложения:
http://goo.gl/hHIjep
Тайлы изображают карту покрытия сотовой сети, показывая области уверенного и возможного покрытия разными цветами (и прозрачностями)
Уже сейчас есть отработанный процесс производства этой работы в ручном режиме с помощью
QGIS, модифицированного плагина
QTiles для экспорта тайлов, и еще одного набора python-скриптов, дораскрашивающих тайлы в канонические цвета через пакетные обращения к ImageMagick. Все это отлажено и работает на Linux, а также и и на Windows (ибо все используемое кросплатформенно).
Тайлы укладываются в папку в формате: /tiles/{zoom}/{x}-{y}.png. Затем эта папка (карта покрытия определенного города, добавялемого на карту или обновялемого на карте) будет копироваться (rsync) поверх более общей папки, содержащей полную текущую тайловую карту покрытия.
Итоговые тайлы должны иметь прозрачный фон и два канонических цвета: уверенное покрытие сети (заданы RGBA), возможное покрытие сети (заданы RGBA).
Основные пожелания:
1. Скрипт должен запускаться автоматически на постоянной основе (Настраиваемо 1 раз в час/день/неделю)
2. Скрипт должен проверять определённую папку в которой будут появляться MapInfo файлы
3. При наличии нескольких файлов, берется тот, который старше, по дате изменения
4. После отработки скрипта, MapInfo файлы, должны копироваться в другую папку с информацией о времени их обработки, чтобы не происходила повторная конвертация одних и тех же файлов
5. На выходе должны иметься тайлы в текущем формате представления, разложенные по масштабам, покрашенные в согласованные цвета и проставленным альфа-каналом.
6. Должен формироваться общий лог файл с информацией по работе скрипта в котором должна фиксировать следующая информация:
Если файл в указанной папке не найден - фиксируется время проверки папки информация о том, что папка пуста
Если файл найден - фиксируется имя файла и время начала обработки
При окончании обработки - фиксируется имя файла и время конца обработки
7. Также для каждого обрабатываемого MapInfo файла должен формироваться отдельный лог-файл. Имя лог файла = имя обрабатываемого MapInfo файла. В логе фиксируется следующая информация:
Время начала обработки
Какой MapInfo файл был обработан
Список тайлов, которые были сформированы во время обработки данного MapInfo файла
Время окончания обработки
8. Настройки в скрипте должны быть возможны для изменения. А именно:
Папка для ожидания MapInfo файлов
Время для запуска и проверки наличия новых MapInfo файлов
Папка для хранения обработанных MapInfo файлов
Уровни сигнала (это параметр отбора векторных объектов в MapInfo-файле), канонические значения RGBA для отрисовки возможного и гарантированного покрытий
Конечная папка с тайлами
+ Просьба оценить возможность проверки тайлов на пустоту во время обработки. Чтобы в случае, файл не содержит данных о покрытии, то он не копировался в конечную папку. Необходимо для исключения затирки пустыми тайлами уже имеющихся непустых тайлов при копировании в общую папку. Данная проверка должна быть настраиваемая и по желанию включена/выключена.
Необходимо чтобы скрипт был самостоятельным и при этом фиксировал все действия, которые производит, для возможности анализа в случае проявления проблем.
Крайне желательно продолжать использовать свободное, кроссплатформенное программное обспечение. Напрашивается серверная реализация (я бы, например, взял Django, но это непринципиально), которая будет дергать QGIS и прочие скрипты в headless режиме. Конкретная форма системы может варьироваться, лишь бы она решала означенные проблемы.
Также весьма вероятно, что итоговое решение мы будем хостить на Linux внутри Docker-контейнера (вместе с зависимостями), так что плюсом будет знакомство или желание знакомства с этой многообещающей технологией.
И еще одна мелкая задачка: нужно допилить QTiles, чтобы он экспортировал тайлы в нужной нам проекции (сейчас тайлы ложатся на Google-карты и OSM, но не на Яндекс-карты), нужно допилить плагин, чтобы он при рендере тайлов подключал нужную пару проекций.
Спасибо, что дочитали, коллеги. :) Жду ваших откликов и вопросов.