I have a couple of procedural questions. I am populating my table with point 
and cell geometries programmatically. First question: When I INSERT values 
other than the geometry in rows and then UPDATE the geometry in a second 
process, everything works --

   $sth = $dbh->prepare(qq{INSERT INTO base.cells (x, y) VALUES (?, ?)});

   for (@a) {
       $sth->execute($a[0], $a[b]);
   }

   $sth = $dbh->prepare(qq{
       UPDATE base.new_cells 
       SET 
           the_point = GeomFromText('POINT(' || x || ' ' || y || ')', 2163),
           the_cell  = GeomFromText(
               'POLYGON((' || 
               (x - $csmid) || ' ' || (y - $csmid) || ',' || 
               (x + $csmid) || ' ' || (y - $csmid) || ',' || 
               (x + $csmid) || ' ' || (y + $csmid) || ',' || 
               (x - $csmid) || ' ' || (y + $csmid) || ',' || 
               (x - $csmid) || ' ' || (y - $csmid) ||  '))', 
               2163
           )
   });
   $sth->execute;

However, if I try to do the above in one attempt like so --

   $sth = $dbh->prepare(qq{INSERT INTO base.cells (x, y, the_point, the_cell) 
VALUES (?, ?, ?, ?)});

   for (@a) {
       $sth->execute(
           $a[0], 
           $a[b], 
           GeomFromText('POINT(' || $a[0] || ' ' || $a[y] || ')', 2163),
           GeomFromText(
               'POLYGON((' || 
               (x - $csmid) || ' ' || (y - $csmid) || ',' || 
               (x + $csmid) || ' ' || (y - $csmid) || ',' || 
               (x + $csmid) || ' ' || (y + $csmid) || ',' || 
               (x - $csmid) || ' ' || (y + $csmid) || ',' || 
               (x - $csmid) || ' ' || (y - $csmid) ||  '))', 
               2163
           )
       );
   }

I get an error saying the method GeomFromText doesn't exist. Would like to 
understand the reason behind this.

Second question: I am doing the following to set the SRID (besides specifying 
it in the UPDATE step above).

   INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, 
f_geometry_column, coord_dimension, srid, type)
   VALUES ('', 'base', 'cells', 'the_point', 2, 2163, 'POINT');
   INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, 
f_geometry_column, coord_dimension, srid, type)
   VALUES ('', 'base', 'cells', 'the_cell', 2, 2163, 'POLYGON');

Is the above correct and sufficient?

Puneet.
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to