]> gitweb.michael.orlitzky.com - dead/census-tools.git/blobdiff - src/Census.py
Added a style for the <strong> element.
[dead/census-tools.git] / src / Census.py
index ae4d28d0de1a72bd631021cb6da270193850d991..da9283d2efb20c4c7d1f8896b120fad8f98b3815 100644 (file)
@@ -1,6 +1,7 @@
 import pgdb
 
 import GPS
+import SummaryFile1
 
 
 class Database:
@@ -20,7 +21,7 @@ class Database:
     def __del__(self):
         self.connection.close()
 
-        
+
     def find_average_population_density(self, coords):
         """
         Find the average population density at a set of GPS coordinates.
@@ -29,9 +30,9 @@ class Database:
                 
         query = """
         SELECT population_density
-        FROM (sf1_blocks INNER JOIN tiger
-              ON sf1_blocks.tiger_blkidfp00=tiger.blkidfp00)
-        WHERE ST_Contains(tiger.the_geom,
+        FROM (sf1_blocks INNER JOIN tiger_blocks
+              ON sf1_blocks.blkidfp00=tiger_blocks.blkidfp00)
+        WHERE ST_Contains(tiger_blocks.the_geom,
                           ST_SetSRID(ST_Point(%.6f, %.6f), %d));
         """
         
@@ -70,8 +71,8 @@ class Database:
         #
         query = """
         SELECT SUM(sf1_blocks.pop100 *
-                   ( ST_Area(ST_Intersection(%s, tiger.the_geom))
-                   / ST_Area(tiger.the_geom) )
+                   ( ST_Area(ST_Intersection(%s, tiger_blocks.the_geom))
+                   / ST_Area(tiger_blocks.the_geom) )
                ) AS covered_population
                """ % geometric_object
         sql_params = (well_known_text, self.srid)
@@ -80,15 +81,15 @@ class Database:
         # Join our two block tables, so that we have both the demographic
         # and geometric data.
         query += """
-        FROM (sf1_blocks INNER JOIN tiger
-              ON sf1_blocks.tiger_blkidfp00 = tiger.blkidfp00)
+        FROM (sf1_blocks INNER JOIN tiger_blocks
+              ON sf1_blocks.blkidfp00 = tiger_blocks.blkidfp00)
         """
 
 
         # We only need to calculate the covered population for the blocks
         # that actually intersect our object.
         query += """
-        WHERE (ST_Intersects(%s, tiger.the_geom))
+        WHERE (ST_Intersects(%s, tiger_blocks.the_geom))
         """ % geometric_object
         # geometric_object hasn't been substituted yet, so we need
         # to add the sql_params twice.
@@ -110,3 +111,28 @@ class Database:
         else:
             return None
 
+
+
+    def get_block_geometry_as_wkt(self, blkidfp00):
+        """
+        Find the geometry of a (uniquely-identified) block, in
+        Well-Known Text format.
+        """
+        cursor = self.connection.cursor()
+
+        query = """
+        SELECT ST_AsText(tiger_blocks.the_geom)
+        FROM tiger_blocks
+        WHERE tiger_blocks.blkidfp00 = %s;
+        """
+        sql_params = (blkidfp00,)
+
+        cursor.execute(query, sql_params)
+        rows = cursor.fetchall()
+        cursor.close()
+
+        if len(rows) > 0:
+            return rows[0][0]
+        else:
+            return None
+