示例#1
0
'''
Created on Sun Aug 17 18:14:13 2014

code used for layered elastic model of surface loading

Wenliang Zhao
'''

import os, sys, re, glob, subprocess, math, time
import Rsmas_Utilib as ut
import ElasticSAR as es
import numpy as np
from osgeo import gdal
import time

para_list = ut.readProc(sys.argv[1])
processdir = para_list.get("processdir").strip()
disp_dir = processdir + "/InSAR"
line_insar = int(para_list.get("line_insar").strip())
col_insar = int(para_list.get("col_insar").strip())
left_lon_insar = float(para_list.get("left_lon_insar").strip())
top_lat_insar = float(para_list.get("top_lat_insar").strip())
res_lon_insar = float(para_list.get("res_lon_insar").strip())
res_lat_insar = float(para_list.get("res_lat_insar").strip())
lookAng_insar = float(para_list.get("lookAng").strip())
azimuth_insar = float(para_list.get("azimuth").strip())
utmZone = para_list.get("utmZone").strip()
res_x_utm = int(para_list.get("spacing").strip())
res_y_utm = res_x_utm
box = para_list.get("box")
method = para_list.get("method").strip()
def main():
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()
    size = comm.Get_size()

    if rank == 0:

        procfile = sys.argv[1].strip()
        para_list = ut.readProc(procfile)
        ice_model_file = para_list.get("ice_model").strip()  ### load model
        ice_model_col = int(para_list.get("ice_model_col").strip())
        grid_size = float(
            para_list.get("grid_size").strip())  ### grid size in m
        r = float(para_list.get("r").strip())  ### density
        v = float(para_list.get("v").strip())  ### Poisson's ratio
        E = int(para_list.get("E").strip())  ### Young's modulus
        E_unit = para_list.get("E_unit").strip()
        if E_unit == 'MPa':
            E = E * (10**6)
        elif E_unit == 'GPa':
            E = E * (10**9)
        else:
            print "Unit of Young's modulus should be either MPa or GPa!\n"
            exit(1)
        print "Young's modulus is: ", E
        angle_az = float(para_list.get("angle_az").strip())
        angle_inc = float(para_list.get("angle_inc").strip())

        ice_model_data = np.fromfile(ice_model_file, dtype=np.float32)
        ice_model_lin = ice_model_data.size / ice_model_col
        dis_model_v = np.zeros((ice_model_data.size), dtype=np.float32)
        #dis_model_e = np.zeros((ice_model_data.size),dtype=np.float32).reshape(ice_model_lin,ice_model_col)
        #dis_model_n = np.zeros((ice_model_data.size),dtype=np.float32).reshape(ice_model_lin,ice_model_col)
        g = 9.81

        vec_col = np.linspace(0, ice_model_col - 1, ice_model_col)
        vec_lin = np.linspace(0, ice_model_lin - 1, ice_model_lin)
        x1, y1 = np.meshgrid(vec_col, vec_lin)
        x2, y2 = x1, y1

        x1 = x1.reshape(x1.size)
        y1 = y1.reshape(y1.size)
        x2 = x2.reshape(ice_model_data.size)[np.abs(ice_model_data) > 0.00001]
        y2 = y2.reshape(ice_model_data.size)[np.abs(ice_model_data) > 0.00001]
        ice_model_data = ice_model_data[np.abs(ice_model_data) > 0.00001]

        const_v = grid_size**2 * r * g * (1 - v**2) / E / np.pi
        const_r = grid_size**2 * r * g * (1 + v) * (1 - 2 * v) / E / 2 / np.pi
        print "2 constants are: ", const_v, " and ", const_r

        dis_model_v_batch = np.array_split(dis_model_v, comm.size)
        dis_model_v = None
        dis_model_e_batch = dis_model_v_batch
        dis_model_n_batch = dis_model_v_batch
        x1_batch = np.array_split(x1, size)
        y1_batch = np.array_split(y1, size)

    else:
        ice_model_data = None
        dis_model_v_batch = None
        dis_model_e_batch = None
        dis_model_n_batch = None
        x2 = None
        y2 = None
        const_v = None
        const_r = None
        x1_batch = None
        y1_batch = None
        grid_size = None

    const_v = comm.bcast(const_v, root=0)
    const_r = comm.bcast(const_r, root=0)
    x2 = comm.bcast(x2, root=0)
    y2 = comm.bcast(y2, root=0)
    grid_size = comm.bcast(grid_size, root=0)
    ice_model_data = comm.bcast(ice_model_data, root=0)
    dis_model_v_batch = comm.scatter(dis_model_v_batch, root=0)
    dis_model_e_batch = comm.scatter(dis_model_e_batch, root=0)
    dis_model_n_batch = comm.scatter(dis_model_n_batch, root=0)
    x1_batch = comm.scatter(x1_batch, root=0)
    y1_batch = comm.scatter(y1_batch, root=0)

    N_pix = len(x1_batch)
    print N_pix, " data received!\n"
    print "Shape of dis_model_v_batch is: ", dis_model_v_batch.shape

    for ni in range(N_pix):
        line1 = y1_batch[ni]
        col1 = x1_batch[ni]
        dis_y = line1 - y2
        dis_x = col1 - x2
        distance = np.power(np.power(dis_y, 2) + np.power(dis_x, 2), 0.5)
        distance[distance < 1] = 10000000.
        sin_ang = dis_x / distance
        cos_ang = -1 * dis_y / distance
        distance = distance * grid_size
        dis_model_v_batch[ni] = np.sum(const_v * (1 / distance) *
                                       ice_model_data)
        dis_model_e_batch[ni] = np.sum(const_r * (1 / distance) *
                                       ice_model_data * sin_ang)
        dis_model_e_batch[ni] = np.sum(const_r * (1 / distance) *
                                       ice_model_data * cos_ang)

    dis_model_v_batch = comm.gather(dis_model_v_batch, root=0)
    dis_model_e_batch = comm.gather(dis_model_e_batch, root=0)
    dis_model_n_batch = comm.gather(dis_model_n_batch, root=0)

    if rank == 0:
        dis_model_v = dis_model_v_batch[0]
        dis_model_e = dis_model_e_batch[0]
        dis_model_n = dis_model_n_batch[0]
        for ni in range(size - 1):
            dis_model_v = np.hstack((dis_model_v, dis_model_v_batch[ni + 1]))
            dis_model_e = np.hstack((dis_model_e, dis_model_e_batch[ni + 1]))
            dis_model_n = np.hstack((dis_model_n, dis_model_n_batch[ni + 1]))

        dis_model_los = dis_model_v * np.cos(angle_inc/180*np.pi) - \
        dis_model_e * np.sin(angle_inc/180*np.pi) * np.cos(angle_az/180*np.pi) + \
        dis_model_n * np.sin(angle_inc/180*np.pi) * np.sin(angle_az/180*np.pi)

        dis_model_los.astype('float32').tofile(
            'elastic_half_space_load_los_model')
import os
import re
import sys
import Rsmas_Utilib as ut
import glob
import subprocess

if len(sys.argv) != 2:
    print '''
    Usage: sparse_snaphu.py *.template    
    template must include path to interferogram
    
'''
    exit(0)

para_list = ut.readProc(sys.argv[1])
int_str = para_list.get("unwrap_str")
#snaphu_def = os.getenv("INT_SCR").strip() + "/snaphu.default"
#para_snaphu1 = ut.readProc(snaphu_def)
if not para_list.get("method"):
    method = "RSMAS"
else:
    method = para_list.get("method").strip()
if method == "RSMAS":
    processdir = os.getenv("PROCESSDIR")
    #WDIR = processdir
    processdir = processdir + "/" + sys.argv[1].partition('.')[0].strip()
    folder_list = glob.glob(processdir + "/PO*")
elif method == "NSBAS":
    processdir = para_list.get("processdir").strip()
    #WDIR = processdir
def main():
    para_list = ut.readProc(sys.argv[1])
    interf_folder = para_list.get("interf").strip()
    pattern = para_list.get("pattern").strip()
    maskfile = para_list.get("mask").strip()
    th_d = para_list.get("th_d")
    if isinstance(th_d, str):
        th_d = [th_d]
    for ni in range(len(th_d)):
        th_d[ni] = th_d[ni].strip()
    th_c = para_list.get("th_c").strip()
    iteration = len(th_d)
    method = para_list.get("method").strip()
    solution = para_list.get("solution").strip()
    plane_type = para_list.get("plane_type").strip()
    APS_type = para_list.get("APS_type").strip()
    demfile = para_list.get("dem").strip()
    step = para_list.get("step")
    if isinstance(step, str):
        step = [step]
    for ni in range(len(step)):
        step[ni] = step[ni].strip()
    if para_list.get("software")=="RSMAS":
        int_list = glob.glob(interf_folder+"/PO*")
    else:
        int_list = glob.glob(interf_folder+"/int_*")
    
    N_line = 0
    for f in int_list:
        print "f is: ", f, "\n" 
        intfile = glob.glob(f+"/*"+pattern)[0]
        intfile_rsc = intfile + ".rsc"
        para_list1 = ut.readRsc(intfile_rsc)
        temp_line = int(para_list1.get("FILE_LENGTH").strip())
        if N_line < temp_line:
            N_line = temp_line
    print "maskfile is: ",bool(maskfile=='1'), "\n"
    if maskfile == '1':
        print "The maximum line is: ", N_line, "\n"
    else:
        Joblist = interf_folder + "/run_remove_ramp_aps"
        for ni in range(iteration):
            if ni < 2:
                method = "0"
            else:
                method = "1"
            k = 1
            IN = open(Joblist, 'w')
            for f in int_list:
                intfile = glob.glob(f+"/*"+pattern)[0]
                corfile = intfile[:-3]+"cor"
                if ni>5:
                    APS_type == "2"
                if ni % 2 == 0:
                    temp_str = "/nethome/wlzhao/python_code/remove_aps_wrap.py " + intfile + " " + corfile + " " + maskfile + " " + demfile + \
                               " " + plane_type + " " + "0" + " " + th_d[ni] + " " + th_c + " " + method + " " + \
                               solution + " " + str(ni+1) + " " + step[ni]
                else:
                    temp_str = "/nethome/wlzhao/python_code/remove_aps_wrap.py " + intfile + " " + corfile + " " + maskfile + " " + demfile + \
                               " " + "0" + " " + APS_type + " " + th_d[ni] + " " + th_c + " " + method + " " + \
                               solution + " " + str(2) + " " + step[ni]
                IN.write(temp_str)
                if k<len(int_list):
                    IN.write("\n")
                k = k+1
            IN.close() 

            WT = "0:30"
            temp_str = os.getenv("INT_SCR").strip() + "/createBatch_8.pl --workdir " + interf_folder + " --infile " + Joblist + " walltime=" + WT
            temp_list = [os.getenv("INT_SCR").strip()+"/createBatch_8.pl","--workdir",interf_folder,"--infile",Joblist,"walltime="+WT]
            sys.stderr.write(temp_str+"\n")
            output = subprocess.Popen(temp_list).wait()
            if output == 0:
                print "Iteration ", str(ni+1), " has been done!\n"
            else:
                print "There is error happened. Check code again!\n"
                exit(1)
            
        print "All the jobs are done! Good luck!\n"
        exit(0)
def main():
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()
    size = comm.Get_size()
    
    if rank == 0:

        procfile = sys.argv[1].strip()
        para_list = ut.readProc(procfile)
        ice_model_file = para_list.get("ice_model").strip()    ### load model
        ice_model_col = int(para_list.get("ice_model_col").strip())
        grid_size = float(para_list.get("grid_size").strip())  ### grid size in m
        r = float(para_list.get("r").strip())     ### density
        v = float(para_list.get("v").strip())     ### Poisson's ratio
        E = int(para_list.get("E").strip())       ### Young's modulus
        E_unit = para_list.get("E_unit").strip()
        if E_unit == 'MPa':
            E = E * (10 ** 6)
        elif E_unit == 'GPa':
            E = E * (10 ** 9)
        else:
            print "Unit of Young's modulus should be either MPa or GPa!\n"
            exit(1)
        print "Young's modulus is: ", E
        angle_az = float(para_list.get("angle_az").strip())
        angle_inc = float(para_list.get("angle_inc").strip())

        ice_model_data = np.fromfile(ice_model_file,dtype=np.float32)
        ice_model_lin = ice_model_data.size / ice_model_col
        dis_model_v = np.zeros((ice_model_data.size),dtype=np.float32)
        #dis_model_e = np.zeros((ice_model_data.size),dtype=np.float32).reshape(ice_model_lin,ice_model_col)
        #dis_model_n = np.zeros((ice_model_data.size),dtype=np.float32).reshape(ice_model_lin,ice_model_col)
        g = 9.81

        vec_col = np.linspace(0,ice_model_col-1, ice_model_col)
        vec_lin = np.linspace(0,ice_model_lin-1, ice_model_lin)
        x1, y1 = np.meshgrid(vec_col, vec_lin)
        x2, y2 = x1, y1

        x1 = x1.reshape(x1.size)
        y1 = y1.reshape(y1.size)
        x2 = x2.reshape(ice_model_data.size)[np.abs(ice_model_data)>0.00001]
        y2 = y2.reshape(ice_model_data.size)[np.abs(ice_model_data)>0.00001]
        ice_model_data = ice_model_data[np.abs(ice_model_data)>0.00001]

        const_v = grid_size ** 2 * r * g * (1-v**2) / E / np.pi
        const_r = grid_size ** 2 * r * g * (1+v) * (1-2*v) / E / 2 / np.pi
        print "2 constants are: ", const_v, " and ", const_r

        dis_model_v_batch = np.array_split(dis_model_v,comm.size)
        dis_model_v = None
        dis_model_e_batch = dis_model_v_batch
        dis_model_n_batch = dis_model_v_batch
        x1_batch = np.array_split(x1,size)
        y1_batch = np.array_split(y1,size)
    
    else:
        ice_model_data = None
        dis_model_v_batch = None
        dis_model_e_batch = None
        dis_model_n_batch = None
        x2 = None
        y2 = None
        const_v = None
        const_r = None
        x1_batch = None
        y1_batch = None
        grid_size = None
    
    const_v = comm.bcast(const_v, root=0)
    const_r = comm.bcast(const_r, root=0)
    x2 = comm.bcast(x2, root=0)
    y2 = comm.bcast(y2, root=0)
    grid_size = comm.bcast(grid_size, root=0)
    ice_model_data = comm.bcast(ice_model_data, root=0)
    dis_model_v_batch = comm.scatter(dis_model_v_batch, root=0)
    dis_model_e_batch = comm.scatter(dis_model_e_batch, root=0)
    dis_model_n_batch = comm.scatter(dis_model_n_batch, root=0)
    x1_batch = comm.scatter(x1_batch, root=0)
    y1_batch = comm.scatter(y1_batch, root=0)
    
    N_pix = len(x1_batch)
    print N_pix, " data received!\n"
    print "Shape of dis_model_v_batch is: ", dis_model_v_batch.shape
    
    
    
    for ni in range(N_pix):
        line1 = y1_batch[ni]
        col1 = x1_batch[ni]
        dis_y = line1 - y2
        dis_x = col1 - x2
        distance = np.power(np.power(dis_y,2) + np.power(dis_x,2), 0.5)
        distance[distance<1] = 10000000.
        sin_ang = dis_x / distance
        cos_ang = -1 * dis_y / distance
        distance = distance * grid_size
        dis_model_v_batch[ni] = np.sum(const_v * (1 / distance) * ice_model_data)
        dis_model_e_batch[ni] = np.sum(const_r * (1 /distance) * ice_model_data * sin_ang)
        dis_model_e_batch[ni] = np.sum(const_r * (1 /distance) * ice_model_data * cos_ang)
    
    
    dis_model_v_batch = comm.gather(dis_model_v_batch, root=0)
    dis_model_e_batch = comm.gather(dis_model_e_batch, root=0)
    dis_model_n_batch = comm.gather(dis_model_n_batch, root=0)
    
    if rank == 0:
        dis_model_v = dis_model_v_batch[0]
        dis_model_e = dis_model_e_batch[0]
        dis_model_n = dis_model_n_batch[0]
        for ni in range(size-1):
            dis_model_v = np.hstack((dis_model_v, dis_model_v_batch[ni+1]))
            dis_model_e = np.hstack((dis_model_e, dis_model_e_batch[ni+1]))
            dis_model_n = np.hstack((dis_model_n, dis_model_n_batch[ni+1]))
         
        dis_model_los = dis_model_v * np.cos(angle_inc/180*np.pi) - \
        dis_model_e * np.sin(angle_inc/180*np.pi) * np.cos(angle_az/180*np.pi) + \
        dis_model_n * np.sin(angle_inc/180*np.pi) * np.sin(angle_az/180*np.pi)
        
        dis_model_los.astype('float32').tofile('elastic_half_space_load_los_model')
def main():
    para_list = ut.readProc(sys.argv[1])
    interf_folder = para_list.get("interf").strip()
    pattern = para_list.get("pattern").strip()
    maskfile = para_list.get("mask").strip()
    th_d = para_list.get("th_d")
    if isinstance(th_d, str):
        th_d = [th_d]
    for ni in range(len(th_d)):
        th_d[ni] = th_d[ni].strip()
    th_c = para_list.get("th_c").strip()
    iteration = len(th_d)
    method = para_list.get("method").strip()
    solution = para_list.get("solution").strip()
    plane_type = para_list.get("plane_type").strip()
    APS_type = para_list.get("APS_type").strip()
    demfile = para_list.get("dem").strip()
    step = para_list.get("step")
    if isinstance(step, str):
        step = [step]
    for ni in range(len(step)):
        step[ni] = step[ni].strip()
    if para_list.get("software") == "RSMAS":
        int_list = glob.glob(interf_folder + "/PO*")
    else:
        int_list = glob.glob(interf_folder + "/int_*")

    N_line = 0
    for f in int_list:
        print "f is: ", f, "\n"
        intfile = glob.glob(f + "/*" + pattern)[0]
        intfile_rsc = intfile + ".rsc"
        para_list1 = ut.readRsc(intfile_rsc)
        temp_line = int(para_list1.get("FILE_LENGTH").strip())
        if N_line < temp_line:
            N_line = temp_line
    print "maskfile is: ", bool(maskfile == '1'), "\n"
    if maskfile == '1':
        print "The maximum line is: ", N_line, "\n"
    else:
        Joblist = interf_folder + "/run_remove_ramp_aps"
        for ni in range(iteration):
            if ni < 2:
                method = "0"
            else:
                method = "1"
            k = 1
            IN = open(Joblist, 'w')
            for f in int_list:
                intfile = glob.glob(f + "/*" + pattern)[0]
                corfile = intfile[:-3] + "cor"
                if ni > 5:
                    APS_type == "2"
                if ni % 2 == 0:
                    temp_str = "/nethome/wlzhao/python_code/remove_aps_wrap.py " + intfile + " " + corfile + " " + maskfile + " " + demfile + \
                               " " + plane_type + " " + "0" + " " + th_d[ni] + " " + th_c + " " + method + " " + \
                               solution + " " + str(ni+1) + " " + step[ni]
                else:
                    temp_str = "/nethome/wlzhao/python_code/remove_aps_wrap.py " + intfile + " " + corfile + " " + maskfile + " " + demfile + \
                               " " + "0" + " " + APS_type + " " + th_d[ni] + " " + th_c + " " + method + " " + \
                               solution + " " + str(2) + " " + step[ni]
                IN.write(temp_str)
                if k < len(int_list):
                    IN.write("\n")
                k = k + 1
            IN.close()

            WT = "0:30"
            temp_str = os.getenv("INT_SCR").strip(
            ) + "/createBatch_8.pl --workdir " + interf_folder + " --infile " + Joblist + " walltime=" + WT
            temp_list = [
                os.getenv("INT_SCR").strip() + "/createBatch_8.pl",
                "--workdir", interf_folder, "--infile", Joblist,
                "walltime=" + WT
            ]
            sys.stderr.write(temp_str + "\n")
            output = subprocess.Popen(temp_list).wait()
            if output == 0:
                print "Iteration ", str(ni + 1), " has been done!\n"
            else:
                print "There is error happened. Check code again!\n"
                exit(1)

        print "All the jobs are done! Good luck!\n"
        exit(0)
import os
import re
import sys
import Rsmas_Utilib as ut
import glob
import subprocess

if len(sys.argv) != 2:
    print '''
    Usage: sparse_snaphu.py *.template    
    template must include path to interferogram
    
'''
    exit(0)
    
para_list = ut.readProc(sys.argv[1])
int_str = para_list.get("unwrap_str")
#snaphu_def = os.getenv("INT_SCR").strip() + "/snaphu.default"
#para_snaphu1 = ut.readProc(snaphu_def)
if not para_list.get("method"):
    method = "RSMAS"
else:
    method = para_list.get("method").strip()
if method == "RSMAS":
    processdir = os.getenv("PROCESSDIR")
    #WDIR = processdir
    processdir = processdir + "/" + sys.argv[1].partition('.')[0].strip()
    folder_list = glob.glob(processdir+"/PO*")
elif method == "NSBAS":
    processdir = para_list.get("processdir").strip()
    #WDIR = processdir
示例#8
0
import glob


if len(sys.argv) != 2:
    print '''
    Usage: sparse_snaphu.py int_folder  
    template must include path to interferogram
    
'''
    exit(0)

int_folder = sys.argv[1].strip()
os.system("cd " + int_folder)
procfile = int_folder + "/sparse_para"
procfile1 = int_folder + "/snaphu_para"
para_list = ut.readProc(procfile)
para_list1 = ut.readProc(procfile1)

if para_list.get("interferogram"):
    intfile = para_list.get("interferogram").strip() 
else:
    print "Must have path to interferogram!\n"
    exit(0)   

if para_list.get("coherence"):
    corfile = para_list.get("coherence").strip()
else:
    print "Must have path to coherence!\n"
    exit(0)

'''
Created on Sun Aug 17 18:14:13 2014

code used for layered elastic model of surface loading

Wenliang Zhao
'''

import os,sys,re,glob,subprocess,math,time
import Rsmas_Utilib as ut
import ElasticSAR as es
import numpy as np
from osgeo import gdal
import time

para_list = ut.readProc(sys.argv[1])
processdir = para_list.get("processdir").strip()
disp_dir = processdir + "/InSAR"
line_insar = int(para_list.get("line_insar").strip())
col_insar = int(para_list.get("col_insar").strip())
left_lon_insar = float(para_list.get("left_lon_insar").strip())
top_lat_insar = float(para_list.get("top_lat_insar").strip())
res_lon_insar = float(para_list.get("res_lon_insar").strip())
res_lat_insar = float(para_list.get("res_lat_insar").strip())
lookAng_insar = float(para_list.get("lookAng").strip())
azimuth_insar = float(para_list.get("azimuth").strip())
utmZone = para_list.get("utmZone").strip()
res_x_utm = int(para_list.get("spacing").strip())
res_y_utm = res_x_utm
box = para_list.get("box")
method = para_list.get("method").strip()