nemo3001
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору karst Повторил твои действия: в версии SatMap 2.8.7 установил 8 уровень, прямоугольным выделением выбрал небольшой участок, примерно в 1/20 тайла 8-го уровня, и составил файлы для загрузки всех слоев на 18 уровне. Получился текстовый файл в 220 тысяч строк. Программа отработала мгновенно и ошибок не выдала. Затем я выделил при тех же условиях участок примерно в 1 тайл 8-го уровня, на примерно 4,3 млн тайлов 18 уровня и тоже, как ты, получил ошибку программы "out of memory" при попытке составить список загрузки. Насчет ошибки "out of memory" при попытке генерации слишком большого списка я уже писал на форуме этой программы 31 мая 2010 года (http://forum.ru-board.com/topic.cgi?forum=5&topic=30026&start=1780), и предлагал тогда сразу записывать создаваемый список загрузки в текстовый файл, что позволило бы не держать весь список в оперативной памяти. Сейчас я думаю, что вместо текстового файла этот список можно было бы записывать в процессе его генерации во временный кэш той же структуры, что и кэш SatMap (заполняя там все поля, кроме последнего поля с тайлом), а уже из этого "кэша-списка" можно было бы сделать списки для загрузки, как это сейчас уже умеет делать SatMap v2.9. Ведь свои рабочие кэши в десятки и сотни миллионов строк программа SatMap умеет заполнять без проблем с памятью и хорошо с ними работает. Такие кэши-списки я уже много раз использовал для своих целей (сделал в Excel свой такой модуль Список->Кэш). Получилось компактное и довольное удобное временное хранилище для списков загрузки в формате кэша SatMap, куда я собирал несколько составленных списков загрузки, а в этом созданном кэше-списке повторяющиеся строки в добавляемых списках загрузки сами отсеивались из-за наличия в базе данных уникального индекса по полям уровень-слой-координаты тайла. Тут же я мог еще до начала загрузки оценить в программе SatMap схему заполнения уровней этими списками, подключив к программе этот кэш-список, мог при необходимости добавить в него еще списки загрузки, а уже потом создавал из этого кэша-списка итоговые текстовые файлы списков загрузки (с помощью модуля в Excel Кэш->Список), по которым и загружал тайлы из интернета. Запись списка загрузки в процессе его генерации во временный кэш, скорее всего, решит проблему генерации огромных списков загрузки без появления ошибки "out of memory", но это, наверное, потребует значительных изменений в программе создания списков загрузки. Так что пока, видимо, просто нужно области выделения территории для загрузки 18 уровня увеличения с карты 8 уровня делать поменьше размером, чтобы ошибка "out of memory" не успевала появиться. Потом соединять получившиеся списки загрузки, удалять в них дубликаты на перекрывающихся участках списков, и делить получившийся большой уникальный список на части для начала загрузки тайлов, как мы это уже здесь обсуждали, упоминая вспомогательную программу bvsTextCombi. | Всего записей: 235 | Зарегистр. 06-05-2010 | Отправлено: 16:55 09-12-2017 | Исправлено: nemo3001, 18:44 09-12-2017 |
|