[DebianGIS-dev] Bug#539088: libgeos-3.1.0: Assertion fails when buffering a specific multipolygon

Tuure Laurinolli tuure at laurinolli.net
Tue Jul 28 23:36:51 UTC 2009


Package: libgeos-3.1.0
Version: 3.1.0-1
Severity: normal


When doing 0-distance buffer on the geometry in script "test2.py", GEOS prints
a message stderr and causes the process to exit with code 134.

Test script "test2.py":

from shapely import wkt
mp = wkt.loads('MULTIPOLYGON (((3375988.599 6680548.657, 3375856.477 6680761.861, 3376067.385 6680748.959, 3375988.599 6680548.657), (3375921.642 6680736.744, 3375920.948 6680725.834, 3376044.612 6680717.931, 3375921.642 6680736.744)), ((3376292.713 6680820.212, 3376320.365 6680785.36, 3376043.927 6680525.464, 3376292.713 6680820.212)))')
mp.buffer(0)

Running the script requires package python-shapely. Run as follows:
 % python test.py

Expected result:

MULTIPOLYGON (((3376292.7129999999888241 6680820.2120000002905726, 3376320.3650000002235174 6680785.3600000003352761, 3376043.9270000001415610 6680525.4639999996870756, 3376292.7129999999888241 6680820.2120000002905726)), ((3375988.5989999999292195 6680548.6569999996572733, 3375856.4769999999552965 6680761.8609999995678663, 3376067.3849999997764826 6680748.9589999997988343, 3375988.5989999999292195 6680548.6569999996572733), (3375921.6419999999925494 6680736.7439999999478459, 3375920.9479999998584390 6680725.8339999997988343, 3376044.6120000001974404 6680717.9309999998658895, 3375921.6419999999925494 6680736.7439999999478459)))

printed on stdout

Actual result:

bufferOriginalPrecision failed (TopologyException: unable to assign hole to a shell), trying with reduced precision
recomputing with precision scale factor = 1e+09
Scaler: offsetX,Y: 0,0 scaleFactor: 1e+09
ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+09
recomputing with precision scale factor = 1e+08
Scaler: offsetX,Y: 0,0 scaleFactor: 1e+08
ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+08
recomputing with precision scale factor = 1e+07
Scaler: offsetX,Y: 0,0 scaleFactor: 1e+07
ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+07
recomputing with precision scale factor = 1e+06
Scaler: offsetX,Y: 0,0 scaleFactor: 1e+06
ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+06
recomputing with precision scale factor = 100000
Scaler: offsetX,Y: 0,0 scaleFactor: 100000
ReScaler: offsetX,Y: 0,0 scaleFactor: 100000
recomputing with precision scale factor = 10000
Scaler: offsetX,Y: 0,0 scaleFactor: 10000
ReScaler: offsetX,Y: 0,0 scaleFactor: 10000
recomputing with precision scale factor = 1000
Scaler: offsetX,Y: 0,0 scaleFactor: 1000
ReScaler: offsetX,Y: 0,0 scaleFactor: 1000
recomputing with precision scale factor = 100
Scaler: offsetX,Y: 0,0 scaleFactor: 100
ReScaler: offsetX,Y: 0,0 scaleFactor: 100
recomputing with precision scale factor = 10
Scaler: offsetX,Y: 0,0 scaleFactor: 10
ReScaler: offsetX,Y: 0,0 scaleFactor: 10
recomputing with precision scale factor = 1
recomputing with precision scale factor = 0.1
Scaler: offsetX,Y: 0,0 scaleFactor: 0.1
ReScaler: offsetX,Y: 0,0 scaleFactor: 0.1
recomputing with precision scale factor = 0.01
Scaler: offsetX,Y: 0,0 scaleFactor: 0.01
ReScaler: offsetX,Y: 0,0 scaleFactor: 0.01
recomputing with precision scale factor = 0.001
Scaler: offsetX,Y: 0,0 scaleFactor: 0.001
python: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Assertion `pts->size() > 1' failed.
zsh: abort      python test2.py

printed on stderr

The same problem can be reproduced using other software that uses GEOS
as well, e.g. postgresql-8.3-postgis and the operation:

SELECT ST_BUFFER(ST_GEOMFROMTEXT('MULTIPOLYGON (((3375988.599 6680548.657, 3375856.477 6680761.861, 3376067.385 6680748.959, 3375988.599 6680548.657), (3375921.642 6680736.744, 3375920.948 6680725.834, 3376044.612 6680717.931, 3375921.642 6680736.744)), ((3376292.713 6680820.212, 3376320.365 6680785.36, 3376043.927 6680525.464, 3376292.713 6680820.212)))'), 0);

The problem has been fixed in upstream GEOS release 3.1.1.

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.28.7pryan (SMP w/2 CPU cores)
Locale: LANG=en_US, LC_CTYPE=fi_FI at euro (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash

Versions of packages libgeos-3.1.0 depends on:
ii  libc6                         2.9-4      GNU C Library: Shared libraries
ii  libgcc1                       1:4.3.3-3  GCC support library
ii  libstdc++6                    4.3.3-3    The GNU Standard C++ Library v3

libgeos-3.1.0 recommends no packages.

libgeos-3.1.0 suggests no packages.

-- debconf-show failed





More information about the Pkg-grass-devel mailing list