Страница 1 из 1

Встраивание кэширующего TMS-сервиса в собственное приложение

Добавлено: 17 июл 2013, 12:08
Denis Rykov
Написал статью, приглашаю к критике.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 17 июл 2013, 12:28
bim2010
Представленный вариант интеграции возможностей TileCache был использован компанией NextGIS при разработке картографической подсистемы портала системы государственного информационного обеспечения в сфере сельского хозяйства (СГИО СХ).
Нет ссылки на портал. Google нашел решение от компании 'Совзонд"

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 17 июл 2013, 12:48
Максим Дубинин
возможно и не будет ссылки, это к Ланиту вопрос, где он и работает ли вообще.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 18 июл 2013, 16:24
vasnake
Отличная статья. На примере решения реальной задачи показаны способы использования толковых инструментов. Всё четко и ясно изложено.
Критика целиком положительная :)

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 20 июл 2013, 16:49
yellow-sky
Статья супер!
Как и проделанная работа. Нужно бы взять на вооружение постгрес хранилище тайлов :)
Денис, а как у тайл бэкенда с производительностью? Как постгресс ведет себя при многопоточной записи? Если запустить принудительное сидирование в несколько процессов, как быстро идет процесс? Какова производительность записи тайлов в БД?
Не совсем понял, как осуществляется создание и контроль лок фалов? Или в ТайлКэш они не используются?

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 20 июл 2013, 17:29
Максим Дубинин
Денис, и введение хорошо бы переписать более четко, сейчас так много "если" и такая высокая вложенность, что приходится перечитывать раз 5, чтобы врубиться в чем же суть задачи.

Возможно стоит написать: Проблема, цель, задачи с краткими определениеми.

Я уверен, что они уже есть, но показалось, что малость тяжеловато изложено.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 21 июл 2013, 13:07
Denis Rykov
2yellow-sky
Параметры производительности не тестировались, нужно будет попробовать как-нибудь. Поддержка лок файлов есть в Tilecache, но в случае с СУБД в роли бэкенда от них, в принципе, можно отказаться.

2Максим Дубинин
А можешь предложить свой вариант введения? я написал его как видится мне. Но если ты уловил его смысл, то, наверное, будет несложно переформулировать.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 21 июл 2013, 17:47
Максим Дубинин
Денис, глянь ка, я довольно серьезно там подредактировал, не уверен, что не поломал местами логику. Но мне кажется стало понятнее)

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 22 июл 2013, 13:17
Denis Rykov
Да, всё нормально, спасибо!

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 26 июл 2013, 20:30
Olax
По поводу производительности, разработал такую схему:
OpenLayers делает запрос тайла с ТМС сервера, его встречает Nginx, проверяет, если такого файла на диске нет, то проксирует на TileCache. Далее тилекеш сконфигурирован обращаться на WMS (mapserver + apache2) за картинкой. В файл Service.py (из комплекта TileCache) вставляю вызов своей функции:
которой и передаю готовый обьект таил
if not image:
data = layer.render(tile, force=force)
if (data): image = self.cache.set(tile, data)
else: raise Exception("Zero length data returned from layer.")
+ pg_log.save_to_db(tile,(time.time() - start)) ##### добавленная строка
if layer.debug:
sys.stderr.write(
"Cache miss:layer %s, %s, Tile: x: %s, y: %s, z: %s, time: %s\n" % (
tile.layer.name, tile.bbox(), tile.x, tile.y, tile.z, (time.time() - start)) )
else:

вызываемая функция обрабатывает обьект, заносит в базу координаты бокса ссылку на обьект, xyz - координаты, имя слоя, четвертует для создания квадратичного дерева тайлов. Но сам файл в базу не попадает.

папка для кеша TileCache монтируется по сети с сервера с Nginx. И при повторном обращении к этому тайлу - он уже будет доступен для Nginx-а.

После генерации кеша - работает только специально заточенный для отдачи статики фронтэнд Nginx. База не нагружена. Питон не работает. Существенная экономия ресурсов)))

Если есть вопросы - в личку, обязательно помогу.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 26 июл 2013, 20:51
Olax
А вообще статья мне понравилась. пишите еще, очень интересно!

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 26 июл 2013, 23:24
Максим Дубинин
Olax писал(а):Если есть вопросы - в личку, обязательно помогу.
Вы наступаете на больную мозоль и нарушаете правила (3.2.4). Здесь форум для открытого общения.

Здесь мы обсуждаем статью автора и технологию, которую он открыто написал и открыто предоставил для редакции и обсуждения. Он не написал: "Я сделал крутой тайловый кэш на питоне. Обращайтесь за подробностями в личку".

Если вы хотите играть по правилам, которые здесь уважают - напишите статью, мы будем благодарны.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 28 июл 2013, 10:56
Olax
Прошу прощения, за свое поведение, дело в том что мне пришлось до всего доходить самому, без чей либо подсказки, или тычка в верном направлении. Поэтому мои наработки выглядят, так сказать "непрофессионально". Вставил там строчку, там функцию и т.д. Исходя из этого, не чувствую за собой готовности выкладывать свои аматорские решения на весь мир и тем более писать статью о своих костылях.
Наверно единственное, чем я могу поделиться в виде статьи - это скрипт генерации кеша тайлов всех зумов и только определенного района. Дайте знать.

Re: Встраивание кэширующего TMS-сервиса в собственное прилож

Добавлено: 28 июл 2013, 11:36
ericsson
Olax, вы в своем сообщении выше описали архитектурный принцип построения сервиса, упомянули конкретные средства реализации такой архитектуры и даже привели пример скрипта.
Это достаточно ценное описание, потому что о функциях отдельных инструментов всегда можно прочесть в документации, а вот совместное использование даже поверхностно бывает описано редко, тогда как любой серьезный проект требует как раз этого.