SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0000198 | SAS.Планета | [All Projects] Хотелка | public | 08-11-2010 09:47 | 31-07-2015 12:05 |
|
Reporter | Abashin | |
Assigned To | | |
Priority | none | Severity | feature | Reproducibility | random |
Status | closed | Resolution | won't fix | |
Platform | | OS | | OS Version | |
Product Version | 101103 | |
Target Version | | Fixed in Version | | |
|
Summary | 0000198: Загрузка сразу нескольких уровней масштаба по одному полигону |
Description | Было бы удобно, если была бы возможность указать сразу несколько масштабов для загрузки, после того как закончили выделять некую область. С опциональным указанием формировать/закачивать последующие слои.
Сейчас в основном закачивается уровень высокого масштаба, а из него формируются несколько уровней более низкого масштаба. Это разумно. Но в результате получается своего рода "пирамида". В основании "пирамиды" слой высокого масштаба, охватывающий максимальную площадь. Следующий уровень (сформированный) охватывает уже меньшую площадь из-за того, что не все формируемые тайлы заполнены закаченными тайлами. Следующий уровень ещё меньше по площади. И в конце концов на каком-то уровне не удаётся сформировать ни одного тайла.
На практике, как правило, нам нужна обратная "пирамида": верхний слой низкого разрешения должен охватывать максимальную площадь, а самый глубокий слой высокого разрешения должен охватывать минимальную площадь. Приходится тратить массу времени, чтобы "построить" такую "правильную" "пирамиду".
Был бы удобен следующий механизм:
Мы выделяем некую интересующую нас область на самом большом масштабе (допустим 19). Эта область закачивается. Из неё формируется следующий уровень. Тайлы следующего уровня не полностью заполненные тайлами предыдущего уровня закачиваются. В результате "пирамида" будет выстраиваться обратная.
Самый простой случай: выделяем один тайл 19-го маштаба. Он закачивается. Поскольку из него не может быть сформирован тайл 18-го уровня - он закачивается. С последующими уровнями происходит тоже самое.
Можно дополнить этот механизм вторым полигоном большего масштаба. В этом случае обратная "пирамида" должна вырастать из первого (меньшего) полигона до второго (большего) полигона. Форма промежуточного полигона, расположенного между первым и вторым, должна вычисляться автоматически.
|
Steps To Reproduce | |
Additional Information | |
Tags | загрузка, закачка, масштаб |
Relationships | related to | 0000104 | resolved | zed | В "Операции с выделенной областью - Загрузить" сделать выбор сразу нескольких зумов | has duplicate | 0000735 | closed | vdemidov | Manage selection \ Download - качать тайлы для нескольких zoom level | has duplicate | 0002491 | closed | vdemidov | добавьте возможность мультивыбора масштаба в окне обработки выделенной области | has duplicate | 0002643 | closed | zed | Операции с выделенной областью > Загрузить. Тип карты и Масштаб - сделать возможность выбирать несколько. | related to | 0000445 | confirmed | | Алгоритм загрузки тайлов как у GoogleEarth | related to | 0000768 | closed | vdemidov | В действии с выделенной областью - выбор сразу нескольких карт и зумов, а не по одному | related to | 0001227 | closed | vdemidov | Добавить возможность выбора скачивания нескольких уровней одновременно. |
|
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
08-11-2010 09:47 | Abashin | New Issue | |
08-11-2010 10:11 | vdemidov | Status | new => acknowledged |
08-11-2010 10:12 | vdemidov | Product Version | => 101103 |
08-11-2010 10:12 | vdemidov | Target Version | => 40xxxx |
08-11-2010 11:55 | DJ VK | Note Added: 0000432 | |
08-11-2010 11:58 | DJ VK | Note Edited: 0000432 | bug_revision_view_page.php?bugnote_id=432#r134 |
08-11-2010 12:09 | DJ VK | Note Edited: 0000432 | bug_revision_view_page.php?bugnote_id=432#r135 |
08-11-2010 12:12 | DJ VK | Note Edited: 0000432 | bug_revision_view_page.php?bugnote_id=432#r136 |
08-11-2010 12:21 | DJ VK | Note Edited: 0000432 | bug_revision_view_page.php?bugnote_id=432#r137 |
08-11-2010 12:23 | DJ VK | Note Edited: 0000432 | bug_revision_view_page.php?bugnote_id=432#r138 |
08-11-2010 14:31 | gpsMax | Tag Attached: загрузка | |
09-11-2010 07:18 | Abashin | Note Added: 0000437 | |
09-11-2010 19:41 | Papazol | Note Added: 0000443 | |
10-11-2010 01:24 | Abashin | Note Added: 0000444 | |
10-11-2010 05:10 | Fighter | Note Added: 0000447 | |
10-11-2010 17:17 | Papazol | Note Added: 0000455 | |
13-11-2010 10:58 | gpsMax | Tag Attached: закачка | |
09-04-2011 13:33 | gpsMax | Relationship added | related to 0000104 |
09-04-2011 15:51 | gpsMax | Relationship added | related to 0000445 |
11-04-2011 07:11 | vdemidov | Status | acknowledged => confirmed |
11-04-2011 08:26 | gpsMax | Tag Attached: масштаб | |
14-05-2011 21:11 | gpsMax | Relationship added | related to 0000735 |
30-05-2011 09:34 | gpsMax | Relationship added | has duplicate 0000768 |
06-06-2011 21:51 | gpsMax | Priority | normal => none |
14-06-2011 14:29 | vasketsov | Note Added: 0002948 | |
18-03-2012 08:56 | vdemidov | Relationship added | has duplicate 0001227 |
10-04-2012 13:14 | Tolik | Relationship replaced | related to 0001227 |
10-04-2012 13:15 | Tolik | Relationship replaced | related to 0000768 |
04-11-2013 20:28 | vdemidov | Relationship replaced | has duplicate 0000735 |
04-09-2014 18:12 | vdemidov | Relationship added | has duplicate 0002491 |
09-03-2015 12:16 | zed | Relationship added | has duplicate 0002643 |
31-07-2015 12:05 | vdemidov | Status | confirmed => closed |
31-07-2015 12:05 | vdemidov | Resolution | open => won't fix |
31-07-2015 12:05 | vdemidov | Target Version | 40xxxx => |
Notes |
|
(0000432)
|
DJ VK
|
08-11-2010 11:55
(edited on: 08-11-2010 12:23) |
|
Сначала показалось, что хотелка лишь разновидность многопоточной закачки.
http://sasgis.org/mantis/view.php?id=134
Но суть здесь другая, какая то странная....
Меньший квадрат только потому что скачано в верхнем масштабе по маленькому полигону. сделай выделение в меньшем масштабе, скажем в 10, 11,12, скачай весмь квадрат в высоком разрешении и формируй все нижние масштабы.
А если нужна в 19 масштабе маленькая область (то есть ее всегда смотреть) - нахрена в 18м большая должна быть?
Ладно, нужно тупо показать один экран в куче масштабов (как в новостях позицию ЧП локализуют). но размер экрана то всегда один, зачем куча полигонов ????
Тогда уж нужна функция - скачать область в несколько тайлов для всех масштабов.
задал точку, указал радиус 2 тайла и качаются.
Вот только высокодетальный снимки ниже 14 масштаба не видны....
Опять же зачем сформирование. Поскольку 19 ты скачал не весь, а лишь четверть в середине - значит проще перекачать 18й в нужной зоне заново. А то придется правую половину из 19го генерить, а левую заново скачивать. ))
|
|
|
|
Я подозревал, что моё описание будет не просто понять. Видимо, я несколько косноязычен. Но столь откровенного нежелания разобраться и явного «передёргивания» не ожидал…
Попробую ещё раз объяснить:
Итак. Нас интересует некая область, и мы хотим закачать выделенный кусок из интернета в локальный кэш. Допустим это населенный пункт, и мы закачиваем из Google map область в 19-м масштабе общим количеством 1600 тайлов. На этом можно было бы и успокоится. Но нам хочется иметь ещё и другие (18, 17, 16, 15 … и т.д.) масштабы. Вопрос, зачем нам это? Ответ: удобно осуществлять поиск нужной области в меньшем масштабе, а детально рассматривать её в большем. Кстати, для этой цели можно иметь не все уровни масштаба, а например, только нечетные: 19, 17, 15, 13 и т.д. Или наоборот только чётные.
Замечательная функция реализована в SASPlaneta – формировать тайлы уровня с меньшим масштабом из тайлов уровня с большим масштабом. Это позволяет экономить время и интернет-трафик. Поэтому для нашей цели мы можем воспользоваться этой функцией и сформировать следующие уровни из закаченных тайлов. Из 1600 тайлов 19-го масштаба получится примерно 400 тайлов 18-го, 100 тайлов 17-го, 25 тайлов 16-го, 6 тайлов 15-го и 1 тайл 14 масштаба. Для 13-го масштаба нам не удастся сформировать ни одного тайла. Естественно это примерные вычисления. Получается своего рода «пирамида». Не потому, что наверху (меньший масштаб) меньше тайлов, а потому что не всегда удаётся сформировать тайл из-за неполного заполнения тайлами предыдущего уровня. Т.е. в независимости от количества тайлов, площадь, покрываемая сформированным слоем, меньше площади покрываемой исходным слоем. В исключительном случае, когда из всех тайлов удаётся сформировать новые, площади равны. Особенно ярко принцип «пирамиды» проявляется при формировании последующих уровней из выделенной области сложной формы.
Думаю, этого описания достаточно для понимания термина «пирамида». Пойдём дальше.
Для нашей цели (навигация в меньшем масштабе и изучение в большем) такая «пирамида» крайне неудобна. Нам бы хотелось иметь обратную «пирамиду». Т.е. чтобы уровни с меньшим масштабом (например 14) охватывали большую площадь, чем уровни с большим масштабом (например 18). Зачем это нужно? Может наше желание настолько редко встречается, что нет смыла что-либо менять в SASPlaneta для одного пользователя? Думаю, напротив, это нужно многим. Как правило, пользователи закачивают карты своего региона. Весь регион закачали допустим в 12-м масштабе. Отдельные области региона в 14-м масштабе. Территорию прилегающую к населенным пунктам в 16-м масштабе. Сами населённые пункты в 18-м. Вполне разумно.
Как из «обычной пирамиды» получить «обратную прирамиду»?
Во-первых, можно изначально отказаться от использования функции формирования тайлов, а все уровни закачивать из интернета. При этом для каждого уровня вырисовывая свой полигон. Это неудобно и долго.
Во-вторых, можно закачать выделенную область самого большого масштаба (например 19), сформировать все остальные уровни, т.е. создать «обычную пирамиду». Выделить область охватывающую чуть большую площадь, чем предыдущее выделение и закачать по ней следующий уровень (например 18) без закачки уже существующих (сформированных) тайлов. Снова выполнить формирование уровней по области только что закаченной, т.к. могут быть сформированы новые тайлы. Затем выделить область ещё большую, чем предыдущая и загрузить по ней следующий уровень (например 17), так же без закачки уже существующих тайлов. И повторяем процесс формирования по новому выделению. И так столько раз сколько у нас используется уровней. Этот метод ещё более долгий, но позволяет сэкономить интернет-трафик.
В-третьих, можно обратиться к разработчикам SASPlaneta с просьбой сделать функцию загрузки с автоматическим формированием «обратной пирамиды». Автоматическое формирование «обратной пирамиды» должно реализовывать алгоритм, описанный во втором случае, если пользователь указал: использовать формирование тайлов; или алгоритм, описанный в первом случае, если пользователь указал: не использовать формирование тайлов (т.е. все уровни должны быть закачены). Прирост площади каждого следующего (меньшего по номеру) масштаба должен осуществляться одним из трёх способов по выбору.
1) Естественный: граница выделенной области проходит по тайлам, которые в каждом следующем уровне в 4 раза больше по площади предыдущих тайлов. За счет таких случаев площадь охватываемая каждым следующим уровнем теоретически больше предыдущего.
2) Приграничный: прирост площади может осуществляться закачкой приграничных к выделенной области тайлов.
3) Аппроксимация: задаются два полигона. Первый – в границах которого закачиваются тайлы наивышего масштаба. Второй – в границах которого закачиваются/формируются тайлы наименьшего масштаба. Границы промежуточных масштабов легко вычислить используя несложные геометрические формулы.
В этой же функции можно дать возможность пользователю указывать сразу несколько источников для последовательной закачки. Например, мы нарисовали полигон интересующей нас области, указали, что нам нужно формировать «обратную пирамиду» и перечислили источники: Спутник Google, Гибрид (Google), Wikimapia. Для каждого из перечисленных источников должна будет создана «обратная пирамида». Если закачку тайлов Спутник Google чередовать с закачкой тайлов других источников – можно будет отказаться от временных задержек между закачкой очередного тайла, которая используется как антибан. |
|
|
|
Изначально допущена ошибка, заключающаяся в том, что невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба. На самом деле тайл будет сформирован, а на месте отсутствующих тайлов будет просто белый цвет. Поэтому, если нужно скачать, к примеру, город или область, и сформировать нижележащие масштабы, то нужно делать всё именно так, как написано вначале: скачать 19-й масштаб, из него сформировать все остальные. Я, например, широко пользовался этим способом при скачивании снимков DG. Поскольку масштабов ниже 14-го на этих снимках нет, а хотелось видеть эти снимки и на более мелких масштабах, формировал все масштабы до 9-го (область влазит полностью), и нормально, снимки занимали кусочек тайла, остальное белое, но местоположение снимка хорошо видно.
Кстати, в случае DG метод, предложенный Вами, будет работать плохо, потому что за границами каждого отдельного снимка не пустота, а чёрные квадраты, которые будут честно скачиваться, а нужны ли они?
Вот, можно посмотреть пример: http://s012.radikal.ru/i320/1011/b8/3f5a3bc4c660.jpg |
|
|
|
Изначально допущена ошибка…
Да, Papazol, вами изначально допущена ошибка. Обычно, перед тем как что-либо написать в теме, люди читают, что написали до них. Вы похоже этого не сделали.
Papazol : <невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба>
Описание: <Следующий уровень (сформированный) охватывает уже меньшую площадь из-за того, что не все формируемые тайлы заполнены закаченными тайлами. Следующий уровень ещё меньше по площади. И в конце концов на каком-то уровне не удаётся сформировать ни одного тайла.>
Т.е в описании написано тоже самое!
Смотрим дополнительное описание: <потому что не всегда удаётся сформировать тайл из-за неполного заполнения тайлами предыдущего уровня>
Опять тоже самое! Вывод – не читают…
Papazol : <На самом деле тайл будет сформирован, а на месте отсутствующих тайлов будет просто белый цвет.>
Тут Вы не правы. Тайл будет сформирован только если не установлена галочка Сохранять только полностью заполненный тайлы. Если она установлена не происходит формирование таких тайлов.
В описании и в дополнительном описании предлагается механизм решения этой проблемы – почитайте… |
|
|
|
Разобрался в предложенном, проникся, +1 |
|
|
|
Уважаемый Abashin! Обвинив меня в том, что я не читал Ваших предыдущих сообщений, Вы, похоже, точно так же не читали моего. То, что написано в описании, я не повторял и не подтверждал, а, наоборот, опровергал. То есть, подчёркиваю, утверждение "невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба" является ошибочным. Тайл меньшего масштаба БУДЕТ сформирован, даже если не хватает составляющих его тайлов большего масштаба. Я сам делал то, о чём писАл, и у меня получалось. И пример я выложил для обзора. На нём отлично видно, что сформированы 3 тайла 9-го уровня, заполненные тайлами бОльших уровней совсем мало, но они сформированы! Просто хотелось показать, что можно сделать это на имеющейся сейчас базе, то есть программе.
Если не установлена указанная галочка, то программа и не должна сохранять неполный тайл, ведь ей так велели. Но никто не мешает эту галочку поставить и сохранить.
Кроме того, как я опять же писАл, самовольное расширение программой зоны закачки далеко не всегда полезно, а бывает даже вредно.
Вообще, последнее слово за автором. |
|
|
|
>Но суть здесь другая, какая то странная
Точно.
Я сначала было подумал, что предлагается автоматизация типа такого процесса:
1. Выделяем область.
2. Качаем на 18-м зуме.
3. Генерим 16-й зум из 18-го (только по полностью заполненным тайлам).
4. Качаем на 16 зуме недостающее.
5. Генерим 15-й зум из 16-го (только по полностью заполненным тайлам).
6. Качаем на 15 зуме недостающее.
7. И так далее (для каждого рабочего зума сначала генерим середину из предлыдущего, а потом докачиваем края оригинальными тайлами).
Но потом понял, что мой мозг не в состоянии понять хотелку в изложении её автора. |
|