[[главная|Главная]] ====== Скачивание в несколько потоков ====== //Новые версии SAS.Planet позволяют разделять выделение и скачивать в несколько потоков автоматически.// Многие замечают, что при просмотре карты и одновременной её загрузке появление тайлов на экране происходит гораздо быстрее, чем при автоматической загрузке выделенной области. Это не субъективное ощущение, на самом деле при загрузке экрана по умолчанию используется многопоточное скачивание. Поскольку размеры экрана не слишком велики, при нормальных скоростях отдачи картсервисом экран заполняется изображением очень быстро. Вот бы так же быстро происходила закачка и в автоматическом режиме! Однако алгоритм, используемый для скачивания в автоматическом режиме, не позволяет применить многопоточное скачивание к одной и той же выделенной области. Если принудительно задать скачивание одной и той же выделенной области в несколько потоков, программа будет скачивать одни и те же тайлы столько раз, сколько потоков задано. Это не приведёт к ускорению закачки, а, наоборот, замедлит её, кроме того, приблизит возможный бан. Как же быть? А нужно всего лишь разбить выделенную область на несколько подобластей, и уже для каждой из них задавать свой поток скачивания. Рассмотрим это на примере. Допустим, мы имеем некую "Область интереса", которую нам хотелось бы скачать. {{::скачивание_в_несколько_потоков_01.png?nolink|}} Мы видим, что наша **Область интереса** занимает четыре ряда тайлов (на текущем зуме) по высоте. Вот и разобьём эту область на 4 подобласти, или горизонтальных слоя, опираясь на тайловую сетку. Почему именно горизонтальных? Потому что экран вытянут по горизонтали, следовательно, поместить целиком всю область на экран можно при бОльшем зуме, чем если бы область была вытянута по вертикали. Это удобно при построении карты заполнения в процессе скачивания. Зажав **Shift**, чтобы была привязка к тайловой сетке, выделяем первый слой. Появляется окно **Операции с выделенной областью**. Нам в этом окне нужна только одна кнопка **Сохранить выделенную область как полигон**. Жмём её и сохраняем этот полигон в базе, положив его в //отдельную// категорию (чтобы ничего не перепутать), названную, например, **Область интереса 4** под именем **Выделение 1**. Для наглядности полигону задан зелёный цвет границы, но можно задать любой или вообще использовать параметры по умолчанию, потому что эти полигоны временные, и по окончании работы они будут удалены из базы. После сохранения полигона в базе окно **Операции с выделенной областью** закрываем, нажав кнопку **Отменить**. {{::скачивание_в_несколько_потоков_02.png?nolink|}} Абсолютно аналогичным способом сохраняем в базе остальные три полигона. Для наглядности им заданы разные цвета. Названия могут быть любыми, но для того, чтобы потом ничего не перепутать, рекомендую нумерацию по порядку: если первый полигон мы назвали **Выделение 1**, то остальные должны быть **Выделение 2**, **Выделение 3** и **Выделение 4**. Порядок следования, естественно, сверху вниз (хотя можно и наоборот). {{::скачивание_в_несколько_потоков_03.png?nolink|}} Теперь используем функционал **Слияние полигонов** для формирования нужных нам подобластей. Начинаем с **Выделения 1**. Зажав **Ctrl**, щёлкаем по любому месту, где **Область интереса** пересекается с **Выделением 1**. Слева появляется панель **Слияние полигонов**. В список полигонов, участвующих в слиянии, уже добавлены оба интересующих нас полигона. Возможен случай, когда в список попадут лишние полигоны, например, если существует большой полигон, внутри которого находятся интересующие нас полигоны. Лишние полигоны следует удалить из списка, выделяя каждый из них и нажимая на кнопку "Красный минус". {{::скачивание_в_несколько_потоков_04.png?nolink|}} Далее следует выбрать тип слияния полигонов. В данном случае нас интересует тип **"Пересечение (И)"**. Его и выбираем из выпадающего списка. {{::скачивание_в_несколько_потоков_05.png?nolink|}} Теперь жмём кнопку **Слияние полигонов**. {{::скачивание_в_несколько_потоков_06.png?nolink|}} Получаем результат слияния, он окрашен зелёным цветом. {{::скачивание_в_несколько_потоков_07.png?nolink|}} Необходимо сохранить полученный результат в базе. Для этого жмём кнопку **Сохранить объединённый полигон как...** {{::скачивание_в_несколько_потоков_08.png?nolink|}} Процесс сохранения весьма стандартный, не забывайте только класть сохранённые полигоны в нужную категорию (напомню, мы в начале создали категорию **Область интереса 4**) и называть их соответствующим образом. Здесь мы назовём эти полигоны **Область интереса 4_1** и далее по порядку. {{::скачивание_в_несколько_потоков_09.png?nolink|}} Операции по слиянию и сохранению в базе проделываем для всех четырёх слоёв нашей **Области интереса**. Для опять же наглядности полученным полигонам заданы разные цвета. Вот что должно получиться: {{::скачивание_в_несколько_потоков_10.png?nolink|}} Теперь нужно удалить временные полигоны, названные нами **Выделение...**. Идём в Управление метками, открываем категорию **Область интереса 4**. Зажав **Ctrl**, выделяем все 4 полигона с названиями **Выделение...** и удаляем их. Полигон **Область интереса** удалять не следует, мало ли когда пригодится. Его можно просто отключить, если он мешает. {{::скачивание_в_несколько_потоков_11.png?nolink|}} После всех проделанных манипуляций получится следующая картина: {{::скачивание_в_несколько_потоков_12.png?nolink|}} А дальше щёлкаем на полигоне **Область интереса 4_1**, задаём параметры скачивания и запускаем загрузку. Затем точно то же самое проделываем с полигонами **Область интереса 4_2**, **Область интереса 4_3** и **Область интереса 4_4**. Все четыре полигона будут загружаться одновременно. Количество слоёв, а, следовательно, и потоков скачивания, может быть и больше :)