Для анализа зачастую требуется получить набор точек, случайно (с равномерным распределением) расположенных на некоторой территории, и, после после, заполнить таблицу атрибутов некоторыми значениями, считанными с карты.
1) Генерируем 1000 точек (создастся слой pnts)
Код: Выделить всё
GRASS> v.random out=pnts n=1000
Код: Выделить всё
GRASS> v.db.addtable map=pnts columns="flamo INT,x INT,y INT"
Допустим, у нас есть слой fires с полигонами и с каждым полигоном связана запись из атрибутивной таблицы. Среди ее полей есть поле с названием YEAR. Пусть для всех точек, которые попадают в полигоны поле flamo должно содержать соотв. значение YEAR. Если точка не попала в полигон, то пусть flamo будет равно -1.
Далее. Пусть у нас есть два растра slope.1 и slope.2. В поле x атрибутов точек положим значение ячейки растра slope.1, в которую попадает точка. В поле y - значения из растра slope.2.
3) Считываем данные с растров:
Код: Выделить всё
GRASS> v.what.rast vect=pnts rast=slope.1 col=x
GRASS> v.what.rast vect=pnts rast=slope.2 col=y
Код: Выделить всё
GRASS> v.db.select pnts
- cat|flamo|x|y
1||-11|-42
2||17|-14
... ... ...
23||2|-43
... ... ...
[/i]
4) Считываем данные с вектора:
Код: Выделить всё
GRASS> v.what.vect vector=pnts column=flamo qvector=fires qcolumn=YEAR
Код: Выделить всё
GRASS> v.db.select pnts
- cat|flamo|x|y
1||-11|-42
2||17|-14
... ... ...
23|2007|2|-43
... ... ...
Заносим значения -1 в те точки, в которых поле flamo осталось пустым:
Код: Выделить всё
GRASS> echo "UPDATE pnts SET flamo=-1 WHERE flamo is null" | db.execute
Код: Выделить всё
GRASS> v.db.select pnts
- cat|flamo|x|y
1|-1|-11|-42
2|-1|17|-14
... ... ...
23|2007|2|-43
... ... ...
[/i]
См.
v.random
v.db.addtable
v.what.rast
v.what.vect
v.db.select
db.execute