[postgis-users] expand() and accuracy

Hubert Fröhlich hubert.froehlich at bvv.bayern.de
Fri Apr 22 06:48:01 PDT 2005


Hi list,

I am using Postgres 8.0.0, Postgis 1.0.0 RC1 and geos 2.1.1 under SuSE 
Linux 9.2.
Folgendes Problem:

When using expand(geometry, distance) I found that

select astext(expand(geometryfromtext('MULTIPOLYGON(((4450000 
5400000,4450000 5400011,4450011 5400011,4450011 
5400000,44500005400000)))',31468),1));
                                           astext
--------------------------------------------------------------------------------------------
POLYGON((4449999 5399999,4449999 5400012,4450012 5400012,4450012 
5399999,4449999 5399999))

is ok for distance = 1, and also for the following

select astext(expand(geometryfromtext('MULTIPOLYGON(((4450000 
5400000,4450000 5400011,4450011 5400011,4450011 
5400000,44500005400000)))',31468),1.5));
                                                     astext
----------------------------------------------------------------------------------------------------------------
POLYGON((4449998.5 5399998.5,4449998.5 5400012.5,4450012.5 
5400012.5,4450012.5 5399998.5,4449998.5 5399998.5))


however if I enter small values for "distance", as 0.05 , I get

select astext(expand(geometryfromtext('MULTIPOLYGON(((4450000 
5400000,4450000 5400011,4450011 5400011,4450011 
5400000,44500005400000)))',31468),0.05));
                                           astext
--------------------------------------------------------------------------------------------
POLYGON((4450000 5400000,4450000 5400011,4450011 5400011,4450011 
5400000,4450000 5400000))

I don´t get what i`d expect.
Moreover, if I use geometries with small values everything seems OK again.

select astext(expand(geometryfromtext('MULTIPOLYGON(((4450 5400,4450 
5400,4450 5400,4450 5400,4450 5400)))',31468),0.05));
 
            astext
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
POLYGON((4449.9501953125 5399.9501953125,4449.9501953125 
5400.0498046875,4450.0498046875 5400.0498046875,4450.0498046875 
5399.9501953125,4449.9501953125 5399.9501953125))


select astext(expand(geometryfromtext('MULTIPOLYGON(((445000 
540000,445000 540001,445001 540001,445001 540000,445000 
540000)))',31468),0.05));
                                                               astext
------------------------------------------------------------------------------------------------------------------------------------
POLYGON((444999.9375 539999.9375,444999.9375 540001.0625,445001.0625 
540001.0625,445001.0625 539999.9375,444999.9375 539999.9375))



I guess it has to do with accuracy handling (small distance and big 
geometry coordinates) . Anybody who knows a solution or an explanation?

Thanks.
-- 
Mit freundlichen Grüßen / With kind regards

Hubert Fröhlich

-------------------------------------------------------------------------------
Dr.-Ing. Hubert Fröhlich			
Bezirksfinanzdirektion München 			
Alexandrastr. 3, D-80538 München, GERMANY
Tel. :+49 (0)89 / 2190 - 2980
Fax  :+49 (0)89 / 2190 - 2997
hubert dot froehlich at bvv dot bayern dot de



More information about the postgis-users mailing list