<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
<br><br><br>           I started using postgis recently because of the spatial capabilities, but I'm stuck now.<br><blockquote><style><br>.hmmessage P<br>{<br>margin:0px;<br>padding:0px<br>}<br>body.hmmessage<br>{<br>FONT-SIZE: 10pt;<br>FONT-FA</style>I
have a list of user-entered geometries that I'm inserting into a table
via perl.  I'm using the following code to insert the geometries into
the table: (ISOL basically refers to a point geometry.)<br><br><br><font size="2"> <br><br>if ($cwa_entries[4] eq "AREA") {<br><br>$sth
= $dbh->prepare("INSERT into cwa
values(GeomFromText('POLYGON(($cwa_entries[3]))', 4326),
'$cwa_entries[6]', '$cwa_entries[5]', nextval('cwa_id_seq'),
'$cwa_entries[0]', '$cwa_entries[1]', '$cwa_entries[4]')") or die
"could not execute: $DBI::errstr";<br><br>}<br><br>elsif ($cwa_entries[4] eq "LINE") {<br><br>$sth
= $dbh->prepare("INSERT into cwa
values(GeomFromText('LINESTRING($cwa_entries[3])', 4326),
'$cwa_entries[6]', '$cwa_entries[5]', nextval('cwa_id_seq'),
'$cwa_entries[0]', '$cwa_entries[1]', '$cwa_entries[4]')") or die
"could not execute: $DBI::errstr";<br><br>}<br><br>elsif ($cwa_entries[4] eq "ISOL") {<br><br>$sth
= $dbh->prepare("INSERT into cwa
values(GeomFromText('POINT($cwa_entries[3])', 4326), '$cwa_entries[6]',
'$cwa_entries[5]', nextval('cwa_id_seq'), '$cwa_entries[0]',
'$cwa_entries[1]', '$cwa_entries[4]')") or die "could not execute:
$DBI::errstr";<br><br>}<br><br> <br><br>$sth->execute() or die "Could not execute: $DBI::errstr";<br><br> <br><br>Sometimes
there are values that are entered that do not represent valid
geometries.  For instance, I might get a set of coordinates that is
designated a polygon, but the last coordinates don't equal the first
coordinates(i.e. non-closed ring).  I don't have any control over the
data that reaches me(i.e. it's already designated as AREA or LINE or
ISOLD(for point).  So how can I skip the non-closed-ring geometries and only enter the valid geometries so that my script doesn't quit on me and produce an error before it enters all the data. 
Right now, I get an error on the execute statement, and it pretty much
prevents the rest of the data from being inserted into the database. 
This may be a more perl-centered question, but I thought there might be
a postgresql command that has the effect of "insert only if GeomFromText()...is valid", else move on to the next insert.  I did see the </font><span class="term">ST_IsClosed(geometry) and the ST_IsValid(geometry) statements, but I don't know how to implement them prior to the insert.  Thanks for any help.</span><br><font size="2"><br>Shad</font></blockquote><br><br><div><font style="color: rgb(0, 0, 255);" size="1"><span style="font-style: italic; font-family: Lucida Handwriting,Cursive;"></span></font><em><font color="#0000ff" face="Lucida Handwriting" size="1"><br></font></em></div><br /><hr />Get in touch in an instant. <a href='http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_Refresh_getintouch_042008' target='_new'>Get Windows Live Messenger now.</a></body>
</html>