example_scripts/convert_lilas.py

Fri, 22 Sep 2017 15:02:53 +0300

author
Victor Nicolae <victor.nicolae@inoe.ro>
date
Fri, 22 Sep 2017 15:02:53 +0300
changeset 76
e59cdc4fd4c0
parent 52
fdf4373db30e
child 92
6d26002aaeed
permissions
-rw-r--r--

Include all parameters from the NetCDF parameters file in the final output file.

Better inform the user if any mandatory parameter misses from the file.

In case of extra (optional) parameters, allow missing values in the output file.

ioannis@48 1 """ Sample script to convert licel files to SCC netcdf format.
ioannis@48 2
ioannis@48 3 The script assumes the following things:
ioannis@48 4
ioannis@48 5 1. You have already installed the atmospheric_lidar module (e.g. using pip).
ioannis@48 6 2. You have create a class in a file "lilas" describing your system (described the readme file).
ioannis@48 7 If you want to use it for a different system you need to change the script to use your own class
ioannis@48 8
ioannis@48 9 Run the script using: python convert_lilas.py <your options>
ioannis@48 10
ioannis@48 11 Examples
ioannis@48 12 --------
ioannis@48 13 # This will read all files starting with "l" from "my_dir".
ioannis@48 14 # It will guess the measurement ID based on the date of the files, and will assume measurement number 00.
ioannis@48 15 # For example, the new measurment id could be 20120101mb00
ioannis@48 16 python convert_lilas.py my_dir l*.
ioannis@48 17
ioannis@48 18 # This will use the measurement id you defined.
ioannis@48 19 python convert_lilas.py my_dir l*. -m 20120204mb32 # It will create the file 20120204mb32.nc
ioannis@48 20
ioannis@48 21 Help string
ioannis@48 22 -----------
ioannis@48 23 # To get this, run: python convert_lilas.py -h
ioannis@48 24 usage: convert_lilas.py [-h] [-m MEASUREMENT_ID] [-n MEASUREMENT_NUMBER]
ioannis@48 25 [directory] [searchstring]
ioannis@48 26
ioannis@48 27 positional arguments:
ioannis@48 28 directory Directory with licel files.
ioannis@48 29 searchstring Processing system id.
ioannis@48 30
ioannis@48 31 optional arguments:
ioannis@48 32 -h, --help show this help message and exit
ioannis@48 33 -m MEASUREMENT_ID, --measurement_id MEASUREMENT_ID
ioannis@48 34 The new measurement id
ioannis@48 35 -n MEASUREMENT_NUMBER, --measurement_number MEASUREMENT_NUMBER
ioannis@48 36 The measurement number for the date, if no id is
ioannis@48 37 provided
ioannis@48 38
ioannis@48 39 """
ioannis@48 40
ioannis@48 41 import glob
ioannis@48 42 import os
ioannis@48 43 import argparse
ioannis@48 44
ioannis@48 45 from atmospheric_lidar import lilas
ioannis@48 46
ioannis@48 47
ioannis@48 48 if __name__ == "__main__":
ioannis@48 49
ioannis@48 50 # Define the command line arguments.
ioannis@48 51 parser = argparse.ArgumentParser()
ioannis@48 52 parser.add_argument("directory", nargs='?', help="Directory with licel files.", default='.')
ioannis@48 53 parser.add_argument("searchstring", nargs='?', help="Processing system id.", default="*.*")
ioannis@48 54 parser.add_argument("-m", "--measurement_id", help="The new measurement id", default=None)
ioannis@48 55 parser.add_argument("-n", "--measurement_number", help="The measurement number for the date, if no id is provided", default="00")
ioannis@48 56 args = parser.parse_args()
ioannis@48 57
ioannis@48 58
ioannis@48 59 # Get a list of files to convert
ioannis@48 60 search_str = os.path.join(args.directory, args.searchstring)
ioannis@48 61 files = glob.glob(search_str)
ioannis@48 62
ioannis@48 63 if files:
ioannis@48 64 # Read the files
ioannis@48 65 print "Reading {0} files from {1}".format(len(files), args.directory)
ioannis@48 66 measurement = lilas.LilasLidarMeasurement(files)
ioannis@48 67
ioannis@48 68 #Save the netcdf
ioannis@48 69 print "Saving netcdf."
ioannis@48 70 measurement.set_measurement_id(args.measurement_id, args.measurement_number)
ioannis@48 71 measurement.save_as_netcdf()
ioannis@48 72 print "Created file ", measurement.scc_filename
ioannis@48 73 else:
ioannis@48 74 print "No files found when searching for ", search_str

mercurial