SASGIS

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

Использование в Sas.Планета кеша в формате Berkeley

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение fedorch » 10 авг 2014, 10:01

DJ VK писал(а):подробнее, плиз, из написанного не очевидно сколько раз запускалась программа (раз зависала явно не 1 раз) и какова судьба кэшей после ошибки(сколько их было, какого типа тоже напишите) . Желательно всю последовательность с нуля и поэтапно.

В моих попытках слить кэши программа вылетала многократно. Описать сейчас всё подробно и в хронологическом порядке я не смогу. Все вылеты (как мне кажется) происходили до начала копирования данных, так что я надеюсь, что новых существенных повреждений БД они не нанесли. К тому же я сделал полные архивные копии всех БД перед началом экспериментов.

DJ VK писал(а):И Почему если нужно несколько кэшей слить в 1 не используется копирование с возможностью выбора переместить-заменить-пропустить (беркли очень критичен к грубому вмешательству, восстановлением лечится максимум замена целого квадрата если это делалось руками, лучше все делать копированием)?

К сожалению, ваших дальнейших вопросов, советов и предостережений я практически не понял ;-( Что значит "копирование с возможностью выбора переместить-заменить-пропустить"? это в каком меню и что за функция? Или вы про копирование средствами ОС, но как это можно применить к БД? Кэш ведь не отдельными тайлами лежит на диске.

Я несколькими постами ранее подробно описал свою проблему (точнее свое желание слить два версионных Беркли кэша в один). Zed мне ответил:
zed писал(а):Единственный способ это сделать: Операции - Управление кэшем.

Я ещё раз переспросил правильно ли его понял и стал пробовать "копать" в этом направлении. Когда у меня ничего не получилось, то я стал снова спрашивать здесь, как мне исправить БД, чтобы программа перестала вылетать, так как стандартный режим sdb_util "проверить и исправить" ошибок в БД не находил и соответственно их не исправлял.

Потом я стал искать на форуме советы по применению db_recover и sdb_util и пробовать их применять... И каждый раз после очередной попытки исправления БД я пробовал их слить и плучал очередной креш.

DJ VK писал(а):В новых версиях программы можно указать единую папку кэша беркли для копирования в нее разных карт (убрав галку раскладывания по подпапкам). После копирования (и только после него) остатки старых кешей удалить руками.

Снова не понял, что вы здесь понимаете под копированием ;-(

DJ VK писал(а):Смена типа кэша рассчитана на 1 карту. Используйте ее с осторожностью.
Внимание. При копировании в базу беркли внимательно смотрите,какая карта активна. Если забыть переключить отображаемую карту и копирнуть карту беркли в саму себя жмите скорей отмену - (если включены опции переместить и заменить - писец полный скачанному кэшу, удаляется)

Как связана отображаемая карта со сменой типа кэша? В диалоге управления кэшем (смена формата кэша) явно указывается как исходный кэш, так и результирующий. Или предполагается ещё и неявное использование отображаемой карты?

Конечно я понимаю, что из за одновременного доступа к БД нескольких процессов могут возникнуть дополнительные проблемы, поэтому у меня во время всех попыток отображалась карта не совпадающая ни с исходным кэшем не с результирующим.
fedorch
Новичок
 
Сообщения: 8
Зарегистрирован: 02 авг 2014, 00:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение fedorch » 10 авг 2014, 10:04

Мне таки удалось начать процесс объединения кэшей. Результат ещё неясен, но программа по крайней мере начала считать обработанные/пропущенные тайлы. Скорость работы мягко говоря не высокая. За ночь было скопировано 700 тысяч тайлов из примерно 1,5 миллионов. Такое ощущение, что COMMIT (или что-то аналогичное) вызывается после каждого тайла.

Что-же потребовалось для этого сделать:

1) Нужно было сбросить LSN не только для исходного кэша (на который SAS.Планета ругалась), но и для результирующего кэша про который она ни чего плохого не говорила (до тех пор пока я от безысходности не начал "разбирать" его на отдельные тайлы).
2) Нужно было указывать путь до "корня" кэша карты, а не до определенного масштаба, как пытался сделать я. Тут бы программе ошибочку какую стоит выдавать, а не "Конвертация кэша завершена".
3) Нужно было сменить расширение с *.jpg на *.png Думал, что эта опция применяется только при работе с отдельными тайлами, но оказывается, что она нужна и для работы с БД. Но в данном случае выдается сообщение об ошибке из которого можно понять в чем дело.
fedorch
Новичок
 
Сообщения: 8
Зарегистрирован: 02 авг 2014, 00:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed » 10 авг 2014, 12:07

fedorch писал(а):Я запускал управление кэшем следующим образом: https://yadi.sk/i/Yys2uuroZKudt

И не правильно запускали. Нужно указывать папку с кэшем карты, а не папку с каким-то зумом.
fedorch писал(а):1) Нужно было сбросить LSN

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

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение fedorch » 10 авг 2014, 13:23

zed писал(а):Если вы не трогали руками папку env, то никаких сбросов LSN делать не нужно.

Имеется 2 компьютера (точнее 3, но сути это не меняет). Назовем первый основным. На основном компьютере была установлена SAS.Планета 140505.8037 и некоторое время загружались различные карты. Ни каких глюков, вылетов, зависаний и т.д. на основном компьютере замечено не было. Ни какого вмешательства в структуру данных на основном компьютере не производилось, я только делал копии файлов (при выключенной программе).

Через некоторое время эта установка была скопирована на другой компьютер, назовем его дополнительным, но не полностью. Кроме программы был перенесен только один масштаб одной из карт (и его env, но не env карты в целом). На дополнительном компьютере производилась загрузка ряда областей в этот перенесенный масштаб. При этом временами наблюдались странные и глюки.

Например, загрузка области завершалась с сообщением в заголовке окна о том, что загрузка завершена. При этом судя по прогресс-бару загрузка прервалась на 80% и в логе последняя строчка стоит "обработка тайла X/Y", а не "загрузка завершена". Вывод заполнения слоя так же обычно зависал. sdb_util в режиме по умолчанию проблем не отмечал. То, что кэш дополнительного компьютера оказался испорчен я понять могу.

Но отчаявшись слить кэши напрямую в виде БД, я попытался разобрать их на тайлы, чтобы объединить копированием и потом снова собрать БД. При этом выяснилось, что "Управление кэшем" ругается и на LSN БД основного компьютера, если её выставить в качестве источника данных при конвертации. Хотя, ещё раз повторюсь, с этой БД я вручную ни чего не делал (максимум запускал sdb_util в режиме по умолчанию, точно уже не помню...) Так я пришел к тому, что необходим сброс LSN для основной БД. Возможно когда-то что-то случилось, какой нибудь сбой на который я не обратил внимание или ноутбук заснул неудачно, но до сих пор этот сбой в основной БД ни как не проявлялся. Только Управление кэшем отказалось из за него работать.

Судя по наблюдаемым мной на дополнительном компьютере глюкам есть ощущение, что код загрузчика области и построения заполнения слоя часто просто игнорируют исключения при работе с БД.
fedorch
Новичок
 
Сообщения: 8
Зарегистрирован: 02 авг 2014, 00:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed » 10 авг 2014, 13:34

fedorch писал(а):Кроме программы был перенесен только один масштаб одной из карт (и его env, но не env карты в целом).

У карты только один env и из него невозможно вычленить информацию о каком-то одном зуме. В итоге, получилось что вы влезли в структуру БД руками и получили глюки.
fedorch писал(а):При этом выяснилось, что "Управление кэшем" ругается и на LSN БД основного компьютера

Вы пытались указать только определённый зум и оно не могло найти env и потому ругалось. Ошибка про LSN говорит, что программа не может найти валидный env и более ничего. Сразу же после этой ошибки укажите программе правильную папку с кэшем и оно будет работать без проблем и не нужно юзать sdb_util и сбрасывать LSN. Т.е. кэш на основном компьютере у вас небыл испорчен, просто были неправильные действия пользователя.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение fedorch » 10 авг 2014, 17:48

zed писал(а):
fedorch писал(а):Кроме программы был перенесен только один масштаб одной из карт (и его env, но не env карты в целом).

У карты только один env и из него невозможно вычленить информацию о каком-то одном зуме. В итоге, получилось что вы влезли в структуру БД руками и получили глюки.

Я не знаю тонкостей устройства BerkleyDB. Я лишь имел в виду, что папка env есть как в корне карты, так и внутри каждого масштаба. То, что дополнительную БД я испортил сам я согласен.

zed писал(а):
fedorch писал(а):При этом выяснилось, что "Управление кэшем" ругается и на LSN БД основного компьютера

Вы пытались указать только определённый зум и оно не могло найти env и потому ругалось. Ошибка про LSN говорит, что программа не может найти валидный env и более ничего. Сразу же после этой ошибки укажите программе правильную папку с кэшем и оно будет работать без проблем и не нужно юзать sdb_util и сбрасывать LSN. Т.е. кэш на основном компьютере у вас небыл испорчен, просто были неправильные действия пользователя.

А вот тут я бы поспорил. Программа не ругалась о том, что что-то не так, а "вываливалась" с исключением. После сброса LSN программа несмотря на то, что ей был указан не корректный путь перестала "падать" с исключением, хотя и то, что от неё ожидал пользователь не делала.

Я свою конкретную проблему решил. Но мне кажется, что в код SAS.Планета стоит добавить несколько дополнительных проверок на случай некорректно введенных пользователем данных. Ну или хотя бы в обработчике исключения в этом месте добавить вывод сообщения: "Не удается найти корректное окружение базы данных, возможно оно повреждено или вы просто неверно указали путь к корневому каталогу обрабатываемой карты. Если путь указан верно, но это сообщение продолжает появляться, то попробуйте сбросить LSN базы данных используя соответствующий режим в программе sdb_util".
fedorch
Новичок
 
Сообщения: 8
Зарегистрирован: 02 авг 2014, 00:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed » 10 авг 2014, 17:59

fedorch писал(а): так и внутри каждого масштаба.

Её там быть не должно.
fedorch писал(а):После сброса LSN программа несмотря на то, что ей был указан не корректный путь перестала "падать" с исключением, хотя и то, что от неё ожидал пользователь не делала.

После сброса LSN и не найдя папку env, программа создаёт эту самую папку в том месте, где она предпологаемо должна находится (исходя из корневого пути кэша). Вот поэтому у вас и стали появляться папки внутри каждого масштаба.

Вы сделали тотальное количество ошибок, при попытке импортировать кэш. Вот прямо во всех местах, где можно было ошибиться, вы ошиблись. Случаем не тестировщиком работаете? :)

fedorch писал(а):Но мне кажется, что в код SAS.Планета стоит добавить несколько дополнительных проверок на случай некорректно введенных пользователем данных.

Вносите предложения в багтрекер. И набив гору шишек, можете что-нибудь полезное написать в нашу wiki: http://sasgis.org/wikisasiya
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Thorax » 21 авг 2014, 14:15

Подскажите, пожалуйста, а есть возможность конвертировать версионный кеша Беркли обратно в любой другой? Пытаюсь это сделать через "Управление кешем": что с галочкой "Обрабатывать только тайлы с версией", что без оной - конвертация заканчивается без ошибок, но с нулями обработанных и пропущенных тайлов. Создается пустой каталог-приемник. Тип тайла (jpg/PNG) правильный. Что я делаю не так?
Thorax
Новичок
 
Сообщения: 23
Зарегистрирован: 25 окт 2009, 22:27
Откуда: Нижний Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed » 21 авг 2014, 15:51

Thorax писал(а):Подскажите, пожалуйста, а есть возможность конвертировать версионный кеша Беркли обратно в любой другой?

Есть.
Thorax писал(а):Пытаюсь это сделать через "Управление кешем"

Покажите скриншот окна Управление кэшем.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Thorax » 21 авг 2014, 16:42

Вот скриншот. Что любопытно, в вер ионный кеш перегоняется без вопросов
Вложения
Clipboard01.jpg
Thorax
Новичок
 
Сообщения: 23
Зарегистрирован: 25 окт 2009, 22:27
Откуда: Нижний Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.След.

Вернуться в SAS.Планета

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

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