From 6c850f50c89c3df1f29d3e61284157c45891310b Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Sat, 3 Apr 2021 00:55:28 +0200
Subject: [PATCH] Bug fix: convert polyline to list

Method poly of shapefile writer requires a list of lists, not a list
of numpy arrays. This bug goes unnoticed in pyshp `2.1.0` but raises an
exception with pyshp `2.1.3`.
---
 Convert_Matlab/inst_eddies_HDF5.py | 4 ++--
 Convert_Matlab/inst_eddies_v6.py   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Convert_Matlab/inst_eddies_HDF5.py b/Convert_Matlab/inst_eddies_HDF5.py
index f2f73939..b46a962e 100755
--- a/Convert_Matlab/inst_eddies_HDF5.py
+++ b/Convert_Matlab/inst_eddies_HDF5.py
@@ -67,7 +67,7 @@ def write(writers, cell, cyclone):
                                 eddy_index = eddy_index)
         lon = matlab_data[eddy[4]][:].squeeze()
         lat = matlab_data[eddy[5]][:].squeeze()
-        polyline = np.stack((lon, lat), axis = 1)
+        polyline = np.stack((lon, lat), axis = 1).tolist()
         writers["outer"].poly([polyline])
 
         if cyclone:
@@ -81,7 +81,7 @@ def write(writers, cell, cyclone):
                                     eddy_index = eddy_index)
         lon = matlab_data[eddy[8]][:].squeeze()
         lat = matlab_data[eddy[9]][:].squeeze()
-        polyline = np.stack((lon, lat), axis = 1)
+        polyline = np.stack((lon, lat), axis = 1).tolist()
         writers["max_speed"].poly([polyline])
 
     n_shapes = len(writers["extr"])
diff --git a/Convert_Matlab/inst_eddies_v6.py b/Convert_Matlab/inst_eddies_v6.py
index cf7bed78..46fdd6d9 100755
--- a/Convert_Matlab/inst_eddies_v6.py
+++ b/Convert_Matlab/inst_eddies_v6.py
@@ -77,7 +77,7 @@ def write(writers, cell, cyclone):
 
         writers["outer"].record(r_eq_area = eddy[6], ssh = ssh, days_1950 = d,
                                 eddy_index = eddy_index)
-        polyline = np.stack((eddy[4], eddy[5]), axis = 1)
+        polyline = np.stack((eddy[4], eddy[5]), axis = 1).tolist()
         writers["outer"].poly([polyline])
 
         if cyclone:
@@ -87,7 +87,7 @@ def write(writers, cell, cyclone):
 
         writers["max_speed"].record(r_eq_area = eddy[10], ssh = ssh,
                                     days_1950 = d, eddy_index = eddy_index)
-        polyline = np.stack((eddy[8], eddy[9]), axis = 1)
+        polyline = np.stack((eddy[8], eddy[9]), axis = 1).tolist()
         writers["max_speed"].poly([polyline])
 
     n_shapes = len(writers["extr"])
-- 
GitLab