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