Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2008-07-07 13:28:41
Size: 381
Editor: RonnyPetrik
Comment:
Revision 5 as of 2008-07-09 11:14:47
Size: 6549
Editor: NinaMaass
Comment:
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:



'''fbh_bildkoordinaten.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

}}}

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)

LehreWiki: \AG1_Freibord (last edited 2008-07-11 11:19:34 by NinaMaass)