Страница 1 из 1
					
				Обработка объемных растров: ошибка
				Добавлено: 25 мар 2011, 02:26
				 Evgenia
				Пытаюсь обработать растр..довольно объемный. Выдает ошибку: ERROR: G_malloc: unable to allocate 99020 bytes at main.c:283. GRASS 6.4.1. Как с этим справится?
			 
			
					
				Re: Обработка объемных растров: ошибка
				Добавлено: 25 мар 2011, 12:09
				 Александр Мурый
				Похоже, что GRASS не хватает системной памяти для обработки. Только вот цифры какие-то странные -- 99020 байт.
Обычно может не хватать памяти при размерах больше 2Gb на 32-битных системах (это в Windows, в Linux работает при 2 гигах нормально, используя своп). 
Пожалуйста, приложите вывод команд (если это не секрет), с ними будет гораздо проще разобраться:
g.version -b
g.region -p
r.info ваш_тяжёлый_растр
И ещё (главное!) --  какой модуль выдаёт ошибку?
			 
			
					
				Re: Обработка объемных растров: ошибка
				Добавлено: 26 мар 2011, 01:58
				 Evgenia
				Я уменьшила растр, как смогла, не меняя разрешения (обрезала по ненужным значениям). Сейчас он "весит" порядка 600мб. ОС у меня Win7 (на висте тоже самое). Модуль  r.lake (to amuriy: из соседнего форума 

 ) выдает такую ошибку: 
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раза, например) все работает...
 
			
					
				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-битной системой).
 
			
					
				Re: Обработка объемных растров: ошибка
				Добавлено: 28 мар 2011, 00:02
				 Evgenia
				Да, я тоже это читала, но все еще надеялась на чудо..=) Спасибо вам большое. Чудеса, видно, надо делать самим - доставить памяти и установить 64-битную систему)
			 
			
					
				Re: Обработка объемных растров: ошибка
				Добавлено: 28 мар 2011, 07:45
				 KolesovDmitry
				Evgenia писал(а):Да, я тоже это читала, но все еще надеялась на чудо..=) Спасибо вам большое. Чудеса, видно, надо делать самим - доставить памяти и установить 64-битную систему)
Может, чем устанавливать новую систему, попытаться работать не со всем растром, а использовать g.region для разбиения большой карты на несколько подчастей и с каждой из них работать в отдельности? А потом склеить полученные результаты обратно в большой растр?
(В общем-то это стандартный подход, ведь всегда есть задачи, для которых не хватает ресурсов).