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
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
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
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
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
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
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