| 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:
|
|
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| T | Key | Summary | Assignee | Reporter | Pr | Status | Res | Created | Updated | Due |
|
|
GEOT-414 | Wrap JTS geometries in GeoAPI (ISO 19107) interfaces | Bryce Nordgren | Martin Desruisseaux |
|
|
UNRESOLVED | Feb 10, 2005 | Jun 06, 2006 | |
|
|
GEOT-4 | Use GeoAPI interfaces for geometries | Bryce Nordgren | James Macgill |
|
|
UNRESOLVED | Oct 14, 2003 | Nov 29, 2006 | |
|
|
GEOT-831 | GeoAPI based ISO 19107 Test Cases | Bryce Nordgren | Bryce Nordgren |
|
|
UNRESOLVED | Apr 04, 2006 | May 27, 2006 | |
|
|
GEOT-865 | Collections which fire events and check types | Bryce Nordgren | Bryce Nordgren |
|
|
UNRESOLVED | Jun 02, 2006 | Jun 23, 2006 | |
|
|
GEOT-1200 | Provide common parsers in a consistent fashion | Unassigned | Jody Garnett |
|
|
UNRESOLVED | Mar 16, 2007 | Jan 28, 2008 | |
|
|
GEOT-1830 | GeometryCoordinateSequenceTransformer transforms linear rings to open linestrings | Unassigned | Karel Maesen |
|
|
UNRESOLVED | May 22, 2008 | May 22, 2008 | |
|
|
GEOT-1813 | JTS.shapeToGeometry ClassCastException typo, fixed with patch attached | Unassigned | Bruce Adam |
|
|
UNRESOLVED | May 14, 2008 | May 29, 2008 | |
Potentially relevant issues pertaining to the GeoAPI interfaces implemented by this code:
|
|
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| T | Key | Summary | Assignee | Reporter | Pr | Status | Res | Created | Updated | Due |
|
|
GEO-76 | OGC Change request for GeoAPI 2.1 | Martin Desruisseaux | Martin Desruisseaux |
|
|
UNRESOLVED | Feb 16, 2006 | Jun 18, 2008 | Mar 06, 2006 |
|
|
GEO-85 | Bearing has angle with no units. | Unassigned | Bryce Nordgren |
|
|
UNRESOLVED | May 25, 2006 | May 25, 2006 | |
|
|
GEO-14 | Clash in the semantic of contains(...) method in CompositeCurve | Unassigned | Martin Desruisseaux |
|
|
UNRESOLVED | Sep 10, 2004 | Sep 12, 2004 | |
|
|
GEO-7 | Document compliance level for geometry methods | Unassigned | Martin Desruisseaux |
|
|
UNRESOLVED | Aug 31, 2004 | May 25, 2006 | |
|
|
GEO-3 | Support mutable geometries | Unassigned | Martin Desruisseaux |
|
|
UNRESOLVED | Aug 03, 2004 | Jun 06, 2006 | |
|
|
GEO-1 | Finish the creation of Java interfaces for geometries | Martin Desruisseaux | Martin Desruisseaux |
|
|
UNRESOLVED | Aug 02, 2004 | Nov 28, 2007 | |
|
|
GEO-132 | Document better the departure from OGC/ISO specifications | Martin Desruisseaux | Martin Desruisseaux |
|
|
UNRESOLVED | Jun 03, 2008 | Jun 03, 2008 | |
|
|
GEO-138 | Require Position homogeneity in PointArray | Unassigned | Adrian Custer |
|
|
UNRESOLVED | Jun 24, 2008 | Jun 24, 2008 | |
|
|
GEO-148 | Rename CurveSegement.getCurve() to .getContainingCurve() | Unassigned | Adrian Custer |
|
|
UNRESOLVED | Sep 15, 2008 | Sep 15, 2008 | |
|
|
GEO-52 | Geometry interfaces in wrong package | Unassigned | Martin Desruisseaux |
|
|
UNRESOLVED | Mar 03, 2005 | Sep 19, 2008 | |
|
|
GEO-154 | Define complex.Complex.getBoundary():ComplexBoundary, overriding the method from Geometry | Unassigned | Adrian Custer |
|
|
UNRESOLVED | Sep 20, 2008 | Sep 20, 2008 | |
|
|
GEO-155 | Define (primitive.)Boundary.getBoundary() to return null | Unassigned | Adrian Custer |
|
|
UNRESOLVED | Sep 20, 2008 | Sep 20, 2008 | |
|
|
GEO-84 | Incorrect return type on Polygon method | Unassigned | Bryce Nordgren |
|
|
UNRESOLVED | May 25, 2006 | May 25, 2006 | |
|
|
GEO-6 | Add convenience constructor in GeometryFactory | Unassigned | Martin Desruisseaux |
|
|
UNRESOLVED | Aug 31, 2004 | Mar 21, 2007 | |
|
|
GEO-88 | Unidirectional "Composition" aggregation implemented in the backwards direction too. | Unassigned | Bryce Nordgren |
|
|
UNRESOLVED | Jun 02, 2006 | Jun 02, 2006 | |
|
|
GEO-149 | Add a parameterless length() method to GenericCurve | Unassigned | Adrian Custer |
|
|
UNRESOLVED | Sep 15, 2008 | Sep 15, 2008 | |
|
|
GEO-86 | "Casting" Envelope to a Primitive shouldn't be done with a factory method. | Unassigned | Bryce Nordgren |
|
|
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 |