From 49edb13b8ecc76637c997889a658df3a8523662e Mon Sep 17 00:00:00 2001 From: "Fabio A. Correa" Date: Fri, 26 Sep 2014 21:14:50 -0500 Subject: [PATCH 1/2] Additional check for shapefiles with ** --- shapefile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shapefile.py b/shapefile.py index f57ef31..bf3bba9 100644 --- a/shapefile.py +++ b/shapefile.py @@ -482,7 +482,7 @@ def __record(self): continue elif typ == "N": value = value.replace(b('\0'), b('')).strip() - if value == b(''): + if value == b('') or value == b('**'): value = 0 elif deci: value = float(value) From 9f640aa246a8242d8459ad199f74348fb52d3ade Mon Sep 17 00:00:00 2001 From: "Fabio A. Correa" Date: Fri, 26 Sep 2014 21:23:24 -0500 Subject: [PATCH 2/2] Checks for empty shapes --- shapefile.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shapefile.py b/shapefile.py index bf3bba9..2011172 100644 --- a/shapefile.py +++ b/shapefile.py @@ -646,7 +646,8 @@ def __bbox(self, shapes, shapeTypes=[]): shapeType = self.shapeType if shapeTypes: shapeType = shapeTypes[shapes.index(s)] - px, py = list(zip(*s.points))[:2] + if len(s.points): + px, py = list(zip(*s.points))[:2] x.extend(px) y.extend(py) return [min(x), min(y), max(x), max(y)] @@ -821,7 +822,8 @@ def __shpRecords(self): # Write a single point if s.shapeType in (1,11,21): try: - f.write(pack("<2d", s.points[0][0], s.points[0][1])) + if len(s.points) and len(s.points[0])>1: + f.write(pack("<2d", s.points[0][0], s.points[0][1])) except error: raise ShapefileException("Failed to write point for record %s. Expected floats." % recNum) # Write a single Z value