Author: desruisseaux
Date: Wed Oct 14 15:37:30 2015
New Revision: 1708623

URL: http://svn.apache.org/viewvc?rev=1708623&view=rev
Log:
Add GML support for PassThroughOperation.

Added:
    
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
   (with props)
    
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
   (with props)
Modified:
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
    
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
    
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
    
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/ConcatenatedOperation.xml

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -103,6 +103,7 @@ import java.util.Objects;
 @XmlRootElement(name = "AbstractCoordinateOperation")
 @XmlSeeAlso({
     AbstractSingleOperation.class,
+    DefaultPassThroughOperation.class,
     DefaultConcatenatedOperation.class
 })
 public class AbstractCoordinateOperation extends AbstractIdentifiedObject 
implements CoordinateOperation {

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -496,6 +496,8 @@ class AbstractSingleOperation extends Ab
      * @see <a href="http://issues.apache.org/jira/browse/SIS-291";>SIS-291</a>
      */
     private void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {
+        final CoordinateReferenceSystem sourceCRS = super.getSourceCRS();
+        final CoordinateReferenceSystem targetCRS = super.getTargetCRS();
         if (transform == null && sourceCRS != null && targetCRS != null && 
parameters != null) try {
             transform = DefaultFactories.forBuildin(MathTransformFactory.class)
                     .createBaseToDerived(sourceCRS, parameters, 
targetCRS.getCoordinateSystem());

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -256,6 +256,8 @@ public class DefaultConversion extends A
              * ProjectedCRS), then DefaultMathTransformFactory has a 
specialized createBaseToDerived(…)
              * method for this job.
              */
+            final CoordinateReferenceSystem sourceCRS = super.getSourceCRS();
+            final CoordinateReferenceSystem targetCRS = super.getTargetCRS();
             if (sourceCRS == null && targetCRS == null && factory instanceof 
DefaultMathTransformFactory) {
                 transform = ((DefaultMathTransformFactory) 
factory).createBaseToDerived(
                         source.getCoordinateSystem(), transform,

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -17,14 +17,21 @@
 package org.apache.sis.referencing.operation;
 
 import java.util.Map;
+import java.util.Arrays;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.CoordinateOperation;
 import org.opengis.referencing.operation.PassThroughOperation;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.crs.CompoundCRS;
 import org.apache.sis.referencing.operation.transform.PassThroughTransform;
+import org.apache.sis.internal.referencing.ReferencingUtilities;
 import org.apache.sis.util.UnsupportedImplementationException;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ComparisonMode;
+import org.apache.sis.util.resources.Errors;
 
 import static org.apache.sis.util.Utilities.deepEquals;
 
@@ -37,10 +44,14 @@ import java.util.Objects;
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.7
  * @module
  */
-// Missing JAXB annotation. See http://issues.apache.org/jira/browse/SIS-293
+@XmlType(name = "PassThroughOperationType", propOrder = {
+    "indices",
+    "operation"
+})
+@XmlRootElement(name = "PassThroughOperation")
 public class DefaultPassThroughOperation extends AbstractCoordinateOperation 
implements PassThroughOperation {
     /**
      * Serial number for inter-operability with different versions.
@@ -49,8 +60,13 @@ public class DefaultPassThroughOperation
 
     /**
      * The operation to apply on the subset of a coordinate tuple.
+     *
+     * <p><b>Consider this field as final!</b>
+     * This field is modified only at unmarshalling time by {@link 
#setOperation(CoordinateOperation)}</p>
+     *
+     * @see #getOperation()
      */
-    private final CoordinateOperation operation;
+    private CoordinateOperation operation;
 
     /**
      * Constructs a single operation from a set of properties.
@@ -155,6 +171,7 @@ public class DefaultPassThroughOperation
      * @see PassThroughTransform#getSubTransform()
      */
     @Override
+    @XmlElement(name = "coordOperation", required = true)
     public CoordinateOperation getOperation() {
         return operation;
     }
@@ -163,7 +180,7 @@ public class DefaultPassThroughOperation
      * Returns the ordered sequence of indices in a source coordinate tuple of 
the coordinates
      * affected by this pass-through operation.
      *
-     * @return Indices of the modified source coordinates.
+     * @return Zero-based indices of the modified source coordinates.
      *
      * @see PassThroughTransform#getModifiedCoordinates()
      */
@@ -173,7 +190,27 @@ public class DefaultPassThroughOperation
         if (transform instanceof PassThroughTransform) {
             return ((PassThroughTransform) transform).getModifiedCoordinates();
         } else {
-            // Should not happen since the constructor created the transform 
itself.
+            /*
+             * Should not happen with objects created by public methods since 
the constructor created the transform
+             * itself. However may happen with operations parsed from GML. As 
a fallback, search in the components
+             * of CompoundCRS. This is not a universal fallback, but work for 
the most straightforward cases.
+             */
+            final CoordinateReferenceSystem sourceCRS = super.getSourceCRS();
+            if (sourceCRS instanceof CompoundCRS) {
+                int firstAffectedOrdinate = 0;
+                final CoordinateReferenceSystem search = 
operation.getSourceCRS();
+                for (final CoordinateReferenceSystem c : ((CompoundCRS) 
sourceCRS).getComponents()) {
+                    final int dim = ReferencingUtilities.getDimension(c);
+                    if (c == search) {
+                        final int[] indices = new int[dim];
+                        for (int i=0; i<dim; i++) {
+                            indices[i] = firstAffectedOrdinate + i;
+                        }
+                        return indices;
+                    }
+                    firstAffectedOrdinate += dim;
+                }
+            }
             throw new UnsupportedImplementationException(transform.getClass());
         }
     }
@@ -210,4 +247,78 @@ public class DefaultPassThroughOperation
     protected long computeHashCode() {
         return super.computeHashCode() + 31 * operation.hashCode();
     }
+
+
+
+
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                   
               ////////
+    ////////                               XML support with JAXB               
               ////////
+    ////////                                                                   
               ////////
+    ////////        The following methods are invoked by JAXB using reflection 
(even if       ////////
+    ////////        they are private) or are helpers for other methods invoked 
by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup 
Language         ////////
+    ////////        (GML) support is not needed.                               
               ////////
+    ////////                                                                   
               ////////
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Constructs a new object in which every attributes are set to a null 
value.
+     * <strong>This is not a valid object.</strong> This constructor is 
strictly
+     * reserved to JAXB, which will assign values to the fields using 
reflexion.
+     */
+    private DefaultPassThroughOperation() {
+    }
+
+    /**
+     * Invoked by JAXB at unmarshalling time for setting the coordinate 
operation
+     * applied on the subset of a coordinate tuple.
+     *
+     * @see #getOperation()
+     */
+    private void setOperation(final CoordinateOperation op) {
+        operation = op;
+    }
+
+    /**
+     * Invoked by JAXB at marshalling time for getting the modified 
coordinates.
+     * This method converts the zero-based indices to 1-based indices.
+     *
+     * @see #getModifiedCoordinates()
+     */
+    @XmlElement(name = "modifiedCoordinate", required = true)
+    private int[] getIndices() {
+        final int[] indices = getModifiedCoordinates();
+        for (int i=0; i<indices.length; i++) {
+            indices[i]++;
+        }
+        return indices;
+    }
+
+    /**
+     * Invoked by JAXB at unmarshalling time for setting the modified 
coordinates.
+     */
+    private void setIndices(final int[] ordinates) {
+        String missing = "sourceCRS";
+        final CoordinateReferenceSystem sourceCRS = super.getSourceCRS();
+        if (sourceCRS != null) {
+            missing = "modifiedCoordinate";
+            if (ordinates != null && ordinates.length != 0) {
+                missing = "coordOperation";
+                if (operation != null) {
+                    for (int i=1; i<ordinates.length; i++) {
+                        final int previous = ordinates[i-1];
+                        if (previous < 1 || ordinates[i] != previous + 1) {
+                            throw new IllegalArgumentException(Errors.format(
+                                    Errors.Keys.CanNotAssign_2, missing, 
Arrays.toString(ordinates)));
+                        }
+                    }
+                    transform = PassThroughTransform.create(ordinates[0] - 1, 
operation.getMathTransform(),
+                            ReferencingUtilities.getDimension(sourceCRS) - 
ordinates[ordinates.length - 1]);
+                    return;
+                }
+            }
+        }
+        throw new 
IllegalStateException(Errors.format(Errors.Keys.MissingComponentInElement_2, 
missing, "PassThroughOperation"));
+    }
 }

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -268,7 +268,7 @@ public class PassThroughTransform extend
      * used" fields public in order to keep the flexibility to replace them by 
a {@code modifiedCoordinates}
      * array in a future SIS version.</div>
      *
-     * @return Indices of the modified source coordinates.
+     * @return Zero-based indices of the modified source coordinates.
      *
      * @see 
org.apache.sis.referencing.operation.DefaultPassThroughOperation#getModifiedCoordinates()
      */

Modified: 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -41,7 +41,7 @@ import static org.apache.sis.test.TestUt
     DefaultTransformationTest.class,
     SingleOperationMarshallingTest.class
 })
-public class DefaultConcatenatedOperationTest extends XMLTestCase {
+public strictfp final class DefaultConcatenatedOperationTest extends 
XMLTestCase {
     /**
      * An XML file in this package containing a projected CRS definition.
      */

Added: 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java?rev=1708623&view=auto
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
 (added)
+++ 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.referencing.operation;
+
+import java.util.List;
+import javax.xml.bind.JAXBException;
+import org.opengis.referencing.crs.CompoundCRS;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.CoordinateOperation;
+import org.opengis.referencing.operation.Transformation;
+import org.opengis.test.Validators;
+import org.apache.sis.test.DependsOn;
+import org.apache.sis.test.XMLTestCase;
+import org.junit.Test;
+
+import static org.apache.sis.test.TestUtilities.getSingleton;
+import static org.opengis.test.Assert.*;
+
+
+/**
+ * Tests the {@link DefaultPassThroughOperation} class.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.7
+ * @version 0.7
+ * @module
+ */
+@DependsOn({
+    DefaultTransformationTest.class,
+    SingleOperationMarshallingTest.class
+})
+public strictfp final class DefaultPassThroughOperationTest extends 
XMLTestCase {
+    /**
+     * An XML file in this package containing a projected CRS definition.
+     */
+    private static final String XML_FILE = "PassThroughOperation.xml";
+
+    /**
+     * Tests (un)marshalling of a concatenated operation.
+     *
+     * @throws JAXBException If an error occurred during (un)marshalling.
+     */
+    @Test
+    public void testXML() throws JAXBException {
+        final DefaultPassThroughOperation toTest = 
unmarshalFile(DefaultPassThroughOperation.class, XML_FILE);
+        Validators.validate(toTest);
+        final CoordinateReferenceSystem sourceCRS = toTest.getSourceCRS();
+        final CoordinateReferenceSystem targetCRS = toTest.getTargetCRS();
+        final CoordinateOperation       operation = toTest.getOperation();
+        assertIdentifierEquals(          "identifier", "test", "test", null, 
"passthrough", getSingleton(toTest   .getIdentifiers()));
+        assertIdentifierEquals("sourceCRS.identifier", "test", "test", null, 
"source",      getSingleton(sourceCRS.getIdentifiers()));
+        assertIdentifierEquals("targetCRS.identifier", "test", "test", null, 
"target",      getSingleton(targetCRS.getIdentifiers()));
+        assertIdentifierEquals("operation.identifier", "test", "test", null, 
"rotation",    getSingleton(operation.getIdentifiers()));
+        assertInstanceOf("sourceCRS",    CompoundCRS.class, sourceCRS);
+        assertInstanceOf("targetCRS",    CompoundCRS.class, targetCRS);
+        assertInstanceOf("operation", Transformation.class, operation);
+        final List<CoordinateReferenceSystem> srcComponents = ((CompoundCRS) 
sourceCRS).getComponents();
+        final List<CoordinateReferenceSystem> tgtComponents = ((CompoundCRS) 
targetCRS).getComponents();
+        assertEquals("sourceCRS.components.size", 2, srcComponents.size());
+        assertEquals("targetCRS.components.size", 2, tgtComponents.size());
+        assertSame  ("sourceCRS.components[0]", operation.getSourceCRS(), 
srcComponents.get(0));
+        assertSame  ("targetCRS.components[0]", operation.getTargetCRS(), 
tgtComponents.get(0));
+        assertSame  ("targetCRS.components[1]", srcComponents.get(1),     
tgtComponents.get(1));
+        /*
+         * Test marshalling and compare with the original file.
+         */
+        assertMarshalEqualsFile(XML_FILE, toTest, "xmlns:*", 
"xsi:schemaLocation");
+    }
+}

Propchange: 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
 [UTF-8] Wed Oct 14 15:37:30 2015
@@ -26,7 +26,7 @@ import org.junit.BeforeClass;
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
- * @version 0.6
+ * @version 0.7
  * @module
  */
 @Suite.SuiteClasses({
@@ -139,6 +139,7 @@ import org.junit.BeforeClass;
     org.apache.sis.referencing.operation.DefaultTransformationTest.class,
     org.apache.sis.referencing.operation.DefaultConversionTest.class,
     org.apache.sis.referencing.operation.SingleOperationMarshallingTest.class,
+    org.apache.sis.referencing.operation.DefaultPassThroughOperationTest.class,
     
org.apache.sis.referencing.operation.DefaultConcatenatedOperationTest.class,
     org.apache.sis.referencing.crs.DefaultProjectedCRSTest.class,
     org.apache.sis.referencing.crs.DefaultDerivedCRSTest.class,

Modified: 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/ConcatenatedOperation.xml
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/ConcatenatedOperation.xml?rev=1708623&r1=1708622&r2=1708623&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/ConcatenatedOperation.xml
 (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/ConcatenatedOperation.xml
 Wed Oct 14 15:37:30 2015
@@ -20,8 +20,6 @@
 
 <gml:ConcatenatedOperation xsi:schemaLocation = 
"http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/datums.xsd";
                            xmlns:gml          = 
"http://www.opengis.net/gml/3.2";
-                           xmlns:gmd          = 
"http://www.isotc211.org/2005/gmd";
-                           xmlns:gco          = 
"http://www.isotc211.org/2005/gco";
                            xmlns:xsi          = 
"http://www.w3.org/2001/XMLSchema-instance";
                            xmlns:xlink        = "http://www.w3.org/1999/xlink";
                            gml:id             = 
"test-coordinateOperation-concatenated">

Added: 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml?rev=1708623&view=auto
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
 (added)
+++ 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
 Wed Oct 14 15:37:30 2015
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<gml:PassThroughOperation xsi:schemaLocation = "http://www.opengis.net/gml/3.2 
http://schemas.opengis.net/gml/3.2.1/datums.xsd";
+                          xmlns:gml          = "http://www.opengis.net/gml/3.2";
+                          xmlns:xsi          = 
"http://www.w3.org/2001/XMLSchema-instance";
+                          xmlns:xlink        = "http://www.w3.org/1999/xlink";
+                          gml:id             = 
"test-coordinateOperation-passthrough">
+
+  <gml:identifier codeSpace="test">passthrough</gml:identifier>
+  <gml:name>PassThrough test</gml:name>
+  <gml:scope>None.</gml:scope>
+  <gml:sourceCRS>
+    <!--
+      The real EPSG:7400 CRS uses the EPSG:4807 horizontal CRS (with unit in 
grads),
+      but this test uses a custom CRS with unit in degrees instead in order to 
make
+      the test smaller by reusing the same coordinate system in 
<gml:targetCRS>.
+    -->
+    <gml:CompoundCRS gml:id="test-crs-source">
+      <gml:identifier codeSpace="test">source</gml:identifier>
+      <gml:name>NTF (Paris) + NGF IGN69 height</gml:name>
+      <gml:scope>None.</gml:scope>
+      <gml:componentReferenceSystem>
+        <gml:GeodeticCRS gml:id="test-crs-paris">
+          <gml:identifier codeSpace="test">Paris</gml:identifier>
+          <gml:name>NTF (Paris)</gml:name>
+          <gml:scope>None.</gml:scope>
+          <gml:ellipsoidalCS>
+            <!--
+              The real EPSG:4807 CRS uses the EPSG:6403 coordinate system 
(with unit in grads),
+              but this test uses EPSG:6422 (with unit in degrees) instead in 
order to make the
+              test smaller by reusing the same coordinate system in 
<gml:targetCRS>.
+            -->
+            <gml:EllipsoidalCS gml:id="epsg-cs-6422">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:cs:EPSG::6422</gml:identifier>
+              <gml:name>Latitude (north), Longitude (east)</gml:name>
+              <gml:axis>
+                <gml:CoordinateSystemAxis gml:id="epsg-axis-106" 
uom="urn:ogc:def:uom:EPSG::9122">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:axis:EPSG::106</gml:identifier>
+                  <gml:name codeSpace="EPSG">Geodetic latitude</gml:name>
+                  <gml:axisAbbrev>φ</gml:axisAbbrev>
+                  <gml:axisDirection codeSpace="EPSG">north</gml:axisDirection>
+                </gml:CoordinateSystemAxis>
+              </gml:axis>
+              <gml:axis>
+                <gml:CoordinateSystemAxis gml:id="epsg-axis-107" 
uom="urn:ogc:def:uom:EPSG::9122">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:axis:EPSG::107</gml:identifier>
+                  <gml:name codeSpace="EPSG">Geodetic longitude</gml:name>
+                  <gml:axisAbbrev>λ</gml:axisAbbrev>
+                  <gml:axisDirection codeSpace="EPSG">east</gml:axisDirection>
+                </gml:CoordinateSystemAxis>
+              </gml:axis>
+            </gml:EllipsoidalCS>
+          </gml:ellipsoidalCS>
+          <gml:geodeticDatum>
+            <gml:GeodeticDatum gml:id="epsg-datum-6807">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:datum:EPSG::6807</gml:identifier>
+              <gml:name codeSpace="EPSG">Nouvelle Triangulation Française 
(Paris)</gml:name>
+              <gml:scope>Topographic mapping.</gml:scope>
+              <gml:primeMeridian>
+                <gml:PrimeMeridian gml:id="epsg-meridian-8903">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:meridian:EPSG::8903</gml:identifier>
+                  <gml:name codeSpace="EPSG">Paris</gml:name>
+                  <gml:greenwichLongitude 
uom="urn:ogc:def:uom:EPSG::9105">2.5969213</gml:greenwichLongitude>
+                </gml:PrimeMeridian>
+              </gml:primeMeridian>
+              <gml:ellipsoid>
+                <gml:Ellipsoid gml:id="epsg-ellipsoid-7011">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:ellipsoid:EPSG::7011</gml:identifier>
+                  <gml:name codeSpace="EPSG">Clarke 1880 (IGN)</gml:name>
+                  <gml:semiMajorAxis 
uom="urn:ogc:def:uom:EPSG::9001">6378249.2</gml:semiMajorAxis>
+                  <gml:secondDefiningParameter>
+                    <gml:SecondDefiningParameter>
+                      <gml:semiMinorAxis 
uom="urn:ogc:def:uom:EPSG::9001">6356515</gml:semiMinorAxis>
+                    </gml:SecondDefiningParameter>
+                  </gml:secondDefiningParameter>
+                </gml:Ellipsoid>
+              </gml:ellipsoid>
+            </gml:GeodeticDatum>
+          </gml:geodeticDatum>
+        </gml:GeodeticCRS>
+      </gml:componentReferenceSystem>
+      <gml:componentReferenceSystem>
+        <gml:VerticalCRS gml:id="epsg-crs-5720">
+          <gml:identifier 
codeSpace="IOGP">urn:ogc:def:crs:EPSG::5720</gml:identifier>
+          <gml:name>NGF-IGN69 height</gml:name>
+          <gml:scope>Geodetic and engineering surveying.</gml:scope>
+          <gml:verticalCS>
+            <gml:VerticalCS gml:id="epsg-cs-6499">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:cs:EPSG::6499</gml:identifier>
+              <gml:name>Axis: height (H). Orientation: up. UoM: m.</gml:name>
+              <gml:axis>
+                <gml:CoordinateSystemAxis gml:id="epsg-axis-114" 
uom="urn:ogc:def:uom:EPSG::9001">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:axis:EPSG::114</gml:identifier>
+                  <gml:name>Gravity-related height</gml:name>
+                  <gml:axisAbbrev>H</gml:axisAbbrev>
+                  <gml:axisDirection codeSpace="EPSG">up</gml:axisDirection>
+                </gml:CoordinateSystemAxis>
+              </gml:axis>
+            </gml:VerticalCS>
+          </gml:verticalCS>
+          <gml:verticalDatum>
+            <gml:VerticalDatum gml:id="epsg-datum-5119">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:datum:EPSG::5119</gml:identifier>
+              <gml:name>Nivellement General de la France - IGN69</gml:name>
+              <gml:scope>Geodetic survey, topographic mapping, engineering 
survey.</gml:scope>
+            </gml:VerticalDatum>
+          </gml:verticalDatum>
+        </gml:VerticalCRS>
+      </gml:componentReferenceSystem>
+    </gml:CompoundCRS>
+  </gml:sourceCRS>
+  <!--
+    Same definition than the above <gml:sourceCRS> except for the prime 
meridian.
+  -->
+  <gml:targetCRS>
+    <gml:CompoundCRS gml:id="test-crs-target">
+      <gml:identifier codeSpace="test">target</gml:identifier>
+      <gml:name>NTF + NGF IGN69 height</gml:name>
+      <gml:scope>None.</gml:scope>
+      <gml:componentReferenceSystem>
+        <gml:GeodeticCRS gml:id="test-crs-greenwich">
+          <gml:identifier codeSpace="test">Greenwich</gml:identifier>
+          <gml:name>NTF</gml:name>
+          <gml:scope>Geodetic survey.</gml:scope>
+          <gml:ellipsoidalCS xlink:href="#epsg-cs-6422"/>
+          <gml:geodeticDatum>
+            <gml:GeodeticDatum gml:id="epsg-datum-6275">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:datum:EPSG::6275</gml:identifier>
+              <gml:name codeSpace="EPSG">Nouvelle Triangulation 
Française</gml:name>
+              <gml:scope>Topographic mapping.</gml:scope>
+              <gml:primeMeridian>
+                <gml:PrimeMeridian gml:id="epsg-meridian-8901">
+                  <gml:identifier 
codeSpace="IOGP">urn:ogc:def:meridian:EPSG::8901</gml:identifier>
+                  <gml:name codeSpace="EPSG">Greenwich</gml:name>
+                  <gml:greenwichLongitude 
uom="urn:ogc:def:uom:EPSG::9102">0</gml:greenwichLongitude>
+                </gml:PrimeMeridian>
+              </gml:primeMeridian>
+              <gml:ellipsoid xlink:href="#epsg-ellipsoid-7011"/>
+            </gml:GeodeticDatum>
+          </gml:geodeticDatum>
+        </gml:GeodeticCRS>
+      </gml:componentReferenceSystem>
+      <gml:componentReferenceSystem xlink:href="#epsg-crs-5720"/>
+    </gml:CompoundCRS>
+  </gml:targetCRS>
+  <!--
+    The part of interest for PassThroughOperation test.
+  -->
+  <gml:modifiedCoordinate>1</gml:modifiedCoordinate>
+  <gml:modifiedCoordinate>2</gml:modifiedCoordinate>
+  <gml:coordOperation>
+    <gml:Transformation gml:id="test-coordinateOperation-rotation">
+      <gml:identifier codeSpace="test">rotation</gml:identifier>
+      <gml:name>Paris to Greenwich</gml:name>
+      <gml:scope>None.</gml:scope>
+      <gml:operationVersion>1</gml:operationVersion>
+      <gml:sourceCRS xlink:href="#test-crs-paris"/>
+      <gml:targetCRS xlink:href="#test-crs-greenwich"/>
+      <gml:method>
+        <gml:OperationMethod gml:id="epsg-method-9601">
+          <gml:identifier 
codeSpace="IOGP">urn:ogc:def:method:EPSG::9601</gml:identifier>
+          <gml:name>Longitude rotation</gml:name>
+          <gml:formula>Target longitude = Source longitude + longitude 
offset.</gml:formula>
+          <gml:sourceDimensions>2</gml:sourceDimensions>
+          <gml:targetDimensions>2</gml:targetDimensions>
+          <gml:parameter>
+            <gml:OperationParameter gml:id="epsg-parameter-8602">
+              <gml:identifier 
codeSpace="IOGP">urn:ogc:def:parameter:EPSG::8602</gml:identifier>
+              <gml:name>Longitude offset</gml:name>
+            </gml:OperationParameter>
+          </gml:parameter>
+        </gml:OperationMethod>
+      </gml:method>
+      <gml:parameterValue>
+        <gml:ParameterValue>
+          <gml:value uom="urn:ogc:def:uom:EPSG::9105">2.5969213</gml:value>
+          <gml:operationParameter xlink:href="#epsg-parameter-8602"/>
+        </gml:ParameterValue>
+      </gml:parameterValue>
+    </gml:Transformation>
+  </gml:coordOperation>
+</gml:PassThroughOperation>

Propchange: 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sis/branches/JDK8/core/sis-referencing/src/test/resources/org/apache/sis/referencing/operation/PassThroughOperation.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml


Reply via email to