Source: postgis
Version: 3.1.1+dfsg-1+deb11u1
Severity: important
Tags: upstream fixed-upstream pending
Control: submitter -1 Stephan Großberndt <s.grossber...@sidebysite.de>
Control: fixed -1 postgis/3.1.4+dfsg-1

Dear Maintainer,

As reported by Stephan Großberndt <s.grossber...@sidebysite.de> in #1031410:

"
 at our company we were quite surprised by this seemingly minor update 
3.1.1+dfsg-1+deb11u1, because it completely broke an application: Due to the 
change the x and y axis are now inverted when converting coordinates to EPSG 
31466:

 Before (this output is from 11.19, but was like this on 13 before as well):

 SELECT geometry,ST_AsGeoJSON(ST_Transform(ST_SetSRID(geometry, 3857), 31466)) 
FROM osm_car_sharing_node LIMIT 1;
                       geometry                      |          st_asgeojson
 
----------------------------------------------------+--------------------------------------------------------------------
  0101000020110F000004F0844A1349264120ED527FE9DD5841 | 
{"type":"Point","coordinates":[2539841.86185744,5586869.51937972]}
 (1 row)


 Now:

 SELECT geometry, ST_AsGeoJSON(ST_Transform(ST_SetSRID(geometry, 3857), 31466)) 
FROM osm_car_sharing_node LIMIT 1;
 -[ RECORD 1 
]+------------------------------------------------------------------------------------------------------------------------------
 geometry     | 0101000020110F000004F0844A1349264120ED527FE9DD5841
 st_asgeojson | 
{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:31466"}},"coordinates":[5586869.519378289,2539841.861857439]}

 I understand the rationale for the change in general, but in my opinion such a 
major change really should not be part of such a minor update.

 Is there an option to fix this apart from changing all queries?
"

And:

"
 after further investigation this looks more like a bug in the backport.

 At first I thought the change was about flipping x and y for all coordinate 
systems except those containing "lat/lon", which did not make much sense to me, 
but I would have been willing to accept this.

 But apparently this flip is only in this PostGIS 3.1.1+dfsg-1+deb11u1 version, 
earlier and later PostGIS versions correctly return x as x and y as y.

 For this query:

 SELECT 
ST_AsGeoJSON(ST_Transform(ST_SetSRID('0101000020110F000004F0844A1349264120ED527FE9DD5841'::geometry,
 3857), 31466));

 the following versions correctly return x=2539841,y=5586869:

 - PostgresQL 11 with PostGIS 2.5.1+dfsg-1 from Debian Sources
 - PostgresQL 11 with PostGIS 2.5.5+dfsg-1.pgdg100+2 from PostgreSQL Sources
 - PostgresQL 13 with PostGIS 3.1.1+dfsg-1 from Debian Sources
 - PostgresQL 13 with PostGIS 3.3.2+dfsg-1.pgdg110+1 from Debian Sources


 Only

 - PostgresQL 13 with PostGIS 3.1.1+dfsg-1+deb11u1 from Debian Sources

 incorrectly returns x=5586869,y=2539841

 Should I file another bug report for this? 
"

Some digging in the upstream stable-3.1 branch reveals two additional commits 
required to resolve this regression:

 
https://trac.osgeo.org/postgis/changeset/11efb9f0cdc71cf2bdc4850491218495a07b18ba/git
 
https://trac.osgeo.org/postgis/changeset/8baf0b07b26df12d246c82bdae8ecd77371f3d24/git

With these two commits added as patches to the postgis (3.1.1+dfsg-1+deb11u1) 
package, the order is correct again:

 gis=# SELECT 
ST_AsGeoJSON(ST_Transform(ST_SetSRID('0101000020110F000004F0844A1349264120ED527FE9DD5841'::geometry,
 3857), 31466));
                                                          st_asgeojson          
                                                
 
-------------------------------------------------------------------------------------------------------------------------------
  
{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:31466"}},"coordinates":[2539841.861857439,5586869.519378289]}
 (1 row)

The axis order for the issue reported in #1031392 is also still correct:

 gis=# SELECT ST_AsEWKT(ST_Transform(ST_GeomFromEWKT('SRID=3976;POINT(-25000 
75000)'), 4326));
                        st_asewkt                        
 --------------------------------------------------------
  SRID=4326;POINT(-18.43494882292201 -89.27021258118658)
 (1 row)

Reply via email to