SASGIS

Веб-картография и навигация

SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


sasdev:конвейер_подготовки_видимого_изображения

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sasdev:конвейер_подготовки_видимого_изображения [16/01/2015 12:57]
vdemidov
sasdev:конвейер_подготовки_видимого_изображения [23/01/2015 10:50] (текущий)
vdemidov [Конвейеры подготовки изображения]
Строка 3: Строка 3:
 Это пока только план, реализация планируется на ближайшее время, но кто его знает. Это пока только план, реализация планируется на ближайшее время, но кто его знает.
  
-===== Подготвка изображения растровых карт и слоев =====+Воркеры могут быть не обязательно отдельными потоками. Это могут быть элементы из пула потоков,​ которые будут заниматься задачами разных карт и разных этапов конвейера. Главным ограничением для них вероятно будет то, что задачи каждого элемента конвейера в один момент времени должен выполнять ровно один поток. Это позволит упростить код и меньше заботится о потокобезопасности. 
 + 
 +Более отдаленным шагом будет введение интерфейса IBitmapFilter,​ который будет получать IBitmap32Surface и что-то на нем рисовать. В самом простом случае это будет просто обертка вокруг IBitmap32Static,​ которая будет отрисовывать готовый тайл на полученной поверхности. Это позволит при рендеринге векторных объектов и сеток для простых элементов не тратить память на полноценный тайла, а просто запомнить нужные операции для его воспроизведения. 
 + 
 +Примеры:​ 
 + 
 +  - Для тайловой сетки текущего зума достаточно нарисовать вертикальную и горизонтальные линии плюс вывести подготовленный маркер с подписью в центр. Есть шанс, что это не только сэкономит память,​ но даже выполнится быстрее (нужно замерять время этих операций). 
 +  - Для отображения полигона,​ который полностью покрывает тайл достаточно просто нарисовать прямоугольник заданного цвета на весь тайл. Скорость не меньше чем наложение битмапки,​ а памяти экономится очень много - 4 байта вместо 65536 байт необходимых для битмапки размером с тайл. 
 +  - Для отображения метки-точки достаточно вывести заранее подготовленный маркер,​ который скорее всего меньше тайла и следовательно операция займет меньше времени и меньше памяти для хранения. 
 + 
 +То есть, в результате все операции рендеринга будут возвращать не IBitmapTileMatrix,​ а IBitmapFilterTileMatrix при помощи которых битмапки будут создаваться на самом последнем шаге конвейера,​ непосредственно перед выводом на экран. 
 + 
 +===== Подготовка изображения растровых карт и слоев =====
  
 {{ :​sasdev:​tileprocessing.png?​nolink |}} {{ :​sasdev:​tileprocessing.png?​nolink |}}
Строка 14: Строка 26:
  
 {{ :​sasdev:​tileprocessing_marks.png?​nolink |}} {{ :​sasdev:​tileprocessing_marks.png?​nolink |}}
-