]> gitweb.michael.orlitzky.com - dead/census-tools.git/commitdiff
Added an InvalidAreaError class.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 10 Sep 2009 04:57:39 +0000 (00:57 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 10 Sep 2009 04:57:39 +0000 (00:57 -0400)
Caused the Block class to raise an InvalidAreaError when its total area is zero.

src/SummaryFile1.py

index 50f23ad0c96a83227137d60c7ff0fd2a4057efe8..3c82186474108e72908d3d3ded341d48470c1409 100644 (file)
@@ -3,6 +3,8 @@ import os, GPS, inspect
 class RecordError(StandardError):
     pass
 
+class InvalidAreaError(StandardError):
+    pass
 
 class GeoRecord:
     """
@@ -25,6 +27,7 @@ class Block:
         # if the input string cannot be converted o the specified
         # type.
         self.block_number = int(geo_record.block)
+        self.tract_number = int(geo_record.tract)
         self.population = int(geo_record.pop100)
         self.area_land = float(geo_record.arealand)
         self.area_water = float(geo_record.areawatr)
@@ -33,6 +36,9 @@ class Block:
         self.coordinates.latitude = float(geo_record.intptlat)
         self.coordinates.longitude = float(geo_record.intptlon)
 
+        if (self.total_area() == 0):
+            raise InvalidAreaError('A block may not have zero area.')
+        
 
     def total_area(self):
         return (self.area_land + self.area_water)
@@ -75,6 +81,10 @@ class GeoRecordParser:
                 block = Block(record)
                 blocks.append(block)
             except ValueError:
+                # A value couldn't be converted to the appropriate type.
+                continue
+            except InvalidAreaError:
+                # Something is funny with the geometry.
                 continue
             
         return blocks