SAS.Wiki

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

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

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


скачивание_в_несколько_потоков

Главная

Скачивание в несколько потоков

Многие замечают, что при просмотре карты и одновременной её загрузке появление тайлов на экране происходит гораздо быстрее, чем при автоматической загрузке выделенной области. Это не субъективное ощущение, на самом деле при загрузке экрана по умолчанию используется многопоточное скачивание. Поскольку размеры экрана не слишком велики, при нормальных скоростях отдачи картсервисом экран заполняется изображением очень быстро. Вот бы так же быстро происходила закачка и в автоматическом режиме! Однако алгоритм, используемый для скачивания в автоматическом режиме, не позволяет применить многопоточное скачивание к одной и той же выделенной области. Если принудительно задать скачивание одной и той же выделенной области в несколько потоков, программа будет скачивать одни и те же тайлы столько раз, сколько потоков задано. Это не приведёт к ускорению закачки, а, наоборот, замедлит её, кроме того, приблизит возможный бан.

Как же быть? А нужно всего лишь разбить выделенную область на несколько подобластей, и уже для каждой из них задавать свой поток скачивания. Рассмотрим это на примере.

Допустим, мы имеем некую «Область интереса», которую нам хотелось бы скачать.

Мы видим, что наша Область интереса занимает четыре ряда тайлов (на текущем зуме) по высоте. Вот и разобьём эту область на 4 подобласти, или горизонтальных слоя, опираясь на тайловую сетку. Почему именно горизонтальных? Потому что экран вытянут по горизонтали, следовательно, поместить целиком всю область на экран можно при бОльшем зуме, чем если бы область была вытянута по вертикали. Это удобно при построении карты заполнения в процессе скачивания.

Зажав Shift, чтобы была привязка к тайловой сетке, выделяем первый слой. Появляется окно Операции с выделенной областью. Нам в этом окне нужна только одна кнопка Сохранить выделенную область как полигон. Жмём её и сохраняем этот полигон в базе, положив его в отдельную категорию (чтобы ничего не перепутать), названную, например, Область интереса 4 под именем Выделение 1. Для наглядности полигону задан зелёный цвет границы, но можно задать любой или вообще использовать параметры по умолчанию, потому что эти полигоны временные, и по окончании работы они будут удалены из базы.

После сохранения полигона в базе окно Операции с выделенной областью закрываем, нажав кнопку Отменить.

Абсолютно аналогичным способом сохраняем в базе остальные три полигона. Для наглядности им заданы разные цвета. Названия могут быть любыми, но для того, чтобы потом ничего не перепутать, рекомендую нумерацию по порядку: если первый полигон мы назвали Выделение 1, то остальные должны быть Выделение 2, Выделение 3 и Выделение 4. Порядок следования, естественно, сверху вниз (хотя можно и наоборот).

Теперь используем функционал Слияние полигонов для формирования нужных нам подобластей. Начинаем с Выделения 1. Зажав Ctrl, щёлкаем по любому месту, где Область интереса пересекается с Выделением 1. Слева появляется панель Слияние полигонов. В список полигонов, участвующих в слиянии, уже добавлены оба интересующих нас полигона. Возможен случай, когда в список попадут лишние полигоны, например, если существует большой полигон, внутри которого находятся интересующие нас полигоны. Лишние полигоны следует удалить из списка, выделяя каждый из них и нажимая на кнопку «Красный минус».

Далее следует выбрать тип слияния полигонов. В данном случае нас интересует тип «Пересечение (И)«. Его и выбираем из выпадающего списка.

Теперь жмём кнопку Слияние полигонов.

Получаем результат слияния, он окрашен зелёным цветом.

Необходимо сохранить полученный результат в базе. Для этого жмём кнопку Сохранить объединённый полигон как…

Процесс сохранения весьма стандартный, не забывайте только класть сохранённые полигоны в нужную категорию (напомню, мы в начале создали категорию Область интереса 4) и называть их соответствующим образом. Здесь мы назовём эти полигоны Область интереса 4_1 и далее по порядку.

Операции по слиянию и сохранению в базе проделываем для всех четырёх слоёв нашей Области интереса. Для опять же наглядности полученным полигонам заданы разные цвета. Вот что должно получиться:

Теперь нужно удалить временные полигоны, названные нами Выделение…. Идём в Управление метками, открываем категорию Область интереса 4. Зажав Ctrl, выделяем все 4 полигона с названиями Выделение… и удаляем их. Полигон Область интереса удалять не следует, мало ли когда пригодится. Его можно просто отключить, если он мешает.

После всех проделанных манипуляций получится следующая картина:

А дальше щёлкаем на полигоне Область интереса 4_1, задаём параметры скачивания и запускаем загрузку. Затем точно то же самое проделываем с полигонами Область интереса 4_2, Область интереса 4_3 и Область интереса 4_4. Все четыре полигона будут загружаться одновременно.

Количество слоёв, а, следовательно, и потоков скачивания, может быть и больше :)

Перевод этой страницы: