Hello all

Various Envelope implementations has been committed. On Apache SIS, the main implementation is GeneralEnvelope (already merged on all SIS branches):

https://builds.apache.org/job/sis-jdk7/site/apidocs/org/apache/sis/geometry/GeneralEnvelope.html

The GeneralEnvelope class is an implementation of the Envelope interface defined in GeoAPI on the basis of ISO 19107. This implementation is "general" because it accepts an arbitrary Coordinate Reference System (not necessarily geographic) of arbitrary dimension. This class supports "wraparound" axes, the most common case being longitudes crossing the anti-meridian, but other kind of axes could also have "wraparound" property (e.g. dates in climatology). The GeoAPI CoordinateSystemAxis interface derived from ISO 19111 contains the information needed. Every add(...), contains(...) and intersects(...) methods in GeneralEnvelope should works correctly with wraparound axes.

The geometry package provides also an Envelope2D implementation as a subclass of java.awt.Rectangle2D. This class is provided for Java2D interoperability, but as the name implies is restricted to two-dimensional coordinates. All its methods have been overwritten for supporting wraparound axes too.

I also committed a very simple implementation in the public domain for demonstration purpose:

http://www.geoapi.org/geoapi-examples/apidocs/org/opengis/example/geometry/SimpleEnvelope.html

For Tika, one approach that Joe or other may consider could be:

1. Add a dependency to GeoAPI 3.0.0 (official release only, no milestone).
2. Copy/modify the SimpleEnvelope example in a Tika's
   *package-privated* class under Apache 2 license.
3. Make sure that the public API expose only the Envelope interface,
   never the SimpleEnvelope implementation.
4. Only if experience shows that Tika needs a more powerful geospatial
   engine, delete the SimpleEnvelope implementation and use
   GeneralEnvelope instead. Code using the Envelope interface should
   not be affected.


    Martin

Reply via email to