Re: Coordinate transformation of geometries between CRSs with different axis ordering (C API)

Javier Jimenez Shaw via gdal-dev <[email protected]>
Newsgroups gmane.comp.gis.gdal.devel
Message-ID <CADRrdKvGcym_O1xpN=GyM9ZQW8jM2dWv6+iX-LmFmmojpWXOqw@mail.gmail.com>
GDAL (via PROJ) is honoring the axis order of the CRS, except
if OAMS_TRADITIONAL_GIS_ORDER is set.
In your case, the output in ESG:4326 is lat-lon, as expected. If you want
anything else, yes, it is your responsibility.

On Wed, 1 Apr 2026 at 18:11, Florian Katerndahl <[email protected]>
wrote:

> Hi Javier,
>
> I apologize for not being clear enough and the mess of numbers below.
>
> a sample input polygon in EPSG: 5556 is comprised of the coordinates: x:
> 365696.917647, y: 5840653.276548, x: 364734.337581, y: 5794593.871205, x:
> 419979.831607, y: 5793998.808923, x: 413446.242115, y: 5838664.507080, x:
> 365696.917647, y: 5840653.276548 or as WKT:
> POLYGON ((365696.917646939 5840653.27654771,364734.337580538
> 5794593.87120464,419979.831606673 5793998.8089232,413446.242115242
> 5838664.50707989,365696.917646939 5840653.27654771)).
> Transforming this to EPSG:4326 results in the following: x: 52.699111, y:
> 13.012456, x: 52.285039, y: 13.016931, x: 52.290512, y: 13.826754, x:
> 52.690976, y: 13.719374, x: 52.699111, y: 13.012456 and again as WKT:
> POLYGON ((52.6991111242901 13.0124564576972,52.2850386029731
> 13.01693061834,52.2905122538779 13.8267536946937,52.6909763323844
> 13.7193738392656,52.6991111242901 13.0124564576972)).
> The expected output is however: POLYGON ((13.0124564576972
> 52.6991111242901,13.01693061834 52.2850386029731,13.8267536946937
> 52.2905122538779,13.7193738392656 52.6909763323844,13.0124564576972
> 52.6991111242901)). The latter I achieve when setting
> OAMS_TRADITIONAL_GIS_ORDER on the target CRS (EPSG:4326).
>
> Maybe phrasing my question differently is more correct: When
> using OGR_GeomTransformer_Transform to transform geometries, am I correct
> in the assumption that it's my responsibility to make sure the x/y
> coordinates stored in the supplied OGRGeometryH object are stored in the
> order the source CRS expects them according to its data-to-axis mapping and
> that if this ordering differs from what EPSG:4326 defines,
> set OAMS_TRADITIONAL_GIS_ORDER on the target CRS?
>
> Kind regards,
>
> Florian
> On 4/1/26 17:22, Javier Jimenez Shaw wrote:
>
> EPSG:4326 is lat-lon, EPSG:5556 is easting-northing-up.
> I don't see where is your problem.
> It would be easier if you provide some numbers and tell exactly what you
> expect (with numbers).
>
> On Wed, 1 Apr 2026 at 17:14, Florian Katerndahl via gdal-dev <
> [email protected]> wrote:
>
>> Hi Even,
>>
>> thanks for your reply.
>>
>> I don't pass the coordinates directly via `OCTTransform` but use
>> `OGR_GeomTransformer_Transform` to transform polygon geometries. Based
>> on the fact than when fetching the points that make up the input
>> polygon, the x and y coordinates match the axis of the input CRS, my
>> assumption was that I don't need to change the ordering for the input
>> CRS. Looking at the points in the output geometry, the coordinates are
>> flipped when not setting OAMS_TRADITIONAL_GIS_ORDER. This was the reason
>> why I assumed I need to set the axis ordering depending on the CRSs I
>> translate between.
>>
>> But if I understand your reply correctly, I should also not need to
>> touch the axis ordering for the output CRS as GDAL takes care of mapping
>> the data to CRS axis for the output geometry. I suppose my understanding
>> is not sufficient enough (yet) to understand the underlying issue then
>> and I will need to do some further research on my side.
>>
>>
>> Kind regards,
>>
>> Florian
>>
>>
>> On 4/1/26 16:26, Even Rouault wrote:
>> >
>> > Le 01/04/2026 à 16:04, Florian Katerndahl via gdal-dev a écrit :
>> >> Dear all,
>> >>
>> >> I'm currently working on a small program which allows users to
>> >> specify vector inputs in different coordinates systems and that
>> >> potentially "normalizes" them to EPSG:4326 internally to process them
>> >> further. Maybe I'm too inexperienced and there's an easy solution but
>> >> I got hung up on the coordinate transformation when the input CRS has
>> >> a different axis ordering compared to the output CRS using
>> >> GDAL's/OGR's C API.
>> >>
>> >> For example, transforming between EPSG:5556 and EPSG:4326, GDAL
>> >> outputs a warning (forwarded from proj?) that the output's latitude
>> >> is invalid. Setting the axis ordering of the target CRS to
>> >> `OAMS_TRADITIONAL_GIS_ORDER` fixes this and results in correctly
>> >> located polygons. My question is now: Is it sufficient/correct to
>> >> compare the axis ordering of the input and output coordinate systems
>> >> and set above mentioned flag (or a custom mapping when neither
>> >> "x"/"y" are the first two axis) in case they differ?
>> >
>> > The axis ordering of the input CRS vs the one of the output CRS is
>> > complelely unrelated w.r.t your decision about setting or not
>> > OAMS_TRADITIONAL_GIS_ORDER. Setting it or not for the input totally
>> > depends on your decision how you want to specify the coordinates.
>> >
>> >
>> _______________________________________________
>> gdal-dev mailing list
>> [email protected]
>> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>>
>

_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.