You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sis.apache.org by Martin Desruisseaux <ma...@geomatys.com> on 2016/03/30 15:45:14 UTC

Report on current work in SIS referencing module

Hello all

We are in process of porting to Apache SIS the last major piece of the
"referencing by coordinates" module. A new method has been added in the
org.apache.sis.referencing.CRS class [1]. This method is going to be one
of the most frequently used method of the sis-referencing module,
together with CRS.forCode(String) and CRS.fromWKT(String):

CoordinateOperation findOperation(CoordinateReferenceSystem sourceCRS,
                                  CoordinateReferenceSystem targetCRS,
                                  GeographicBoundingBox areaOfInterest)

This method returns the object capable to transform coordinates
represented in the Coordinate Reference System 'sourceCRS' to
coordinates represented in system 'targetCRS'. This is still a work in
progres, but the current implementation can:

  * Change axis order (e.g. from lat,lon to lon,lat)
  * Change axis direction (e.g. from "up" to "down")
  * Apply unit conversions (e.g. from feet to metres)
  * Apply map projections (e.g. from lat,lon to Mercator)
  * Apply datum-shift by "early-binding" method
  * Apply longitude rotation (e.g. from Paris to Greenwich meridian)
  * Change coordinate system type between Cartesian, ellipsoidal,
    spherical, cylindrical or polar types.

Work that still need to be ported this week:

  * Apply datum-shift by "late-binding" method
  * Vertical coordinates transformation between different geoids
  * Transformation between compound CRS (e.g. 3D or 4D)
  * Caching

Differences relative to what existed in the previous project (Geotk):

  * The method takes an optional "area of interest" argument. For
    example transformation from NAD27 to NAD83 will differ depending on
    whether the transformation is for USA or for Cuba.
  * The method returns a CoordinateOperation instead than a
    MathTransform. The metadata given by the CoordinateOperation are
    considered important.
  * No more "lenient" mode. The method will do its best even if no
    datum-shift operation was found. The user should check the accuracy
    information given by the returned CoordinateOperation if (s)he needs
    to control whether a datum-shift has been properly applied or not.
  * Conversions between Cartesian, spherical, cylindrical or polar
    coordinate systems is a new feature.
  * Longitude rotation in spherical and Cartesian space is a not feature
    (previously it was done only in ellipsoidal coordinate systems).


    Martin


[1]
https://builds.apache.org/job/sis-dev/javadoc/org/apache/sis/referencing/CRS.html#findOperation-org.opengis.referencing.crs.CoordinateReferenceSystem-org.opengis.referencing.crs.CoordinateReferenceSystem-org.opengis.metadata.extent.GeographicBoundingBox-



Re: Report on current work in SIS referencing module

Posted by Martin Desruisseaux <ma...@geomatys.com>.
The example in javadoc contains an error. Line:

    if (CRS.getLinearAccuracy(operation) < 100)

should use "> 100" instead. This will be fixed next time that javadoc
will be generated.

    Martin



Re: Report on current work in SIS referencing module

Posted by Martin Desruisseaux <ma...@geomatys.com>.
Javadoc has been updated with an example performing a map projection
from WGS84 to World Mercator.

https://builds.apache.org/job/sis-dev/javadoc/org/apache/sis/referencing/CRS.html

Those 4 convenience static methods in the CRS class (CRS.forCode,
CRS.fromWKT, CRS.fromXML, CRS.findOperation) use a large amount of the
SIS library (searches in EPSG database, parsing, operation inference, etc.).

Tests and improvement in CRS.findOperation are still under way. My hope
is to finish the port next week, so we can start stabilizing and
preparing a release candidate before the Apache Conference in Vancouver
in May.

    Martin