SASGIS

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


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000198SAS.Планета[All Projects] Хотелкаpublic08-11-2010 09:4731-07-2015 12:05
ReporterAbashin 
Assigned To 
PrioritynoneSeverityfeatureReproducibilityrandom
StatusclosedResolutionwon't fix 
PlatformOSOS Version
Product Version101103 
Target VersionFixed in Version 
Summary0000198: Загрузка сразу нескольких уровней масштаба по одному полигону
DescriptionБыло бы удобно, если была бы возможность указать сразу несколько масштабов для загрузки, после того как закончили выделять некую область. С опциональным указанием формировать/закачивать последующие слои.
Сейчас в основном закачивается уровень высокого масштаба, а из него формируются несколько уровней более низкого масштаба. Это разумно. Но в результате получается своего рода "пирамида". В основании "пирамиды" слой высокого масштаба, охватывающий максимальную площадь. Следующий уровень (сформированный) охватывает уже меньшую площадь из-за того, что не все формируемые тайлы заполнены закаченными тайлами. Следующий уровень ещё меньше по площади. И в конце концов на каком-то уровне не удаётся сформировать ни одного тайла.
На практике, как правило, нам нужна обратная "пирамида": верхний слой низкого разрешения должен охватывать максимальную площадь, а самый глубокий слой высокого разрешения должен охватывать минимальную площадь. Приходится тратить массу времени, чтобы "построить" такую "правильную" "пирамиду".
Был бы удобен следующий механизм:
Мы выделяем некую интересующую нас область на самом большом масштабе (допустим 19). Эта область закачивается. Из неё формируется следующий уровень. Тайлы следующего уровня не полностью заполненные тайлами предыдущего уровня закачиваются. В результате "пирамида" будет выстраиваться обратная.
Самый простой случай: выделяем один тайл 19-го маштаба. Он закачивается. Поскольку из него не может быть сформирован тайл 18-го уровня - он закачивается. С последующими уровнями происходит тоже самое.
Можно дополнить этот механизм вторым полигоном большего масштаба. В этом случае обратная "пирамида" должна вырастать из первого (меньшего) полигона до второго (большего) полигона. Форма промежуточного полигона, расположенного между первым и вторым, должна вычисляться автоматически.
Tagsзагрузка, закачка, масштаб
Attached Files

- Relationships
related to 0000104resolvedzed В "Операции с выделенной областью - Загрузить" сделать выбор сразу нескольких зумов 
has duplicate 0000735closedvdemidov Manage selection \ Download - качать тайлы для нескольких zoom level 
has duplicate 0002491closedvdemidov добавьте возможность мультивыбора масштаба в окне обработки выделенной области 
has duplicate 0002643closedzed Операции с выделенной областью > Загрузить. Тип карты и Масштаб - сделать возможность выбирать несколько. 
related to 0000445confirmed Алгоритм загрузки тайлов как у GoogleEarth 
related to 0000768closedvdemidov В действии с выделенной областью - выбор сразу нескольких карт и зумов, а не по одному 
related to 0001227closedvdemidov Добавить возможность выбора скачивания нескольких уровней одновременно. 

-  Notes
(0000432)
DJ VK (manager)
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го генерить, а левую заново скачивать. ))

(0000437)
Abashin (reporter)
09-11-2010 07:18

Я подозревал, что моё описание будет не просто понять. Видимо, я несколько косноязычен. Но столь откровенного нежелания разобраться и явного «передёргивания» не ожидал…

Попробую ещё раз объяснить:
Итак. Нас интересует некая область, и мы хотим закачать выделенный кусок из интернета в локальный кэш. Допустим это населенный пункт, и мы закачиваем из 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 чередовать с закачкой тайлов других источников – можно будет отказаться от временных задержек между закачкой очередного тайла, которая используется как антибан.
(0000443)
Papazol (reporter)
09-11-2010 19:41

Изначально допущена ошибка, заключающаяся в том, что невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба. На самом деле тайл будет сформирован, а на месте отсутствующих тайлов будет просто белый цвет. Поэтому, если нужно скачать, к примеру, город или область, и сформировать нижележащие масштабы, то нужно делать всё именно так, как написано вначале: скачать 19-й масштаб, из него сформировать все остальные. Я, например, широко пользовался этим способом при скачивании снимков DG. Поскольку масштабов ниже 14-го на этих снимках нет, а хотелось видеть эти снимки и на более мелких масштабах, формировал все масштабы до 9-го (область влазит полностью), и нормально, снимки занимали кусочек тайла, остальное белое, но местоположение снимка хорошо видно.
Кстати, в случае DG метод, предложенный Вами, будет работать плохо, потому что за границами каждого отдельного снимка не пустота, а чёрные квадраты, которые будут честно скачиваться, а нужны ли они?
Вот, можно посмотреть пример: http://s012.radikal.ru/i320/1011/b8/3f5a3bc4c660.jpg
(0000444)
Abashin (reporter)
10-11-2010 01:24

Изначально допущена ошибка…
Да, Papazol, вами изначально допущена ошибка. Обычно, перед тем как что-либо написать в теме, люди читают, что написали до них. Вы похоже этого не сделали.
Papazol : <невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба>
Описание: <Следующий уровень (сформированный) охватывает уже меньшую площадь из-за того, что не все формируемые тайлы заполнены закаченными тайлами. Следующий уровень ещё меньше по площади. И в конце концов на каком-то уровне не удаётся сформировать ни одного тайла.>
Т.е в описании написано тоже самое!
Смотрим дополнительное описание: <потому что не всегда удаётся сформировать тайл из-за неполного заполнения тайлами предыдущего уровня>
Опять тоже самое! Вывод – не читают…

Papazol : <На самом деле тайл будет сформирован, а на месте отсутствующих тайлов будет просто белый цвет.>
Тут Вы не правы. Тайл будет сформирован только если не установлена галочка Сохранять только полностью заполненный тайлы. Если она установлена не происходит формирование таких тайлов.

В описании и в дополнительном описании предлагается механизм решения этой проблемы – почитайте…
(0000447)
Fighter (reporter)
10-11-2010 05:10

Разобрался в предложенном, проникся, +1
(0000455)
Papazol (reporter)
10-11-2010 17:17

Уважаемый Abashin! Обвинив меня в том, что я не читал Ваших предыдущих сообщений, Вы, похоже, точно так же не читали моего. То, что написано в описании, я не повторял и не подтверждал, а, наоборот, опровергал. То есть, подчёркиваю, утверждение "невозможно сформировать тайл меньшего масштаба, если в него попадают незакачанные тайлы бОльшего масштаба" является ошибочным. Тайл меньшего масштаба БУДЕТ сформирован, даже если не хватает составляющих его тайлов большего масштаба. Я сам делал то, о чём писАл, и у меня получалось. И пример я выложил для обзора. На нём отлично видно, что сформированы 3 тайла 9-го уровня, заполненные тайлами бОльших уровней совсем мало, но они сформированы! Просто хотелось показать, что можно сделать это на имеющейся сейчас базе, то есть программе.
Если не установлена указанная галочка, то программа и не должна сохранять неполный тайл, ведь ей так велели. Но никто не мешает эту галочку поставить и сохранить.
Кроме того, как я опять же писАл, самовольное расширение программой зоны закачки далеко не всегда полезно, а бывает даже вредно.
 
Вообще, последнее слово за автором.
(0002948)
vasketsov (manager)
14-06-2011 14:29

>Но суть здесь другая, какая то странная
Точно.

Я сначала было подумал, что предлагается автоматизация типа такого процесса:
1. Выделяем область.
2. Качаем на 18-м зуме.
3. Генерим 16-й зум из 18-го (только по полностью заполненным тайлам).
4. Качаем на 16 зуме недостающее.
5. Генерим 15-й зум из 16-го (только по полностью заполненным тайлам).
6. Качаем на 15 зуме недостающее.
7. И так далее (для каждого рабочего зума сначала генерим середину из предлыдущего, а потом докачиваем края оригинальными тайлами).

Но потом понял, что мой мозг не в состоянии понять хотелку в изложении её автора.

- Users who viewed this issue
User List Anonymous (3290x), brusee (1x), vdemidov (2x)
Total Views 3293
Last View 20-04-2024 02:18

- 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 View Revisions
08-11-2010 12:09 DJ VK Note Edited: 0000432 View Revisions
08-11-2010 12:12 DJ VK Note Edited: 0000432 View Revisions
08-11-2010 12:21 DJ VK Note Edited: 0000432 View Revisions
08-11-2010 12:23 DJ VK Note Edited: 0000432 View Revisions
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 =>



Copyright © 2007 - 2024 SAS.Planet Team