Importing image in Grass
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
Интерфейс wxGUI исп-ть я пока не рекомендовал бы (он на ранней стадии разработки, очень сырой), лучше уж Tcl/Tk, а идеально --- старые-добрые "графические мониторы" (d.mon).
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 03 ноя 2011, 04:51
- Репутация: 0
Re: Importing image in Grass
Я всё сделала как вы сказали и у меня всё получилось... за что вам очень благодарна !!! теперь как мне сделать какое нибудь действие с этой картиной??? самое примитивное...
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
Часто после импорта растра (например, JPG) в наборе получаются растры типа raster.red, raster.green, raster.blue. Для отображения на экране полноцветного растра в RGB можно исп-ть модуль d.rgb, либо сделать композитный растр с помощью r.composite и иметь дело уже с ним.
Код: Выделить всё
GRASS 6.4.2svn (globe_east):~ > g.list rast
----------------------------------------------
raster files available in mapset <PERMANENT>:
globe_east.blue globe_east.green globe_east.red
Код: Выделить всё
d.mon x0
d.rgb r=globe_east.red g=globe_east.green b=globe_east.blue
Код: Выделить всё
r.composite r=globe_east.red g=globe_east.green b=globe_east.blue out=globe_east.rgb
Код: Выделить всё
GRASS 6.4.2svn (globe_east):~ > r.info globe_east.rgb
+----------------------------------------------------------------------------+
| Layer: globe_east.rgb Date: Sun Nov 13 09:25:56 2011 |
| Mapset: PERMANENT Login of Creator: user |
| Location: globe_east |
| DataBase: /home/user/Work/grassdata |
| Title: ( globe_east.rgb ) |
| Timestamp: none |
|----------------------------------------------------------------------------|
| |
| Type of Map: raster Number of Categories: 32767 |
| Data Type: CELL |
| Rows: 2048 |
| Columns: 2048 |
| Total Cells: 4194304 |
| Projection: x,y |
| N: 2048 S: 0 Res: 1 |
| E: 2048 W: 0 Res: 1 |
| Range of data: min = 0 max = 32767 |
| |
| Data Description: |
| generated by r.composite |
| |
| Comments: |
| r.composite red="globe_east.red" green="globe_east.green" blue="glob\ |
| e_east.blue" levels=32 output="globe_east.rgb" |
| |
+----------------------------------------------------------------------------+
Код: Выделить всё
d.erase
d.rast globe_east.rgb
Код: Выделить всё
d.what.rast
Чтобы вывести на экран одну Землю, укажем, какие именно значения растра надо показать.
Сначала посмотрим, как распределяются значения (r.describe):
Код: Выделить всё
GRASS 6.4.2svn (globe_east):~ > r.describe -r globe_east.rgb --q
0
32 thru 32767
Очистим экран и выведем RGB-растр с выбором значений от 32 до 32767:
Код: Выделить всё
d.erase
d.rast globe_east.rgb catlist=32-32767
Код: Выделить всё
r.null globe_east.rgb setnull=0
Теперь чёрное окружение не будет выводиться даже при простом отображении растра (d.rast globe_east.rgb)
Далее оцифруем векторный полигон и сделаем по нему растровую маску (маска используется для того, чтобы все действия с растром производились только в её пределах):
-- Создадим произвольный векторный полигон (v.digit):
Код: Выделить всё
v.digit -n mask bgcmd="d.rast globe_east.rgb"
*** Продолжение в след. сообщении ***
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
-- Выведем созданный полигон <mask> на экран:
Код: Выделить всё
d.vect mask
Код: Выделить всё
v.to.rast in=mask out=mask use=cat
Код: Выделить всё
d.rast -o mask
Код: Выделить всё
GRASS 6.4.2svn (globe_east):~/Work/grassdata/globe_east > r.mask in=mask
[Raster MASK present]
-- Теперь очистим экран и попробуем снова вывести на экран растр <globe_east.rgb>. Увидим, что растр как бы "обрезан" по оцифрованной нами границе: -- Чтобы увеличить до "обрезанного" участка, нужно задать текущий регион по этому же растру (globe_east.rgb), но с учётом маски и только ненулевых значений (в общем, увеличить до отображаемых сейчас данных) [модуль g.region, опция "zoom"]:
Код: Выделить всё
g.region rast=globe_east.rgb zoom=globe_east.rgb -p
Код: Выделить всё
d.zoom -f
*** Продолжение в след. сообщении ***
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
-- Чтобы из растра <globe_east.rgb> создать новый, обрезанный по границе, применим растровую алгебру -- модуль r.mapcalc:
Код: Выделить всё
r.mapcalc "globe_east_cut = globe_east.rgb"
-- Создадим текстовый файл "rules.txt" и впишем туда:
Код: Выделить всё
0 black
32767 white
-- Теперь изменим цвета растра с помощью модуля r.colors:
Код: Выделить всё
r.colors map=globe_east.rgb color=rules rules=rules.txt
Код: Выделить всё
r.rescale input=globe_east_cut from=167,32767 output=globe_east_cut.255 to=0,255
-- Удалим растровую маску:
Код: Выделить всё
r.mask -r
Код: Выделить всё
g.region rast=globe_east.rgb -p
-- Создадим растр со одним значением (пусть будет "1") на основе растра <globe_east.rgb> при его значениях "больше или равно 32", значения меньше 32 отнесём к NULL.
Код: Выделить всё
r.mapcalc "globe_mask = if(globe_east.rgb >= 32,1,null())"
Код: Выделить всё
r.to.vect -s in=globe_mask out=globe_mask feature=area
Код: Выделить всё
d.vect globe_mask type=boundary col=yellow width=3
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 03 ноя 2011, 04:51
- Репутация: 0
Re: Importing image in Grass
Пока всё не успела посмотреть... думаю вопросы обязательно возникнут...
теперь вопрос такой : сейчас когда включаю grass показывает вот это
Cleaning up temporary files ...
Starting GRASS ...
и не чего не могу делать, командной строки нет, что делать?
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
Надёжнее запускать через командную строку. Я почти всегда запускаю так:
Код: Выделить всё
LANG=en_US.UTF-8 grass642 -text ~/Work/grassdata/globe_east/PERMANENT/
LANG=en_US.UTF-8 --- прямое указание языка и локали;
grass642 -text --- запуск в текстовом режиме;
~/Work/grassdata/globe_east/PERMANENT/ --- полный(!) путь к каталогу данных / области / набору
Перед запуском постарайтесь выключить до этого все действующие процессы GRASS (дело в том, что грасс можно запускать сколько угодно раз, если НЕ в одном наборе, так что вполне реально запутаться).
На крайний случай сделайте скриншот с окном терминала и выложите здесь, а также напишите все ошибки.
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 03 ноя 2011, 04:51
- Репутация: 0
Re: Importing image in Grass
1. импортировала с помощью команды in.gdal изображение типа .tif , но как было в примере выше :
GRASS 6.4.2svn (globe_east):~ > g.list rast
----------------------------------------------
raster files available in mapset <PERMANENT>:
globe_east.blue globe_east.green globe_east.red
blue, green, red не было,a только: raster files available in mapset <PERMANENT>:
так и далжно быть? или может это потому, что всего один спектр мультиспектрального изображения???
2. Можно ли растрное изображение разделить на части (например на 2) и с каждым из них работать отдельно? (для вектрных, кажется это команда v.split , а для растрных не могу найти??)
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
Так у вас импортировался один растр или вообще ничего?
2. Вам хочется сделать новые растры из этих кусков? Или достаточно просто, чтобы все действия производились в пределах части изображения?
Если второе, надо просто задать текущий регион по границам нужного куска (g.region или вручную выделить "мышкой" d.zoom), можно также сохранить регион для быстрого доступа (g.region -s). ВСЕ растровые операции будут происходить только в пределах заданного текущего региона.
Если первое, после задания региона надо сделать:
Код: Выделить всё
r.mapcalc "raster_cut = raster"
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 03 ноя 2011, 04:51
- Репутация: 0
Re: Importing image in Grass
2. Моя задача разделить рисунок на части, и сделать какое- нибудь действие со всеми честями (может классификацию, если возможно ). Потом,то же самое действие сделать с целым рисунком, и посмотреть разницу (если она есть).
Я не знаю, можно ли это вообще сделать, или нужно васпользоваться GRID-ом!!!
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Importing image in Grass
Попробуйте сделать, как показано здесьRipsime писал(а):2. Моя задача разделить рисунок на части
Что вы имеете в виду под "воспользоваться GRID-ом"? Построить регулярную сетку, а затем вырезать по ней части растра?Ripsime писал(а):Я не знаю, можно ли это вообще сделать, или нужно васпользоваться GRID-ом!!!
По идее, надо написать небольшой shell-скрипт, типа того, какой написан здесь в конце страницы.
P.S. к себе, скорее: надо бы накатать небольшой аддон-скрипт для этой задачи, пригодится.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей