Axis Orientation and msOWSCommonBoundingBox()

Frank Warmerdam warmerdam at POBOX.COM
Tue Jan 15 16:47:52 EST 2008


Tom,

As we have touched on in the past, for WCS 1.1 I need to honour EPSG
axis orientation for geographic coordinate systems.  I'm preparing an
RFC for WCS 1.1 that address this but in order to demonstrate the service
later this week I'd like to actually commit the relavent code.  The
changes will mean that msOWSCommonBoundingBox() will actually re-orient
the axes for the min/max values if the CRS is of the form
urn:ogc:def:crs:EPSG::4???.

I'm sending this email to warn you since I'm concerned this might affect
SOS which I assume is the only other code currently using
msOWSCommonBoundingBox().

Does SOS expect to report EPSG preferred axis order in stuff like bounding
boxes?  Does it use URN style coordinate system definitions or "EPSG:n" style?

BTW, the very brief summary of my axis handling efforts looks like this:

"""
URNs / Coordinate Systems and Axis Orientation
----------------------------------------------

WCS 1.1 uses URNs like "urn:ogc:def:crs:EPSG::4326" or
"urn:ogc:def:crs:OGC::CRS84".  In addition the WCS protocol is required to
honour EPSG axis conventions when using coordinate systems within the EPSG
authority space.  This means, for instance, that any coordinates in
the urn:ogc:def:crs:EPSG::4326 coordinate system must be provided in lat,long
ordering instead of the conventional long,lat.

In order to implement these requirements, several changes are planned:

- msLoadProjectionString() will be updated to expand URNs in the EPSG and OGC 
name spaces.
- msLoadProjectionString() will add the "+epsgaxis=ne" parameter for URNs for
   GCS codes in the EPSG name space.
- New msAxisNormalizePoints() and msAxisDenormalizePoints() will be added for
   converting between normalized (easting,northing) axis orientation and
   EPSG preferred (denormalized) axis orientation (sometimes northing,easting).
   These functions will scan the p->args[] list for the +epsgaxis=ne to decide.
- msOWSCommonBoundingBox() will be modified to use these axis denormalization
   function to denormalize axis ordering for EPSG GCS URNs.
- the WCS 1.1 GetCoverage call will use msAxisNormalizePoints() to fix up
   orientation of request axes when needed.
"""

Best regards,
-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | President OSGeo, http://osgeo.org



More information about the mapserver-dev mailing list