Re: [galeon] How to map a parameterized projection to an EPSG code

NOTE: The galeon mailing list is no longer active. The list archives are made available for historical reasons.



Aaron Braeckel wrote:
As mentioned by Peter, the CRS WG is currently considering the
generalized CRS concept.  AFAIK the CRS group will choose one of three
alternatives for how to implement the generalized CRS.  It is not clear
to me how this might eventually make it into ISO-land, or the real
relationship between the groups.  It sounded like the parametric values
extension was already in ISO 19111 and my off the cuff impression is
that it's well on its way or through the process of standardization.
Those two extensions would seem to cover pressure levels and multiple
time coordinates, but the specifics of how to do parameterized CRSs
remains.  Just looking at the CF spec as a starting point, I see about
10 horizontal reference systems including things like:

-Lambert Conformal Conic
-Stereographic
-Azimuthal equidistant
-etc

I just searched for Lambert on http://www.epsg-registry.org/ and I hit
upon EPSG:9802, which is Lambert Conformal.  This EPSG code is
referenced by other specific instances (such as EPSG:3084 "Texas Centric
Lambert Conformal") codes as part of their definition.  I did not search
for all of the 10 mentioned in CF, but I also found EPSG:9809 for
oblique stereographic.  This seems to indicate that there are both
specific instances as well as general types in the EPSG registry.  We
just need to discover how to use them properly.

ok, so getting GML from the epsg-registry, i grabbed a random CRS:

<ProjectedCRS xmlns:gmd="http://www.isotc211.org/2005/gmd";
             xmlns:gco="http://www.isotc211.org/2005/gco";
             xmlns:epsg="urn:x-ogp:spec:schema-xsd:EPSG:0.1:dataset"
             xmlns:gml="http://www.opengis.net/gml";
             xmlns:xlink="http://www.w3.org/1999/xlink";
             xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
             xmlns="http://www.opengis.net/gml";
             gml:id="epsg-crs-3416">
  <metaDataProperty>
     <epsg:CommonMetaData>
        <epsg:type>projected</epsg:type>
        <epsg:alias alias="ETRF89 / Austria Lambert" code="3647"
                    codeSpace="urn:ogc:def:naming-system:EPSG::7301"/>
        <epsg:informationSource>Bundesamt fur Eich- und Vermessungswesen; 
Wien</epsg:informationSource>
        <epsg:revisionDate>2006-12-12</epsg:revisionDate>
        <epsg:show>true</epsg:show>

        <epsg:isDeprecated>false</epsg:isDeprecated>
     </epsg:CommonMetaData>
  </metaDataProperty>
  <identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::3416</identifier>
  <name>ETRS89 / Austria Lambert</name>
  <remarks>Replaces MGI / Austria Lambert (CRS code 31287).</remarks>
  <domainOfValidity xlink:href="urn:ogc:def:area:EPSG::1037"/>

  <scope>Medium and small scale mapping and GIS.</scope>
  <conversion xlink:href="urn:ogc:def:coordinateOperation:EPSG::19947"/>
  <baseGeodeticCRS xlink:href="urn:ogc:def:crs:EPSG::4258"/>
  <cartesianCS xlink:href="urn:ogc:def:cs:EPSG::4530"/>
</ProjectedCRS>

it turns out the projection parameters are in the conversion href:

<Conversion xmlns:gmd="http://www.isotc211.org/2005/gmd";
           xmlns:gco="http://www.isotc211.org/2005/gco";
           xmlns:epsg="urn:x-ogp:spec:schema-xsd:EPSG:0.1:dataset"
           xmlns:gml="http://www.opengis.net/gml";
           xmlns:xlink="http://www.w3.org/1999/xlink";
           xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
           xmlns="http://www.opengis.net/gml";
           gml:id="epsg-op-19947">
  <metaDataProperty>
     <epsg:CommonMetaData>
        <epsg:type>conversion</epsg:type>
        <epsg:informationSource>Bundesamt für Eich- und 
Vermessungswesen</epsg:informationSource>
        <epsg:revisionDate>2000-01-07</epsg:revisionDate>
        <epsg:changes>
           <epsg:changeID 
xlink:href="urn:ogc:def:change-request:EPSG::1999.940"/>

        </epsg:changes>
        <epsg:isDeprecated>false</epsg:isDeprecated>
        <epsg:sexagesimalValue uom="urn:ogc:def:uom:EPSG::9110">
           <epsg:degrees>47</epsg:degrees>
           <epsg:minutes>30</epsg:minutes>
           <epsg:hemisphere>N</epsg:hemisphere>
           <epsg:propertyReference 
xlink:href="urn:ogc:def:parameter:EPSG::8821"/>

        </epsg:sexagesimalValue>
        <epsg:sexagesimalValue uom="urn:ogc:def:uom:EPSG::9110">
           <epsg:degrees>13</epsg:degrees>
           <epsg:minutes>20</epsg:minutes>
           <epsg:hemisphere>E</epsg:hemisphere>
           <epsg:propertyReference 
xlink:href="urn:ogc:def:parameter:EPSG::8822"/>
        </epsg:sexagesimalValue>

        <epsg:sexagesimalValue uom="urn:ogc:def:uom:EPSG::9110">
           <epsg:degrees>49</epsg:degrees>
           <epsg:hemisphere>N</epsg:hemisphere>
           <epsg:propertyReference 
xlink:href="urn:ogc:def:parameter:EPSG::8823"/>
        </epsg:sexagesimalValue>
        <epsg:sexagesimalValue uom="urn:ogc:def:uom:EPSG::9110">
           <epsg:degrees>46</epsg:degrees>

           <epsg:hemisphere>N</epsg:hemisphere>
           <epsg:propertyReference 
xlink:href="urn:ogc:def:parameter:EPSG::8824"/>
        </epsg:sexagesimalValue>
     </epsg:CommonMetaData>
  </metaDataProperty>
  <identifier 
codeSpace="OGP">urn:ogc:def:coordinateOperation:EPSG::19947</identifier>
  <name>Austria Lambert</name>

  <domainOfValidity xlink:href="urn:ogc:def:area:EPSG::1037"/>
  <scope>Medium and small scale mapping</scope>
  <coordinateOperationAccuracy>
     <gmd:DQ_RelativeInternalPositionalAccuracy>
        <gmd:result>
           <gmd:DQ_QuantitativeResult>
              <gmd:valueUnit xlink:href="urn:ogc:def:uom:EPSG::9001"/>
              <gmd:value>

                 <gco:Record>
                    <gco:Decimal>0</gco:Decimal>
                 </gco:Record>
              </gmd:value>
           </gmd:DQ_QuantitativeResult>
        </gmd:result>
     </gmd:DQ_RelativeInternalPositionalAccuracy>
  </coordinateOperationAccuracy>

  <method xlink:href="urn:ogc:def:method:EPSG::9802"/>
  <parameterValue>
     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9102">47.5</value>
        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8821"/>
     </ParameterValue>
  </parameterValue>
  <parameterValue>

     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9102">13.3333333</value>
        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8822"/>
     </ParameterValue>
  </parameterValue>
  <parameterValue>
     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9102">49.0</value>

        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8823"/>
     </ParameterValue>
  </parameterValue>
  <parameterValue>
     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9102">46.0</value>
        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8824"/>
     </ParameterValue>

  </parameterValue>
  <parameterValue>
     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9001">400000</value>
        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8826"/>
     </ParameterValue>
  </parameterValue>
  <parameterValue>

     <ParameterValue>
        <value uom="urn:ogc:def:uom:EPSG::9001">400000</value>
        <operationParameter xlink:href="urn:ogc:def:parameter:EPSG::8827"/>
     </ParameterValue>
  </parameterValue>
</Conversion>

one has to follow the operationParameter links to get the parameter names.

im not sure what are the required elements, but if i try to make a minimal GML, 
taking various liberties and dereferencing things:

<ProjectedCRS>
 <identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::9802</identifier>
 <name>Lambert Conformal</name>

 <conversion>
   <parameterValue>
     <value uom="degree">47.5</value>
     <operationParameter name="Latitude of false origin"/>
   </parameterValue>

   <parameterValue>
     <value uom="degree">13.3333333</value>
     <operationParameter name="Longitude of false origin"/>
   </parameterValue>

   <parameterValue>
     <value uom="degree">49.0</value>
     <operationParameter name="Latitude of 1st standard parallel "/>
   </parameterValue>

   <parameterValue>
     <value uom="degree">46.0</value>
     <operationParameter name="Latitude of 2nd standard parallel "/>
   </parameterValue>

   <parameterValue>
     <value uom="metre">400000</value>
     <operationParameter name="Easting at false origin "/>
   </parameterValue>

   <parameterValue>
     <value uom="metre">400000</value>
     <operationParameter name="Northing at false origin "/>
   </parameterValue>
 </conversion>

 <baseGeodeticCRS xlink:href="urn:ogc:def:crs:EPSG::4258"/>
 <cartesianCS xlink:href="urn:ogc:def:cs:EPSG::4530"/>
</ProjectedCRS>

which i guess is ok.

As an aside, I wonder about the "Latitude/Longitude of false origin" which are 
defined as:

"The latitude/longitude of the point which is not the natural origin and at which 
grid coordinate values false easting and false northing are defined."

Naively, it sounds like I am getting the lat/lon value corresponding to the 
arbitrary Easting/Northing false origin coordinate. How does one generate the 
Latitude/Longitude of the natural origin, which is what i need to create the 
projection function? I must be misunderstanding something.

If I'm not misunderstanding, then this particular identifier:

  <identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::3416</identifier>

describes a projection, but does not include the information one would need to implement 
it. For that, you would need the "Latitude/Longitude of natural origin" 
parameters.





  • 2008 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the galeon archives: