<br><br><div class="gmail_quote">On 29 September 2011 11:37, Sandro Santilli <span dir="ltr"><<a href="mailto:strk@keybit.net" target="_blank">strk@keybit.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>On Thu, Sep 29, 2011 at 11:29:51AM +0200, Szymon Guz wrote:<br>
> On 29 September 2011 11:20, Sandro Santilli <<a href="mailto:strk@keybit.net" target="_blank">strk@keybit.net</a>> wrote:<br>
> > On Thu, Sep 29, 2011 at 11:14:52AM +0200, Szymon Guz wrote:<br>
> > ><br>
</div><div>> > > this works OK, returns something:<br>
> > ><br>
> > > SELECT ... FROM ... WHERE<br>
> > > st_intersects(<br>
> > >   geometry,<br>
> > >   st_geomfromtext('POINT(3 50)', 4326)<br>
> > > );<br>
> > ><br>
> > > but this returns nothing:<br>
> > ><br>
> > > SELECT ... FROM ... WHERE<br>
> > > st_intersects(<br>
> > >   geometry,<br>
> > >   st_geomfromtext('POINT(3 50, 3 50 )', 4326)<br>
> > > );<br>
> ><br>
> > The second should raise an exception due to malformed WKT being used.<br>
> > Doesn't it ?<br>
><br>
</div><div>> The second raises exception only if there is exactly one point. When there<br>
> are more points it works OK:<br>
><br>
> SELECT st_geomfromtext('LINESTRING(3  50)', 4326)<br>
> ERROR:  geometry requires more points<br>
> HINT:  "LINESTRING(3  50)" <-- parse error at position 17 within geometry<br>
><br>
> SELECT st_astext(st_geomfromtext('LINESTRING(3 50, 3 50)', 4326))<br>
><br>
> 'LINESTRING(3 50,3 50)'<br>
<br>
</div>Yes, but you wrote 'POINT(3 50, 3 50)' in your first mail :)<br>
<br>
Anyway, you're now saying that while POINT(3 50) is reported<br>
to intersect something, LINESTRING(3 50, 3 50) isn't. Correct ?<br>
Can you provide literal data showing this discrepance ?<br>
That is, a query where both operands are in WKT form ?<br>
<div><div></div><div><br>
--strk;<br></div></div></blockquote><div><br></div><div>Oh yes, sorry, I meant 'LINESTRING( 3 50, 3 50)' :)</div><div><br></div><div>I managed to replicate the error like this:</div><div><br></div><div><div>CREATE TABLE g2(geometry geometry);</div>
<div><br></div><div>insert into g2(geometry)  </div><div>SELECT ST_Buffer(</div><div> ST_GeomFromText('POINT(3  50)', 4326),</div><div> 50, 'quad_segs=8'</div><div>);</div></div><div><br></div><div><div><br>
</div><div>SELECT </div><div>st_astext(</div><div>        st_intersection(</div><div>          geometry,</div><div>          st_geomfromtext('POINT(3  50)', 4326) </div><div>        )</div><div>) "POINT(3 50)",</div>
<div>st_astext(</div><div>        st_intersection(</div><div>          geometry,</div><div>          st_geomfromtext('LINESTRING(3  50, 3  50)', 4326) </div><div>        )</div><div>) "LINESTRING(3 50, 3 50)",</div>
<div>(</div><div>        SELECT 'POINT'</div><div>        FROM g2</div><div>        WHERE</div><div>        st_intersects(</div><div>          geometry,</div><div>          st_geomfromtext('POINT(3  50)', 4326) </div>
<div>        )</div><div>) "POINT EXISTS",</div><div>(</div><div>        SELECT 'LINE'</div><div>        FROM g2</div><div>        WHERE</div><div>        st_intersects(</div><div>          geometry,</div>
<div>          st_geomfromtext('LINESTRING(3  50, 3  50)', 4326) </div><div>        )</div><div>) "LINESTRING EXISTS"</div><div>FROM g2;</div></div><div><br></div><div>BUT... it turned out that the LINESTRING geometry is not valid:</div>
<div><br></div><div><div>SELECT </div><div>  ST_IsValid(st_geomfromtext('POINT(3  50)', 4326)) "POINT",</div><div>  ST_IsValid(st_geomfromtext('LINESTRING(3  50, 3  50)', 4326)) "LINE"</div>
<div>;</div></div><div><br></div></div><div><br></div>I didn't just know that PostGIS is calm when the geometry is not valid and treats that as empty geometry.<div>I thought it would just throw some error in such a case.<br clear="all">
<div><br></div><div><br></div>-- <br><a href="http://simononsoftware.com/" target="_blank"><b><font face="arial, helvetica, sans-serif" style="background-color:rgb(255, 255, 255)" color="#003300">http://simononsoftware.com/</font></b></a><br>

<br>
</div>