[sis] branch geoapi-4.0 updated: Updates paths and properties to new syntax or location.

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
 new 7c07889  Updates paths and properties to new syntax or location.
7c07889 is described below

commit 7c0788926f5c23f7b8dd1dd5a85720c793a36764
Author: Martin Desruisseaux 
AuthorDate: Tue Oct 1 11:05:47 2019 +0200

Updates paths and properties to new syntax or location.
---
 pom.xml| 9 +++--
 src/main/config/logging.properties | 2 +-
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index e4416cd..b7931f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -675,12 +675,9 @@
   
 **/*TestSuite.java
   
-  
-
-  derby.stream.error.file
-  ${project.build.directory}/derby.log
-
-  
+  
+
${project.build.directory}/derby.log
+  
 
   
 
diff --git a/src/main/config/logging.properties 
b/src/main/config/logging.properties
index 73a9b06..603ea0d 100644
--- a/src/main/config/logging.properties
+++ b/src/main/config/logging.properties
@@ -3,7 +3,7 @@
 #Logging configuration file for debugging  
  #
 #  
  #
 #  This configuration file uses a finer logging level than the default setting 
  #
-#  defined by "$JAVA_HOME/jre/lib/logging.properties" file. This configuration 
  #
+#  defined in the "$JAVA_HOME/conf/logging.properties" file. This 
configuration  #
 #  can be enabled by adding the following argument when launching Java 
(replace  #
 #  "$SIS_SOURCE" by the root directory of Apache SIS project and "/" by the
  #
 #  platform-specific path separator).  
  #



[jira] [Assigned] (SIS-452) Satellite-tracking projections

2019-10-01 Thread Martin Desruisseaux (Jira)


 [ 
https://issues.apache.org/jira/browse/SIS-452?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux reassigned SIS-452:
---

Assignee: Martin Desruisseaux

> Satellite-tracking projections
> --
>
> Key: SIS-452
> URL: https://issues.apache.org/jira/browse/SIS-452
> Project: Spatial Information Systems
>  Issue Type: Sub-task
>  Components: Referencing
>Reporter: Martin Desruisseaux
>Assignee: Martin Desruisseaux
>Priority: Major
>
> _Satellite-tracking projections_ are projections in which groundtracks for 
> satellites orbiting the Earth with same orbital parameters are shown as 
> straight line on the map. This projection would be useful for improving the 
> convergence problem when using localization grid such as the ones encoded in 
> netCDF files (SIS-446). This projection has no EPSG code, but is described in 
> Snyder's book at page 230 to 238.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (SIS-452) Satellite-tracking projections

2019-10-01 Thread Martin Desruisseaux (Jira)


 [ 
https://issues.apache.org/jira/browse/SIS-452?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux updated SIS-452:

Fix Version/s: 1.1

> Satellite-tracking projections
> --
>
> Key: SIS-452
> URL: https://issues.apache.org/jira/browse/SIS-452
> Project: Spatial Information Systems
>  Issue Type: Sub-task
>  Components: Referencing
>Reporter: Martin Desruisseaux
>Assignee: Martin Desruisseaux
>Priority: Major
> Fix For: 1.1
>
>
> _Satellite-tracking projections_ are projections in which groundtracks for 
> satellites orbiting the Earth with same orbital parameters are shown as 
> straight line on the map. This projection would be useful for improving the 
> convergence problem when using localization grid such as the ones encoded in 
> netCDF files (SIS-446). This projection has no EPSG code, but is described in 
> Snyder's book at page 230 to 238.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


svn commit: r1867846 - /sis/site/trunk/content/tables/CoordinateOperationMethods.html

2019-10-01 Thread desruisseaux
Author: desruisseaux
Date: Tue Oct  1 14:30:26 2019
New Revision: 1867846

URL: http://svn.apache.org/viewvc?rev=1867846=rev
Log:
Reduce the number of authorities declared in "Stereographic_North_Pole" and 
"Stereographic_South_Pole": limit to ESRI, OGC and Proj.

Modified:
sis/site/trunk/content/tables/CoordinateOperationMethods.html

Modified: sis/site/trunk/content/tables/CoordinateOperationMethods.html
URL: 
http://svn.apache.org/viewvc/sis/site/trunk/content/tables/CoordinateOperationMethods.html?rev=1867846=1867845=1867846=diff
==
--- sis/site/trunk/content/tables/CoordinateOperationMethods.html [UTF-8] 
(original)
+++ sis/site/trunk/content/tables/CoordinateOperationMethods.html [UTF-8] Tue 
Oct  1 14:30:26 2019
@@ -6401,7 +6401,7 @@
 ∞) m
 
   
-8832
+
 
   
 ESRI:Standard_Parallel_1
@@ -6410,12 +6410,6 @@
 OGC:
 standard_parallel_1
   
-NetCDF:
-standard_parallel
-  
-GeoTIFF:
-StdParallel1
-  
 Proj4:
 lat_ts
   
@@ -6428,7 +6422,7 @@
 90]°
 90°
   
-8833
+
 
   
 ESRI:Central_Meridian
@@ -6437,12 +6431,6 @@
 OGC:
 central_meridian
   
-NetCDF:
-longitude_of_projection_origin
-  
-GeoTIFF:
-StraightVertPoleLong
-  
 Proj4:
 lon_0
   
@@ -6455,7 +6443,7 @@
 180]°
 0°
   
-8806
+
 
   
 ESRI:False_Easting
@@ -6464,12 +6452,6 @@
 OGC:
 false_easting
   
-NetCDF:
-false_easting
-  
-GeoTIFF:
-FalseEasting
-  
 Proj4:
 x_0
   
@@ -6482,7 +6464,7 @@
 ∞) m
 0 m
   
-8807
+
 
   
 ESRI:False_Northing
@@ -6491,12 +6473,6 @@
 OGC:
 false_northing
   
-NetCDF:
-false_northing
-  
-GeoTIFF:
-FalseNorthing
-  
 Proj4:
 y_0
   
@@ -6582,7 +6558,7 @@
 ∞) m
 
   
-8832
+
 
   
 ESRI:Standard_Parallel_1
@@ -6591,12 +6567,6 @@
 OGC:
 standard_parallel_1
   
-NetCDF:
-standard_parallel
-  
-GeoTIFF:
-StdParallel1
-  
 Proj4:
 lat_ts
   
@@ -6609,7 +6579,7 @@
 0]°
 -90°
   
-8833
+
 
   
 ESRI:Central_Meridian
@@ -6618,12 +6588,6 @@
 OGC:
 central_meridian
   
-NetCDF:
-longitude_of_projection_origin
-  
-GeoTIFF:
-StraightVertPoleLong
-  
 Proj4:
 lon_0
   
@@ -6636,7 +6600,7 @@
 180]°
 0°
   
-8806
+
 
   
 ESRI:False_Easting
@@ -6645,12 +6609,6 @@
 OGC:
 false_easting
   
-NetCDF:
-false_easting
-  
-GeoTIFF:
-FalseEasting
-  
 Proj4:
 x_0
   
@@ -6663,7 +6621,7 @@
 ∞) m
 0 m
   
-8807
+
 
   
 ESRI:False_Northing
@@ -6672,12 +6630,6 @@
 OGC:
 false_northing
   
-NetCDF:
-false_northing
-  
-GeoTIFF:
-FalseNorthing
-  
 Proj4:
 y_0

svn commit: r1050904 - in /websites/staging/sis/trunk/content: ./ templates/release-announce.html

2019-10-01 Thread buildbot
Author: buildbot
Date: Tue Oct  1 14:31:58 2019
New Revision: 1050904

Log:
Staging update by buildbot for sis

Modified:
websites/staging/sis/trunk/content/   (props changed)
websites/staging/sis/trunk/content/templates/release-announce.html

Propchange: websites/staging/sis/trunk/content/
--
--- cms:source-revision (original)
+++ cms:source-revision Tue Oct  1 14:31:58 2019
@@ -1 +1 @@
-1867846
+1867847

Modified: websites/staging/sis/trunk/content/templates/release-announce.html
==
--- websites/staging/sis/trunk/content/templates/release-announce.html 
(original)
+++ websites/staging/sis/trunk/content/templates/release-announce.html Tue Oct  
1 14:31:58 2019
@@ -25,7 +25,7 @@
 
 
   Geographic metadata (ISO 19115)
-Read/write ISO 19139 compliant XML documents
+Read/write ISO 19115-3 and legacy ISO 19139 compliant XML 
documents
 Read from netCDF, GeoTIFF, Landsat, GPX and Moving Feature CSV 
encoding
   
   Raster data




svn commit: r1867847 - /sis/site/trunk/content/templates/release-announce.html

2019-10-01 Thread desruisseaux
Author: desruisseaux
Date: Tue Oct  1 14:31:52 2019
New Revision: 1867847

URL: http://svn.apache.org/viewvc?rev=1867847=rev
Log:
Update the release annoucement template with ISO 19115-3.

Modified:
sis/site/trunk/content/templates/release-announce.html

Modified: sis/site/trunk/content/templates/release-announce.html
URL: 
http://svn.apache.org/viewvc/sis/site/trunk/content/templates/release-announce.html?rev=1867847=1867846=1867847=diff
==
--- sis/site/trunk/content/templates/release-announce.html [UTF-8] (original)
+++ sis/site/trunk/content/templates/release-announce.html [UTF-8] Tue Oct  1 
14:31:52 2019
@@ -25,7 +25,7 @@
 
 
   Geographic metadata (ISO 19115)
-Read/write ISO 19139 compliant XML documents
+Read/write ISO 19115-3 and legacy ISO 19139 compliant XML 
documents
 Read from netCDF, GeoTIFF, Landsat, GPX and Moving Feature CSV 
encoding
   
   Raster data




svn commit: r1050903 - in /websites/staging/sis/trunk/content: ./ tables/CoordinateOperationMethods.html

2019-10-01 Thread buildbot
Author: buildbot
Date: Tue Oct  1 14:30:37 2019
New Revision: 1050903

Log:
Staging update by buildbot for sis

Modified:
websites/staging/sis/trunk/content/   (props changed)
websites/staging/sis/trunk/content/tables/CoordinateOperationMethods.html

Propchange: websites/staging/sis/trunk/content/
--
--- cms:source-revision (original)
+++ cms:source-revision Tue Oct  1 14:30:37 2019
@@ -1 +1 @@
-1867678
+1867846

Modified: 
websites/staging/sis/trunk/content/tables/CoordinateOperationMethods.html
==
--- websites/staging/sis/trunk/content/tables/CoordinateOperationMethods.html 
(original)
+++ websites/staging/sis/trunk/content/tables/CoordinateOperationMethods.html 
Tue Oct  1 14:30:37 2019
@@ -6401,7 +6401,7 @@
 ∞) m
 
   
-8832
+
 
   
 ESRI:Standard_Parallel_1
@@ -6410,12 +6410,6 @@
 OGC:
 standard_parallel_1
   
-NetCDF:
-standard_parallel
-  
-GeoTIFF:
-StdParallel1
-  
 Proj4:
 lat_ts
   
@@ -6428,7 +6422,7 @@
 90]°
 90°
   
-8833
+
 
   
 ESRI:Central_Meridian
@@ -6437,12 +6431,6 @@
 OGC:
 central_meridian
   
-NetCDF:
-longitude_of_projection_origin
-  
-GeoTIFF:
-StraightVertPoleLong
-  
 Proj4:
 lon_0
   
@@ -6455,7 +6443,7 @@
 180]°
 0°
   
-8806
+
 
   
 ESRI:False_Easting
@@ -6464,12 +6452,6 @@
 OGC:
 false_easting
   
-NetCDF:
-false_easting
-  
-GeoTIFF:
-FalseEasting
-  
 Proj4:
 x_0
   
@@ -6482,7 +6464,7 @@
 ∞) m
 0 m
   
-8807
+
 
   
 ESRI:False_Northing
@@ -6491,12 +6473,6 @@
 OGC:
 false_northing
   
-NetCDF:
-false_northing
-  
-GeoTIFF:
-FalseNorthing
-  
 Proj4:
 y_0
   
@@ -6582,7 +6558,7 @@
 ∞) m
 
   
-8832
+
 
   
 ESRI:Standard_Parallel_1
@@ -6591,12 +6567,6 @@
 OGC:
 standard_parallel_1
   
-NetCDF:
-standard_parallel
-  
-GeoTIFF:
-StdParallel1
-  
 Proj4:
 lat_ts
   
@@ -6609,7 +6579,7 @@
 0]°
 -90°
   
-8833
+
 
   
 ESRI:Central_Meridian
@@ -6618,12 +6588,6 @@
 OGC:
 central_meridian
   
-NetCDF:
-longitude_of_projection_origin
-  
-GeoTIFF:
-StraightVertPoleLong
-  
 Proj4:
 lon_0
   
@@ -6636,7 +6600,7 @@
 180]°
 0°
   
-8806
+
 
   
 ESRI:False_Easting
@@ -6645,12 +6609,6 @@
 OGC:
 false_easting
   
-NetCDF:
-false_easting
-  
-GeoTIFF:
-FalseEasting
-  
 Proj4:
 x_0
   
@@ -6663,7 +6621,7 @@
 ∞) m
 0 m
   
-8807
+
 
   
 ESRI:False_Northing
@@ -6672,12 +6630,6 @@
 OGC:
 false_northing
   
-NetCDF:
-false_northing
-  
-GeoTIFF:
-FalseNorthing
-  

[sis] 03/09: feat (referencing) : add some tests for satellite-tracking projections from tables 38 and 39 of Snyder's Manual (page 238). Fix the condition of the while loop when applying Newton method

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 2b94c39aca000c337ff37b8c09a8e0a801ae00c2
Author: Matthieu_Bastianelli 
AuthorDate: Wed Jul 24 14:33:59 2019 +0200

feat (referencing) : add some tests for satellite-tracking projections from 
tables 38 and 39 of Snyder's Manual (page 238). Fix the condition of the while 
loop when applying Newton method.
---
 .../referencing/provider/SatelliteTracking.java|   6 +-
 .../projection/ConicSatelliteTracking.java | 139 +-
 .../projection/CylindricalSatelliteTracking.java   |  44 +++---
 .../projection/ConicSatelliteTrackingTest.java | 156 +++--
 .../CylindricalSatelliteTrackingTest.java  |  49 +++
 .../sis/test/suite/ReferencingTestSuite.java   |   2 +
 6 files changed, 236 insertions(+), 160 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
index 6784123..787b404 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
@@ -151,7 +151,7 @@ public class SatelliteTracking extends MapProjection {
 SATELLITE_ORBIT_INCLINATION = builder
 .addName("satellite_orbit_inclination")
 .setDescription("Angle of inclination between the plane of the 
Earth's Equator and the plane of the satellite orbit")
-.create(0, Units.RADIAN);
+.create(0, Units.DEGREE);
 
 SATELLITE_ORBITAL_PERIOD = builder
 .addName("satellite_orbital_period")
@@ -162,7 +162,7 @@ public class SatelliteTracking extends MapProjection {
 .addName("ascending_node_period")
 .setDescription("Length of Earth's rotation with respect to 
the precessed ascending node")
 .createStrictlyPositive(98.884, Units.MINUTE);
-
+
 PARAMETERS = builder.addName(NAME)
 .createGroupForMapProjection(CENTRAL_MERIDIAN,
 STANDARD_PARALLEL_1, STANDARD_PARALLEL_2,
@@ -187,7 +187,7 @@ public class SatelliteTracking extends MapProjection {
 protected NormalizedProjection createProjection(final Parameters 
parameters) throws ParameterNotFoundException {
 ArgumentChecks.ensureNonNull("Parameters", parameters);
 
-if (parameters.getValue(STANDARD_PARALLEL_2) == 
-parameters.getValue(STANDARD_PARALLEL_1)) { 
+if (parameters.getValue(STANDARD_PARALLEL_2) == 
-parameters.getValue(STANDARD_PARALLEL_1)) {
 return new 
org.apache.sis.referencing.operation.projection.CylindricalSatelliteTracking(this,
 parameters);
 } else {
 return new 
org.apache.sis.referencing.operation.projection.ConicSatelliteTracking(this, 
parameters);
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
index f7247df..d650fa2 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
@@ -34,13 +34,13 @@ import 
org.apache.sis.referencing.operation.transform.ContextualParameters;
 
 /**
  * Cylindrical Satellite-Tracking projections.
- * 
+ *
  * 
  * - All groundtracks for satellites orbiting the Earth with the same orbital
  * parameters are shown as straight lines on the map.
  *
  * - Cylindrical {@link CylindricalSatelliteTracking}
- * or conical {@link ConicSatelliteTracking} form available. 
+ * or conical {@link ConicSatelliteTracking} form available.
  *
  * - Neither conformal nor equal-area.
  *
@@ -78,33 +78,35 @@ import 
org.apache.sis.referencing.operation.transform.ContextualParameters;
  * @version 1.0
  */
 public class ConicSatelliteTracking extends NormalizedProjection{
-
+
 /**
  * {@code SATELLITE_ORBIT_INCLINATION}
  */
 final double i;
-
+
 /**
  * Coefficients for both cylindrical and conic Satellite-Tracking 
Projection.
  */
 final double cos_i, sin_i, cos2_i, cos_φ1, p2_on_p1;
-
+
 ///**
 // * Radius of the circle radius of the circle to which groundtracks
 // * are tangent on the map.
 // */
 //private final double ρs;
-
+
 /**
  * Projection Cone's constant.
  */
 private final double n;
-
+
 /**
- * Approximation of the Minimum latitude at infinite radius. 
- * 
+ 

[sis] 06/09: refactor (referencing satellite-tracking projections) : Method used by both (cylindrical and conic) direct transformation of the Satellite-tracking projections to compute the L coefficie

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 8c2d72d85ff84114983ef2e1f62cd2cf5e538585
Author: Matthieu_Bastianelli 
AuthorDate: Thu Jul 25 12:18:37 2019 +0200

refactor (referencing satellite-tracking projections) : Method used by both 
(cylindrical and conic) direct transformation of the Satellite-tracking 
projections to  compute the L coefficient and its partial derivate dL_dφ if 
queried. Test passed for both transformation and testDerivativeOnSphere.
---
 .../projection/ConicSatelliteTracking.java | 61 --
 .../projection/CylindricalSatelliteTracking.java   | 17 +++---
 2 files changed, 50 insertions(+), 28 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
index 9b0b0b0..d265ae2 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
@@ -285,13 +285,9 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 throw new 
ProjectionException(Resources.format(Resources.Keys.CanNotTransformCoordinates_2));
 }
 
-final double sin_φ  = sin(φ);
-final double sinφ_sini = sin_φ / sin_i;
-final double dλ = -asin(sinφ_sini);
-final double tan_dλ = tan(dλ);
-final double λt = atan(tan_dλ * cos_i);
-final double L  = λt - p2_on_p1 * dλ;
-
+// compute an double array with {L} or {L, dL/dφ} if derivate 
recquired.
+final double[] vector_L = computeLanddLdφForDirectTransform(φ, 
derivate);
+final double L = vector_L[0];
 /*
  * As {@code latitudeLimit} is an approximation we repeat the test 
here.
  */
@@ -301,17 +297,15 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 throw new 
ProjectionException(Resources.format(Resources.Keys.CanNotTransformCoordinates_2));
 }
 
-final double nLandS0 = n*L+s0;
+final double nLandS0 = n*L+s0;
 final double sin_nLandS0 = sin(nLandS0);
-
-final double ρ  = cosφ1xsinF1_n/sin_nLandS0;
-//final double ρ  = 1/sin(n*L+s0);
+final double ρ   = cosφ1xsinF1_n/sin_nLandS0;
 
 final double sinλ = sin(λ);
 final double cosλ = cos(λ);
 if (dstPts != null) {
-dstPts[dstOff] = ρ * sinλ;   // x
-dstPts[dstOff + 1] = - ρ*cosλ;   // y
+dstPts[dstOff] =   ρ * sinλ;   // x
+dstPts[dstOff + 1] = - ρ * cosλ;   // y
 }
 
  if (!derivate) {
@@ -320,14 +314,12 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 
 //=To check the resolution 
=
 final double dρ_dφ = cosφ1xsinF1_n  * (-1 / (sin_nLandS0*sin_nLandS0)) 
*cos(nLandS0)  * n
-// dL/dφ :
-* ((cos(φ) / sin_i) *(1/sqrt(1-sinφ_sini*sinφ_sini)))  // 
derivative of (-dλ/dφ)
-* ( p2_on_p1 - ((1+tan_dλ*tan_dλ)*cos_i/(1+λt*λt) ) );
+* vector_L[1]; // dL/dφ
 
 final double dx_dλ = ρ*cosλ;
 final double dx_dφ = sinλ * dρ_dφ;
 
-final double dy_dλ =  ρ*sinλ;
+final double dy_dλ = ρ*sinλ;
 final double dy_dφ = -cosλ * dρ_dφ;
 
//==
 
@@ -445,4 +437,39 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 return atan(tan(dλn) * cos_i); // eq.28-3a in Snyder
 }
 
+/**
+ * Method returning the L coefficient used for the direct transformation of
+ * the Satellite-tracking projections and its partial derivate dL_dφ if
+ * queried by a true value of the input parameter derivate.
+ *
+ * This method is used By :
+ * {@link ConicSatelliteTracking#transform(double[], int, double[], 
int, boolean) }
+ * and {@link CylindricalSatelliteTracking#transform(double[], int, 
double[], int, boolean) }
+ *
+ * @param φ : input latitude of the projection's (direct)  method.
+ * @param derivate : boolean value indicating if the partial derivate dL_dφ
+ *  must be computed.
+ * @return a double array. It contains :
+ *- if derivate is false :  only the L coefficient value.
+ *- if derivate is true :  the L coefficient value and the partial
+ *  derivate dL_dφ respectively at the at index 0 and 1 of the
+ *  resulting array.
+ */
+double[] computeLanddLdφForDirectTransform(final 

[sis] 02/09: feat (sis-referencing & internal) : add test for cylindrical satellite-tracking projection and refactor of the ConicSatelliteTracking classe to use methods instead of lambda expressions

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit c9746c3198d9cefcde6394e4089cfa5ac506e2b3
Author: Matthieu_Bastianelli 
AuthorDate: Tue Jul 23 12:52:07 2019 +0200

feat (sis-referencing & internal) : add test for cylindrical 
satellite-tracking projection and refactor of the ConicSatelliteTracking classe 
to use methods instead of lambda expressions
---
 .../referencing/provider/SatelliteTracking.java|   3 -
 .../projection/ConicSatelliteTracking.java | 110 +
 .../projection/CylindricalSatelliteTracking.java   |   2 +-
 .../projection/ConicSatelliteTrackingTest.java |  59 ++-
 .../CylindricalSatelliteTrackingTest.java  | 103 +--
 5 files changed, 223 insertions(+), 54 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
index 3e9382d..6784123 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
@@ -19,10 +19,7 @@
 package org.apache.sis.internal.referencing.provider;
 
 import javax.xml.bind.annotation.XmlTransient;
-import static 
org.apache.sis.internal.referencing.provider.AbstractProvider.createZeroConstant;
-import static 
org.apache.sis.internal.referencing.provider.Mercator1SP.LATITUDE_OF_ORIGIN;
 import org.apache.sis.measure.Units;
-import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.parameter.ParameterBuilder;
 import org.apache.sis.parameter.Parameters;
 import org.apache.sis.referencing.operation.projection.ConicSatelliteTracking;
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
index 3c8d556..f7247df 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
@@ -27,7 +27,6 @@ import org.opengis.referencing.operation.Matrix;
 import org.opengis.referencing.operation.OperationMethod;
 
 import static java.lang.Math.*;
-import java.util.function.DoubleUnaryOperator;
 import org.apache.sis.internal.referencing.Resources;
 import static org.apache.sis.internal.referencing.provider.SatelliteTracking.*;
 import org.apache.sis.referencing.operation.matrix.MatrixSIS;
@@ -100,11 +99,14 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
  * Projection Cone's constant.
  */
 private final double n;
+
 /**
- * Approximation of the limiting lattitude to which the {@code L 
coefficient}
+ * Approximation of the Minimum latitude at infinite radius. 
+ * 
+ * Limiting latitude to which the {@code L coefficient}
  * is associated with a particular case {@code L equals -s0/n}.
  */
-private final double lattitudeLimit;
+private final double latitudeLimit;
 /**
  * Boolean attribute indicating if the projection cone's constant is 
positive.
  * */
@@ -174,31 +176,29 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 final double sin_φ0 = sin(φ0);
 final double φ2 = 
toRadians(initializer.getAndStore(STANDARD_PARALLEL_2));   //appropriated use 
of toRadians??
 
-//final double F0 = atan( (p2_on_p1*cos2_φ0 - cos_i)/sqrt(cos2_φ0 - 
cos2_i) );
-//final double F1 = atan( (p2_on_p1*cos2_φ1 - cos_i)/sqrt(cos2_φ1 - 
cos2_i) );
-//final double F2 = atan( (p2_on_p1*cos2_φ2 - cos_i)/sqrt(cos2_φ2 - 
cos2_i) );
-//final double dλ0 = -asin(sin_φ0/sin_i);
-//final double dλ1 = -asin(sin_φ1/sin_i);
-//final double dλ2 = -asin(sin_φ2/sin_i);   
-//final double λt0 = atan( tan(dλ0) * cos_i );
-//final double λt1 = atan( tan(dλ1) * cos_i );
-//final double λt2 = atan( tan(dλ2) * cos_i );
-final DoubleUnaryOperator computeFn = (cos2_φn) -> atan((p2_on_p1 
* cos2_φn - cos_i) / sqrt(cos2_φn - cos2_i)); // eq.28-9 in Snyder 
-final double F0 = computeFn.applyAsDouble(cos2_φ0);
+//final DoubleUnaryOperator computeFn = (cos2_φn) -> 
atan((p2_on_p1 * cos2_φn - cos_i) / sqrt(cos2_φn - cos2_i)); // eq.28-9 in 
Snyder 
+//final double F0 = computeFn.applyAsDouble(cos2_φ0);
+//final double F1 = computeFn.applyAsDouble(cos2_φ1);
+//final DoubleUnaryOperator computedλn = (sin_φn) -> -asin(sin_φn 
/ sin_i); // eq.28-2a in Snyder 

[sis] 08/09: Merge remote-tracking branch 'Satellite_Tracking_Projection' into geoapi-4.0. Some refactoring to come in next commits.

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 4f9f6950404554c20e1600171a537bf883ba0f83
Merge: 6274488 8c2d72d
Author: Martin Desruisseaux 
AuthorDate: Tue Oct 1 16:50:56 2019 +0200

Merge remote-tracking branch 'Satellite_Tracking_Projection' into 
geoapi-4.0.
Some refactoring to come in next commits.

 .../referencing/provider/SatelliteTracking.java| 197 +
 .../projection/ConicSatelliteTracking.java | 475 +
 .../projection/CylindricalSatelliteTracking.java   | 188 
 .../projection/ConicSatelliteTrackingTest.java | 276 
 .../CylindricalSatelliteTrackingTest.java  | 237 ++
 .../sis/test/suite/ReferencingTestSuite.java   |   2 +
 6 files changed, 1375 insertions(+)




[sis] 01/09: feat (sis-referencing & internal) : implement cylindrical and conic satellite-tracking projections from Snyder's 'Map Projections - a working Manual'. Don't compute derivatives yet. Very

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit d6502364fe43513d836c23c2016844d2ca315531
Author: Matthieu_Bastianelli 
AuthorDate: Tue Jul 23 09:31:22 2019 +0200

feat (sis-referencing & internal) : implement cylindrical and conic 
satellite-tracking projections from Snyder's 'Map Projections - a working 
Manual'. Don't compute derivatives yet. Very few tests.
---
 .../referencing/provider/SatelliteTracking.java| 200 +++
 .../projection/ConicSatelliteTracking.java | 398 +
 .../projection/CylindricalSatelliteTracking.java   | 197 ++
 .../projection/ConicSatelliteTrackingTest.java | 127 +++
 .../CylindricalSatelliteTrackingTest.java  | 117 ++
 5 files changed, 1039 insertions(+)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
new file mode 100644
index 000..3e9382d
--- /dev/null
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
@@ -0,0 +1,200 @@
+/*
+ * 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.internal.referencing.provider;
+
+import javax.xml.bind.annotation.XmlTransient;
+import static 
org.apache.sis.internal.referencing.provider.AbstractProvider.createZeroConstant;
+import static 
org.apache.sis.internal.referencing.provider.Mercator1SP.LATITUDE_OF_ORIGIN;
+import org.apache.sis.measure.Units;
+import org.apache.sis.metadata.iso.citation.Citations;
+import org.apache.sis.parameter.ParameterBuilder;
+import org.apache.sis.parameter.Parameters;
+import org.apache.sis.referencing.operation.projection.ConicSatelliteTracking;
+import 
org.apache.sis.referencing.operation.projection.CylindricalSatelliteTracking;
+import org.apache.sis.referencing.operation.projection.NormalizedProjection;
+import org.apache.sis.util.ArgumentChecks;
+import org.opengis.parameter.ParameterDescriptor;
+import org.opengis.parameter.ParameterDescriptorGroup;
+import org.opengis.parameter.ParameterNotFoundException;
+
+/**
+ * The provider for Satellite-Tracking projections".
+ *
+ * 
+ * - All groundtracks for satellites orbiting the Earth with the same orbital
+ * parameters are shown as straight lines on the map.
+ *
+ * - Cylindrical {@link CylindricalSatelliteTracking} or conical
+ * {@link ConicSatelliteTracking} form available.
+ *
+ * - Neither conformal nor equal-area.
+ *
+ * - All meridians are equally spaced straight lines, parallel on cylindrical
+ * form and converging to a common point on conical form.
+ *
+ * - All parallels are straight and parallel on cylindrical form and are
+ * concentric circular arcs on conical form. Parallels are unequally spaced.
+ *
+ * - Conformality occurs along two chosen parallels. Scale is correct along one
+ * of these parameters on the conical form and along both on the cylindrical
+ * form.
+ *
+ * Developed 1977 by Snyder
+ * 
+ *
+ *  These formulas are confined to circular orbits and the SPHERICAL
+ * Earth.
+ *
+ * The ascending and descending groundtracks meet at the northern an
+ * southern tracking limits, lats. 80.9°N and S for landsat 1, 2 and 3. The map
+ * Projection does not extend closer to the poles.
+ *
+ * This projection method has no associated EPSG code.
+ *
+ * Earth radius is normalized. Its value is 1 and is'nt an input parameter.
+ *
+ * 
=
+ * REMARK : The parameters associated with the satellite (and its orbit) could
+ * be aggregate in class of the kind : Satellite or SatelliteOrbit.
+ * 
=
+ *
+ * @see Map Projections - A Working Manual By John P. Snyder
+ * @author Matthieu Bastianelli (Geomatys)
+ * @version 1.0
+ */
+@XmlTransient
+public class SatelliteTracking extends MapProjection {
+
+/**
+ * Name of this projection.
+ */
+public static final String NAME = 

[sis] 07/09: Reduce the numbers of authorities declared in the ESRI-specific projections: limit to ESRI, OGC and Proj4.

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 6274488fad7169664133c5ee1fa8e8cca0a84533
Author: Martin Desruisseaux 
AuthorDate: Tue Oct 1 16:41:27 2019 +0200

Reduce the numbers of authorities declared in the ESRI-specific 
projections: limit to ESRI, OGC and Proj4.
---
 .../sis/internal/referencing/provider/ESRI.java| 59 ++
 .../referencing/provider/MapProjection.java| 55 
 .../provider/PolarStereographicSouth.java  |  4 +-
 3 files changed, 50 insertions(+), 68 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ESRI.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ESRI.java
index 8469888..7510166 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ESRI.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ESRI.java
@@ -17,29 +17,49 @@
 package org.apache.sis.internal.referencing.provider;
 
 import org.opengis.parameter.ParameterDescriptor;
-import org.apache.sis.parameter.DefaultParameterDescriptor;
 import org.apache.sis.parameter.ParameterBuilder;
-import org.apache.sis.measure.MeasurementRange;
 import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.util.Static;
 
 
 /**
  * Constants for projections defined by ESRI but not by EPSG.
+ * Also used for some projections not defined by ESRI, but in which we reuse 
ESRI parameters.
+ * A characteristics of ESRI parameters is that they have the same name for 
all projections
+ * (at least all the ones supported by SIS). A similar pattern is observed 
with OGC parameters,
+ * which are close to ESRI ones.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.1
  * @since   1.0
  * @module
  */
 final class ESRI extends Static {
 /**
- * The operation parameter descriptor for the Longitude of natural 
origin (λ₀) parameter value.
+ * The operation parameter descriptor for the Longitude of 
origin (λ₀) parameter value.
  * Valid values range is [-180 … 180]° and default value is 0°.
  */
 static final ParameterDescriptor CENTRAL_MERIDIAN;
 
 /**
+ * The operation parameter descriptor for the Latitude of 
origin (φ₀) parameter value.
+ * Valid values range is (-90 … 90)° and default value is 0°.
+ */
+static final ParameterDescriptor LATITUDE_OF_ORIGIN;
+
+/**
+ * The operation parameter descriptor for the Latitude of 1st 
standard parallel parameter value.
+ * Valid values range is [-90 … 90]° and default value is 0°.
+ */
+static final ParameterDescriptor STANDARD_PARALLEL_1;
+
+/**
+ * The operation parameter descriptor for the Latitude of 2nd 
standard parallel parameter value.
+ * Valid values range is [-90 … 90]° and default value is 0°.
+ */
+static final ParameterDescriptor STANDARD_PARALLEL_2;
+
+/**
  * The operation parameter descriptor for the False easting 
(FE) parameter value.
  * Valid values range is unrestricted and default value is 0 metre.
  */
@@ -52,14 +72,12 @@ final class ESRI extends Static {
 static final ParameterDescriptor FALSE_NORTHING;
 static {
 final ParameterBuilder builder = MapProjection.builder();
-FALSE_EASTING  = asPrimary(Equirectangular.FALSE_EASTING,  builder);
-FALSE_NORTHING = asPrimary(Equirectangular.FALSE_NORTHING, builder);
-
-final ParameterDescriptor template = 
Equirectangular.LONGITUDE_OF_ORIGIN;
-CENTRAL_MERIDIAN = MapProjection.createLongitude(builder
-.addName(MapProjection.sameNameAs(Citations.ESRI,  template))
-.addName(MapProjection.sameNameAs(Citations.OGC,   template))
-.addName(MapProjection.sameNameAs(Citations.PROJ4, template)));
+CENTRAL_MERIDIAN= MapProjection.createLongitude(copyNames(builder, 
Equirectangular.LONGITUDE_OF_ORIGIN));
+LATITUDE_OF_ORIGIN  = MapProjection.createLatitude (copyNames(builder, 
Equirectangular.LATITUDE_OF_ORIGIN), true);
+STANDARD_PARALLEL_1 = MapProjection.createLatitude (copyNames(builder, 
LambertConformal2SP.STANDARD_PARALLEL_1), true);
+STANDARD_PARALLEL_2 = MapProjection.createLatitude (copyNames(builder, 
LambertConformal2SP.STANDARD_PARALLEL_2), true);
+FALSE_EASTING   = MapProjection.createShift(copyNames(builder, 
Equirectangular.FALSE_EASTING));
+FALSE_NORTHING  = MapProjection.createShift(copyNames(builder, 
Equirectangular.FALSE_NORTHING));
 }
 
 /**
@@ -69,17 +87,18 @@ final class ESRI extends Static {
 }
 
 /**
- * Returns the same parameter than the given one, except that the alias of 
the ESRI authority
- * is promoted as the primary name. The old 

[sis] 04/09: feat (referencing- satellite tracking) : refactor to extract terms from transform/inverseTransform methods AND try to compute Jacobian Matrix. Tests not passed for the conic sate

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit a8a3962f58f1a4d401448a6e7758b99e31357c99
Author: Matthieu_Bastianelli 
AuthorDate: Wed Jul 24 18:31:59 2019 +0200

feat (referencing- satellite tracking) : refactor to extract terms 
from transform/inverseTransform methods AND try to compute Jacobian Matrix. 
Tests not passed for the conic satellite tracking projection yet. Refactor 
should be lead to compute L coefficient and its derivative in a method.
---
 .../projection/ConicSatelliteTracking.java | 97 +-
 .../projection/CylindricalSatelliteTracking.java   | 48 +--
 .../projection/ConicSatelliteTrackingTest.java | 30 +++
 .../CylindricalSatelliteTrackingTest.java  | 27 ++
 4 files changed, 135 insertions(+), 67 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
index d650fa2..9b173f1 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
@@ -27,8 +27,10 @@ import org.opengis.referencing.operation.Matrix;
 import org.opengis.referencing.operation.OperationMethod;
 
 import static java.lang.Math.*;
+import java.util.Map;
 import org.apache.sis.internal.referencing.Resources;
 import static org.apache.sis.internal.referencing.provider.SatelliteTracking.*;
+import org.apache.sis.referencing.operation.matrix.Matrix2;
 import org.apache.sis.referencing.operation.matrix.MatrixSIS;
 import org.apache.sis.referencing.operation.transform.ContextualParameters;
 
@@ -111,12 +113,13 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 private final double latitudeLimit;
 /**
  * Boolean attribute indicating if the projection cone's constant is 
positive.
- * */
+ */
 private final boolean positiveN;
 /**
  * Coefficients for the Conic Satellite-Tracking Projection.
+ * cosφ1xsinF1_n = cos(φ1)*sin(F1)/n
  */
-private final double cos_φ1xsin_F1, s0, ρ0;
+private final double cosφ1xsinF1_n, s0, ρ0;
 
 /**
  * Work around for RFE #4093999 in Sun's bug database ("Relax constraint on
@@ -194,8 +197,6 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
  */
 final double F1 = computeFn(cos2_φ1);
 
-cos_φ1xsin_F1 = cos_φ1 * sin(F1);
-
 final double dλ0 = computedλn(sin_φ0);
 final double dλ1 = computedλn(sin_φ1);
 
@@ -223,8 +224,10 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 } else {
 n = sin_φ1 * (p2_on_p1 * (2 * cos2_i - cos2_φ1) - cos_i) / 
(p2_on_p1 * cos2_φ1 - cos_i); //eq. 28-17 in Snyder
 }
+
+cosφ1xsinF1_n = cos_φ1 * sin(F1)/n;
 s0 = F1 - n * L1;
-ρ0 = cos_φ1xsin_F1 / (n * sin(n * L0 + s0)); // *R in eq.28-12 in 
Snyder
+ρ0 = cosφ1xsinF1_n / sin(n * L0 + s0); // *R in eq.28-12 in Snyder
 
 // Unsure 
==
 // Aim to assess the limit latitude associated with -s0/n L-value.
@@ -247,7 +250,7 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 final MatrixSIS denormalize = 
context.getMatrix(ContextualParameters.MatrixRole.DENORMALIZATION);
 denormalize.convertBefore(1, 1, ρ0);  //For conic tracking
 } else {
-n = latitudeLimit = cos_φ1xsin_F1 = s0 = ρ0 = NaN;
+n = latitudeLimit = cosφ1xsinF1_n = s0 = ρ0 = NaN;
 positiveN = false;
 }
 }
@@ -283,8 +286,10 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 }
 
 final double sin_φ  = sin(φ);
-final double dλ = -asin(sin_φ / sin_i);
-final double λt = atan(tan(dλ) * cos_i);
+final double sinφ_sini = sin_φ / sin_i;
+final double dλ = -asin(sinφ_sini);
+final double tan_dλ = tan(dλ);
+final double λt = atan(tan_dλ * cos_i);
 final double L  = λt - p2_on_p1 * dλ;
 
 /*
@@ -296,34 +301,46 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 throw new 
ProjectionException(Resources.format(Resources.Keys.CanNotTransformCoordinates_2));
 }
 
-final double ρ  = cos_φ1xsin_F1/(n*sin(n*L+s0));
-final double θ  = λ;  // extracted n
+final double nLandS0 = n*L+s0;
+final double sin_nLandS0 = sin(nLandS0);
+
+final double ρ  = cosφ1xsinF1_n/sin_nLandS0;
+// 

[sis] 05/09: fix (referencing satellite-tracking projections) : fix the Jacobian matrix in both satellite-tracking projections by inverting m01 and m10 in order to have the partial derivative of x on

2019-10-01 Thread desruisseaux
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 47873d482b06c88e11d5d9d48266f84cec48a0f2
Author: Matthieu_Bastianelli 
AuthorDate: Thu Jul 25 10:25:35 2019 +0200

fix (referencing satellite-tracking projections) : fix the Jacobian matrix 
in both satellite-tracking projections by inverting m01 and m10 in order to 
have the partial derivative of x on the matrix's first line and of y on the 
second line.
---
 .../sis/referencing/operation/projection/ConicSatelliteTracking.java  | 4 ++--
 .../operation/projection/CylindricalSatelliteTracking.java| 4 ++--
 .../referencing/operation/projection/ConicSatelliteTrackingTest.java  | 4 ++--
 .../operation/projection/CylindricalSatelliteTrackingTest.java| 3 ++-
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
index 9b173f1..9b0b0b0 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTracking.java
@@ -331,8 +331,8 @@ public class ConicSatelliteTracking extends 
NormalizedProjection{
 final double dy_dφ = -cosλ * dρ_dφ;
 
//==
 
-return new Matrix2(dx_dλ, dy_dλ,
-   dx_dφ, dy_dφ);
+return new Matrix2(dx_dλ, dx_dφ,
+   dy_dλ, dy_dφ);
 //throw new UnsupportedOperationException("Not supported yet."); //To 
change body of generated methods, choose Tools | Templates.
 
 /* 
=
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTracking.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTracking.java
index d68ec87..9348834 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTracking.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTracking.java
@@ -166,8 +166,8 @@ public class CylindricalSatelliteTracking extends 
ConicSatelliteTracking {
 * ( p2_on_p1 - ((1+tan_dλ*tan_dλ)*cos_i/(1+λt*λt) ) );
 
//==
 
-return new Matrix2(dx_dλ, dy_dλ,
-   dx_dφ, dy_dφ);
+return new Matrix2(dx_dλ, dx_dφ,
+   dy_dλ, dy_dφ);
 
 //throw new UnsupportedOperationException("Not supported yet."); //To 
change body of generated methods, choose Tools | Templates.
 }
diff --git 
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTrackingTest.java
 
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTrackingTest.java
index 242e024..10ace56 100644
--- 
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTrackingTest.java
+++ 
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ConicSatelliteTrackingTest.java
@@ -267,8 +267,8 @@ public class ConicSatelliteTrackingTest extends 
MapProjectionTestCase {
 );
 final double delta = (1.0 / 60) / 1852; // 
Approximately 1 metre.
 derivativeDeltas = new double[] {delta, delta};
-tolerance = Formulas.LINEAR_TOLERANCE / 10;
-verifyDerivative(   0, -10);
+tolerance = Formulas.LINEAR_TOLERANCE/100 ;
+verifyDerivative( -75, 40);
 verifyDerivative(-100,  3);
 verifyDerivative( -56, 50);
 verifyDerivative( -20, 47);
diff --git 
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTrackingTest.java
 
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTrackingTest.java
index 844ba7f..95b6832 100644
--- 
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTrackingTest.java
+++ 
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/CylindricalSatelliteTrackingTest.java
@@ -226,7 +226,8 @@ public class CylindricalSatelliteTrackingTest extends 
ConicSatelliteTrackingTest
 );
 final double delta = (1.0 / 60) / 1852; // 
Approximately 1 metre.
 derivativeDeltas = new