[postgis-users] Bugs in Postgis/GEOS

Markus Schaber schabios at logi-track.com
Mon Jan 12 03:24:03 PST 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 at logi-track.com | www.logi-track.com



More information about the postgis-users mailing list