Size: 5987
Comment:
|
Size: 3681
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
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 |
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) |
Line 14: | Line 14: |
import string | from read_icesat import * from coord_transform import * from scipy import * |
Line 16: | Line 18: |
def fit_freeboard_ASAR(filename1,filename2,resolution): """filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution""" |
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)]""" |
Line 20: | Line 25: |
lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4=read_asar_corners(filename1) ASAR_1=[lat1,lon1] ASAR_2=[lat2,lon2] ASAR_3=[lat3,lon3] ASAR_4=[lat4,lon4] |
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) |
Line 27: | Line 30: |
ASAR_1p=mapll(ASAR_1[0],ASAR_1[1],sgn) #computing polarstereographic coordinates ASAR_2p=mapll(ASAR_2[0],ASAR_2[1],sgn) ASAR_3p=mapll(ASAR_3[0],ASAR_3[1],sgn) ASAR_4p=mapll(ASAR_4[0],ASAR_4[1],sgn) |
A=coord_transformation(ASAR_p) |
Line 32: | Line 32: |
X=int(abs(ASAR_2p[0]-ASAR_1p[0])/resolution) #image size in pixel Y=int(abs(ASAR_4p[1]-ASAR_1p[1])/resolution) # polarstereographic coordinate system y00,x00,y01,x01,y02,x02,y03,x03=int(ASAR_1p[1]),int(ASAR_1p[0]),int(ASAR_4p[1]),int(ASAR_4p[0]),int(ASAR_3p[1]),int(ASAR_3p[0]),int(ASAR_2p[1]),int(ASAR_2p[0]) # 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 lon=[] lat=[] fbh=[] datei = open (filename2, 'r') line=datei.readline() k=-1 while line!="": k=k+1 data=string.split(line) lon.append(float(data[0])) lat.append(abs(float(data[1]))) fbh.append(float(data[2])) line=datei.readline() polar=mapll(array(lat),array(lon),sgn) |
# reading freeboard data and computing geographic into polarstereographic coordinates ICESAT_p,fbh=read_icesat(filename2,sgn) #fbh are measured freeboard heights in cm |
Line 68: | Line 38: |
for x,y in zip(polar[0],polar[1]): | for x,y in zip(ICESAT_p[0],ICESAT_p[1]): |
Line 71: | Line 41: |
# cutting off non-corresponding data values |
# cutting off non-corresponding data values |
Line 90: | Line 60: |
return x_y_fbh | return x_y_fbh |
Line 94: | Line 63: |
Die benötigten Module polar_projection.py und read_asar.py sind auf der Seite der Arbeitsgruppe 0 [[AG0_ASAR_Einlesen]] zu finden. | '''coord_transform.py''' {{{#!python from Numeric import * import LinearAlgebra as la |
Line 96: | Line 68: |
'''fbh_bildkoordinaten_test.py''' {{{#!python from polar_projection import * from read_asar import * import string def fit_freeboard_ASAR(filename1,filename2,resolution): """filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution""" sgn=-1 #Antarctica lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4=read_asar_corners(filename1) ASAR_1=[lat1,lon1] ASAR_2=[lat2,lon2] ASAR_3=[lat3,lon3] ASAR_4=[lat4,lon4] ASAR_1p=mapll(ASAR_1[0],ASAR_1[1],sgn) #computing polarstereographic coordinates ASAR_2p=mapll(ASAR_2[0],ASAR_2[1],sgn) ASAR_3p=mapll(ASAR_3[0],ASAR_3[1],sgn) ASAR_4p=mapll(ASAR_4[0],ASAR_4[1],sgn) X=int(abs(ASAR_2p[0]-ASAR_1p[0])/resolution) #image size in pixel Y=int(abs(ASAR_4p[1]-ASAR_1p[1])/resolution) |
def coord_transformation(ASAR_p): |
Line 123: | Line 70: |
y00,x00,y01,x01,y02,x02,y03,x03=int(ASAR_1p[1]),int(ASAR_1p[0]),int(ASAR_4p[1]),int(ASAR_4p[0]),int(ASAR_3p[1]),int(ASAR_3p[0]),int(ASAR_2p[1]),int(ASAR_2p[0]) | 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]) |
Line 132: | Line 79: |
Faktor2=inverse(dot(P0,transpose(P0))) A=dot(Faktor1,Faktor2) # Transformation matrix |
Faktor2=la.inverse(dot(P0,transpose(P0))) A=dot(Faktor1,Faktor2) # Transformation matrix return A }}} |
Line 135: | Line 84: |
# reading freeboard data lon=[] lat=[] fbh=[] datei = open (filename2, 'r') line=datei.readline() k=-1 while line!="": k=k+1 data=string.split(line) lon.append(float(data[0])) lat.append(abs(float(data[1]))) fbh.append(float(data[2])) line=datei.readline() |
|
Line 150: | Line 85: |
polar=mapll(array(lat),array(lon),sgn) | '''read_icesat.py''' |
Line 152: | Line 87: |
# calculating new coordinates for freeboard data x_neu=[] y_neu=[] for x,y in zip(polar[0],polar[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 159: | Line 88: |
# 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) |
{{{#!python import string from polar_projection import * from scipy import io |
Line 167: | Line 93: |
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]) |
def read_icesat(filename,sgn): data=io.read_array(filename) polar=mapll(data[:,1],data[:,0],sgn) fbh=data[:,2] return polar,fbh }}} |
Line 175: | Line 100: |
x_y_fbh=array([x_bild,y_bild,fbh_bild]) | Die benötigten Module polar_projection.py und read_asar.py sind auf der Seite der Arbeitsgruppe 0 [[AG0_ASAR_Einlesen]] zu finden. |
Line 177: | Line 102: |
return x_y_fbh | '''fbh_bildkoordinaten_test.py''' |
Line 179: | Line 104: |
Zum Testen hängt man an das obige Programm folgende Zeilen an: {{{#!python |
|
Line 181: | Line 108: |
resolution=0.025 ergebnis=fit_freeboard_ASAR(filename1,filename2,resolution) |
ergebnis=fit_freeboard_ASAR(filename1,filename2) |
Line 184: | Line 110: |
{{attachment:schemabild.jpg}} {{attachment.schemabild2.jpg}} |
Die Besprechung ueber das Vorgehen ihrer Aufgaben ergab:
- 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)
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 # cutting off non-corresponding data values
32 m=-1
33 index_vec=[]
34 for xn,yn in zip(x_neu,y_neu):
35 m=m+1
36 if xn<=1. and xn >=0. and yn<=1. and yn >=0.:
37 index_vec.append(m)
38
39 x_bild=[]
40 y_bild=[]
41 fbh_bild=[]
42 for i in index_vec:
43 x_bild.append(x_neu[i])
44 y_bild.append(y_neu[i])
45 fbh_bild.append(fbh[i])
46
47 x_y_fbh=array([x_bild,y_bild,fbh_bild])
48
49 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: