GeoTools : Google Summer of Code

Welcome Google Summer of Code Students! This page collects ideas for your consideration or inspiration.

Icon

We are only in position to accept applicants that have sent an email introduction to the geotools-devel email list. We are a distributed team we need to ensure that applicants are comfortable communicating in public.

Icon

As background research you should fork a copy of the library and follow the maven build instructions. If you have any questions please ask on the email list (or look over the user guide).

Proposed Ideas:

Previous Years:

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.

Icon

This work is of interest to:

  • The GeoServer Project for performance implications. Applicants may consider benchmarking GeoServer as a way of evaluating real world matrix performance.
  • The GeoGig project is interested in selecting a replacement for vecmath due to the license conflict mentioned above. Successful replacements should be a commercial friendly license (such as Apache, BSD or similar).
  • The GeoWave project is interested in selecting a replacement for vecmath that is hosted on maven central (so GeoTools can be published to maven central).

For more information see the Replace Vecmath page under technical debt.

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:

The rendering infrastructure in GeoTools has been much improved since these were written (the DirectLayer interface should prove useful).

Icon

The GeoTools 2.4.x Tile Server Client design notes are available for your review. There has been recent interest by Tupi on geotools-devel so this may end up being a real collaboration!