[ Pobierz całość w formacie PDF ]
zamienników w skali szarości albo do składników RGB.
wynik = #mapa
przekształca każdą wartość kategorii w mapie do wartości z zakresu 0-255, która
reprezentuje poziomy skali szarości oznaczających kolor dla kategorii. Jeśli mapa ma
tablicę kolorów w sklai szarości, wtedy jest z niej wyliczany poziom szarości. W
przeciwnym wypadku oblicza się tak:
.18 * red + .81 * green + .01 * blue
Operator # ma trzy inne postacie: r#mapa, g#mapa, b#mapa. Te polecenia wyodrębniają
odpowiednio składniki czerwony, zielony lub niebieski ze wskazanej mapy rastrowej.
Na przykład, aby wyodrębnić czerwony składnik z mapy i zapamiętać w nowej warstwie
o zakresie 0-255, użytkownik powinien podać:
czerwony = r#mapa
Aby przypisać tej mapie szare kolory:
r.colors map=red color=rules
black
white
Aby przypisać tej mapie czerwone kolory:
r.colors map=red color=rules
black
Paweł Netzel 57
GIS - GRASS - wprowadzenie do systemu
red
FUNKCJE
Aktualnie rozpoznawane funkcje są wypisane w tabeli poniżej. Typ wyniku jest
wskazywany w ostatniej kolumnie. F oznacza, że funkcja zawsze zwraca wynik jako
wartość typu zmiennoprzecinkowego, I oznacza, że funkcje dają wynik całkowity, a *
wskazuje że wynik jest typu zmiennoprzecinkowego, jeśli którykolwiek z argumentów
funkcji jest typu zmiennoprzecinkowego a typu całkowitego, jeśli wszystkie argumenty
są liczbami całkowitymi.
funkcja opis typ
abs(x) wartość bezwzględna z x *
atan(x) arcus tangens x (wynik w stopniach) F
cos(x) cosinus z x (x jest w stopniach) F
eval([x,y, ... ,] z) oblicza wartości podanych wyrażeń, wyniki wstawia *
do z
exp(x) e do potęgi x F
exp(x,y) x do potęgi y F
float(x) konwertuje x do zmiennej typu F
zmiennoprzecinkowego
opcje funkcji if *
if(x)
1 jeśli x`"0, 0 jeśli x=0
if(x,a)
a jeśli x`"0, 0 jeśli x=0
if(x,a,b)
a jeśli x`"0, b jeśli x=0
if(x,a,b,c) a jeśli x>0, b jeśli x=0, c jeśli x
int(x) przekształca x do zmiennej typu całkowitego (obcina I
część ułamkową)
log(x) logarytm naturalny z x F
log(x,b) logarytm z x przy podstawie b F
max (x, y[, z ...]) największa wartość z listy *
median (x, y[, z ...]) mediana elementów z listy *
min (x, y[, z ...]) najmniejsza wartość z listy *
rand(x,y) wartość losowa pomiędzy x i y *
round(x) liczba całkowita najbliższa x I
sin(x) sinus z x (x podany w stopniach) F
sqrt(x) pierwiastek kwadratowy z x F
tan(x) tangens z x (x podany w stopniach) F
WARTOZCI ZMIENNOPRZECINKOWE W WYRA%7łENIACH
Paweł Netzel 58
GIS - GRASS - wprowadzenie do systemu
Liczby typu zmiennoprzecinkowego są dozwolone w wyrażeniach. Liczba typu
zmiennoprzecinkowego jest to liczba, która zawiera kropkę dziesiętną:
2.3 12. .81
Wartości typu zmiennoprzecinkowego w wyrażeniach są obsługiwany w specjalny
sposób. Przy arytmetycznych lub logicznych operatorach, jeśli argument jest typu
zmiennoprzecinkowego, wtedy inne argumenty są konwertowane do tego typu i wynik
tej operacji jest także tego typu. To oznacza, w szczególności, że dzielenie wartości
całkowitych daje w wyniku wartość całkowita (przybliżoną), podczas gdy wynik
dzielenia liczb typu zmiennoprzecinkowego jest dokładną wartością. Funkcje z typem
wyniku * (tabela powyżej) dają w wyniku liczby typu zmiennoprzecinkowego, jeśli
jakikolwiek argument jest tego typu, w przeciwnym wypadku ich wynikiem jest liczba
całkowita.
PRZYKAADY
Aby obliczyć średnią z dwu warstw a i b mapy rastrowej należy podać:
ave = (a + b)/2
Zrednia ważona:
ave = (5*a + 3*b)/8.0
Aby otrzymać dwójkową reprezentacje warstwy mapy rastrowej taką, że kategoria 0
pozostaje kategorią 0 a wszystkie inne kategorie otrzymują 1 należy podać:
mask = a/a
Tu można by też zastosować:
mask = if (a)
Maskowanie warstwy b przez warstwę a:
result = if(a,b)
Paweł Netzel 59
GIS - GRASS - wprowadzenie do systemu
Do przedstawienia wartości NULL używaj funkcji isnull():
r.mapcalc b=isnull (a)
r.mapcalc b=if (isnull (a),1,0)
r.mapcalc b=if (isnull (a), null (), a) #nic nie zostanie zmodyfikowane
Aby otrzymać mapę typu zmiennoprzecinkowego z istniejącej mapy typu całkowitego:
test_fp=1.0*test_int
REGION/MASKA
Użytkownik musi być świadomy aktualnego regionu geograficznego i aktualnych
ustawień maski kiedy używa r.mapcalc. Wszystkie warstwy mapy rastrowej są czytane
do aktualnego regionu geograficznego przez aktualną maskę. Jeśli życzymy sobie
modyfikować istniejącą warstwę mapy rastrowej bez wklejania innych warstw, region
geograficzny powinien być tak ustawiany aby zgadzał się z nagłówkiem warstwy mapy
rastrowej. Przypuśćmy, że warstwa wysokości mapy rastrowej musi mieć każdą
kategorię zwiększoną o 10 m. Następujące wyrażenie jest poprawne i będzie pracować:
new_elevation = elevation +10
Ponieważ wartość 0 jest używana w systemie GRASS dla elementów, które nie istnieją,
nowa warstwa mapy rastrowej będzie zawierać wartość 10 w komórkach, które nie
istnieją w oryginalnej mapie. Stąd, jest ważne, aby granice regionu geograficznego
zgadzały się z nagłówkiem mapy.
Jednak jeśli jest ustawiona maska, wynikowa warstwa mapy rastrowej jest maskowana
podczas zapisu, tzn. wartość 0 kategorii w masce wymusza wartość 0 na wyjściu.
Uwagi
Paweł Netzel 60
GIS - GRASS - wprowadzenie do systemu
Należy wyjątkowo uważać przy podawaniu wyrażeń w linii komend. Niektóre znaki
mają w systemie UNIX specjalne znaczenie. Są to:
* ( ) > & /
Należy brać wyrażenia w cudzysłów. Tj.
result = elevation * 2
[ Pobierz całość w formacie PDF ]