Changes between Initial Version and Version 1 of GmlDefinitions


Ignore:
Timestamp:
Nov 6, 2012, 10:06:16 AM (12 years ago)
Author:
Piero Campalani
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • GmlDefinitions

    v1 v1  
     1= CRS GML definition candidates for SECORE =
     2
     3=== Preface ===
     4
     5The opportunity to create arbitrary n-dimensional collections with `rasdaman` raises the
     6need to properly address the referencing of, say, ''unconventional'' situations which can easily
     7go beyond the simple pure spatial 1D to 3D coverages.
     8
     9Whereas the latter ones can still be correctly referenced with existing Coordinate Reference Systems
     10(CRSs) -- usually by means of EPSG registered definitions (if we remain on Earth) -- there are some other cases
     11which call for definitions to be designed: it is for example the case of pure pixel-space indexing of
     12images of whatever the dimensionality (what is usually known as `CRS:1` space by the `rasdaman`
     13community), or else the case of CRS composition (or compounding) which can take place e.g. when a pressure
     14vertical axis gives volume to a 2D image, or when time shapes a group of spatial datasets into a series.
     15
     16In line with the URL-oriented concept of CRS handling, where all the referencing metadata of a collection
     17is moved to a separate web resolver in the form of a GML definition, this page proposes GML definitions
     18and associated URI labeling needed to address this gap.
     19
     20----
     21
     22== __Image1D__ ==
     23
     24'''`<resolver>/def/crs/OGC/0.1/Image1D`'''[[BR]]
     25''E.g. for time dimension until GML issues are solved.''
     26
     27NOTE: showing optional components as <!--comments-->.
     28
     29{{{
     30#!text/xml
     31<gml:ImageCRS gml:id="img1D">
     32   <!-- gml:description>string</gml:description -->
     33   <!-- gml:descriptionReference/ -->
     34   <gml:identifier codeSpace="OGP">urn:ogc:def:crs:OGC:0.1:Image1D</gml:identifier>
     35   <!-- gml:name>string</gml:name -->
     36   <gml:remarks>CRS for 1D pixel-domain referenced axes.</gml:remarks>
     37   <!-- gml:domainOfValidity>
     38      <gmd:EX_Extent>
     39         <gmd:description>...
     40         </gmd:description>
     41         <gmd:geographicElement>...
     42         </gmd:geographicElement>
     43         <gmd:temporalElement>...
     44         </gmd:temporalElement>
     45         <gmd:verticalElement>...
     46         </gmd:verticalElement>
     47      </gmd:EX_Extent>
     48   </gml:domainOfValidity -->
     49   <gml:scope>Default CRS for 1D axis that are referenced in the pixel domain.</gml:scope>
     50   <gml:cartesianCS>
     51      <gml:CartesianCS gml:id="cartesian1D">
     52         <!-- gml:description>string</gml:description -->
     53         <!-- gml:descriptionReference/ -->
     54         <gml:identifier codeSpace="OGP">urn:ogc:def:cs:OGC:0.1:Cartesian1D</gml:identifier>
     55         <!-- gml:name>string</gml:name -->
     56         <!-- gml:remarks>string</gml:remarks -->
     57         <gml:axis>
     58            <gml:CoordinateSystemAxis gml:id="i" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     59               <!-- gml:description>string</gml:description -->
     60               <!-- gml:descriptionReference/ -->
     61               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:i</gml:identifier>
     62               <gml:name>i</gml:name>
     63               <!-- gml:remarks>string</gml:remarks -->
     64               <gml:axisAbbrev>i</gml:axisAbbrev>
     65               <gml:axisDirection codeSpace="EPSG">positive</gml:axisDirection>
     66               <!-- gml:minimumValue>1.0</gml:minimumValue -->
     67               <!-- gml:maximumValue>1.0</gml:maximumValue -->
     68               <!-- gml:rangeMeaning codeSpace="http://www.example.com/">string</gml:rangeMeaning -->
     69            </gml:CoordinateSystemAxis>
     70         </gml:axis>
     71      </gml:CartesianCS>
     72   </gml:cartesianCS>
     73   <gml:imageDatum>
     74      <gml:ImageDatum gml:id="imageDatum">
     75         <!-- gml:description>string</gml:description -->
     76         <!-- gml:descriptionReference/ -->
     77         <gml:identifier codeSpace="OGP">urn:ogc:def:datum:OGC:0.1:ImageDatumCellLowerBound</gml:identifier>
     78         <!-- gml:name>string</gml:name -->
     79         <!-- gml:remarks>string</gml:remarks -->
     80         <!-- gml:domainOfValidity>...</gml:domainOfValidity -->
     81         <gml:scope>A 1D image datum with the origin at the lower bound of the first cell in the axis.</gml:scope>
     82         <!-- gml:anchorDefinition>string</gml:anchorDefinition -->
     83         <!-- gml:realizationEpoch>2000-01-01</gml:realizationEpoch -->
     84         <gml:pixelInCell codeSpace="OGP">urn:ogc:def:pixelInCell:OGC:0.1:cellLowerBound</gml:pixelInCell>
     85      </gml:ImageDatum>
     86   </gml:imageDatum>
     87</gml:ImageCRS>
     88}}}
     89
     90----
     91
     92== __Image2D__ ==
     93
     94'''`<resolver>/def/crs/OGC/0.1/Image2D`'''[[BR]]
     95''E.g. for 2D rasters with no geo-reference.''
     96
     97{{{
     98#!text/xml
     99<gml:ImageCRS gml:id="img2D">
     100   <!-- gml:identifier is optional but we *must* put it for SECORE to assign the URL -->
     101   <gml:identifier codeSpace="OGP">urn:ogc:def:crs:OGC:0.1:Image2D</gml:identifier>
     102   <gml:remarks>CRS for 2D pixel-domain referenced images.</gml:remarks>
     103   <!-- gml:scope is mandatory:                                                              -->
     104   <!-- The gml:scope property provides a description of the usage, or limitations of usage, -->
     105   <!-- for which this CRS-related object is valid. If unknown, enter "not known".           -->
     106   <gml:scope>Default CRS for 2D images that are referenced in the pixel domain.</gml:scope>
     107   <!-- Not deprecated choices: gml:cartesianCS and gml:affineCS -->
     108   <gml:cartesianCS>
     109      <!-- gml:cartesianCS just contains one element: gml:CartesianCS (is it a joke?) -->
     110      <gml:CartesianCS gml:id="cartesian2D">
     111         <gml:identifier codeSpace="OGP">urn:ogc:def:cs:OGC:0.1:Cartesian2D</gml:identifier>
     112         <!-- Here we can put from 1 to 3 axes: just one in this case. -->
     113         <gml:axis>
     114            <!-- Another so-called "association-role": contains just one element, a gml:CoordinateSystemAxis. -->
     115            <!-- I found this OGG:GridSpacing UoM (see [5] and [6]): we should upload it to SECORE as well    -->
     116            <gml:CoordinateSystemAxis gml:id="i" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     117               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:i</gml:identifier>
     118               <gml:name>i</gml:name>
     119               <gml:axisAbbrev>i</gml:axisAbbrev>
     120               <gml:axisDirection codeSpace="EPSG">horizontal</gml:axisDirection>
     121            </gml:CoordinateSystemAxis>
     122         </gml:axis>
     123         <gml:axis>
     124            <gml:CoordinateSystemAxis gml:id="j" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     125               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:j</gml:identifier>
     126               <gml:name>j</gml:name>
     127               <gml:axisAbbrev>j</gml:axisAbbrev>
     128               <gml:axisDirection codeSpace="EPSG">vertical</gml:axisDirection>
     129            </gml:CoordinateSystemAxis>
     130         </gml:axis>
     131      </gml:CartesianCS>
     132   </gml:cartesianCS>
     133   <gml:imageDatum>
     134      <!-- Another "association-role" -->
     135      <gml:ImageDatum gml:id="imageDatum">
     136         <gml:identifier codeSpace="OGP">urn:ogc:def:datum:OGC:0.1:ImageDatumGridUpperLeft</gml:identifier>
     137         <!-- Origin in the pixel domain is the upper-left pixel -->
     138         <gml:scope>A 2D image datum with the origin in the upper-left corner pixel of the grid.</gml:scope>
     139         <!-- gml:pixelInCell is a specification of the way an image grid is associated with the image data attributes. -->
     140         <!-- The required codeSpace attribute shall reference a source of information specifying the values and        -->
     141         <!-- meanings of all the allowed string values for this property (see [8]).                                    -->
     142         <gml:pixelInCell codeSpace="OGP">urn:ogc:def:pixelInCell:OGC:0.1:cellLowerBound</gml:pixelInCell>
     143      </gml:ImageDatum>
     144   </gml:imageDatum>
     145</gml:ImageCRS>
     146}}}
     147
     148----
     149
     150== __Image3D__ ==
     151
     152'''`<resolver>/def/crs/OGC/0.1/Image3D`'''[[BR]]
     153''E.g. for 3D rasters with no geo-reference (CTs?).''
     154
     155{{{
     156#!text/xml
     157<gml:ImageCRS gml:id="img3D">
     158   <!-- gml:identifier is optional but we *must* put it for SECORE to assign the URL -->
     159   <gml:identifier codeSpace="OGP">urn:ogc:def:crs:OGC:0.1:Image3D</gml:identifier>
     160   <gml:remarks>CRS for 3D pixel-domain referenced images.</gml:remarks>
     161   <!-- gml:scope is mandatory:                                                              -->
     162   <!-- The gml:scope property provides a description of the usage, or limitations of usage, -->
     163   <!-- for which this CRS-related object is valid. If unknown, enter "not known".           -->
     164   <gml:scope>Default CRS for 3D images that are referenced in the pixel domain.</gml:scope>
     165   <!-- Not deprecated choices: gml:cartesianCS and gml:affineCS -->
     166   <gml:cartesianCS>
     167      <!-- gml:cartesianCS just contains one element: gml:CartesianCS (is it a joke?) -->
     168      <gml:CartesianCS gml:id="cartesian3D">
     169         <gml:identifier codeSpace="OGP">urn:ogc:def:cs:OGC:0.1:Cartesian3D</gml:identifier>
     170         <!-- Here we can put from 1 to 3 axes: just one in this case. -->
     171         <gml:axis>
     172            <!-- Another so-called "association-role": contains just one element, a gml:CoordinateSystemAxis. -->
     173            <!-- I found this OGG:GridSpacing UoM (see [5] and [6]): we should upload it to SECORE as well    -->
     174            <gml:CoordinateSystemAxis gml:id="i" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     175               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:i</gml:identifier>
     176               <gml:name>i</gml:name>
     177               <gml:axisAbbrev>i</gml:axisAbbrev>
     178               <gml:axisDirection codeSpace="EPSG">base-horizontal</gml:axisDirection>
     179            </gml:CoordinateSystemAxis>
     180         </gml:axis>
     181         <gml:axis>
     182            <gml:CoordinateSystemAxis gml:id="j" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     183               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:j</gml:identifier>
     184               <gml:name>j</gml:name>
     185               <gml:axisAbbrev>j</gml:axisAbbrev>
     186               <gml:axisDirection codeSpace="EPSG">base-vertical</gml:axisDirection>
     187            </gml:CoordinateSystemAxis>
     188         </gml:axis>
     189         <gml:axis>
     190            <gml:CoordinateSystemAxis gml:id="h" uom="urn:ogc:def:uom:OGC:1.0:GridSpacing">
     191               <gml:identifier codeSpace="OGP">urn:ogc:def:axis:OGC:0.1:k</gml:identifier>
     192               <gml:name>h</gml:name>
     193               <gml:axisAbbrev>h</gml:axisAbbrev>
     194               <gml:axisDirection codeSpace="EPSG">vertical</gml:axisDirection>
     195            </gml:CoordinateSystemAxis>
     196         </gml:axis>
     197      </gml:CartesianCS>
     198   </gml:cartesianCS>
     199   <gml:imageDatum>
     200      <!-- Another "association-role" -->
     201      <gml:ImageDatum gml:id="imageDatum">
     202         <gml:identifier codeSpace="OGP">urn:ogc:def:datum:OGC:0.1:ImageDatumCubeUpperLeft</gml:identifier>
     203         <!-- Origin in the pixel domain is the upper-left pixel of the cube base -->
     204         <gml:scope>A 3D image datum with the origin in the upper-left corner pixel of the gridded cube base.</gml:scope>
     205         <!-- gml:pixelInCell is a specification of the way an image grid is associated with the image data attributes. -->
     206         <!-- The required codeSpace attribute shall reference a source of information specifying the values and        -->
     207         <!-- meanings of all the allowed string values for this property (see [8]).                                    -->
     208         <gml:pixelInCell codeSpace="OGP">urn:ogc:def:pixelInCell:OGC:0.1:cellLowerBound</gml:pixelInCell>
     209      </gml:ImageDatum>
     210   </gml:imageDatum>
     211</gml:ImageCRS>
     212}}}
     213
     214----
     215
     216== __Cartesian?D__ ==
     217
     218'''`<resolver>/def/crs/OGC/0.1/Cartesian1D`'''[[BR]]
     219'''`<resolver>/def/crs/OGC/0.1/Cartesian2D`'''[[BR]]
     220...[[BR]]
     221''E.g. when elevation on a 3D dataset is based upon pressure: CCRS = (CRS2D + Cartesian1D). Otherwise when an arbitrary custom reference is needed.''
     222
     223Ideas:
     224  * For single axis CRS: `EngineeringCRS` with `linearCS`, which is defined as "a one-dimensional coordinate system that consists of the points that lie on the single axis described; the associated coordinate is the distance – with or without offset – __from the specified datum__ to the point along the axis".
     225  * For 2 or 3 axes CRS: `EngineeringCRS` with `CartesianCS`, which is a 1-, 2-, or 3-dimensional coordinate system (in the 1-dimensional case, it contains a single straight coordinate axis; in the 2- and 3-dimensional cases gives the position of points relative to orthogonal straight axes; in the multi-dimensional case, all axes shall have the same length unit of measure) or `UserDefinedCS`, which is "a two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type."
     226
     227The datum used must be an `EngineeringDatum`, which simply defines the origin (namely the `gml:anchorDefinition`) of the coordinate reference system.
     228the anchorDefinition is defined as a description, possibly including coordinates, of the definition used to anchor the datum to the Earth. Also known as the "origin", especially for engineering and image datums. The codeSpace attribute may be used to reference a source of more detailed on this point or surface, or on a set of such descriptions.
     229 1. For a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the "fundamental point" may consist of a number of points. In those cases, the parameters defining the  geoid/ellipsoid relationship have been averaged for these points, and the averages adopted as the datum definition.
     230 1. For an engineering datum, the anchor definition may be a physical point, or it may be a point with defined coordinates in another CRS.may
     231 1. For an image datum, the anchor definition is usually either the centre of the image or the corner of the image.
     232 1. For a temporal datum, this attribute is not defined. Instead of the anchor definition, a temporal datum carries a separate time origin of type DateTime.
     233
     234Example of `EngineeringCRS` : http://www.epsg-registry.org/export.htm?gml=urn:ogc:def:crs:EPSG::5801
     235which uses the `engineeringDatum`: http://www.epsg-registry.org/export.htm?gml=urn:ogc:def:datum:EPSG::9301
     236
     237The preferred approach might be to define personal GML definitions with defined custom codes (e.g. `MyCartesian1D` or `PressureWGS84`),
     238instead of defining a single template to be customised via key/value pairs. It is straightforward and less prone to problems and errors.
     239
     240----
     241
     242== Referenced definitions: ==
     243
     244 * http://kahlua.eecs.jacobs-university.de:8080/def/pixelInCell/OGC/1.0/cellLowerBound would resolve to:
     245{{{
     246#!text/xml
     247<gml:Definition gml:id="ogc-def-cellLowerBound">
     248   <gml:description>The origin of the image coordinate system is at the lower bound of a grid cell.</gml:description>
     249   <!--gml:descriptionReference/-->
     250   <gml:identifier codeSpace="OGP">urn:ogc:def:pixelInCell:OGC:0.1:cellLowerBound</gml:identifier>
     251   <!--gml:name>string</gml:name-->
     252   <!--gml:remarks>string</gml:remarks-->
     253</gml:Definition>
     254}}}
     255 * http://kahlua.eecs.jacobs-university.de:8080/def/uom/OGC/1.0/GridSpacing would resolve to:
     256{{{
     257#!text/xml
     258<BaseUnit xmlns="http://www.opengis.net/gml"
     259     xmlns:gml="http://www.opengis.net/gml"
     260     xmlns:xlink="http://www.w3.org/1999/xlink"
     261     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     262     xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/base/units.xsd"
     263     gml:id="GridSpacing">
     264   <gml:name>pixels</gml:name>   
     265   <gml:description>Spacing between adjacent pixels points, or between centers of adjacent pixels</gml:description>   
     266   <gml:identifier codeSpace="OGP">urn:ogc:def:uom:OGC:1.0:GridSpacing</gml:identifier>
     267   <gml:quantityType>Pixels</gml:quantityType>
     268   <gml:unitsSystem xlink:href="urn:ogc:def:nil:OGC:0:inapplicable"/>
     269</BaseUnit>
     270}}}
     271 * ...
     272
     273----
     274
     275== Issues ==
     276
     277 * does each datum (1D, 2D, 3D) require its own `pixelInCell` definition, or can the `cellLowerBound` be adopted for grids of any dimension?
     278 * are the so-called ''association roles'' necessary? For instance `cartesianCS` to include `CartesianCS`: SECORE output directly puts a `CartesianCS`, but is this valid GML?
     279 * ...
     280
     281----
     282
     283=== External links: ===
     284
     2851. [http://www.schemacentral.com/sc/niem21/e-gml32_ImageCRS.html gml:ImageCRS][[BR]]
     2862. [http://www.schemacentral.com/sc/niem21/e-gml32_CartesianCS-b.html gml:CartesianCS][[BR]]
     2873. [http://www.schemacentral.com/sc/niem21/e-gml32_CoordinateSystemAxis.html gml:CoordinateSystemAxis][[BR]]
     2884. [http://xml.fmi.fi/namespace/meteorology/conceptual-model/meteorological-objects/2009/09/07/docindex268.html gml:ImageCRS alt][[BR]]
     2895. [http://grepcode.com/file/repo1.maven.org/maven2/org.jvnet.ogc/schemas/1.0.0/gml/3.1.1/profiles/GridCRSs/1.0.0/Examples/templateImageCRS.xml ImageCRS example][[BR]]
     2906. [http://www.opengis.net/def/uom/OGC/1.0/GridSpacing.gml GridSpacing UoM example][[BR]]
     2917. [http://www.schemacentral.com/sc/niem21/e-gml32_ImageDatum-b.html gml:ImageDatum][[BR]]
     2928. [http://www.opengis.net/def/pixelInCell/OGC/1.0/cellCenter.gml gml:pixelInCell example][[BR]]
     2939. [http://www.schemacentral.com/sc/niem21/e-gml32_userDefinedCS-a.html userDefinedCS][[BR]]
     29410. [http://www.schemacentral.com/sc/niem21/e-gml32_EngineeringCRS.html EngineeringCRS][[BR]]
     29511. [http://www.schemacentral.com/sc/niem21/e-gml32_linearCS-a.html linearCS][[BR]]
     29612. [http://www.schemacentral.com/sc/niem21/e-gml32_EngineeringDatum-b.html engineeringDatum][[BR]]
     297
     298----