A map projection create a 2D view of the 3D-Object 'earth', by doing so, some information is inevitably lost.

Because of this and because of the fact, the earth isn't a perfect sphere --or even a perfect ellipsoid for that matter--, there is no 'best' projection for the projection of every region on earth. Hence a lot of different mathematical projectional functions have been developed over the years. It is possible to categorize these functions into three groups:

Automatic loading of projection classes

It is possible to create your own projection classes, which can be automatically loaded by the {@link org.deegree.crs.configuration.deegree.DeegreeCRSProvider} class.

You can achieve this loading by supplying the class attribute to a crs:projectedCRS/crs:projection element in the 'deegree-crs-configuration.xml'. This attribute must contain the full class name (with package), e.g. <crs:projection class='my.package.and.projection.Implementation'>

Because the loading is done with reflections your classes must sustain following criteria:

Projections

  1. It must be a sub class of {@link org.deegree.crs.projections.Projection}
  2. A constructor with following signature must be supplied:
    public MyProjection(
        {@link org.deegree.crs.coordinatesystems.GeographicCRS} underlyingCRS,
        double falseNorthing,
        double falseEasting,
        javax.vecmath.Point2d naturalOrigin,
        {@link org.deegree.crs.components.Unit} units,
        double scale,
        java.util.List<org.w3c.dom.Element> yourProjectionElements
    );

    The first six parameters are common to all projections (for an explanation of their meaning take a look at {@link org.deegree.crs.projections.Projection}). The last list, will contain all xml-dom elements you supplied in the deegree configuration (child elements of the crs:projection/crs:MyProjection), thus relieving you of the parsing of the deegree-crs-configuration.xml document.

@author Rutger Bezema @author last edited by: $Author: rbezema $ @version $Revision: 15008 $, $Date: 2007-03-20 10:15:15 +0100 (Di, 20 Mrz 2007)$