Пример #1
0
def main(iargs=None):
    inps = cmd_line_parse(iargs)
    plt.switch_backend('Agg')  # Backend setting
    #print("The Python version is %s.%s.%s" % sys.version_info[:3])

    # Read data
    data, atr = readfile.read(inps.file, datasetName=inps.dset)

    # Data Operation - Display Unit & Rewrapping
    (data, inps.disp_unit, inps.disp_scale,
     inps.wrap) = pp.scale_data4disp_unit_and_rewrap(data=data,
                                                     metadata=atr,
                                                     disp_unit=inps.disp_unit,
                                                     wrap=inps.wrap)
    if inps.wrap:
        inps.ylim = [-np.pi, np.pi]

    # Output filename
    if not inps.outfile:
        inps.outfile = '{}.kmz'.format(
            pp.auto_figure_title(inps.file,
                                 datasetNames=inps.dset,
                                 inps_dict=vars(inps)))

    # 2. Generate Google Earth KMZ
    kmz_file = write_kmz_file(data,
                              metadata=atr,
                              out_file=inps.outfile,
                              inps=inps)

    print('Done.')
    return
Пример #2
0
def write_grd_file(data, atr, fname_out=None):
    """Write GMT .grd file for input data matrix, using giant._gmt module.
    Inputs:
        data - 2D np.array in int/float, data matrix to write
        atr  - dict, attributes of input data matrix
        fname_out - string, output file name
    Output:
        fname_out - string, output file name
    """
    if not fname_out:
        fname_out = '{}.grd'.format(
            pp.auto_figure_title(inps.file,
                                 datasetNames=inps.dset,
                                 inps_dict=vars(inps)))
    # Get 1D array of lats and lons
    lats, lons = get_geo_lat_lon(atr)

    # writing
    print('writing >>> ' + fname_out)
    write_gmt_simple(lons,
                     np.flipud(lats),
                     np.flipud(data),
                     fname_out,
                     title='default',
                     name=atr['FILE_TYPE'],
                     scale=1.0,
                     offset=0,
                     units=atr['UNIT'])
    return fname_out
Пример #3
0
def main(iargs=None):
    inps = cmd_line_parse(iargs)
    #plt.switch_backend('Agg')

    # Read data
    data, atr = readfile.read(inps.file, datasetName=inps.dset)

    # Data Operation - Display Unit & Rewrapping
    data, inps.disp_unit, inps.disp_scale, inps.wrap = pp.scale_data4disp_unit_and_rewrap(
        data=data, metadata=atr, disp_unit=inps.disp_unit, wrap=inps.wrap)
    if inps.wrap:
        inps.ylim = [-np.pi, np.pi]

    # Output filename
    if not inps.outfile:
        inps.outfile = pp.auto_figure_title(inps.file,
                                            datasetNames=inps.dset,
                                            inps_dict=vars(inps))

    # 2. Generate Google Earth KMZ
    kmz_file = write_kmz_file(data,
                              metadata=atr,
                              out_name_base=inps.outfile,
                              inps=inps)

    print('Done.')
    return
Пример #4
0
def main(iargs=None):
    inps = cmd_line_parse(iargs)
    plt.switch_backend('Agg')  # Backend setting

    # Read data
    data, atr = readfile.read(inps.file, datasetName=inps.dset)

    # Data Operation - Display Unit & Rewrapping
    (data, inps.disp_unit, inps.disp_scale,
     inps.wrap) = pp.scale_data4disp_unit_and_rewrap(
         data,
         metadata=atr,
         disp_unit=inps.disp_unit,
         wrap=inps.wrap,
         wrap_range=inps.wrap_range)
    if inps.wrap:
        inps.vlim = inps.wrap_range

    # Output filename
    inps.fig_title = pp.auto_figure_title(inps.file,
                                          datasetNames=inps.dset,
                                          inps_dict=vars(inps))
    if not inps.outfile:
        inps.outfile = '{}.kmz'.format(inps.fig_title)

    # 2. Generate Google Earth KMZ
    kmz_file = write_kmz_file(data,
                              metadata=atr,
                              out_file=inps.outfile,
                              inps=inps)

    print('Done.')
    return
Пример #5
0
def generate_cbar_element(inps):

    out_name_base = plot.auto_figure_title(inps.ts_file, inps_dict=vars(inps))
    cbar_png_file = '{}_cbar.png'.format(out_name_base)

    cbar_png_file = plot_colorbar(out_file=cbar_png_file,
                                  vmin=inps.vlim[0],
                                  vmax=inps.vlim[1],
                                  cmap=inps.colormap)
    cbar_overlay = KML.ScreenOverlay(
        KML.name('Colorbar'),
        KML.Icon(KML.href("{}".format(cbar_png_file)),
                 KML.viewBoundScale(0.75)),
        KML.overlayXY(x="0", y="0", xunits="fraction", yunits="fraction"),
        KML.screenXY(x="0", y="0", xunits="fraction", yunits="fraction"),
        KML.size(x="0", y="250", xunits="pixel", yunits="pixel"),
        KML.rotation(0), KML.visibility(1), KML.open(0))
    print('add colorbar.')
    return cbar_overlay, cbar_png_file
Пример #6
0
def generate_network_link(inps, ts_obj, box_list, step, lod, output_file=None):

    out_name_base = plot.auto_figure_title(inps.ts_file, inps_dict=vars(inps))

    if output_file is None:
        output_file = "{0}_{1}by{1}.kml".format(out_name_base, step)

    nwklink_name = "{0} by {0}".format(step)

    regions, dot_file, dygraph_file = create_kml_document(
        inps, box_list, ts_obj, step)
    kml_file, kml_data_files_directory = create_regionalized_networklinks_file(
        regions, ts_obj, box_list, lod, step, output_file)

    network_link = create_network_link_element(nwklink_name, kml_file, ts_obj)

    cmdMove = "mv {0} {1}/{0}".format(output_file, kml_data_files_directory)
    print("Moving KML Data Files to directory")
    os.system(cmdMove)

    return network_link, dot_file, dygraph_file, kml_data_files_directory
Пример #7
0
def main(iargs=None):

    ## 1. Read command line variables
    inps = cmd_line_parse(iargs)

    ## 2. Define file names
    out_name_base = plot.auto_figure_title(inps.ts_file, inps_dict=vars(inps))
    kml_file_master = '{}_master.kml'.format(out_name_base)
    kmz_file = '{}.kmz'.format(out_name_base)

    ## 4. read data
    ts_obj = timeseries(inps.ts_file)
    ts_obj.open()
    length, width = ts_obj.length, ts_obj.width
    lats, lons = get_lat_lon(ts_obj.metadata)

    vel = readfile.read(inps.vel_file, datasetName='velocity')[0] * 100.
    # Set min/max velocity for colormap
    if inps.vlim is None:
        inps.vlim = [np.nanmin(vel), np.nanmax(vel)]

    ## 5. Generate large and small KML files for different view heights
    small_dset_step = 20  # Increase this for coarser resolution in small dset
    large_dset_step = 3  # Decrease this for finer resolution in large dset
    full_dset_step = 1  # Full resolution for deforming regions

    box_list = split_into_sub_boxes(
        (length, width))  # Create list of unique regions
    deforming_box_list = get_boxes4deforming_area(inps.vel_file,
                                                  inps.mask_file)

    ## 6. Create master KML file with network links to data KML files
    kml_master = KML.kml()
    kml_master_document = KML.Document()

    # 6.1 Create Overlay element for colorbar
    cbar_overlay, cbar_png_file = generate_cbar_element(inps)
    kml_master_document.append(cbar_overlay)

    # 6.2 Generate the placemark for the Reference Pixel
    reference_point, star_file = create_reference_point_element(
        inps, lats, lons, ts_obj)
    print('add reference point.')
    reference_folder = KML.Folder(KML.name("ReferencePoint"))
    reference_folder.append(reference_point)
    kml_master_document.append(reference_folder)

    # 6.3 Create data folder to contain actual data elements
    data_folder = KML.Folder(KML.name("Data"))

    network_link_1, dot_file, _, _ = generate_network_link(
        inps, ts_obj, box_list, small_dset_step, (0, 1500))
    network_link_2, _, dygraph_file, _ = generate_network_link(
        inps, ts_obj, box_list, large_dset_step, (1500, 4000))
    network_link_3, _, _, kml_data_files_directory = generate_network_link(
        inps, ts_obj, deforming_box_list, full_dset_step, (4000, -1))

    # 6.3.3 Append network links to data folder
    data_folder.append(network_link_1)
    data_folder.append(network_link_2)
    data_folder.append(network_link_3)

    kml_master_document.append(data_folder)

    kml_master.append(kml_master_document)

    ## 7 Write master KML file
    print('writing ' + kml_file_master)
    with open(kml_file_master, 'w') as f:
        f.write(etree.tostring(kml_master, pretty_print=True).decode('utf-8'))

    ## 8 Copy auxiliary files

    # 8.1 shaded_dot file
    dot_path = os.path.join(os.path.dirname(__file__), "../docs/resources",
                            dot_file)
    cmdDot = "cp {} {}".format(dot_path, dot_file)
    print("copying {} for point.".format(dot_file))
    os.system(cmdDot)

    # 8.2 star file
    star_path = os.path.join(os.path.dirname(__file__), "../docs/resources",
                             star_file)
    cmdStar = "cp {} {}".format(star_path, star_file)
    print("copying {} for reference point.".format(star_file))
    os.system(cmdStar)

    # 8.3 dygraph-combined.js file
    dygraph_path = os.path.join(os.path.dirname(__file__), "../docs/resources",
                                dygraph_file)
    cmdDygraph = "cp {} {}".format(dygraph_path, dygraph_file)
    print("copying {} for interactive plotting.".format(dygraph_file))
    os.system(cmdDygraph)

    ## 9. Generate KMZ file
    cmdKMZ = 'zip -r {} {} {} {} {} {} {}'.format(kmz_file,
                                                  kml_data_files_directory,
                                                  kml_file_master,
                                                  cbar_png_file, dygraph_file,
                                                  dot_file, star_file)
    print('writing {}\n{}'.format(kmz_file, cmdKMZ))
    os.system(cmdKMZ)

    # 9.1 Remove extra files from file tree after KMZ generation
    cmdClean = 'rm -r {} {} {} {} {} {}'.format(kml_data_files_directory,
                                                kml_file_master, cbar_png_file,
                                                dygraph_file, dot_file,
                                                star_file)
    os.system(cmdClean)

    print('Done.')
    return