This works in JTS. The geometry is *wildly* invalid, but buffer(0) is generally able to handle this kind of thing. However, it's not really in spec... 8^)

Paul Ramsey wrote:
Of course, it's also invalid...

NOTICE:  Hole lies outside shell at or near point 12.1087 50.8989


On Thu, Apr 24, 2008 at 4:26 PM, Paul Ramsey <[EMAIL PROTECTED]> wrote:
That's nice, crashed on my platform too (OS/X 10.5, GEOS trunk).
 What's your platform?



 On Thu, Apr 24, 2008 at 4:02 PM, Stefan Zweig <[EMAIL PROTECTED]> wrote:
 >
 >  Hi paul,
 >
 >  here we go, there is the new animal for your "zoo":
 >
 >  select buffer(st_geomFromText('MULTIPOLYGON(((12.098789 50.905962,12.020813 
50.947952,12.017285 50.967973,12.090563 50.976663,12.163175 50.959211,12.133071 
50.932547,12.154221 50.884623,12.098789 50.905962),(12.1286244 
50.8950136,12.1287442 50.8951404,12.1278504 50.8950303,12.1278598 
50.8948964,12.1286244 50.8950136),(12.0922723 50.9546386,12.0926358 
50.9541698,12.092428 50.955268,12.0922918 50.9551482,12.0922723 
50.9546386),(12.1087437 50.8989343,12.1078831 50.8989326,12.107387 
50.898063,12.1079471 50.8986231,12.1087437 50.8989343),(12.1228954 
50.9164961,12.1233835 50.9177103,12.1224951 50.918326,12.1212225 
50.9188562,12.1228954 50.9164961),(12.142612 50.884225,12.1490617 
50.8856118,12.149222 50.885687,12.1437629 50.8846708,12.142612 
50.884225),(12.090005 50.955723,12.0901606 50.9556077,12.0940001 
50.9560483,12.0920097 50.9573598,12.090005 50.955723),(12.1515115 
50.9369131,12.1504699 50.9391583,12.148134 50.93827,12.1503487 
50.938083,12.1515115 50.9369131),(12.1360606 50.8892593,12.1344196 
50.8892146,12.1357368 50.8858406,12.1399245 50.8865412,12.1360606 
50.8892593),(12.087163 50.927347,12.0851166 50.9255544,12.084949 
50.924396,12.08763 50.9271838,12.0894109 50.9306506,12.088262 50.932468,12.087163 
50.927347),(12.0873679 50.9640895,12.0886015 50.9574848,12.069322 
50.955508,12.094624 50.954051,12.1028119 50.9615,12.0873679 
50.9640895)),((12.0832251 50.8628502,12.072535 50.8760369,12.0803652 
50.8942363,12.0954397 50.8841184,12.0832251 50.8628502)),((12.089448 
50.957301,12.089702 50.959116,12.0927875 50.9596698,12.0938183 
50.9579664,12.089448 50.957301)),((12.0964798 50.9605757,12.0969206 
50.9605509,12.0939251 50.9599157,12.0952655 50.960698,12.0964798 
50.9605757)),((12.089702 50.959116,12.0901026 50.9596047,12.0926431 
50.9598645,12.0907201 50.9594751,12.089702 50.959116)))'),0);
 >
 >  the select crashes with
 >
 >
 >  select postgis_full_version()
 >  "POSTGIS="1.3.3" GEOS="3.0.0-CAPI-1.4.1" PROJ="Rel. 4.6.0, 21 Dec 2007" 
USE_STATS"
 >
 >  regards,
 >
 >  stefan
 >
 >
 >  > -----Ursprüngliche Nachricht-----
 >  > Von: PostGIS Users Discussion <[email protected]>
 >  > Gesendet: 22.04.08 17:05:32
 >  > An: "PostGIS Users Discussion" <[email protected]>
 >  > Betreff: Re: [postgis-users] error with buffer()
 >
 >
 >
 >
 >  > Send in your geometry! Some geometry/parameter combinations break
 >  > ST_Buffer() and we like to add those to our zoo of unusual and
 >  > interesting cases for future improvement.
 >  >
 >  > P
 >  >
 >  > In the meantime, try slightly simplifying your geometry first, or
 >  > doing your buffer in 2 or more steps of smaller tolerances, or
 >  > sacrificing a goat before starting the function call... :)
 >  >
 >  > On Tue, Apr 22, 2008 at 2:52 AM, Stefan Zweig <[EMAIL PROTECTED]> wrote:
 >  > >
 >  > >
 >  > >  hi list,
 >  > >
 >  > >  there seems to be an error within the buffer(geometry, precision) 
function.
 >  > >
 >  > >  i just tried to the following statement:
 >  > >  UPDATE _g2870 SET the_geom_3_b = buffer(the_geom_3, 0) WHERE 
isValid(the_geom_3) = false;
 >  > >  and it resulted into a broken connection to the postmaster. postgis 
seems to have problems with the buffer function and invalid geometries. the server.log 
says the following:
 >  > >
 >  > >  bufferOriginalPrecision failed (TopologyException: unable to assign 
hole to a shell), trying with reduced precision
 >  > >  recomputing with precision scale factor = 1e+12
 >  > >  Scaler: offsetX,Y: 0,0 scaleFactor: 1e+12
 >  > >  ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+12
 >  > >  recomputing with precision scale factor = 1e+11
 >  > >  Scaler: offsetX,Y: 0,0 scaleFactor: 1e+11
 >  > >  ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+11
 >  > >  recomputing with precision scale factor = 1e+10
 >  > >  Scaler: offsetX,Y: 0,0 scaleFactor: 1e+10
 >  > >  ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+10
 >  > >  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
 >  > >  pdata 10.100.6.140(1782) UPDATE: 
../../source/headers/geos/noding/SegmentString.h:175: void 
geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« 
nicht erfà llt.
 >
 >
 > > >  LOG: server process (PID 7510) was terminated by signal 6
 >  > >  LOG: terminating any other active server processes
 >  > >  WARNING: terminating connection because of crash of another server 
process
 >  > >  DETAIL: The postmaster has commanded this server process to roll back 
the current transaction and exit, because another server process exited abnormally and 
possibly corrupted shared memory.
 >  > >  HINT: In a moment you should be able to reconnect to the database and 
repeat your command.
 >  > >  WARNING: terminating connection because of crash of another server 
process
 >  > >  DETAIL: The postmaster has commanded this server process to roll back 
the current transaction and exit, because another server process exited abnormally and 
possibly corrupted shared memory.
 >  > >  HINT: In a moment you should be able to reconnect to the database and 
repeat your command.
 >  > >  LOG: all server processes terminated; reinitializing
 >  > >  LOG: database system was interrupted at 2008-04-22 11:18:52 CEST
 >  > >  LOG: checkpoint record is at 0/9A4F7BC8
 >  > >  LOG: redo record is at 0/9A4F7BC8; undo record is at 0/0; shutdown TRUE
 >  > >  LOG: next transaction ID: 0/51508; next OID: 322761
 >  > >  LOG: next MultiXactId: 1; next MultiXactOffset: 0
 >  > >  LOG: database system was not properly shut down; automatic recovery in 
progress
 >  > >  LOG: redo starts at 0/9A4F7C18
 >  > >  LOG: unexpected pageaddr 0/9161E000 in log file 0, segment 154, offset 
6414336
 >  > >  LOG: redo done at 0/9A61D790
 >  > >  LOG: database system is ready
 >  > >
 >  > >
 >  > >  my postgis_version is:
 >  > >  select postgis_full_version()
 >  > >  "POSTGIS="1.3.3" GEOS="3.0.0-CAPI-1.4.1" PROJ="Rel. 4.6.0, 21 Dec 2007" 
USE_STATS"
 >  > >
 >  > >  any ideas?
 >  > >
 >  > >  regards,
 >  > >  stefan
 >  > >  _______________________________________________________________________
 >  > >  Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage
 >  > >  kostenlos testen. http://www.pc-sicherheit.web.de/startseite/?mc=022220
 >  > >
 >  > >  _______________________________________________
 >  > >  postgis-users mailing list
 >  > >  [email protected]
 >  > >  http://postgis.refractions.net/mailman/listinfo/postgis-users
 >  > >
 >  > _______________________________________________
 >  > postgis-users mailing list
 >  > [email protected]
 >  > http://postgis.refractions.net/mailman/listinfo/postgis-users
 >  >
 >
 >
 >  ______________________________________________________
 >  Bis 50 MB Dateianhänge? Kein Problem!
 >  http://freemail.web.de/club/landingpage.htm/?mc=025556
 >
 >
 >
 >  _______________________________________________
 >  postgis-users mailing list
 >  [email protected]
 >  http://postgis.refractions.net/mailman/listinfo/postgis-users
 >

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users


--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022


_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to