diff --git a/Analysis/mat_to_shapefiles.py b/Analysis/mat_to_shapefiles.py index 4ba5d6bb1b91c7f2cba3b0cbf97c3b20c3aebbb5..80e8d9247e77c0e2c6011ca7f3a798764011508d 100755 --- a/Analysis/mat_to_shapefiles.py +++ b/Analysis/mat_to_shapefiles.py @@ -10,7 +10,7 @@ import shapefile import numpy as np from os import path -def write(matlab_data, eddy_orientation, SHP_triplet): +def write(matlab_data, eddy_orientation, SHP_triplet, date_index): """matlab_data is a dictionary. matlab_data[eddy_orientation] is a numpy.ndarray with shape (number of eddies, 21). @@ -23,7 +23,7 @@ def write(matlab_data, eddy_orientation, SHP_triplet): shapefile.Writer(path.join(SHP_triplet, "max_speed_contour"), shapeType = shapefile.POLYGON) as w_max_speed: w_extr.field("ssh", "N", 13, 6) - w_extr.field("date_index", "N", 6) + w_extr.field("date_index", "N", 5) w_extr.field("eddy_index", "N", 5) w_extr.field("interpolat", "N", 1) w_extr.field("cyclone", "N", 1) @@ -32,13 +32,13 @@ def write(matlab_data, eddy_orientation, SHP_triplet): w_outer.field("r_eq_area", "N", 10, 4) w_outer.field("ssh", "N", 13, 6) - w_outer.field("date_index", "N", 6) + w_outer.field("date_index", "N", 5) w_outer.field("eddy_index", "N", 5) w_outer.field("radius4", "N", 2) w_max_speed.field("r_eq_area", "N", 10, 4) w_max_speed.field("ssh", "N", 13, 6) - w_max_speed.field("date_index", "N", 6) + w_max_speed.field("date_index", "N", 5) w_max_speed.field("eddy_index", "N", 5) eddy_index = 0 @@ -58,18 +58,18 @@ def write(matlab_data, eddy_orientation, SHP_triplet): j = np.argwhere(matlab_data["Y"] == eddy[1]).item() speed = 1e4 if np.isnan(eddy[12]) else eddy[12] w_extr.record(ssh = matlab_data["ADT"][i, j], - date_index = matlab_data["date_num"], - eddy_index = eddy_index, interpolat = 0, - cyclone = cyclone, valid = 1, speed = speed) + date_index = date_index, eddy_index = eddy_index, + interpolat = 0, cyclone = cyclone, valid = 1, + speed = speed) if cyclone: ssh = matlab_data["ADT"][i, j] + eddy[7] else: ssh = matlab_data["ADT"][i, j] - eddy[7] - w_outer.record(r_eq_area = eddy[6], ssh = ssh, - date_index = matlab_data["date_num"], - eddy_index = eddy_index, radius4 = - 1) + w_outer.record(r_eq_area = eddy[6], ssh = ssh, + date_index = date_index, eddy_index = eddy_index, + radius4 = - 1) polyline = np.stack((eddy[4], eddy[5]), axis = 1) w_outer.poly([polyline]) @@ -78,17 +78,20 @@ def write(matlab_data, eddy_orientation, SHP_triplet): else: ssh = matlab_data["ADT"][i, j] - eddy[11] - w_max_speed.record(r_eq_area = eddy[10], ssh = ssh, - date_index = matlab_data["date_num"], - eddy_index = eddy_index) + w_max_speed.record(r_eq_area = eddy[10], ssh = ssh, + date_index = date_index, eddy_index = eddy_index) polyline = np.stack((eddy[8], eddy[9]), axis = 1) w_max_speed.poly([polyline]) if __name__ == "__main__": import sys import scipy.io as sio + import datetime if len(sys.argv) != 2: sys.exit("Required argument: .mat file") matlab_data = sio.loadmat(sys.argv[1], squeeze_me = True) - write(matlab_data, "Anticyclonic_Cell", "Snapshot_anti") - write(matlab_data, "Cyclonic_Cell", "Snapshot_cyclo") + date_index = datetime.date.fromordinal(matlab_data["date_num"] - 366) \ + - datetime.date(1950, 1, 1) + date_index = date_index.days + write(matlab_data, "Anticyclonic_Cell", "Snapshot_anti", date_index) + write(matlab_data, "Cyclonic_Cell", "Snapshot_cyclo", date_index)