[postgis-users] Bugs in Postgis/GEOS

Markus Schaber schabios@logi-track.com
Mon Jan 12 11:24:03 2004


Hi,

For our company project, we want to use PostGIS, but it seems that the current 0.8.0 still has some bugs that produce weird results or even lead to a PostGreSQL Server crash.

We're currently trying to isolate some simplified testcases that cause the crashes, but were not successful yet (and, as you may understand, I am not in the position to release our real world application data :-)

But for one case of weird data, I have an easy and reproducable example:

gistest=# select geom from test;
              geom
---------------------------------
 SRID=-1;LINESTRING(1 1,3 3,4 4)
 SRID=-1;LINESTRING(1 1,2 3,4 4)
 SRID=-1;LINESTRING(1 1,2 2,4 4)
 SRID=-1;LINESTRING(1 1,2 4,4 4)
(4 Zeilen)
 
gistest=# select geomunion(geom) from test;
                                     geomunion                                                                                 
------------------------------------------------------------------------------------
 SRID=-1;MULTILINESTRING((1 1,2 4,4 4),(1 1,2 2),(2 2,3 3),(3 3,4 4),(1 1,2 3,0 0))
(1 Zeile)
 
gistest=# select geomunion(geom) from test;
                                         geomunion                                                                                 
-------------------------------------------------------------------------------------------
 SRID=-1;MULTILINESTRING((1 1,2 4,4 4),(1 1,2 2),(2 2,3 3),(3 3,4 4),(1 1,2 3,1.7e-308 2))
(1 Zeile)
 
gistest=# select geomunion(geom) from test;
                                         geomunion                                                                                 
-------------------------------------------------------------------------------------------
 SRID=-1;MULTILINESTRING((1 1,2 4,4 4),(1 1,2 2),(2 2,3 3),(3 3,4 4),(1 1,2 3,1.7e-308 2))
(1 Zeile)
 
gistest=# select numgeometries(geom) from test;
 numgeometries
---------------

Please notice that the first query produces a differen tresult compared to the following (identical) queries.

My Human brain thinks that the result should be something like

 SRID=-1;MULTILINESTRING((1 1,4 4),(1 1,2 3,4 4),(1 1,2 4,4 4))

or (including some optimizations)

 SRID=-1;MULTILINESTRING((1 1,4 4,2 3,1 1,2 4,4 4))

I don't see any reason for the algorithm to find coords like (0 0) or (1.7e-308 2) which are neither part of the original input data nor any intersection points thereof.

Can you reproduce this behaviour and confirm it as a bug?

What can I (with very limited C++ knowledge) do to help with fixing it?

Should I better switch to the devel list for such questions?

Thanks a lot for your patience,
Markus Schaber

PS: I'm currently developing some improvements for the PostGIS Java interface - are you interested in patches? If yes, is the devel list the correct place to discuss them?


-- 
markus schaber | dipl. informatiker
logi-track ag | rennweg 14-16 | ch 8001 zürich
phone +41-43-888 62 52 | fax +41-43-888 62 53
mailto:schabios@logi-track.com | www.logi-track.com