Welcome Google Summer of Code Students! This page collects ideas for your consideration or inspiration.
Vector Math Performance
Here is an interesting project (with an opportunity to work both with the GeoTools and GeoServer codebase). Map making requires a lot of use of matrix algebra - we have traditionally used the vecmath project provided as part of Java 3D.
The license for this library requires it be distributed as part of Java 3D (and not on its own) so we should make make plans to find a replacement. The good news is there are lots of options (that perform better).
Research indicates the following methods are used:
- GMatrix.invert() - called by AdvancedAffineBuilder, BursaWolfTransformBuilderm ProjectiveTransformBuilder
- GMatrix.mul(GMatrix) called by BursaWolfTransformBuilder, GeneralMatrix
- GMatrix.mul(GMatrix,GMatrix) called by AdvancedAffineBuilder, BursaWolfTransformBuilder, ProjectiveTransformBuilder, ConcatenatedTransform
- GMatrix.negate() called by AdvancedAffineBuilder, BursaWolfTransformBuilder
- GMatrix.sub(GMatrix) called by MathTransformBuilderTest
- GMatrix.sub(GMatrix,GMatrix) called by AdvancedAffineBuilder, BursaWolfTransformBuilder
- GMatrix.transform() called by AdvancedAffineBuilder, BursaWolfTransformBuilder, ProjectiveTransformBuilder
While this does not represent heavy matrix use, the resulting code is performance critical.
Initial discussion indicates that https://code.google.com/p/efficient-java-matrix-library/ is recommended.
Tile Server Client
The construction of an extension (similar to the gt-wms extension) that can act as a tile server client is a popular request on the user list.
Discussion this year has focused on either:
- Porting the gt-tile module from GeoTools 2.5.5 (which was removed due to lack of participation)
- Or porting the original uDig Tile client code (which has been maintained)
The rendering infrastructure in GeoTools has been much improved since these were written (the DirectLayer interface should prove useful).