Size: 5618
Comment:
|
Size: 3685
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Die Besprechung ueber das Vorgehen ihrer Aufgaben ergab: | === Arbeitsgruppe 1: Freibord === Die Aufgabe der Arbeitsgruppe bestand darin, die I |
Line 3: | Line 5: |
die Transformation in polarstereographische Koordinaten und der nachfolgende Uebergang zu den Bildpunkten von ASAR Eckpunkte und Aufloseung des ASAR-Bildes variieren frei -> allgemeingueltiges Programm fuer den Uebergang der Output erfolgt als Vektor in der Form x, y, Freiboardhoehe; eventuell die Floatangabe |
die Transformation in polarstereographische Koordinaten und der nachfolgende Uebergang zu den Bildpunkten von ASAR Eckpunkten und Aufloseung des ASAR-Bildes variieren frei -> allgemeingueltiges Programm fuer den Uebergang des Outputs erfolgt als Vektor in der Form x, y, Freiboardhoehe(fbh) '''Daten''' |
Line 7: | Line 11: |
Der Gruppe stand ein ASAR-Satellitenbild zur Verfügung, das ein Auschnitt des Weddellmeeres zeigt und ein ICESat-Datensatz, der die geographischen Positionen (lon, lat) und die an diesen Punkten gemessene Freibordhoehe (cm) für einen Ueberflug quer durch den ASAR-Ausschnitt beinhaltet. {{attachment:schemabild.jpg}} '''Methodik''' (Arbeitsschritten, Theorie, Input/Output) '''Ergebnisse''' (Output, Statistik) '''Diskussion''' |
|
Line 15: | Line 33: |
from LinearAlgebra import * from Numeric import * |
from coord_transform import * from scipy import * |
Line 29: | Line 47: |
A=coord_transformation(ASAR_p) # reading freeboard data and computing geographic into polarstereographic coordinates ICESAT_p,fbh=read_icesat(filename2,sgn) #fbh are measured freeboard heights in cm # calculating new coordinates for freeboard data x_neu=[] y_neu=[] for x,y in zip(ICESAT_p[0],ICESAT_p[1]): x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2]) y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2]) |
|
Line 30: | Line 60: |
for i in index_vec: x_bild.append(x_neu[i]) y_bild.append(y_neu[i]) fbh_bild.append(fbh[i]) x_y_fbh=array([x_bild,y_bild,fbh_bild]) return x_y_fbh }}} '''coord_transform.py''' {{{#!python from Numeric import * import LinearAlgebra as la def coord_transformation(ASAR_p): |
|
Line 40: | Line 86: |
Faktor2=inverse(dot(P0,transpose(P0))) A=dot(Faktor1,Faktor2) # Transformation matrix # reading freeboard data and computing geographic into polarstereographic coordinates ICESAT_p,fbh=read_icesat(filename2,sgn) # calculating new coordinates for freeboard data x_neu=[] y_neu=[] for x,y in zip(ICESAT_p[0],ICESAT_p[1]): x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2]) y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2]) # cutting off non-corresponding data values m=-1 index_vec=[] for xn,yn in zip(x_neu,y_neu): m=m+1 if xn<=1. and xn >=0. and yn<=1. and yn >=0.: index_vec.append(m) x_bild=[] y_bild=[] fbh_bild=[] for i in index_vec: x_bild.append(x_neu[i]) y_bild.append(y_neu[i]) fbh_bild.append(fbh[i]) x_y_fbh=array([x_bild,y_bild,fbh_bild]) return x_y_fbh |
Faktor2=la.inverse(dot(P0,transpose(P0))) A=dot(Faktor1,Faktor2) # Transformation matrix return A |
Line 74: | Line 91: |
{{{#!python import string from geo_polar import * from scipy import io |
|
Line 79: | Line 92: |
def read_icesat(filename,sgn): data=io.read_array(filename) polar=mapll(data[:,1],data[:,0],sgn) fbh=data[:,2] return polar,fbh |
'''read_icesat.py''' |
Line 90: | Line 100: |
Zum Testen hängt man an das obige Programm folgende Zeilen an: | |
Line 91: | Line 102: |
from polar_projection import * from read_asar import * from read_icesat import * from LinearAlgebra import * from Numeric import * def fit_freeboard_ASAR(filename1,filename2): """filename1: ASAR data file, filename2: freeboard data file creates new coordinate system defined by corners of ASAR image and selects freeboard values within ASAR image box returns an array containing normalized image coordinates and corresponding freeboard values: [x_coordinate, y_coordinate, freeboardheight(cm)]""" sgn=-1 #Antarctica ASAR=array(read_asar_corners(filename1)) ASAR_p=zeros(8) for k in arange(0,7,2): #computing polarstereographic coordinates ASAR_p[k:k+2]=mapll(ASAR[k],ASAR[k+1],sgn) # polarstereographic coordinate system y00,x00,y01,x01,y02,x02,y03,x03=int(ASAR_p[1]),int(ASAR_p[0]),int(ASAR_p[7]),int(ASAR_p[6]),int(ASAR_p[5]),int(ASAR_p[4]),int(ASAR_p[3]),int(ASAR_p[2]) # new coordinate system with normalized coordinates y10,x10,y11,x11,y12,x12,y13,x13=0,0,1,0,1,1,0,1 # calculating transformation matrix: P0=array([[x00, x01, x02, x03],[y00,y01,y02,y03],[1.0,1.0,1.0,1.0]]) P1=array([[x10, x11, x12, x13],[y10,y11,y12,y13],[1.0,1.0,1.0,1.0]]) Faktor1=dot(P1,transpose(P0)) Faktor2=inverse(dot(P0,transpose(P0))) A=dot(Faktor1,Faktor2) # Transformation matrix # reading freeboard data and computing geographic into polarstereographic coordinates ICESAT_p,fbh=read_icesat(filename2,sgn) # calculating new coordinates for freeboard data x_neu=[] y_neu=[] for x,y in zip(ICESAT_p[0],ICESAT_p[1]): x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2]) y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2]) # cutting off non-corresponding data values m=-1 index_vec=[] for xn,yn in zip(x_neu,y_neu): m=m+1 if xn<=1. and xn >=0. and yn<=1. and yn >=0.: index_vec.append(m) x_bild=[] y_bild=[] fbh_bild=[] for i in index_vec: x_bild.append(x_neu[i]) y_bild.append(y_neu[i]) fbh_bild.append(fbh[i]) x_y_fbh=array([x_bild,y_bild,fbh_bild]) return x_y_fbh |
|
Line 158: | Line 108: |
{{attachment.schemabild2.jpg}} |
Arbeitsgruppe 1: Freibord
Die Aufgabe der Arbeitsgruppe bestand darin, die I
die Transformation in polarstereographische Koordinaten und der nachfolgende Uebergang zu den Bildpunkten von ASAR
Eckpunkten und Aufloseung des ASAR-Bildes variieren frei -> allgemeingueltiges Programm fuer den Uebergang des Outputs erfolgt als Vektor in der Form x, y, Freiboardhoehe(fbh)
Daten
Der Gruppe stand ein ASAR-Satellitenbild zur Verfügung, das ein Auschnitt des Weddellmeeres zeigt und ein ICESat-Datensatz, der die geographischen Positionen (lon, lat) und die an diesen Punkten gemessene Freibordhoehe (cm) für einen Ueberflug quer durch den ASAR-Ausschnitt beinhaltet.
Methodik
(Arbeitsschritten, Theorie, Input/Output)
Ergebnisse
(Output, Statistik)
Diskussion
fbh_bildkoordinaten.py
1 from polar_projection import *
2 from read_asar import *
3 from read_icesat import *
4 from coord_transform import *
5 from scipy import *
6
7 def fit_freeboard_ASAR(filename1,filename2):
8 """filename1: ASAR data file, filename2: freeboard data file
9 creates new coordinate system defined by corners of ASAR image and selects freeboard values within ASAR image box
10 returns an array containing normalized image coordinates and corresponding freeboard values:
11 [x_coordinate, y_coordinate, freeboardheight(cm)]"""
12
13 sgn=-1 #Antarctica
14 ASAR=array(read_asar_corners(filename1))
15 ASAR_p=zeros(8)
16 for k in arange(0,7,2): #computing polarstereographic coordinates
17 ASAR_p[k:k+2]=mapll(ASAR[k],ASAR[k+1],sgn)
18
19 A=coord_transformation(ASAR_p)
20
21 # reading freeboard data and computing geographic into polarstereographic coordinates
22 ICESAT_p,fbh=read_icesat(filename2,sgn) #fbh are measured freeboard heights in cm
23
24 # calculating new coordinates for freeboard data
25 x_neu=[]
26 y_neu=[]
27 for x,y in zip(ICESAT_p[0],ICESAT_p[1]):
28 x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2])
29 y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2])
30
31 for i in index_vec:
32 x_bild.append(x_neu[i])
33 y_bild.append(y_neu[i])
34 fbh_bild.append(fbh[i])
35
36 x_y_fbh=array([x_bild,y_bild,fbh_bild])
37
38 return x_y_fbh
coord_transform.py
1 from Numeric import *
2 import LinearAlgebra as la
3
4 def coord_transformation(ASAR_p):
5 # polarstereographic coordinate system
6 y00,x00,y01,x01,y02,x02,y03,x03=int(ASAR_p[1]),int(ASAR_p[0]),int(ASAR_p[7]),int(ASAR_p[6]),int(ASAR_p[5]),int(ASAR_p[4]),int(ASAR_p[3]),int(ASAR_p[2])
7 # new coordinate system with normalized coordinates
8 y10,x10,y11,x11,y12,x12,y13,x13=0,0,1,0,1,1,0,1
9
10 # calculating transformation matrix:
11 P0=array([[x00, x01, x02, x03],[y00,y01,y02,y03],[1.0,1.0,1.0,1.0]])
12 P1=array([[x10, x11, x12, x13],[y10,y11,y12,y13],[1.0,1.0,1.0,1.0]])
13
14 Faktor1=dot(P1,transpose(P0))
15 Faktor2=la.inverse(dot(P0,transpose(P0)))
16 A=dot(Faktor1,Faktor2) # Transformation matrix
17 return A
read_icesat.py
}}}
Die benötigten Module polar_projection.py und read_asar.py sind auf der Seite der Arbeitsgruppe 0 AG0_ASAR_Einlesen zu finden.
fbh_bildkoordinaten_test.py
Zum Testen hängt man an das obige Programm folgende Zeilen an: