Обработка объемных растров: ошибка

Ответить
Evgenia
Активный участник
Сообщения: 182
Зарегистрирован: 14 дек 2008, 16:09
Проекты: 2
Репутация: 24
Откуда: Москва

Обработка объемных растров: ошибка

Сообщение Evgenia » 25 мар 2011, 02:26

Пытаюсь обработать растр..довольно объемный. Выдает ошибку: ERROR: G_malloc: unable to allocate 99020 bytes at main.c:283. GRASS 6.4.1. Как с этим справится?

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Обработка объемных растров: ошибка

Сообщение Александр Мурый » 25 мар 2011, 12:09

Похоже, что GRASS не хватает системной памяти для обработки. Только вот цифры какие-то странные -- 99020 байт.
Обычно может не хватать памяти при размерах больше 2Gb на 32-битных системах (это в Windows, в Linux работает при 2 гигах нормально, используя своп).

Пожалуйста, приложите вывод команд (если это не секрет), с ними будет гораздо проще разобраться:
g.version -b
g.region -p
r.info ваш_тяжёлый_растр

И ещё (главное!) -- какой модуль выдаёт ошибку?
Редактор материалов, модератор форума

Evgenia
Активный участник
Сообщения: 182
Зарегистрирован: 14 дек 2008, 16:09
Проекты: 2
Репутация: 24
Откуда: Москва

Re: Обработка объемных растров: ошибка

Сообщение Evgenia » 26 мар 2011, 01:58

Я уменьшила растр, как смогла, не меняя разрешения (обрезала по ненужным значениям). Сейчас он "весит" порядка 600мб. ОС у меня Win7 (на висте тоже самое). Модуль r.lake (to amuriy: из соседнего форума :wink: ) выдает такую ошибку: ERROR: G_calloc: unable to allocate 16743 * 4 bytes at main.c:284

Данные для справки:
g.region -p
projection: 99 (Equal Area Cylindrical)
zone: 0
datum: ** unknown (default: WGS84) **
ellipsoid: a=6371228 es=0
north: 5834755.84260072
south: 4362780.86794031
west: 4261448.0521709
east: 5564121.39646707
nsres: 77.80405807
ewres: 77.80405807
rows: 18919
cols: 16743
cells: 316760817

r.info
Type of Map: raster Number of Categories: 50 |
| Data Type: CELL |
| Rows: 18919 |
| Columns: 16743 |
| Total Cells: 316760817 |
| Projection: Equal Area Cylindrical |
| N: 5834755.84260072 S: 4362780.86794031 Res: 77.80405807 |
| E: 5564121.39646707 W: 4261448.0521709 Res: 77.80405807 |
| Range of data: min = -1046 max = 50 |
| |
| Data Description: |
| generated by r.in.gdal

Версию не хочет выдавать..ругается. вот так: "g.version" ­Ґ пў«пҐвбп ў­гв७­Ґ© Ё«Ё ў­Ґи­Ґ©
Є®¬ ­¤®©, ЁбЇ®«­пҐ¬®© Їа®Ја ¬¬®© Ё«Ё Ї ЄҐв­л¬ д ©«®¬.
Но вообще версия 6.4.1

Да, при изменении разрешения для региона (грубее в 4раза, например) все работает...

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Обработка объемных растров: ошибка

Сообщение Александр Мурый » 26 мар 2011, 11:17

К сожалению, диагноз неутешителен. Читаем в мануале к r.lake:
# The entire map is loaded into RAM.
# The module is NOT large file safe. (due to the previous point)
Значит, надо либо порезать растр на несколько частей, на их основе создать несколько наборов и считать в каждом отдельно, либо, действительно, уменьшать разрешение. Либо найти машину помощнее с памятью 4Гб и выше (с соотв-й 64-битной системой).
Редактор материалов, модератор форума

Evgenia
Активный участник
Сообщения: 182
Зарегистрирован: 14 дек 2008, 16:09
Проекты: 2
Репутация: 24
Откуда: Москва

Re: Обработка объемных растров: ошибка

Сообщение Evgenia » 28 мар 2011, 00:02

Да, я тоже это читала, но все еще надеялась на чудо..=) Спасибо вам большое. Чудеса, видно, надо делать самим - доставить памяти и установить 64-битную систему)

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Статьи: 18
Проекты: 4
Репутация: 122
Откуда: Казань

Re: Обработка объемных растров: ошибка

Сообщение KolesovDmitry » 28 мар 2011, 07:45

Evgenia писал(а):Да, я тоже это читала, но все еще надеялась на чудо..=) Спасибо вам большое. Чудеса, видно, надо делать самим - доставить памяти и установить 64-битную систему)
Может, чем устанавливать новую систему, попытаться работать не со всем растром, а использовать g.region для разбиения большой карты на несколько подчастей и с каждой из них работать в отдельности? А потом склеить полученные результаты обратно в большой растр?

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

Ответить

Вернуться в «GRASS»

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

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