Author: desruisseaux
Date: Thu Mar 17 13:35:49 2016
New Revision: 1735424
URL: http://svn.apache.org/viewvc?rev=1735424&view=rev
Log:
Consolidate our abbreviations for spherical CS. In particular, we distinguish
two kinds of spherical CS:
- Geodetic case with (spherical latitude, spherical longitude, geocentric
radius) axes
- Engineering case with (distance, bearing, elevation) axes.
In the geodetic case, the radius abbreviation is upper-case "R".
In the engineering case, the radius (or distance) abbreviation is lower-case
"r".
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/metadata/AxisDirectionsTest.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultSphericalCSTest.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java
sis/branches/JDK8/src/main/config/logging.properties
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisDirections.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -626,14 +626,15 @@ public final class AxisDirections extend
if (name.length() == 1) {
return name; // Most common cases are "x", "y",
"z", "t", "i" and "j".
}
+ /*
+ * Direction may be both "compass" (e.g. North) or "non-compass" (e.g.
away from).
+ * Even if the radius at θ = 0° is oriented toward North, but we do
not want the "N" abbreviation.
+ */
+ if (contains(name, "radius", true)) {
+ return contains(name, "Geocentric", false) ? "R" : "r";
+ }
if (isCompass(direction)) {
/*
- * Radius at θ = 0° may be oriented toward North, but we do not
want the "N" abbreviation.
- */
- if (contains(name, "radius", true)) {
- return "r";
- }
- /*
* NORTH, EAST, SOUTH, WEST and all intercardinal directions
(SOUTH_SOUTH_WEST, etc.):
* we will use the acronym (e.g. "SE" for SOUTH_EAST), unless the
axis is likely to be
* a longitude or latitude axis. We detect those later cases by
the unit of measurement.
@@ -653,7 +654,10 @@ public final class AxisDirections extend
* use "h" as the fallback for unknown vertical axis.
*/
if (UP.equals(direction)) {
- return contains(name, "Gravity", false) ? "H" : contains(name,
"Geocentric", false) ? "r": "h";
+ if (contains(name, "Gravity", false)) return "H";
+ if (contains(name, "Elevation", false)) return "φ";
+ if (contains(name, "Geocentric", false)) return "r";
+ return "h";
} else if (DOWN.equals(direction)) {
return "D"; // "Depth"
} else if (isGeocentric(direction)) {
Modified:
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -54,7 +54,8 @@ public final class AxisNames {
/**
* The ISO 19111 <cite>"spherical longitude"</cite> name. Abbreviation
used by SIS is "θ" (theta)
- * for consistency with the EPSG "long" abbreviation, but some other
conventions use "φ" instead.
+ * for consistency with ISO 19162 <cite>Axis name and abbreviation</cite>
section,
+ * but some other conventions use φ or Ω instead.
* Direction in the EPSG database is "East", but "counterClockwise" may
also be used.
*
* @see <a
href="http://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical
coordinate system on Wikipedia</a>
@@ -64,7 +65,8 @@ public final class AxisNames {
/**
* The ISO 19111 <cite>"spherical latitude"</cite> name. Abbreviation used
by SIS is "φ′" (phi prime)
- * for consistency with the EPSG "lat" abbreviation, but some other
conventions use "θ" instead.
+ * for consistency with ISO 19162 <cite>Axis name and abbreviation</cite>
section,
+ * but some other conventions use θ, Ω or Ψ instead.
* Direction in the EPSG database is "North", but the "Up" direction may
also be used with a similar
* axis named "elevation".
*/
@@ -101,7 +103,11 @@ public final class AxisNames {
public static final String GEOCENTRIC_Z = "Geocentric Z";
/**
- * The ISO 19111 <cite>"geocentric radius"</cite> name. Abbreviation is
lower case <cite>"r"</cite>.
+ * The ISO 19111 <cite>"geocentric radius"</cite> name. Abbreviation is
upper case <cite>"R"</cite>
+ * for consistency with EPSG database.
+ *
+ * <div class="note"><b>Note:</b>Lower case <cite>"r"</cite> is used for
non-geocentric radius
+ * or axes named "distance" with "awayFrom" direction.</div>
*/
public static final String GEOCENTRIC_RADIUS = "Geocentric radius";
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -391,7 +391,7 @@ final class StandardDefinitions {
rm = RangeMeaning.WRAPAROUND;
break;
case 62: name = "Geocentric radius";
- abrv = "r"; // See
HardCodedAxes.GEOCENTRIC_RADIUS in tests.
+ abrv = "R"; // See
HardCodedAxes.GEOCENTRIC_RADIUS in tests.
unit = SI.METRE;
dir = AxisDirection.UP;
rm = RangeMeaning.EXACT;
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -99,6 +99,30 @@ final class Normalizer implements Compar
};
/**
+ * Number of bits by which to shift the {@link AxisDirection#ordinal()}
value in order to make room for
+ * inserting intermediate values between them. A shift of 2 make room for
{@literal 1 << 2} intermediate
+ * values. Those intermediate values are declared in the {@link #ORDER}
map.
+ *
+ * @see #order(AxisDirection)
+ */
+ private static final int SHIFT = 2;
+
+ /**
+ * Custom code list values to handle as if the where defined between two
GeoAPI values.
+ *
+ * @see #order(AxisDirection)
+ */
+ private static final Map<AxisDirection,Integer> ORDER = new HashMap<>();
+ static {
+ final Map<AxisDirection,Integer> m = ORDER;
+ // Get ordinal of last compass direction defined by GeoAPI. We will
continue on the horizontal plane.
+ final int horizontal = (AxisDirection.NORTH.ordinal() +
(AxisDirections.COMPASS_COUNT - 1)) << SHIFT;
+ m.put(AxisDirections.AWAY_FROM, horizontal + 1);
+ m.put(AxisDirections.COUNTER_CLOCKWISE, horizontal + 2);
+ m.put(AxisDirections.CLOCKWISE, horizontal + 3);
+ }
+
+ /**
* The axis to be compared by {@link #compareTo(Normalizer)}.
*/
private final CoordinateSystemAxis axis;
@@ -128,30 +152,39 @@ final class Normalizer implements Compar
}
/**
+ * Returns the order of the given axis direction.
+ */
+ private static int order(final AxisDirection dir) {
+ final Integer p = ORDER.get(dir);
+ return (p != null) ? p : (dir.ordinal() << SHIFT);
+ }
+
+ /**
* Compares two axis for an order that try to favor right-handed
coordinate systems.
* Compass directions like North and East are first. Vertical directions
like Up or Down are next.
*/
@Override
public int compareTo(final Normalizer that) {
- final int d = unitOrder - that.unitOrder;
- if (d != 0) {
- return d;
- }
- final AxisDirection d1 = this.axis.getDirection();
- final AxisDirection d2 = that.axis.getDirection();
- final int compass = AxisDirections.angleForCompass(d2, d1);
- if (compass != Integer.MIN_VALUE) {
- return compass;
- }
- if (meridian != null) {
- if (that.meridian != null) {
- return meridian.compareTo(that.meridian);
+ int d = unitOrder - that.unitOrder;
+ if (d == 0) {
+ final AxisDirection d1 = this.axis.getDirection();
+ final AxisDirection d2 = that.axis.getDirection();
+ d = AxisDirections.angleForCompass(d2, d1);
+ if (d == Integer.MIN_VALUE) {
+ if (meridian != null) {
+ if (that.meridian != null) {
+ d = meridian.compareTo(that.meridian);
+ } else {
+ d = -1;
+ }
+ } else if (that.meridian != null) {
+ d = +1;
+ } else {
+ d = order(d1) - order(d2);
+ }
}
- return -1;
- } else if (that.meridian != null) {
- return +1;
}
- return d1.ordinal() - d2.ordinal();
+ return d;
}
/**
@@ -201,22 +234,8 @@ final class Normalizer implements Compar
return axis;
}
final String abbreviation = axis.getAbbreviation();
- String newAbbr = abbreviation;
- if (!sameDirection) {
- if (AxisDirections.isCompass(direction)) {
- if (CharSequences.isAcronymForWords(abbreviation,
direction.name())) {
- if (newDir.equals(AxisDirection.EAST)) {
- newAbbr = "E";
- } else if (newDir.equals(AxisDirection.NORTH)) {
- newAbbr = "N";
- }
- }
- } else if (newDir.equals(AxisDirection.UP)) {
- newAbbr = "z";
- } else if (newDir.equals(AxisDirection.FUTURE)) {
- newAbbr = "t";
- }
- }
+ final String newAbbr = sameDirection ? abbreviation :
+ AxisDirections.suggestAbbreviation(axis.getName().getCode(),
newDir, newUnit);
final Map<String,Object> properties = new HashMap<>();
if (newAbbr.equals(abbreviation)) {
properties.putAll(IdentifiedObjects.getProperties(axis, EXCLUDES));
@@ -287,12 +306,6 @@ final class Normalizer implements Compar
changed |= sort(axes, angularUnitOrder);
if (angularUnitOrder == 1) { //
Cylindrical or polar
/*
- * Direction "awayFrom" (r) should be first.
- */
- if (AxisDirections.AWAY_FROM.equals(axes[1].getDirection()) &&
Units.isLinear(axes[0].getUnit())) {
- ArraysExt.swap(axes, 0, 1);
- }
- /*
* Change (r,z,θ) to (r,θ,z) order in CylindricalCS. The check
on unit of
* measurements should be always true, but we verify as a
paranoiac check.
*/
@@ -301,7 +314,7 @@ final class Normalizer implements Compar
}
/*
* If we were not allowed to normalize the axis direction, we
may have a
- * left-handed coordinate system here. Is so, make it
right-handed.
+ * left-handed coordinate system here. If so, make it
right-handed.
*/
if (AxisDirections.CLOCKWISE.equals(axes[1].getDirection()) &&
isLengthAndAngle(axes, 0)) {
ArraysExt.swap(axes, 0, 1);
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/metadata/AxisDirectionsTest.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/metadata/AxisDirectionsTest.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/metadata/AxisDirectionsTest.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/internal/metadata/AxisDirectionsTest.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -32,6 +32,9 @@ import org.junit.Test;
import static org.junit.Assert.*;
import static java.lang.StrictMath.abs;
import static org.opengis.referencing.cs.AxisDirection.*;
+import static org.apache.sis.internal.metadata.AxisDirections.AWAY_FROM;
+import static org.apache.sis.internal.metadata.AxisDirections.CLOCKWISE;
+import static
org.apache.sis.internal.metadata.AxisDirections.COUNTER_CLOCKWISE;
/**
@@ -63,6 +66,9 @@ public final strictfp class AxisDirectio
assertEquals(UP, AxisDirections.absolute(DOWN));
assertEquals(FUTURE, AxisDirections.absolute(FUTURE));
assertEquals(FUTURE, AxisDirections.absolute(PAST));
+ assertEquals(AWAY_FROM, AxisDirections.absolute(AWAY_FROM));
+ assertEquals(COUNTER_CLOCKWISE, AxisDirections.absolute(CLOCKWISE));
+ assertEquals(COUNTER_CLOCKWISE,
AxisDirections.absolute(COUNTER_CLOCKWISE));
}
/**
@@ -82,6 +88,9 @@ public final strictfp class AxisDirectio
assertEquals(UP, AxisDirections.opposite(DOWN));
assertEquals(PAST, AxisDirections.opposite(FUTURE));
assertEquals(FUTURE, AxisDirections.opposite(PAST));
+ assertEquals(COUNTER_CLOCKWISE, AxisDirections.opposite(CLOCKWISE));
+ assertEquals(CLOCKWISE,
AxisDirections.opposite(COUNTER_CLOCKWISE));
+ assertNull ( AxisDirections.opposite(AWAY_FROM));
}
/**
@@ -381,7 +390,10 @@ public final strictfp class AxisDirectio
assertEquals("φ′", AxisDirections.suggestAbbreviation("Spherical
latitude", NORTH, NonSI.DEGREE_ANGLE));
assertEquals("h", AxisDirections.suggestAbbreviation("Ellipsoidal
height", UP, SI.METRE));
assertEquals("H",
AxisDirections.suggestAbbreviation("Gravity-related height", UP,
SI.METRE));
- assertEquals("r", AxisDirections.suggestAbbreviation("Geocentric
radius", UP, SI.METRE));
+ assertEquals("φ", AxisDirections.suggestAbbreviation("Elevation",
UP, SI.METRE));
+ assertEquals("R", AxisDirections.suggestAbbreviation("Geocentric
radius", UP, SI.METRE));
+ assertEquals("r", AxisDirections.suggestAbbreviation("Distance",
AWAY_FROM, SI.METRE));
+ assertEquals("θ", AxisDirections.suggestAbbreviation("Bearing",
CLOCKWISE, NonSI.DEGREE_ANGLE));
assertEquals("X", AxisDirections.suggestAbbreviation("not needed",
GEOCENTRIC_X, SI.METRE));
assertEquals("Y", AxisDirections.suggestAbbreviation("not needed",
GEOCENTRIC_Y, SI.METRE));
assertEquals("Z", AxisDirections.suggestAbbreviation("not needed",
GEOCENTRIC_Z, SI.METRE));
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -86,7 +86,7 @@ public final strictfp class DefaultEngin
" CS[spherical, 3],\n" +
" AXIS[“Spherical latitude (U)”, north, ORDER[1],
ANGLEUNIT[“degree”, 0.017453292519943295]],\n" +
" AXIS[“Spherical longitude (V)”, east, ORDER[2],
ANGLEUNIT[“degree”, 0.017453292519943295]],\n" +
- " AXIS[“Geocentric radius (r)”, up, ORDER[3],
LENGTHUNIT[“metre”, 1]]]",
+ " AXIS[“Geocentric radius (R)”, up, ORDER[3],
LENGTHUNIT[“metre”, 1]]]",
crs);
}
@@ -102,7 +102,7 @@ public final strictfp class DefaultEngin
" CS[spherical, 3],\n" +
" Axis[“Spherical latitude (U)”, north, Unit[“degree”,
0.017453292519943295]],\n" +
" Axis[“Spherical longitude (V)”, east, Unit[“degree”,
0.017453292519943295]],\n" +
- " Axis[“Geocentric radius (r)”, up, Unit[“metre”, 1]]]",
+ " Axis[“Geocentric radius (R)”, up, Unit[“metre”, 1]]]",
crs);
}
@@ -192,7 +192,7 @@ public final strictfp class DefaultEngin
" <gml:axis>\n" +
" <gml:CoordinateSystemAxis
uom=\"urn:ogc:def:uom:EPSG::9001\" gml:id=\"GeocentricRadius\">\n" +
" <gml:name>Geocentric radius</gml:name>\n" +
- " <gml:axisAbbrev>r</gml:axisAbbrev>\n" +
+ " <gml:axisAbbrev>R</gml:axisAbbrev>\n" +
" <gml:axisDirection
codeSpace=\"EPSG\">up</gml:axisDirection>\n" +
" <gml:minimumValue>0.0</gml:minimumValue>\n" +
" <gml:rangeMeaning
codeSpace=\"EPSG\">exact</gml:rangeMeaning>\n" +
@@ -222,6 +222,6 @@ public final strictfp class DefaultEngin
assertEquals("cs.axis[2].name", "Geocentric radius",
cs.getAxis(2).getName().getCode());
assertEquals("cs.axis[0].abbreviation", "φ′",
cs.getAxis(0).getAbbreviation());
assertEquals("cs.axis[1].abbreviation", "θ",
cs.getAxis(1).getAbbreviation());
- assertEquals("cs.axis[2].abbreviation", "r",
cs.getAxis(2).getAbbreviation());
+ assertEquals("cs.axis[2].abbreviation", "R",
cs.getAxis(2).getAbbreviation());
}
}
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultSphericalCSTest.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultSphericalCSTest.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultSphericalCSTest.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultSphericalCSTest.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -18,6 +18,7 @@ package org.apache.sis.referencing.cs;
import java.util.Collections;
import org.opengis.referencing.cs.AxisDirection;
+import org.apache.sis.internal.metadata.AxisDirections;
import org.apache.sis.test.TestCase;
import org.apache.sis.test.DependsOn;
import org.junit.Test;
@@ -36,11 +37,20 @@ import static org.opengis.test.Assert.*;
@DependsOn(AbstractCSTest.class)
public final strictfp class DefaultSphericalCSTest extends TestCase {
/**
- * Tests {@link DefaultSphericalCS#forConvention(AxesConvention)} with a
change of axis order.
+ * Tests a spherical CRS conforms to EPSG:8.9:6404 definition.
+ * Expected axes are:
+ *
+ * <ol>
+ * <li>Spherical latitude (φ′)</li>
+ * <li>Spherical longitude (θ)</li>
+ * <li>Geocentric radius (R)</li>
+ * </ol>
*/
@Test
- public void testChangeAxisOrder() {
+ public void testGeodetic() {
final DefaultSphericalCS cs = HardCodedCS.SPHERICAL;
+ assertEquals("EPSG abbreviation for geocentric radius should be
upper-case", "R", cs.getAxis(2).getAbbreviation());
+
final DefaultSphericalCS normalized =
cs.forConvention(AxesConvention.CONVENTIONALLY_ORIENTED);
assertNotSame("Should create a new CoordinateSystem.", cs, normalized);
assertAxisDirectionsEqual("Normalized", normalized,
@@ -52,7 +62,32 @@ public final strictfp class DefaultSpher
Collections.singletonMap(AbstractCS.NAME_KEY, "Spherical CS:
East (°), North (°), Up (m)."),
HardCodedAxes.SPHERICAL_LONGITUDE,
HardCodedAxes.SPHERICAL_LATITUDE,
- HardCodedAxes.GEOCENTRIC_RADIUS
- ), normalized);
+ HardCodedAxes.GEOCENTRIC_RADIUS), normalized);
+ }
+
+ /**
+ * Tests a spherical CRS conforms to the example given in ISO 19162.
+ * Expected axes are:
+ *
+ * <ol>
+ * <li>Distance (r)</li>
+ * <li>Longitude</li>
+ * <li>Elevation</li>
+ * </ol>
+ *
+ * This order is not exactly the usual engineering axis order.
+ * But this is the order expected by the {@code SphericalToCartesian}
transform.
+ */
+ @Test
+ public void testEngineering() {
+ final DefaultSphericalCS cs = HardCodedCS.SPHERICAL_ENGINEERING;
+ assertEquals("Abbreviation for distance should be lower-case", "r",
cs.getAxis(0).getAbbreviation());
+
+ final DefaultSphericalCS normalized =
cs.forConvention(AxesConvention.NORMALIZED);
+ assertNotSame("Should create a new CoordinateSystem.", cs, normalized);
+ assertAxisDirectionsEqual("Normalized", normalized,
+ AxisDirections.COUNTER_CLOCKWISE,
+ AxisDirection.UP,
+ AxisDirections.AWAY_FROM);
}
}
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -165,20 +165,24 @@ public final strictfp class HardCodedAxe
* Axis for radius in a {@linkplain
org.apache.sis.referencing.crs.DefaultGeocentricCRS geocentric CRS}
* using {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS
spherical CS}.
* Increasing ordinates values go {@linkplain AxisDirection#UP up} and
units are {@linkplain SI#METRE metres}.
- * The ISO 19111 name is <cite>"geocentric radius"</cite> and the
abbreviation is lower case <cite>"r"</cite>.
+ * The ISO 19111 name is <cite>"geocentric radius"</cite> and the
abbreviation is upper-case <cite>"R"</cite>.
*
- * <div class="note"><b>Note:</b> EPSG dataset 8.9 uses upper-case
<cite>"R"</cite>.
- * In this class, we use the ISO 19111 abbreviation instead.</div>
+ * <div class="note"><b>Note:</b>
+ * The uses upper-case <cite>"R"</cite> come from EPSG dataset 8.9.
+ * ISO 19111 and 19162 use lower-case <cite>"r"</cite> instead,
+ * but with "awayFrom" direction instead of "geocentricRadius".
+ * In this class, <cite>"r"</cite> is taken by {@link #DISTANCE}.</div>
*
* <p>This axis is usually part of a {@link #SPHERICAL_LONGITUDE}, {@link
#SPHERICAL_LATITUDE},
* {@link #GEOCENTRIC_RADIUS} set.</p>
*
+ * @see #DISTANCE
* @see #ALTITUDE
* @see #ELLIPSOIDAL_HEIGHT
* @see #GRAVITY_RELATED_HEIGHT
* @see #DEPTH
*/
- public static final DefaultCoordinateSystemAxis GEOCENTRIC_RADIUS =
create(AxisNames.GEOCENTRIC_RADIUS, "r",
+ public static final DefaultCoordinateSystemAxis GEOCENTRIC_RADIUS =
create(AxisNames.GEOCENTRIC_RADIUS, "R",
AxisDirection.UP, SI.METRE, 0, Double.POSITIVE_INFINITY,
RangeMeaning.EXACT);
/**
@@ -191,6 +195,7 @@ public final strictfp class HardCodedAxe
* <p>This axis is close to the definition found in the EPSG database,
except for the "long" abbreviation which
* is replaced by "θ". Note that other conventions exist, in which the
meaning of φ and θ are interchanged.
* ISO mentions also the symbol Ω, but it is not clear if it applies to
longitude or latitude.
+ * The "θ" abbreviation used here is found in ISO 19162.
* See {@link AxisNames#SPHERICAL_LONGITUDE} for other information.</p>
*
* <p>This axis is usually part of a {@link #SPHERICAL_LONGITUDE}, {@link
#SPHERICAL_LATITUDE},
@@ -216,6 +221,7 @@ public final strictfp class HardCodedAxe
* which is replaced by "φ′". Note that other conventions exist, in which
the meaning of φ and θ are
* interchanged or in which this axis is named "elevation" and is oriented
toward "Up".
* Other conventions use symbol Ψ or Ω.
+ * The "φ" abbreviation used here is found in ISO 19162.
* See {@link AxisNames#SPHERICAL_LATITUDE} for other information.</p>
*
* <p>This axis is usually part of a {@link #SPHERICAL_LONGITUDE}, {@link
#SPHERICAL_LATITUDE},
@@ -380,19 +386,31 @@ public final strictfp class HardCodedAxe
/**
* An axis for a distance from an origin.
- * This is part of a polar coordinate system.
+ * This is part of a polar or engineering spherical coordinate system
+ * (not to be confused with geodetic spherical coordinate system).
+ *
+ * @see #GEOCENTRIC_RADIUS
*/
public static final DefaultCoordinateSystemAxis DISTANCE =
create("Distance", "r",
AxisDirections.AWAY_FROM, SI.METRE, 0, Double.POSITIVE_INFINITY,
RangeMeaning.EXACT);
/**
* An axis with clockwise orientation.
- * This is part of a polar coordinate system.
+ * This is part of a polar or engineering spherical coordinate system
+ * (not to be confused with geodetic spherical coordinate system).
*/
public static final DefaultCoordinateSystemAxis BEARING =
create("Bearing", "θ",
AxisDirections.CLOCKWISE, NonSI.DEGREE_ANGLE, -180, +180,
RangeMeaning.WRAPAROUND);
/**
+ * An axis with for elevation angle.
+ * This is part of an engineering spherical coordinate system
+ * (not to be confused with geodetic spherical coordinate system).
+ */
+ public static final DefaultCoordinateSystemAxis ELEVATION =
create("Elevation", "φ",
+ AxisDirection.UP, NonSI.DEGREE_ANGLE, -90, +90,
RangeMeaning.WRAPAROUND);
+
+ /**
* Axis for time values in a {@linkplain
org.apache.sis.referencing.cs.DefaultTimeCS time CS}.
* Increasing time go toward {@linkplain AxisDirection#FUTURE future} and
units are {@linkplain NonSI#DAY days}.
* The abbreviation is lower case <cite>"t"</cite>.
Modified:
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
---
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java
[UTF-8] (original)
+++
sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedCS.java
[UTF-8] Thu Mar 17 13:35:49 2016
@@ -84,12 +84,14 @@ public final strictfp class HardCodedCS
HardCodedAxes.LATITUDE_gon);
/**
- * A three-dimensional spherical CS with
+ * A three-dimensional spherical CS for geodetic use with
* <var>{@linkplain HardCodedAxes#SPHERICAL_LATITUDE latitude}</var>,
* <var>{@linkplain HardCodedAxes#SPHERICAL_LONGITUDE longitude}</var>,
* <var>{@linkplain HardCodedAxes#GEOCENTRIC_RADIUS radius}</var> axes.
* This axis order is the one of EPSG:6404.
* Note that this is not a right-handed system.
+ *
+ * @see #SPHERICAL_ENGINEERING
*/
public static final DefaultSphericalCS SPHERICAL = new DefaultSphericalCS(
singletonMap(NAME_KEY, "Spherical"),
@@ -98,6 +100,18 @@ public final strictfp class HardCodedCS
HardCodedAxes.GEOCENTRIC_RADIUS);
/**
+ * A three-dimensional spherical CS for geodetic use with
+ * <var>{@linkplain HardCodedAxes#DISTANCE distance}</var>,
+ * <var>{@linkplain HardCodedAxes#BEARING bearing}</var>,
+ * <var>{@linkplain HardCodedAxes#ELEVATION elevation}</var> axes.
+ */
+ public static final DefaultSphericalCS SPHERICAL_ENGINEERING = new
DefaultSphericalCS(
+ singletonMap(NAME_KEY, SPHERICAL.getName()),
+ HardCodedAxes.DISTANCE,
+ HardCodedAxes.BEARING,
+ HardCodedAxes.ELEVATION);
+
+ /**
* A three-dimensional Cartesian CS with geocentric
* <var>{@linkplain HardCodedAxes#GEOCENTRIC_X x}</var>,
* <var>{@linkplain HardCodedAxes#GEOCENTRIC_Y y}</var>,
Modified: sis/branches/JDK8/src/main/config/logging.properties
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/src/main/config/logging.properties?rev=1735424&r1=1735423&r2=1735424&view=diff
==============================================================================
--- sis/branches/JDK8/src/main/config/logging.properties [UTF-8] (original)
+++ sis/branches/JDK8/src/main/config/logging.properties [UTF-8] Thu Mar 17
13:35:49 2016
@@ -17,7 +17,10 @@
handlers= java.util.logging.ConsoleHandler
# Default global logging level.
-.level= FINE
+.level= CONFIG
+
+# Enable debugging information for Apache SIS packages.
+org.apache.sis.level= FINE
# Set the message that are printed on the console to FINE and above.
# FINE provides debugging information normally hidden in production.