[gdal-dev] GML lat-lon coverages and interoperability

Rahkonen Jukka (MML) jukka.rahkonen at maanmittauslaitos.fi
Mon Apr 3 05:32:46 PDT 2017


Cross posting intentionally.

TL;DR

I wonder if all projects under the OSGeo umbrella, starting from GDAL and Geoserver, could make a common agreement on not to use GridFunctions in GML coverages if they are not strictly needed. The other alternative would be to make all projects to support GML gridFunctions, and do it right.

Long story:

I have been trying to understand how GML coverages are used in JPEG 2000 and in WCS services.  So far I have understood that coverages can be very complex and GMLCOV and next generation CIS specifications are complex so that even the most nasty coverage types can be modelled. What seems to be missing from the specifications is a simple and unified way to model simple coverages, like orthophotos.
Not surprisingly my pain started from latitude-longitude or Northing-Easting axis order of some coordinate systems. The GDAL source code in https://trac.osgeo.org/gdal/browser/trunk/gdal/gcore/gdaljp2metadata.cpp is prepared to handle georeferencign by looking at

-          grid origin

-          offset vectors

-          EPSG database for handling the coordinate axis order in GML

At least in this place GDAL does not seem to be prepared in seeing gridFunctions which are defined in GML 3.2.1. With GridFunction it is possible to slide the starting point of the coverage with "startPoint", change the order and direction of grid axes with "axisOrder" and define weird sequences for data points "Linear"/"Boustrophedonic"/"Cantor-diagonal"/"Spiral"/"Morton"/"Hilbert"

With orthophoto coverages I believe that all cases could be handled with the default gridFunctions: startPoint at gml:Low, axisOrder +1 +2, sequence rule "Linear". As far as I have understood GDAL trusts that this is also what the other partners do. However, it seems that GeoServer developers have decided to handle the latitude-longitude axis flip in WCS 2.0.1 by changing the order of grid axis with a function instead of writing the offsetVectors to suit with the default +1 +2 axis order.

<gml:coverageFunction>
<gml:GridFunction>
<gml:sequenceRule axisOrder="+2 +1">Linear</gml:sequenceRule>
<gml:startPoint>0 0</gml:startPoint>
</gml:GridFunction>
</gml:coverageFunction>

-Jukka Rahkonen-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20170403/3be0912b/attachment.html>


More information about the gdal-dev mailing list