SASGIS

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


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001285SAS.Планета[All Projects] Багpublic03-05-2012 13:0510-10-2012 11:47
ReporterDima2000 
Assigned ToGarl 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformWindowsOSXPOS VersionProfessional SP3
Product Version.Nightly 
Target Version120808Fixed in Version120808 
Summary0001285: Небольшой глюк в отображении при экспорте в формат SAS4WinCE
DescriptionРановато закрыли http://sasgis.org/mantis/view.php?id=1282
В процессе экспорта, пока не записано в файл данных ни одного тайла (ну вот нету тайлов в кэше SAS или не приняты классом экспорта), номер файла данных =-1 и отображается как (.d0-1), что есть некорректно. Такой файл данных классом разумеется не создаётся, т.е. глюк лишь в отображении. Надо проверять DataNum >= 0 и только в этом случае отображать скобку с номером. Или если DataNum < 0, то отображать '(--)'.
TagsSAS4WinCE
Attached Files

- Relationships
related to 0001282closedGarl Экспорт в упакованный формат SAS4WinCE 

-  Notes
(0006655)
Papazol (reporter)
03-05-2012 13:25

Ничего, это исправится. Поскольку я не успел в той теме поблагодарить всех принявших участие в этом непростом деле, сделаю это сейчас. Спасибо вам!
(0006656)
Garl (manager)
03-05-2012 19:00

ага сейчас профиксим.
и низкий поклон за то что разбудили желания и дали пинок к созданию очень нужного и полезного дела.
(0006657)
Dima2000 (developer)
03-05-2012 20:06

На форуме у v_max уже обнаружили экспорт в свежей ночнушке и безумно рады. :) Я то надеялся потестить втихаря недельку...
От меня огромное спасибо всем разработчикам (и Garl особенно!) за помощь в подгонке кода к стандартам Планеты. И конечно за встраивание в Планету!
(0006658)
Dima2000 (developer)
03-05-2012 20:18
edited on: 03-05-2012 20:36

Garl, я бы предложил следующий код, вместо вашего в репо:
VExt := '(.d' + inttostr(VSAS4WinCE.DataNum) + ')';
if VSAS4WinCE.DataNum < 10 then VExt := '(.d0' + inttostr(VSAS4WinCE.DataNum) + ')';
if VSAS4WinCE.DataNum < 0 then VExt := '';
ProgressInfo.SecondLine := SAS_STR_Processed + ' ' + inttostr(VTilesProcessed) + ' '+VExt;
Ваш будет сразу выводить (.d00), а имхо лучше не показывать скобку вообще пока файл не создан.

(0006659)
Garl (manager)
04-05-2012 02:57

та можно и так
просто я даже не успеваю увидеть когда оно так делает.
с другой стороны - идёт создание первого тома (d00) и по логике мы правы отображая "d00"
(0006660)
Garl (manager)
04-05-2012 05:20

как лучше перевести обозначить
"Записывать служебную информацию"
"Дополнять информацией для восстановления"
"Записывать информацию о тайлах"
или ещё варианты ...
(0006661)
Dima2000 (developer)
04-05-2012 10:10

>просто я даже не успеваю увидеть когда оно так делает.
Выделите облсть, где слева много отсутствующих тайлов (к примеру включите лишь 24-й зум) - и пока не найдётся первый присутствующий тайл увидите.

>как лучше перевести обозначить
Я за "Save recovery info" / "Записывать информацию для восстановления".

У меня вот такая мысля пришла. Учитывая что есть распаковщик от v_max и будет мой (с поддержкой этой самой info), получается достаточно удобно обмениваться кусками кэша в этом формате. Хотел спросить о нужности добавления ещё размеров в список, но оказывается в ночнушке можно вводить размер руками. Класс, ничего делать не надо, уже всё есть. :)
(0006662)
Dima2000 (developer)
04-05-2012 10:19
edited on: 04-05-2012 10:20

У меня замечание, по исходнику, в проге живьём пока не видел.
Сравните две строки из u_ThreadExportToCE.pas:
ProgressInfo.SecondLine := SAS_STR_Zoom + ': ' + inttostr(Vzoom) + ' ' + SAS_STR_Tiles + ': ' + inttostr(VTilesToProcess);
и
ProgressInfo.SecondLine := SAS_STR_Processed + ' ' + inttostr(VTilesProcessed) + VExt;
Вам не кажется нелогичным показывать в одном месте по разному? Добавка зума может и хорошо, но тогда и во второе место тоже надо, идентично первому.
Или это так и задумано? Тогда извините, надо глянуть как оно в работе выглядит.

(0006663)
Dima2000 (developer)
04-05-2012 10:39
edited on: 04-05-2012 10:42

Ещё, давайте наконец разберёмся с расчётом VMaxSize в u_ExportProviderCE.pas.
Что его можно вводить руками это прекрасно, но вот что он уменьшается на 1МБ уже совсем не прекрасно, пока минимум был 256МБ это было несущественно, но теперь, давайте уж сделаем корректно.
Я предлагаю так:
  VMaxSize := Strtointdef(FFrame.cbbMaxVolSize.Text, 0);
  if (VMaxSize < 1) or (VMaxSize > 2047) then raise {Исключение подставьте какое нужно, с указанием недопустимости ввода кривых чисел};
Да, я специально отказался от регэкспа, любой нецифровой символ должен приводить к ошибке (raise), а не вырезать из текста лишь цифры. Указание пользователем множителя (КБ, МБ, ГБ, ТБ) всё равно ведь не поддерживается да и не нужно.
Перевести же в мегабайты можно и в момент вызова конструктора в u_ThreadExportToCE.pas:
  VSAS4WinCE := TSAS4WinCE.Create(FTargetFile, FMaxSize*1048576, FComment, FRecoverInfo);
Или тоже самое в u_ExportProviderCE.pas:
  TThreadExportToCE.Create(..., VMaxSize*1048576, ...);

PS. И убрать из строки ввода размера символы Mb, они есть над строкой в её названии "Max volume size, Mb", считаю этого достаточно. А в поле вводить лишь чистые цифры.

(0006664)
Garl (manager)
04-05-2012 10:41

кстати да.
(0006665)
Garl (manager)
04-05-2012 11:22

перевел ввод Мб из ComboBox в SpinEdit. (-1 строка кода и исключение )
(0006666)
Dima2000 (developer)
04-05-2012 11:44

Сделайте Save recovery info изначально включенной. Говорил же об этом выше.
(0006674)
Dima2000 (developer)
04-05-2012 22:23

Вижу, сделали, отлично. Теперь бы поглядеть на это в ночнушке...

И ещё.
Не даёт мне покоя объявление типов в интерфейсе юнита, неправильно это, вдруг где пересечётся с остальной Планетой? Переместите объявление трёх типов данных в private класса, а? Я даю и разрешение и даже прошу. Сам я это проверить не могу, моя дельфи такое не компилит. От такого перемещения ничего испортиться не должно.
(0006676)
Tolik (manager)
05-05-2012 05:58

> Учитывая что есть распаковщик от v_max и будет мой (с поддержкой этой самой info), получается достаточно удобно обмениваться кусками кэша в этом формате.

А что за распаковщик? Ссылку киньте, пожалуйста.
А может, добавить поддержку этого кэша прямо в САС.Планету? Хотя бы read-only, если полноценный трудно сделать, было бы ещё удобнее.


В сегодняшней ночнушке (120505.5493) всё исправлено.
(0006677)
Garl (manager)
05-05-2012 06:01

с полноценной поддержкой кэша думаю будут сложности ибо он имеет ограницения на размер файла. да и надо ли оно?

>Переместите объявление трёх типов данных в private класса, а?
как попробую - отпишусь.ь
(0006678)
Tolik (manager)
05-05-2012 06:06
edited on: 05-05-2012 06:08

Я думаю, надо, хотя бы на чтение.
Скачал весь кэш целиком (например, какую-нибудь старую карту города) и пользуйся. Не надо хранить/ копировать много маленьких файлов.
Тем более, если пользуешься и на СЕ/Андроиде.

Напишите подробнее про ограничения, решим, стоит ли открывать хотелку.

(0006679)
Papazol (reporter)
05-05-2012 06:42

Несмотря на имеющиеся ограничения, такой формат вполне мог бы быть использован для хранения отдельных снимков, например, от Роскосмоса или DG. Поскольку эти снимки не имеют версий, перекачивать их не нужно, а хранить в упакованном формате всегда лучше.
(0006681)
Dima2000 (developer)
05-05-2012 09:54

>А что за распаковщик? Ссылку киньте, пожалуйста.
http://4pna.com/showpost.php?p=145833&postcount=153
Мой будет примерно аналогичным, только без .NET и с использованием recovery info для определения имён и расширений файлов при её наличии в файлах (тогда и файл индекса не требуется).

>А может, добавить поддержку этого кэша прямо в САС.Планету? Хотя бы read-only, если полноценный трудно сделать, было бы ещё удобнее.
Я бы с превеликим удовольствием!! Вот тут как раз про это писал - http://sasgis.org/mantis/view.php?id=1282#c6641
Сделать модификацию такого хранилища на лету проблематично, я пока не уверен что можно и нужно. А вот с чтением проблем вообще никаких.
Причём я бы даже добавил чтение такого хранилища в дополнение к существующему, при ненахождении файла на диске обратиться к пакованному архиву.
Т.к. тайлы в архиве хранятся по координатам, без путей, то очевидно поддерживаются все 4 варианта файловых хранилищ из Планеты.

Я готов добавить в класс метод чтения хранилища (хотя по уму это надо отдельный класс сделать, что тоже не проблема) на предмет поиска тайла по координатам. Ну и ещё чего-нибудь до кучи, к примеру сужения ограничивающего box до реально присутствующих в хранилище тайлов по любому зуму.

>Напишите подробнее про ограничения
Ограничения формата? 130млн тайлов (больше не влезет в 2ГБ индекса), 100 файлов данных с тайлами каждый по 2ГБ, по каждым координатам (z,x,y) строго один тайл (иначе в сортированых таблицах индекса будут повторы и какой тайл выберется предсказать невозможно, хотя это и не ошибка). Файл индеса хранит сортированные (для двоичного поиска) таблицы по Z, X[Z], Y[Z,X]. Модификацию формата сделать сложно именно из-за сортированности таблиц индекса, ну ещё из желания уложить их в файл плотно, без дыр.
(0006683)
Tolik (manager)
05-05-2012 10:05

Ну, я-то предлагал по-простому: ещё 1 тип кэша - SAS4WinCE.
Как я понял, на чтение ограничений нет, на запись серьёзные.
Давайте тогда откроем такую хотелку - поддержка только на чтение.

Вы предлагаете более продвинутую фичу - чтение из дополнительного кэша при остутствии тайла в основном. То есть если нет в 1-м кэше, смотрим в 2-й, если там есть - выводим на экран. Это в режиме Кэш и Интернет+Кэш. Ну, в принципе, можно и такую хотелку открыть, только как это в гуях сделать - не представляю.
(0006684)
Garl (manager)
05-05-2012 10:07

универсальнее - отдельный тип кэша пусть и ReadOnly.
а теперь внимание вопрос: стоит ли овчинка выделки?
(0006685)
Tolik (manager)
05-05-2012 10:15

Ну мне как потребителю овчинка нужна.
А вы как программист скажите, сколько стоит выделка :)
(0006686)
Dima2000 (developer)
05-05-2012 10:17

>стоит ли овчинка выделки?
Не знаю. Я не так часто перекачиваю огромные обалсти, чтобы не хранить их в архиве. Зато часто будет не нужен контейнер для миллионов мелких файлов, они будут собраны в архив и только изменения от состояния архива будут россыпью.

Делать отдельный тип кэша - вот этого как раз не знаю зачем. Его же не докачаешь тогда. :(
А вот "чтение из дополнительного кэша при остутствии тайла в основном" - полезная фича! Именно её и предлагаю. В GUI это просто, лишь галка использовать такой кэш и всё. Лежать он должен (это можно потребовать жестко, как и его имя совпадающее с папкой кэша) в корневой папке карты, там где каталоги z1..z24. Сама SAS его модифицировать никогда не будет, это проблема пользователя. Накачал в основной кэш много - раз в неделю/месяц/год запустил упаковку в архив. Интерфейс такой упаковки дело обсуждаемое, к самому принципу поддержки второго хранилища не относится.
(0006687)
Dima2000 (developer)
05-05-2012 10:18

>А вы как программист скажите, сколько стоит выделка :)
Я готов всё написать, только встраивайте! И советуйте как вам удобнее, чтобы я так и написал. :)
(0006688)
Dima2000 (developer)
05-05-2012 10:20
edited on: 05-05-2012 10:21

Давайте откроем хотелку и перенесите обсуждение сразу туда, а? Если нет, ну так закроете...
Уже открываю.

(0006689)
Papazol (reporter)
05-05-2012 10:21

Если делать продвинутую фичу, то в режиме Интернет+кэш программа не должна искать тайлы в упакованном формате, потому что, если они есть только там, а в обычном их нет, то они и не будут скачаны.
(0006690)
Tolik (manager)
05-05-2012 10:22

> Давайте откроем хотелку
Конечно, это будет правильно. Две хотелки. А эту уже пора переводить в resolved.
(0006691)
Dima2000 (developer)
05-05-2012 10:25

Вот хотелка, переносите обсуждение туда - http://sasgis.org/mantis/view.php?id=1290
(0006692)
Dima2000 (developer)
05-05-2012 10:27

> Если делать продвинутую фичу, то в режиме Интернет+кэш программа не должна искать тайлы в упакованном формате, потому что, если они есть только там, а в обычном их нет, то они и не будут скачаны.
Нет, надо и искать, и скачивать - и класть в первый кэш, который хранит дополнения к пакованому.
(0006694)
Dima2000 (developer)
05-05-2012 10:35

Эту закрывать конечно можно, но может сюда ещё пожеланий именно к интерфесу экспорта добавить?
Вот к примеру я бы хотел чтобы при выборе зумов показывался хотя бы очень примерно объём (или количество тайлов) сколько я собрался экспортировать. Как в скачке, по ограничивающему box. Это посчитать быстро. Вопрос лишь как и куда вывести. :)
(0006696)
Tolik (manager)
05-05-2012 10:36

Одна хотелка или 1 баг - 1 тикет.
(0006699)
Garl (manager)
05-05-2012 10:40

"доработку нельза закончить, её можно только прекратить" (с)
так и улучшать можно до бесконечности...

- Users who viewed this issue
User List Anonymous (2872x), reindjer (1x), bk99 (1x), Tolik (1x)
Total Views 2875
Last View 28-03-2024 16:16

- Issue History
Date Modified Username Field Change
03-05-2012 13:05 Dima2000 New Issue
03-05-2012 13:25 Papazol Note Added: 0006655
03-05-2012 19:00 Garl Note Added: 0006656
03-05-2012 19:15 Garl Assigned To => Garl
03-05-2012 19:15 Garl Status new => assigned
03-05-2012 20:06 Dima2000 Note Added: 0006657
03-05-2012 20:18 Dima2000 Note Added: 0006658
03-05-2012 20:36 Dima2000 Note Edited: 0006658 View Revisions
04-05-2012 02:57 Garl Note Added: 0006659
04-05-2012 05:20 Garl Note Added: 0006660
04-05-2012 10:10 Dima2000 Note Added: 0006661
04-05-2012 10:19 Dima2000 Note Added: 0006662
04-05-2012 10:20 Dima2000 Note Edited: 0006662 View Revisions
04-05-2012 10:39 Dima2000 Note Added: 0006663
04-05-2012 10:41 Garl Note Added: 0006664
04-05-2012 10:42 Dima2000 Note Edited: 0006663 View Revisions
04-05-2012 11:22 Garl Note Added: 0006665
04-05-2012 11:44 Dima2000 Note Added: 0006666
04-05-2012 22:23 Dima2000 Note Added: 0006674
05-05-2012 05:58 Tolik Note Added: 0006676
05-05-2012 06:01 Garl Note Added: 0006677
05-05-2012 06:06 Tolik Note Added: 0006678
05-05-2012 06:08 Tolik Note Edited: 0006678 View Revisions
05-05-2012 06:42 Papazol Note Added: 0006679
05-05-2012 09:54 Dima2000 Note Added: 0006681
05-05-2012 10:05 Tolik Note Added: 0006683
05-05-2012 10:07 Garl Note Added: 0006684
05-05-2012 10:15 Tolik Note Added: 0006685
05-05-2012 10:17 Dima2000 Note Added: 0006686
05-05-2012 10:18 Dima2000 Note Added: 0006687
05-05-2012 10:20 Dima2000 Note Added: 0006688
05-05-2012 10:21 Dima2000 Note Edited: 0006688 View Revisions
05-05-2012 10:21 Papazol Note Added: 0006689
05-05-2012 10:22 Tolik Note Added: 0006690
05-05-2012 10:25 Dima2000 Note Added: 0006691
05-05-2012 10:27 Dima2000 Note Added: 0006692
05-05-2012 10:35 Dima2000 Note Added: 0006694
05-05-2012 10:36 Tolik Note Added: 0006696
05-05-2012 10:37 Tolik Status assigned => resolved
05-05-2012 10:37 Tolik Fixed in Version => 120808
05-05-2012 10:37 Tolik Resolution open => fixed
05-05-2012 10:38 Tolik Target Version => 120808
05-05-2012 10:38 Tolik Relationship added related to 0001282
05-05-2012 10:40 Garl Note Added: 0006699
13-05-2012 09:52 gpsMax Tag Attached: SAS4WinCE
10-10-2012 11:47 Tolik Status resolved => closed



Copyright © 2007 - 2024 SAS.Planet Team