Нефть и песок О стали Компрессор - подбор и ошибки Из истории стандартизации резьб Соперник ксерокса - гектограф Новые технологии производства стали Экспорт проволоки из России Прогрессивная технологическая оснастка Цитадель сварки с полувековой историей Упрочнение пружин Способы обогрева Назначение, структура, характеристики анализаторов Промышленные пылесосы Штампованные гайки из пружинной стали Консервация САУ Стандарты и качество Технология производства Водород Выбор материала для крепежных деталей Токарный резец в миниатюре Производство проволоки Адгезия резины к металлокорду Электролитическое фосфатирование проволоки Восстановление корпусных деталей двигателей Новая бескислотная технология производства проката Синие кристаллы Автоклав Нормирование шумов связи Газосварочный аппарат для тугоплавких припоев
Главная --> Промиздат -->  Map principle 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 ( 87 ) 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

MAP=$1

r.stats -1 $MAP I awk BEGIN {sum = 0.0 ; sum2 = 0.0) NR == Ifmin = $2 ; max = $1}

{sum += $1 ; sum2 += $1 * $1 ; N++)

if ($1 > max) {max = $1) if ($1 < min) {min = $1}

END{

print Number of raster data samples N = ,N print Minimum value MIN = ,min print Maximum value MAX = ,max

print Variation v = , (max - ((min * -1) * -1))

print Mean MEAN = ,sum / N

print Variance S2 = , (sum2 - sum * sum / N) / N

print Standard deviation S = , sqrt ( (sum2 - sum * sum/N) / N) print Variation coeffic. V = , 100*(sqrt((sum2 - sum*sum/N)/N)) \ /(sum/N)

This script must be used from inside GRASS. The name of the input raster map is specified as a parameter. Within this script the output of the GRASS module r.stats is piped to the program awk. The statistical calculations are done within awk, and the results are printed out. A modified version of the above script, r.univar, is provided with GRASS.

The next script example calculates the center of gravity of an area (area centroid). You can use it to find the center of gravity of a region defined by a watershed boundary. The script requires a watershed map generated by r.watershed. Internally, all basins except the watershed of interest are masked out with r.mask. You can save the following script as a text file r.centroid:

§!/bin/sh

# This pmgram is Free Software under the GNU GPL (>=v2).

# Calculate centroid of raster area (center of gravity) #

Parser definitions: Module

#% description: Calculates centroid of raster area (center of gravity)

#%End

#%option

#% key: map

#% type: string

#% gisprompt: old,cell,raster

#% description: raster input map



#% required: yes

mend

#%option

#% key: areanumber #% type: integer

#% description: number of area for centroid calculation

#% required: yes

nend




exit 1

# determine current resolution and LOCATION units: EWRES=awk /е-w/ { print $3) $L0CAT10N/W1ND NSRES=awk /п-s/ { print $3) $L0CATI0N/W1ND if [ -f $LOCATION/. ./PERMANENT/PROJ.UNITS ] ; then

UNITS=cat $L0CATI0N/.7PERMANENT/PR0J-UNITS \ awk /units:/ {print $2}

else

UNITS= cellunits

echo Area of basin $AREANO: SAREA meters~2

echo Current cell resol. [$UNITS]: EW: $EWRES, NS: $NSRES

it set MASK to get only selected area: g.rename rast=MASK,$TMP.MASK 2> /dev/null r.mapcalc MASK= if ($MAP == $AREANO) echo Showing selected area. . . d.rast $MAP

echo Calculating x min and x min of area. . . calculate x-min

XMIN=r.stats -Ignq $MAP cut ~d -fl awk BEGlN{min = 0.0} NR == l{min = $1)

{if ($1 < min) {min = $1}} END{print min)

icalculate yjnin

YMIN=r.stats -1gnq $MAP (cut -d -f2 awk BEGiN{min = 0.01 NR == Kmin = $1}

{if ($1 < min) {min = $1}} END{print min}

echo Calculating centroid. . .

# calculate xjc:

r.stats -Ignq $MAP cut -d -fl awk BEGIN{ sum = 0.0 ; calc = 0.0 ; xmin2 = 0.0 ewres = $EWRES ; nsres = $NSRES xmin = $XMIN ; area = $AREA} NR == l{xmin2 = xmin * 1.0)

{calc = ($1 - xmin2) * ewres * nsres} { sum = sum + calc} END{printf Center of gravity x c: %.2f\n , sum/area + xmin2}

# calculate yc:

r.stats -1gnq $MAP cut -d -f2 awk BEGIN{ sum = 0.0 ; calc = 0.0 ; ymin2 = 0.0



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 ( 87 ) 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127