[gdal-dev] Idea: GeoTIFF box in JPEG to add georeferencing
Even Rouault
even.rouault at mines-paris.org
Wed May 14 05:31:27 PDT 2014
> so which ones are remaining, following the clarification you mention below?
Hi Peter,
thanks for the clarifications.
To be honest, my main reluctance to GML-based standards is that they are very
rich, and thus difficult to understand and implement. A rather large chain of
depending standards : GMLJP2 refers to GMLCov which refers to GML which refers
to etc.... And generally there are many ways in GML to express the same thing,
which makes it difficult to implement the reading part. I had some fun a few
weeks ago with that with polygons : http://erouault.blogspot.fr/2014/04/gml-
madness.html ...
To come back to more concrete considerations, the axis order issue, as
confirmed by Jukka, is something that we constantly have to face and have
troubles to get right.
Jukka, in his review of the new proposed GMLJP2 (
http://lists.opengeospatial.org/pipermail/requests/2014-March/000220.html ),
also raised an interesting question about all the different forms of urn/uri
that might be found to express SRS.
Another related point is: how do you encode a SRS that is not in the EPSG
database ? In GDAL's code related to generation of GMLJP2, I see that when we
write a GMLJP2 with a SRS that is not linked to an EPSG code, we build a local
GML definition of the SRS, put it in a CRSDictionary.gml JP2 box and link to it
with "gmljp2://xml/CRSDictionary.gml#ogrcrs1" in the GMLJP2 box. So, to use
GMLCov in PNG/JPEG/etc... we would likely need both a GMLCov "box" and a CRS
"box". Not very convenient.
And for fun, you'll find below in [1] how the proj.4 string "+proj=utm +zone=36
+ellps=WGS84" is translated into GML...
Another practical issue is that the current export/import code in GDAL
from/into the GML definition is limited to Transverse Mercator and Lambert
Conformal Conic. No fundamental reason that it couldn't be improved, but
someone would have to do it.
Besides, I'm not sure if many other software packages implement that GML
definition of SRS either. For example, it looks like GeoTools doesn't :
http://osgeo-org.1560.x6.nabble.com/Parsing-GML-CRS-definitions-td4963620.html
I agree with Frank that it is difficult to get excited by GeoTIFF either. The
main advantages I can see is that :
* it is already rather well supported by most geo-enabled software due to its
long existence and maturity. So basing something on it shouldn't involve a lot
of work.
* its binary form makes it rather compact, which is good for example if you
want to add georeferencing to small PNG/JPEG tiles.
Best regards,
Even
[1]
<gml:ProjectedCRS gml:id="ogrcrs1">
<gml:srsName>UTM Zone 36, Northern Hemisphere</gml:srsName>
<gml:baseCRS>
<gml:GeographicCRS gml:id="ogrcrs2">
<gml:srsName>WGS 84</gml:srsName>
<gml:usesEllipsoidalCS>
<gml:EllipsoidalCS gml:id="ogrcrs3">
<gml:csName>ellipsoidal</gml:csName>
<gml:csID>
<gml:name gml:codeSpace="urn:ogc:def:cs:EPSG::">6402</gml:name>
</gml:csID>
<gml:usesAxis>
<gml:CoordinateSystemAxis gml:id="ogrcrs4"
gml:uom="urn:ogc:def:uom:EPSG::9102">
<gml:name>Geodetic latitude</gml:name>
<gml:axisID>
<gml:name
gml:codeSpace="urn:ogc:def:axis:EPSG::">9901</gml:name>
</gml:axisID>
<gml:axisAbbrev>Lat</gml:axisAbbrev>
<gml:axisDirection>north</gml:axisDirection>
</gml:CoordinateSystemAxis>
</gml:usesAxis>
<gml:usesAxis>
<gml:CoordinateSystemAxis gml:id="ogrcrs5"
gml:uom="urn:ogc:def:uom:EPSG::9102">
<gml:name>Geodetic longitude</gml:name>
<gml:axisID>
<gml:name
gml:codeSpace="urn:ogc:def:axis:EPSG::">9902</gml:name>
</gml:axisID>
<gml:axisAbbrev>Lon</gml:axisAbbrev>
<gml:axisDirection>east</gml:axisDirection>
</gml:CoordinateSystemAxis>
</gml:usesAxis>
</gml:EllipsoidalCS>
</gml:usesEllipsoidalCS>
<gml:usesGeodeticDatum>
<gml:GeodeticDatum gml:id="ogrcrs6">
<gml:datumName>unknown</gml:datumName>
<gml:usesPrimeMeridian>
<gml:PrimeMeridian gml:id="ogrcrs7">
<gml:meridianName>Greenwich</gml:meridianName>
<gml:greenwichLongitude>
<gml:angle gml:uom="urn:ogc:def:uom:EPSG::9102">0</gml:angle>
</gml:greenwichLongitude>
</gml:PrimeMeridian>
</gml:usesPrimeMeridian>
<gml:usesEllipsoid>
<gml:Ellipsoid gml:id="ogrcrs8">
<gml:ellipsoidName>WGS84</gml:ellipsoidName>
<gml:semiMajorAxis
gml:uom="urn:ogc:def:uom:EPSG::9001">6378137</gml:semiMajorAxis>
<gml:secondDefiningParameter>
<gml:inverseFlattening
gml:uom="urn:ogc:def:uom:EPSG::9201">298.257223563</gml:inverseFlattening>
</gml:secondDefiningParameter>
</gml:Ellipsoid>
</gml:usesEllipsoid>
</gml:GeodeticDatum>
</gml:usesGeodeticDatum>
</gml:GeographicCRS>
</gml:baseCRS>
<gml:definedByConversion>
<gml:Conversion gml:id="ogrcrs9">
<gml:usesMethod xlink:href="urn:ogc:def:method:EPSG::9807" />
<gml:usesParameterValue>
<gml:value gml:uom="urn:ogc:def:uom:EPSG::9102">0</gml:value>
<gml:valueOfParameter xlink:href="urn:ogc:def:parameter:EPSG::8801" />
</gml:usesParameterValue>
<gml:usesParameterValue>
<gml:value gml:uom="urn:ogc:def:uom:EPSG::9102">33</gml:value>
<gml:valueOfParameter xlink:href="urn:ogc:def:parameter:EPSG::8802" />
</gml:usesParameterValue>
<gml:usesParameterValue>
<gml:value gml:uom="urn:ogc:def:uom:EPSG::9001">0.9996</gml:value>
<gml:valueOfParameter xlink:href="urn:ogc:def:parameter:EPSG::8805" />
</gml:usesParameterValue>
<gml:usesParameterValue>
<gml:value gml:uom="urn:ogc:def:uom:EPSG::9001">500000</gml:value>
<gml:valueOfParameter xlink:href="urn:ogc:def:parameter:EPSG::8806" />
</gml:usesParameterValue>
<gml:usesParameterValue>
<gml:value gml:uom="urn:ogc:def:uom:EPSG::9001">0</gml:value>
<gml:valueOfParameter xlink:href="urn:ogc:def:parameter:EPSG::8807" />
</gml:usesParameterValue>
</gml:Conversion>
</gml:definedByConversion>
<gml:usesCartesianCS>
<gml:CartesianCS gml:id="ogrcrs10">
<gml:csName>Cartesian</gml:csName>
<gml:csID>
<gml:name gml:codeSpace="urn:ogc:def:cs:EPSG::">4400</gml:name>
</gml:csID>
<gml:usesAxis>
<gml:CoordinateSystemAxis gml:id="ogrcrs11"
gml:uom="urn:ogc:def:uom:EPSG::9001">
<gml:name>Easting</gml:name>
<gml:axisID>
<gml:name gml:codeSpace="urn:ogc:def:axis:EPSG::">9906</gml:name>
</gml:axisID>
<gml:axisAbbrev>E</gml:axisAbbrev>
<gml:axisDirection>east</gml:axisDirection>
</gml:CoordinateSystemAxis>
</gml:usesAxis>
<gml:usesAxis>
<gml:CoordinateSystemAxis gml:id="ogrcrs12"
gml:uom="urn:ogc:def:uom:EPSG::9001">
<gml:name>Northing</gml:name>
<gml:axisID>
<gml:name gml:codeSpace="urn:ogc:def:axis:EPSG::">9907</gml:name>
</gml:axisID>
<gml:axisAbbrev>N</gml:axisAbbrev>
<gml:axisDirection>north</gml:axisDirection>
</gml:CoordinateSystemAxis>
</gml:usesAxis>
</gml:CartesianCS>
</gml:usesCartesianCS>
</gml:ProjectedCRS>
--
Geospatial professional services
http://even.rouault.free.fr/services.html
More information about the gdal-dev
mailing list