Hello all

The framework for handling parameters is about complete. The reason why
we need such framework can be seen partially by looking at the
parameters of the Mercator projection for example:

http://svn.apache.org/repos/asf/sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator1SP.java
(scroll down to the static initializer)

We have different names defined by different authorities (EPSG, OGC,
GeoTIFF, Proj.4, NetCDF, ESRI and MapInfo) for the same parameters, we
have some deprecated names which are replaced by new ones but still in
use (e.g. "Mercator (1SP)" renamed as "Mercator (variant A)"), numerical
codes to be needed later for finding information in the database, and
other issues not show in this "Mercator1SP.java" example.

I'm now starting to port the code which will perform the actual map
projection calculations. One particularity of the implementing to come
is that we separate map projections in three steps:

* A linear normalize transform
* The non-linear kernel
* A linear denormalize transform

So all linear terms of the map projections will be extracted in the
normalize/denormalize transforms, leaving only the non-linear core in
the middle. We can see this separation in the "NonLinearParameters"
class committed today. This separation makes easier to compute
derivatives (a distinct SIS feature) and to combine transforms more
efficiently. For example it is very common to have a conversion from
"radians to degrees" followed by "degrees to radians". Isolating the
linear parts of map projections make easier to detect that those
conversions cancel each others.

A discussion can be found there (please let me know if you have any idea
about how to make it clearer):

https://builds.apache.org/job/sis-dev/javadoc/org/apache/sis/referencing/operation/projection/package-summary.html

    Martin

Reply via email to