Pull to refresh

О сетевом тайловом рендеринге

В 2012 году мы приобрели серверную лицензию на широко известное ПО ArcGIS (версия 10.0) и приступили к тайловому рендерингу территории России. Этот процесс занял у нас почти полгода, и о ежеквартальном обновлении онлайн-карт пришлось забыть, благо клиенты были вполне довольны ежегодным обновлением. Ещё бывало обидно, когда через месяц нарезки какого-нибудь федерального округа рендеринг почему-то “вылетал”, и всё приходилось начинать сначала. Однако у нас нет никакого желания ругать ArcGIS. Мы любим ArcGIS, потому что его нельзя не любить, ибо количество достоинств его неисчислимо. Но речь не о них, а о тайловом рендеринге.

В 2016 году наш программист, человек талантливый и любознательный, отыскал на бескрайних просторах open source ресурсов библиотеку Mapnik, и чрезвычайно ею заинтересовался. Проведя ряд тестов, мы пришли к выводу, что тайловый рендерер, сделанный нашим программистом на основе Mapnik, по скорости не уступает, а по качеству растровой картинки явно превосходит уже порядком устаревший к тому времени ArcGIS 10.0.

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

image

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

image

Готовые тайлы сохраняются в выделенном для этой цели тайловом хранилище, с которым у каждой из машин-клиентов есть связь.

image

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

Главное достижение в том, что сетевой рендеринг реально работает, и наращивать количество машин-клиентов (что и определяет скорость нарезки) можно… не скажу, что неограниченно, ибо это будет голословным утверждением… но до нескольких десятков машин наверняка.
Данная информация будет полезна тем, кто серьёзно занимается тайловым рендерингом обширных территорий, но не обладает сверхмощными ресурсами.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.