[
https://issues.apache.org/jira/browse/SIS-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Desruisseaux updated SIS-160:
------------------------------------
Affects Version/s: 0.5
> Need XSLT between GML 3.1 and 3.2
> ---------------------------------
>
> Key: SIS-160
> URL: https://issues.apache.org/jira/browse/SIS-160
> Project: Spatial Information Systems
> Issue Type: Improvement
> Components: Referencing
> Affects Versions: 0.4, 0.5
> Reporter: Martin Desruisseaux
> Priority: Minor
>
> Apache SIS supports natively only one GML version, typically the latest one
> (GML 3.2.1 as of Apache SIS 0.4). Reading a document from an older schema
> requires transforming the XML document before unmarshalling by SIS.
> Conversely, writing a document to an older schema requires transforming the
> XML document after marshalling by SIS.
> Transformations between GML 3.2 and 3.2.1 are easy: only the name space URL
> changed. Such URL substitutions are done with our package-privated
> {{org.apache.sis.xml.FilteredStreamReader}} and {{FilteredStreamWriter}}
> classes. This is a lighter approach than using XSLT. However transformations
> between GML 3.1.1 and GML 3.2.1 are more complex. Example:
> {code:xml|title=GML 3.1.1}
> <gml:VerticalDatum>
> <gml:datumName>Mean Sea Level</gml:datumName>
> <gml:remarks>Approximates geoid.</gml:remarks>
> <gml:anchorPoint>Averaged over a 19-year period.</gml:anchorPoint>
> <gml:validArea>
> <gml:description>World.</gml:description>
> <gml:boundingBox>
> <gml:lowerCorner>-180 -90</gml:lowerCorner>
> <gml:upperCorner>+180 +90</gml:upperCorner>
> </gml:boundingBox>
> </gml:validArea>
> <gml:scope>Hydrography.</gml:scope>
> <gml:verticalDatumType codeSpace="EPSG">geoidal</gml:verticalDatumType>
> </gml:VerticalDatum>
> {code}
> {code:xml|title=GML 3.2.1}
> <gml:VerticalDatum>
> <gml:identifier
> codeSpace="OGP">urn:ogc:def:datum:EPSG::5100</gml:identifier>
> <gml:name>Mean Sea Level</gml:name>
> <gml:remarks>Approximates geoid.</gml:remarks>
> <gml:domainOfValidity>
> <gmd:EX_Extent>
> <gmd:description>
> <gco:CharacterString>World.</gco:CharacterString>
> </gmd:description>
> <gmd:geographicElement>
> <gmd:EX_GeographicBoundingBox>
>
> <gmd:westBoundLongitude><gco:Decimal>-180</gco:Decimal></gmd:westBoundLongitude>
>
> <gmd:eastBoundLongitude><gco:Decimal>+180</gco:Decimal></gmd:eastBoundLongitude>
> <gmd:southBoundLatitude><gco:Decimal>
> -90</gco:Decimal></gmd:southBoundLatitude>
> <gmd:northBoundLatitude><gco:Decimal>
> +90</gco:Decimal></gmd:northBoundLatitude>
> </gmd:EX_GeographicBoundingBox>
> </gmd:geographicElement>
> </gmd:EX_Extent>
> </gml:domainOfValidity>
> <gml:scope>Hydrography.</gml:scope>
> <gml:anchorDefinition>Averaged over a 19-year period.</gml:anchorDefinition>
> </gml:VerticalDatum>
> {code}
> {{<gml:datumName>}} has been renamed as {{<gml:name>}}, {{<gml:anchorPoint>}}
> as {{<gml:anchorDefinition>}}, {{<gml:validArea>}} as
> {{<gml:domainOfValidity>}} with a very different content.
> {{<gml:identifier>}} does not exist in GML 3.1.1 but is mandatory in GML
> 3.2.1. Conversely, {{<gml:verticalDatumType>}} defined in GML 3.1.1 has been
> removed in GML 3.2.1. Those changes are too complex for our above-cited
> {{org.apache.sis.xml}} classes - we will need real [XSLT (Extensible
> Stylesheet Language Transformations)|http://en.wikipedia.org/wiki/XSLT].
> XSLT 1.0 is supported in JDK6. So the work needed for this task is to write
> the XSLT document, or to find existing XSLT that can be distributed under
> Apache 2 license. XSLT would works well as long as the Apache SIS native GML
> version contains all the information to write in the target GML versions. An
> exception to this condition is the above-cited {{<gml:verticalDatumType>}},
> which have been removed from GML 3.2.1 and is uneasy to infer from other
> property values. This special case needs support straight in the
> {{org.apache.sis.referencing.datum.DefaultVerticalDatum}} class (already
> implemented in SIS 0.4).
> h3. Metadata
> Transformations from ISO 19139:2003 to ISO 19115-3:2013 will be a similar
> challenge. But in this case, XSLT are made by ESRI. We need to check if the
> license is compatible, and to verify if we need to write ourselves the XSLT
> for the reverse transformation (newer to older).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)