[postgis-devel] [PostGIS] #503: ST_Area on small Polygons in EPSG:31467 gives incorrect results depending on 32-/64-system-architecture

PostGIS trac at osgeo.org
Thu Apr 15 06:48:13 PDT 2010


#503: ST_Area on small Polygons in EPSG:31467 gives incorrect results depending
on 32-/64-system-architecture
---------------------+------------------------------------------------------
 Reporter:  mjansen  |       Owner:  pramsey      
     Type:  defect   |      Status:  new          
 Priority:  medium   |   Milestone:  PostGIS 1.5.2
Component:  postgis  |     Version:  1.5.X        
 Keywords:           |  
---------------------+------------------------------------------------------
 See this thread on the postgis-users-list:
 http://old.nabble.com/st_area-and-0.001953125-td28217229.html

 Running this SQL:

 {{{
 SELECT ST_Area(ST_GeomFromEWKT(foo.ewkt)) AS area FROM (
 SELECT
 'SRID=31467;POLYGON((3508395.5093 5910738.8973,3508505.2864
 5910690.8533,3508300.641 5910780.4164,3508395.5093 5910738.8973))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3508395.5093 5949092.7294,3508333.8642
 5949090.138,3508411.1808 5949093.3882,3508395.5093 5949092.7294))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3498246.2563 5815493.2389,3498246.2472
 5815493.1259,3498246.2094 5815493.1202,3498246.2563 5815493.2389))' as
 ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3539635.9601 5832797.6616,3539635.9574
 5832797.6613,3539635.9565 5832797.6851,3539635.9601 5832797.6616))' as
 ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3546842.9496103 5778962.75289926,3546842.9761781
 5778962.61321963,3546842.976 5778962.613,3546842.9496103
 5778962.75289926))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3427425.5879 5841806.726,3427416.0171
 5841792.2466,3427416.01703247 5841792.24664866,3427425.5879 5841806.726))'
 as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3538420.34038636 5912791.09822265,3538420.31141462
 5912790.97224757,3538420.3113 5912790.9723,3538420.34038636
 5912791.09822265))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3577970.8916 5729534.987,3577827.5551
 5729621.0532,3577805.6282 5729634.2192,3577970.8916 5729534.987))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3472882.79775403 5870816.50310222,3472882.7978
 5870816.5031,3472875.19541818 5870717.64922727,3472882.79775403
 5870816.50310222))' as ewkt
 UNION SELECT
 'SRID=31467;POLYGON((3557563.34513562 5791040.4530635,3557563.44511383
 5791040.49625184,3557563.3452 5791040.4529,3557563.34513562
 5791040.4530635))'
 ) as foo(ewkt);
 }}}

 Should return

 {{{
          area
 ----------------------
   0.00210952758789062
  8.58306884765625e-06
   0.00310611724853516
   0.00228118896484375
  8.58306884765625e-06
  3.24249267578125e-05
  0.000721931457519531
   0.00169944763183594
  1.43051147460938e-05
  0.000333786010742188
 }}}

 And does so on

 {{{
 POSTGIS="1.4.1" GEOS="3.1.0-CAPI-1.5.0" PROJ="Rel. 4.6.1, 21 August 2008"
 USE_STATS
 }}}

 running on
 {{{
 PostgreSQL 8.4.2 on i486-pc-linux-gnu, compiled by GCC gcc-4.4.real
 (Ubuntu 4.4.1-4ubuntu8) 4.4.1, 32-bit
 }}}

 For the following combinations of PostgreSQL / PostGIS
 {{{
 PostgreSQL 8.2.4 on x86_64-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2
 20061115 (prerelease) (Debian 4.1.1-21)
 POSTGIS="1.3.1" GEOS="2.2.3-CAPI-1.1.1" PROJ="Rel. 4.4.9, 29 Oct 2004"
 USE_STATS
 }}}

 {{{
 PostgreSQL 8.4.3 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC)
 4.4.3 20100316 (prerelease), 64-bit
 POSTGIS="1.5.1" GEOS="3.2.0-CAPI-1.6.0" PROJ="Rel. 4.7.1, 23 September
 2009" LIBXML="2.7.6" USE_STATS
 }}}

 {{{
 PostgreSQL 8.2.13 on x86_64-unknown-linux-gnu, compiled by GCC gcc (SUSE
 Linux) 4.3.2 [gcc-4_3-branch revision 141291]
 POSTGIS="1.3.6" GEOS="3.1.1-CAPI-1.6.0" PROJ="Rel. 4.6.1, 21 August 2008"
 USE_STATS
 }}}

 {{{
 PostgreSQL 8.2.15 on x86_64-unknown-linux-gnu, compiled by GCC gcc (SUSE
 Linux) 4.4.1 [gcc-4_4-branch revision 150839]
 POSTGIS="1.3.6" GEOS="3.1.1-CAPI-1.6.0" PROJ="Rel. 4.7.1, 23 September
 2009" USE_STATS (procs from 1.3.3 need upgrade)
 }}}

 {{{
 PostgreSQL 8.4.2 on x86_64-unknown-linux-gnu, compiled by GCC gcc (SUSE
 Linux) 4.4.1 [gcc-4_4-branch revision 150839], 64-bit
 POSTGIS="1.4.0" GEOS="3.2.0-CAPI-1.6.0" PROJ="Rel. 4.6.1, 21 August 2008"
 USE_STATS
 }}}

 The query returns areas of either 0 or 0.001953125, e.g.:

 {{{
     area
 -------------
            0
  0.001953125
  0.001953125
  0.001953125
  0.001953125
  0.001953125
  0.001953125
  0.001953125
            0
  0.001953125
 }}}

 The one visible difference between the systems is that the code works as
 expected on 32-bit-machines, but gives strange results on 64-bit-machines.

-- 
Ticket URL: <http://trac.osgeo.org/postgis/ticket/503>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-devel mailing list