Instead of using buffer(geom, 0) you could rebuild the polygon manually.

This works...

SELECT
ST_BuildArea(
ST_Union(
ST_Boundary(the_geom),
ST_PointN(ST_Boundary(the_geom),1)
)
)
FROM
(SELECT 'MULTIPOLYGON...'::geometry);

-- Kevin


Stefan Zweig 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

Reply via email to