Товарищи, подскажите пожалуйста, в какую сторону копать (какие инструменты есть и как их примерно соединить), чтобы реализовать следующую задачу:
Внутри компании должен быть установлен сервер со своей базой данных и со своим рендером OSM. На этот сервер с помощью, допустим Potlach или josm добавляются секретные данные.
Сервер отрисовывает эти данные как OSM-слой и накладывает его поверх подгружаемого из интернета Mapnik-а. В результате на локальном внутреннем сервере сотрудникам доступна базовая OSM-карта + отрисованные поверх неё секретные объекты, добавленные сотрудниками на локальный сервер.
Данные секретные (служба безопасности запретила их в общий доступ выдавать, к сожалению).
Ага…
Правильно ли я понимаю, что будет стоять сервер (Rails_Port), отрисовкой занимается Mapnik, а Minutely_Mapnik ежечастно приводит базу в соответствие с мировой?
Не будут ли тогда “секретные данные” (для внутреннего использования), заливаемые пользователями компании в эту базу конфликтовать с данными, импортируемыми с мировой базы?
Ведь по хорошему, эти “секретные данные” должны быть как отдельная база, с которой генерируется слой. Хотя с другой стороны, ридактируя, пользователи не будут видеть OSM данных из общей базы…
Да, именно так. При этом можно настроить потлатч и жосм на внутренню базу.
Нет, вы будете рисовать отдельный слой, который можно сделать отключаемым и/или полупрозрачным для накладывания на данные OSM (то есть, рисовать только добавленные «секретные» объекты). Разумеется, для лицензионной чистоты никакие данные из основной базы OSM не должны включаться в ваш набор.
При редактировании можно включить подложку OSM как тайлы, и привязываться к ней (не трассируя элементы явно). Ну или использовать любую другую подложку.
Более простой метод решения данной проблемы — взять любую подходящую ГИС, импортировать в неё данные OSM (взяв готовые SHP с Gis-Lab или сконвертировав самостоятельно).
Меня этот способ при решении такой же задачи вполне устроил.
Практика показала, что так лучше не делать.
Преимуществ растровая подложка над векторной особо не имеет, а вот недостатков полно:
— Плохое качество картинки на масштабах, неравных тем, что рендерит Мапник (это проявляется и в JOSM при включении подложки OSM)
— Меньшая скорость работы (тормоза), особенно если рендер глобальный и сеть небыстрая
— Невозможность просматривать свойства объектов, которые не рендерятся (addr:street, например)
— Меньшая гибкость: нужно поменять цвет дорог, в интуитивно понятном GUI хорошей ГИС взял и поменял; у глобального Мапника это никак не сделаешь
— Для локального Мапника нужен сервер, желательно с Линуксом. Если на остальных компьютерах Windows, то это лишние затраты на железо и на администрирование этого единственного сервера.
Ну, линукс у нас есть, он, как говориться, не может не есть
Вариант с ГИС, как я понимаю - не подойдёт, т.к. рисовать эти секретные объекты будут пользователи, не сильно искушённые в картографии - это раз и второе - нужна централизация и отрисовка тайлов через браузер - как сервис.
Нет, вы будете рисовать отдельный слой, который можно сделать отключаемым и/или полупрозрачным для накладывания на данные OSM (то есть, рисовать только добавленные «секретные» объекты). Разумеется, для лицензионной чистоты никакие данные из основной базы OSM не должны включаться в ваш набор.
Т.е. будет две базы - одна - регулярно обновляемая с OSM, вторая - содержащая только секретные данные. Соответственно сервер будет рендерить первую как основной слой и вторую, как полупрозрачный слой и совмещать эти слои на выходе, который будет отображаться пользователям в их браузерах.
Если я правильно понял, то тогда пошёл разбираться
Мы подобную вещь сделали просто - карта отдельно (в постгис, рендерится mapserver-ом), свои данные отдельно (интерфейс редактирования сделан свой, на базе OpenLayers). Объединяется при показе, в OpenLayers.
Гм, попробовал залить Приморский край, Россию - вываливается с ошибкой, что какой-то точки (идентификатора) нет в таблице. Почитал - видать действительно нужно заливать весь мир.
Скачал, начал заливать - вывалилось с ошибкой о том, что места не хватает. Оставшиеся 100 Гб из доступных 134Гб скушало и вывалилось…
Хм, а сколько же на загрузку мира в БД нужно места на сервере?
Ну примерно так. С той лишь разницей, что база мира и база вносимых изменений локальными пользователями будет разниться. И из изменений локальных пользователей будет генериться дополнительный слой, который будет накладываться на “отрендеренный” локальным сервером мир.
Тогда получается, что возникшая ошибка не связана со схемой “локального осм-сервера”, и если она не связана с количеством свободного место, то её нужно искать в схеме локального рендеринга мира из общих осм-данных.
И еще не понятно, что значит “из изменений локальных пользователей будет генериться дополнительный слой” ? В базовый слой OpenLayers на карте с результатими рендернга изменений в “локальной осм-сервере” также как переключение между мапник-ом и осмарендер-ом на карте openstreetmap.org?
Ну, сейчас заливается мир из xml в postgres, чтобы его локально “рендерить”. На этапе заливки в прошлый раз и вывалилось из-за отсутствия места на диске.
progserega, не понимаю зачем тебе “заливается мир из xml в postgres”, бери тайлы с osm.org, а свои рендери как прозрачный слой. Зачем это лишнее действие?