[sis] branch geoapi-4.0 updated: Updates paths and properties to new syntax or location.
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
[ 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
[ 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
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
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
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
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
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
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
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.
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
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.
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
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
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