Size: 3116
Comment:
|
Size: 6549
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 17: | Line 17: |
"""filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution""" | """filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution 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 94: | Line 97: |
Die benötigten Module polar_projection.py und read_asar.py sind auf der Seite zu finden. | 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''' {{{#!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 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 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) # 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) # 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]) # 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 filename1='ASA_IMP_1PNDPA20060617_043346_000000162048_00362_22460_2136.N1' filename2='LonLatFre_1706_6.xyz' resolution=0.025 ergebnis=fit_freeboard_ASAR(filename1,filename2,resolution) }}} |
Die Besprechung ueber das Vorgehen ihrer Aufgaben ergab:
- 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
fbh_bildkoordinaten.py
1 from polar_projection import *
2 from read_asar import *
3 import string
4
5 def fit_freeboard_ASAR(filename1,filename2,resolution):
6 """filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution
7 creates new coordinate system defined by corners of ASAR image and selects freeboard values within ASAR image box
8 returns an array containing normalized image coordinates and corresponding freeboard values:
9 [x_coordinate, y_coordinate, freeboardheight(cm)]"""
10
11 sgn=-1 #Antarctica
12 lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4=read_asar_corners(filename1)
13
14 ASAR_1=[lat1,lon1]
15 ASAR_2=[lat2,lon2]
16 ASAR_3=[lat3,lon3]
17 ASAR_4=[lat4,lon4]
18
19 ASAR_1p=mapll(ASAR_1[0],ASAR_1[1],sgn) #computing polarstereographic coordinates
20 ASAR_2p=mapll(ASAR_2[0],ASAR_2[1],sgn)
21 ASAR_3p=mapll(ASAR_3[0],ASAR_3[1],sgn)
22 ASAR_4p=mapll(ASAR_4[0],ASAR_4[1],sgn)
23
24 X=int(abs(ASAR_2p[0]-ASAR_1p[0])/resolution) #image size in pixel
25 Y=int(abs(ASAR_4p[1]-ASAR_1p[1])/resolution)
26
27 # polarstereographic coordinate system
28 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])
29 # new coordinate system with normalized coordinates
30 y10,x10,y11,x11,y12,x12,y13,x13=0,0,1,0,1,1,0,1
31
32 # calculating transformation matrix:
33 P0=array([[x00, x01, x02, x03],[y00,y01,y02,y03],[1.0,1.0,1.0,1.0]])
34 P1=array([[x10, x11, x12, x13],[y10,y11,y12,y13],[1.0,1.0,1.0,1.0]])
35
36 Faktor1=dot(P1,transpose(P0))
37 Faktor2=inverse(dot(P0,transpose(P0)))
38 A=dot(Faktor1,Faktor2) # Transformation matrix
39
40 # reading freeboard data
41 lon=[]
42 lat=[]
43 fbh=[]
44 datei = open (filename2, 'r')
45 line=datei.readline()
46 k=-1
47 while line!="":
48 k=k+1
49 data=string.split(line)
50 lon.append(float(data[0]))
51 lat.append(abs(float(data[1])))
52 fbh.append(float(data[2]))
53 line=datei.readline()
54
55 polar=mapll(array(lat),array(lon),sgn)
56
57 # calculating new coordinates for freeboard data
58 x_neu=[]
59 y_neu=[]
60 for x,y in zip(polar[0],polar[1]):
61 x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2])
62 y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2])
63
64 # cutting off non-corresponding data values
65 m=-1
66 index_vec=[]
67 for xn,yn in zip(x_neu,y_neu):
68 m=m+1
69 if xn<=1. and xn >=0. and yn<=1. and yn >=0.:
70 index_vec.append(m)
71
72 x_bild=[]
73 y_bild=[]
74 fbh_bild=[]
75 for i in index_vec:
76 x_bild.append(x_neu[i])
77 y_bild.append(y_neu[i])
78 fbh_bild.append(fbh[i])
79
80 x_y_fbh=array([x_bild,y_bild,fbh_bild])
81
82 return x_y_fbh
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
1 from polar_projection import *
2 from read_asar import *
3 import string
4
5 def fit_freeboard_ASAR(filename1,filename2,resolution):
6 """filename1: ASAR data file, filename2: freeboard data file, resolution: data resolution
7 creates new coordinate system defined by corners of ASAR image and selects freeboard values within ASAR image box
8 returns an array containing normalized image coordinates and corresponding freeboard values:
9 [x_coordinate, y_coordinate, freeboardheight(cm)]"""
10
11 sgn=-1 #Antarctica
12 lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4=read_asar_corners(filename1)
13
14 ASAR_1=[lat1,lon1]
15 ASAR_2=[lat2,lon2]
16 ASAR_3=[lat3,lon3]
17 ASAR_4=[lat4,lon4]
18
19 ASAR_1p=mapll(ASAR_1[0],ASAR_1[1],sgn) #computing polarstereographic coordinates
20 ASAR_2p=mapll(ASAR_2[0],ASAR_2[1],sgn)
21 ASAR_3p=mapll(ASAR_3[0],ASAR_3[1],sgn)
22 ASAR_4p=mapll(ASAR_4[0],ASAR_4[1],sgn)
23
24 X=int(abs(ASAR_2p[0]-ASAR_1p[0])/resolution) #image size in pixel
25 Y=int(abs(ASAR_4p[1]-ASAR_1p[1])/resolution)
26
27 # polarstereographic coordinate system
28 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])
29 # new coordinate system with normalized coordinates
30 y10,x10,y11,x11,y12,x12,y13,x13=0,0,1,0,1,1,0,1
31
32 # calculating transformation matrix:
33 P0=array([[x00, x01, x02, x03],[y00,y01,y02,y03],[1.0,1.0,1.0,1.0]])
34 P1=array([[x10, x11, x12, x13],[y10,y11,y12,y13],[1.0,1.0,1.0,1.0]])
35
36 Faktor1=dot(P1,transpose(P0))
37 Faktor2=inverse(dot(P0,transpose(P0)))
38 A=dot(Faktor1,Faktor2) # Transformation matrix
39
40 # reading freeboard data
41 lon=[]
42 lat=[]
43 fbh=[]
44 datei = open (filename2, 'r')
45 line=datei.readline()
46 k=-1
47 while line!="":
48 k=k+1
49 data=string.split(line)
50 lon.append(float(data[0]))
51 lat.append(abs(float(data[1])))
52 fbh.append(float(data[2]))
53 line=datei.readline()
54
55 polar=mapll(array(lat),array(lon),sgn)
56
57 # calculating new coordinates for freeboard data
58 x_neu=[]
59 y_neu=[]
60 for x,y in zip(polar[0],polar[1]):
61 x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2])
62 y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2])
63
64 # cutting off non-corresponding data values
65 m=-1
66 index_vec=[]
67 for xn,yn in zip(x_neu,y_neu):
68 m=m+1
69 if xn<=1. and xn >=0. and yn<=1. and yn >=0.:
70 index_vec.append(m)
71
72 x_bild=[]
73 y_bild=[]
74 fbh_bild=[]
75 for i in index_vec:
76 x_bild.append(x_neu[i])
77 y_bild.append(y_neu[i])
78 fbh_bild.append(fbh[i])
79
80 x_y_fbh=array([x_bild,y_bild,fbh_bild])
81
82 return x_y_fbh
83
84 filename1='ASA_IMP_1PNDPA20060617_043346_000000162048_00362_22460_2136.N1'
85 filename2='LonLatFre_1706_6.xyz'
86 resolution=0.025
87 ergebnis=fit_freeboard_ASAR(filename1,filename2,resolution)