Added by jgarnett, last edited by jgarnett on Jun 11, 2008  (view change)

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.
Module: Geometry
Module Maintainer: Graham Davis, Sanjay Dominik Jena
Status:
Email Help: Geotools-gt2-users@lists.sourceforge.net
Volunteer: geotools-devel@lists.sourceforge.net
IP Review: review.txt

The Geometry module provides an implementation of OGC Feature Geometry Abstract Specification (ISO 19107) (a.k.a. Topic 1 - Feature Geometry).

Description

This project is:

  • A collaboration University of Applied Sciences Cologne (Fachhochschule Köln) in collaboration with GeoTools and GeoAPI.
  • Much of this code was copied from the JTS Topology Suite Version 1.7.2 and modified to work with ISO 19107 interfaces. This reuse is permitted under the terms of GNU Lesser General Public Licence.
  • Was brought up to supported status by Graham Davis of Refractions Research

For more information on this module please contact:

  • Prof. Dr. Jackson Roehrig
    Institut für Technologie in den Tropen
    Fachhochschule Köln
    Betzdorfer Strasse 2
    D-50679 Köln
    Jackson.Roehrig@fh-koeln.de
  • Sanjay Dominik Jena
    san.jena@gmail.com
  • Graham Davis
    gdavis@refractions.net

Gold Star Quality Assurance Check

IP Check: review.txt added, all headers are in place
Releasable: no blocking issues, etc..
Quality Assurance: 50.1% test coverage reported by clover
Stability: No planned API changes
Supported: Documentation available, module maintainer watches user list, answers email.

Module Goals

This implementation is a project of Prof. Dr. Jackson Roehrig and Sanjay Dominik Jena of the University of Applied Sciences Cologne, Germany (Fachhochschule Köln).

We are implementing the Geometry of the ISO19107 with the following goals and limitations:

  • implementation of the geometry objects (without TP_xxx topology). Limited to all classes except Solid/SolidBoundary, as well as to LineString/LineSegment as only implementation of CurveSegment.
  • general longterm objective is an Implementation that handles 2D, 2.5D and 3D data. Storing data in all dimension is (obviously) not a problem. But there is vast difference between 2D and 3D spatial analyse operations.
  • address the problem of limited memory, e.g. offer an interface for later possibility of storing some geometry data in order to relieve the limited memory capabilities (for example a Factory which returns Lists os some GM_xxx objects, the list can be implemented persistent afterwards).
  • in some parts we will reuse code of the Java Topology Suite (JTS) and adopt to the Feature Geometry of the Abstract Specification. We do not "wrap" JTS classes. We copy chosen classes of the JTS under GNU Lesser License and fit these code to our implementation (and try to eleminate redundancies).
  • Publicate the implementation under GNU Lesser License terms in the GeoTools project

As there aren´t existing too many approaches for a 19107 GeoAPI implementation yet, this implementation will serve as a test of the capability of the GeoAPI (in fact for TC211 too, since GeoAPI is partially derived from the TC211 specs) as well. Thus, we will report a list of suggestions to GeoAPI / GeoTools in order to contribute a part to the improvement of the GeoAPI by "Best Practise".

Project Reports

Project reports:

Future

Adrian Custer is looking into the larger problems of making ISO19107 Geometry implementation that can respond to the CoordianteReferenceSystem definition by delegating to a range of operations. This module uses linear solutions (ie 2D space) for operations such as buffer and intersects; when working with geometries defined by great circles on a sphere a different implementation should be used.

In more simple terms; we need to have a double dispatch using both Geometry and CRS in order to determine the correct operation to execute.

For more information:

IP Review

IP review is underway - known issue:

Module Status

This module is now supported, user documentation is available here: Geometry Plugin.

Outstanding Issues

Issues pertaining to GeoTools Geometry implementations:

jira.codehaus.org (7 issues)
T Key Summary Assignee Reporter Pr Status Res Created Updated Due
Task GEOT-414 Wrap JTS geometries in GeoAPI (ISO 19107) interfaces Bryce Nordgren Martin Desruisseaux Critical Open UNRESOLVED Feb 10, 2005 Jun 06, 2006
Improvement GEOT-4 Use GeoAPI interfaces for geometries Bryce Nordgren James Macgill Critical Open UNRESOLVED Oct 14, 2003 Nov 29, 2006
Task GEOT-831 GeoAPI based ISO 19107 Test Cases Bryce Nordgren Bryce Nordgren Major Open UNRESOLVED Apr 04, 2006 May 27, 2006
Sub-task GEOT-865 Collections which fire events and check types Bryce Nordgren Bryce Nordgren Major In Progress UNRESOLVED Jun 02, 2006 Jun 23, 2006
Improvement GEOT-1200 Provide common parsers in a consistent fashion Unassigned Jody Garnett Major Open UNRESOLVED Mar 16, 2007 Jan 28, 2008
Bug GEOT-1830 GeometryCoordinateSequenceTransformer transforms linear rings to open linestrings Unassigned Karel Maesen Major Open UNRESOLVED May 22, 2008 May 22, 2008
Bug GEOT-1813 JTS.shapeToGeometry ClassCastException typo, fixed with patch attached Unassigned Bruce Adam Major Open UNRESOLVED May 14, 2008 May 29, 2008

Potentially relevant issues pertaining to the GeoAPI interfaces implemented by this code:

jira.codehaus.org (17 issues)
T Key Summary Assignee Reporter Pr Status Res Created Updated Due
Task GEO-76 OGC Change request for GeoAPI 2.1 Martin Desruisseaux Martin Desruisseaux Blocker Open UNRESOLVED Feb 16, 2006 Jun 18, 2008 Mar 06, 2006
Bug GEO-85 Bearing has angle with no units. Unassigned Bryce Nordgren Critical Open UNRESOLVED May 25, 2006 May 25, 2006
Bug GEO-14 Clash in the semantic of contains(...) method in CompositeCurve Unassigned Martin Desruisseaux Major Open UNRESOLVED Sep 10, 2004 Sep 12, 2004
Task GEO-7 Document compliance level for geometry methods Unassigned Martin Desruisseaux Major Open UNRESOLVED Aug 31, 2004 May 25, 2006
Improvement GEO-3 Support mutable geometries Unassigned Martin Desruisseaux Major Open UNRESOLVED Aug 03, 2004 Jun 06, 2006
Task GEO-1 Finish the creation of Java interfaces for geometries Martin Desruisseaux Martin Desruisseaux Major Open UNRESOLVED Aug 02, 2004 Nov 28, 2007
Task GEO-132 Document better the departure from OGC/ISO specifications Martin Desruisseaux Martin Desruisseaux Major Open UNRESOLVED Jun 03, 2008 Jun 03, 2008
Bug GEO-138 Require Position homogeneity in PointArray Unassigned Adrian Custer Major Open UNRESOLVED Jun 24, 2008 Jun 24, 2008
Bug GEO-148 Rename CurveSegement.getCurve() to .getContainingCurve() Unassigned Adrian Custer Major Open UNRESOLVED Sep 15, 2008 Sep 15, 2008
Bug GEO-52 Geometry interfaces in wrong package Unassigned Martin Desruisseaux Major Reopened UNRESOLVED Mar 03, 2005 Sep 19, 2008
Bug GEO-154 Define complex.Complex.getBoundary():ComplexBoundary, overriding the method from Geometry Unassigned Adrian Custer Major Open UNRESOLVED Sep 20, 2008 Sep 20, 2008
Bug GEO-155 Define (primitive.)Boundary.getBoundary() to return null Unassigned Adrian Custer Major Open UNRESOLVED Sep 20, 2008 Sep 20, 2008
Bug GEO-84 Incorrect return type on Polygon method Unassigned Bryce Nordgren Minor Open UNRESOLVED May 25, 2006 May 25, 2006
Improvement GEO-6 Add convenience constructor in GeometryFactory Unassigned Martin Desruisseaux Minor Open UNRESOLVED Aug 31, 2004 Mar 21, 2007
Bug GEO-88 Unidirectional "Composition" aggregation implemented in the backwards direction too. Unassigned Bryce Nordgren Minor Open UNRESOLVED Jun 02, 2006 Jun 02, 2006
Bug GEO-149 Add a parameterless length() method to GenericCurve Unassigned Adrian Custer Minor Open UNRESOLVED Sep 15, 2008 Sep 15, 2008
Bug GEO-86 "Casting" Envelope to a Primitive shouldn't be done with a factory method. Unassigned Bryce Nordgren Minor Open UNRESOLVED May 26, 2006 Sep 19, 2008

Testing and Conformance

The JTS XML tests have been imported, and a test suite has been created to run them. The following is the current status of which tests pass/fail and their associated bugs:

Status XML File Failing Tests Related Bug
LineTests.xml 0/5  
PolygonTests.xml 0/6  
PolygonWithHoleTests.xml 0/6  
SimplePolygonTest.xml 0/6  
TestBoundary.xml 0/12  
TestCentroid.xml 0/19  
TestConvexHull-big.xml 0/1  
TestConvexHull.xml 0/12  
TestDisjoint.xml 0/7  
TestFunctionAA.xml 0/48  
TestFunctionAAPrec.xml 0/77  
TestFunctionLA.xml 0/36  
TestFunctionLAPrec.xml 0/6  
TestFunctionLL.xml 0/39  
TestFunctionLLPrec.xml 0/2  
TestFunctionPA.xml 0/13  
TestFunctionPL.xml 0/27  
TestFunctionPLPrec.xml 0/1  
TestFunctionPP.xml 0/37  
TestInteriorPoint.xml 0/7  
TestRectanglePredicate.xml 0/23  
TestRelateAA-big.xml 0/2  
TestRelateAA.xml 0/107  
TestRelateAA_general.xml 0/12  
TestRelateAC.xml 0/1  
TestRelateAC_general.xml 0/1  
TestRelateLA.xml 0/77  
TestRelateLA_general.xml 0/11  
TestRelateLC.xml 0/4  
TestRelateLC_general.xml 0/4  
TestRelateLL.xml 0/144  
TestRelateLL_general.xml 0/20  
TestRelatePA.xml 0/42  
TestRelatePA_general.xml 0/6  
TestRelatePL.xml 0/98  
TestRelatePL_general.xml 0/8  
TestRelatePP.xml 0/13  
TestRelatePP_general.xml 0/4  
TestWithinDistance.xml 0/22  
  Totals: 0/966