Hello all

PROJ 6.0.0 (the most popular open source C/C++ library for coordinate
operations) has been released [1]. A major feature of this release is a
new C++ API derived from ISO 19111 international standard. Since GeoAPI
(the set of interfaces implemented by Apache SIS) is also derived from
the same standard, a natural consequence is that PROJ 6 and Apache SIS
now have similar API for coordinate operations.

The release announcement at [1] summarizes the major new features
provided by PROJ 6. Many of those features ("late-binding"
implementation, use of a database for coordinate reference system
definitions…) were provided by Apache SIS for years - in those aspects,
SIS was in advance. But this PROJ release also includes new features not
yet provided by SIS. In those aspects, PROJ 6 is now in advance compared
to Apache SIS:

  * Alignment with latest ISO 19111:2019 revision, published this year.
    GeoAPI/SIS are still on the previous ISO 19111:2007 version.
  * Alignment with latest ISO 19162 revision (Well Known Text format).
    GeoAPI/SIS are still on the previous ISO 19162:2015 version. It
    still WKT 2, but a previous version of it.
  * Inclusion of Coordinate Reference System definitions from IGNF and
    ESRI in addition of EPSG. Apache SIS has only EPSG definitions.
  * Datum grid packages. Apache SIS can read some datum grid formats,
    but does not distribute them yet.

The first two points (alignment with latest ISO standards) are work that
we should do in Apache SIS. The last two points (inclusion of IGNF, ESRI
and datum grid data) requires investigation about which data are
compatible with Apache 2 license, or distribution through a separated
channel (as we did for EPSG) when licensing terms are not compatible.

An important work that I would like to do is Java Native Interface (JNI)
bindings to PROJ 6 as implementations of GeoAPI interfaces. Now that
PROJ 6 and GeoAPI have very similar API, the binding would be hopefully
close to straightforward. Even if Apache SIS provides similar
capabilities in pure Java, there will be cases where some developers
will want to use PROJ (for example for reproducing the exact same
numerical results than in PostGIS/QGIS/MapServer, or for using a
projection not yet implemented in Apache SIS, etc.). Having PROJ 6
available in Java as a GeoAPI implementation would make easy to have
both projects co-existing in the same application when desired.

    Martin

[1] https://lists.osgeo.org/pipermail/proj/2019-March/008287.html

Reply via email to