SASGIS

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

Разбивка выделения при закачке на части

Запрашиваем и выполняем хотелки к SAS.Планете вне очереди

Модераторы: vdemidov, Tolik

Правила форума
Настоятельно рекомендуем ознакомиться с правилами раздела платных услуг ТУТ.

Разбивка выделения при закачке на части

Сообщение Parasite » 01 мар 2016, 19:04

Иногда при закачке какой-нибудь сложной области хотелось бы начинать качать не в один поток (а потом долго и нудно ручками перевыделять части нужного полигона, желательно непересекащиеся, чтобы стартануть параллельные потоки) - а просто поставить где-нибудь галочку "Автоматически разбить закачку на N потоков", кои все сразу и стартануть.

Предлагаю 500 рэ.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Разбивка выделения при закачке на части

Сообщение zed » 02 мар 2016, 12:01

Т.е. ты хочешь автоматизировать процесс описанный вот здесь: Скачивание в несколько потоков ?
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Разбивка выделения при закачке на части

Сообщение Parasite » 02 мар 2016, 22:02

zed писал(а):Т.е. ты хочешь автоматизировать процесс описанный вот здесь: Скачивание в несколько потоков ?

Типа того, только не задействуя метки.

Если кратко - то я хочу, чтобы при выборе произвольного выделения к скачке - была бы возможность заранее задать число потоков, открываемых данной закачкой (и, соответственно, открывать столько же и окошек скачки). На настоящее время открывается всего 1 поток на 1 выделение - а я хочу, например, 10 неперекрывающихся sub-потоков, которые в сумме скачки дадут мне мой выделенный полигон.

Разбивать предлагаю по числу тайлов к скачке: при 100 тайлах к скачке и выборе 10 потоков на это задание - каждый, соответственно, откроет свое окошко закачки и закачает предназначенные только ему 10 тайлов\каждый. При выборе 100 потоков - 100 окошек откроются и скачают по 1му тайлу каждое.

PS: просто весьма и весьма достало обрисовывать ручками sub-полигоны (доп.процессы закачки) при прокачке какого-нибудь района весьма прихотливой формы так, чтобы и за границы всего выделения не вылезти и лишнего не накачать - и одновременно чтобы максимально эффективно разбить всю задачу между параллельными потоками. Вот есть, например, выделение "Россия" из гуглового КМЛа (полигон тысяч так на десяток-другой точек) - как мне её максимально эффективно выкачать в несколько [десятков] потоков, не вырисовывая\не открывая каждую область ручками отдельно, и не парясь с сохранением\переоткрытием сессий опять же ручками, если что-то сглючит в пути? :thumbdown:
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Разбивка выделения при закачке на части

Сообщение vdemidov » 02 мар 2016, 23:01

Parasite писал(а):Разбивать предлагаю по числу тайлов к скачке: при 100 тайлах к скачке и выборе 10 потоков на это задание - каждый, соответственно, откроет свое окошко закачки и закачает предназначенные только ему 10 тайлов\каждый. При выборе 100 потоков - 100 окошек откроются и скачают по 1му тайлу каждое.

Не, так точно реализовывать никто не будет. Максимум можно предложить разбиение на n полос равной высоты. Для каждой формируется прямоугольник и делается AND с исходным полигоном и результат передается в отдельную задачу на закачку. Некоторые тайлы на некоторых зумах будут попадать в 2 области, но что поделать.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Разбивка выделения при закачке на части

Сообщение Parasite » 03 мар 2016, 04:33

vdemidov писал(а):Не, так точно реализовывать никто не будет.

Почему? В чем проблема?
При подсчете числа тайлов к конкретной закачке (мы же все равно их считаем заранее, перед скачкой?) и начале этой закачки - заранее "узнать", какие тайлы в какое из N окон передать и качать там. Ну, или как вариант - в каждое из открываемых окон передавать "начало старта - тайл XX, и до тайла YY", как это есть при сохранении\восстановлении сессии закачки (то есть, тупо сэмулировать восстановление N сессий "предыдущих закачек", с одним полигоном но разными стартовыми\конечными номерами тайлов в каждой). Ведь в .sls "точка возобновления закачки" же есть? Сделать и точку окончания (если нету), и воспользоваться этим механизмом при реализации сабжа.

vdemidov писал(а):Максимум можно предложить разбиение на n полос равной высоты.

Что делать с узкими закачками размером over100500 тайлов и шириной\длиной (смотря что ты имел ввиду под "полосами") <=1 тайл, то есть попадающими в понятие "полоса огромная, но таки все еще одна" - и желании разбить ее на десяток не таких огромных подзадач к скачке?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Разбивка выделения при закачке на части

Сообщение vdemidov » 03 мар 2016, 12:34

Parasite писал(а):Почему? В чем проблема?
При подсчете числа тайлов к конкретной закачке (мы же все равно их считаем заранее, перед скачкой?) и начале этой закачки - заранее "узнать", какие тайлы в какое из N окон передать и качать там.

В том, что подсчет числа тайлов идет уже в конкретной закачке и до ее запуска количества тайлов мы не знаем. А это долгая операция и в ГУЕ ее делать нельзя. А N закачек нужно запускать именно из ГУЯ.

Parasite писал(а):Что делать с узкими закачками размером over100500 тайлов и шириной\длиной (смотря что ты имел ввиду под "полосами") <=1 тайл, то есть попадающими в понятие "полоса огромная, но таки все еще одна" - и желании разбить ее на десяток не таких огромных подзадач к скачке?

Не разбивать их на части :)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Разбивка выделения при закачке на части

Сообщение Parasite » 03 мар 2016, 15:28

vdemidov писал(а):
Parasite писал(а):Почему? В чем проблема?
При подсчете числа тайлов к конкретной закачке (мы же все равно их считаем заранее, перед скачкой?) и начале этой закачки - заранее "узнать", какие тайлы в какое из N окон передать и качать там.

В том, что подсчет числа тайлов идет уже в конкретной закачке и до ее запуска количества тайлов мы не знаем. А это долгая операция и в ГУЕ ее делать нельзя.

Ну так полигон-то юзер выделяет ОДИН, и N раз его весь пересчитывать для каждого потока-то зачем?

Выделил юзер полигон -> посчитали его ВЕСЬ и ОДИН раз, получили например 100 тайлов -> юзер вбил "Хочу 10 потоков", нажал на старт -> тайлы 0...9 уехали в одно окно (с указанными там же, внимание, 9ю тайлами к закачке), 10...19 во второе, итд до конца. Я ж потому и предлагаю разбивать по числу тайлов, а не по "полоскам" и прочим высокоуровнемым абстракциям (а вот их - да, придется обсчитывать и перегонять в число тайлов таки каждую).
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Разбивка выделения при закачке на части

Сообщение vdemidov » 03 мар 2016, 15:42

Еще раз повторяю, подсчет тайлов идет после запуска отдельной закачки уже непосредственно в ней ибо сейчас может занимать часы времени. Простые методы распаралеливания закачки сводятся к автоматизации Скачивание в несколько потоков
Parasite писал(а):Я ж потому и предлагаю разбивать по числу тайлов, а не по "полоскам" и прочим высокоуровнемым абстракциям

Если предложенный вариант не устраивает, можешь закрывать тему на ближайшие пару лет :) Ну или предлагать сумму больше на порядок
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Разбивка выделения при закачке на части

Сообщение Parasite » 03 мар 2016, 16:08

vdemidov писал(а):Еще раз повторяю, подсчет тайлов идет после запуска отдельной закачки уже непосредственно в ней

Ну так и стартуй ее - и сразу после старта открывай из нее дочерние окна. :)
Я даже готов на то, чтобы не отдельными окошечками - а доп.полосками в том же окне закачки, или как угодно еще (на свое усмотрение). Мне лишь надо, чтобы огромные выделения эффективно разбивались на части сами при старте, и стартовали разом по нажатию одной кнопки. Все остальное вторично.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Разбивка выделения при закачке на части

Сообщение vasketsov » 03 мар 2016, 16:17

Предлагаю не выдумывать себе сложности, чтобы потом их героические решать или отказываться от их решения, а делать максимально просто.
На N (10 и более) потоков - ОДНА очередь.
Число тайлов считается как сейчас - ОДНО.
Каждый рабочий поток просто знает, что ему надо брать не каждый тайл, а только такой тайл, где остаток от деления X+Y на N - его личный номер от 0 до N-1.
При желании можно взять не X+Y а чуть сложнее для равномерности исходя их области, это не принципиально.
Принципиально - остаток от деления на N.
Два потока никогда не схватят один и тот же файл.
Все файлы будут скачаны.
То что время завершения потоков будет не одинаковое - это не принципиально, в частности, если надо качать 4 тайла 10-ю потоками, то 6 из них сразу умрут.
voila.
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 198 раз.

След.

Вернуться в Внеочередное исполнение хотелок

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1