Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Contact:

Niels Charlier

Tracker:

GEOS-5148

Tagline:

bbox 3d 

Children:

Description

The goal is to enable a geoserver WFS request with a 3D bounding box so that we receive only geometries with one or more points in that 3D bounding box.
In other words, there is a min and max for the third coordinate as well as the first two.

In 2D we have in KVP:
BBOX=x0,y0,x1,y1

However, in 3D we get:
BBOX=x0,y0,z0,x1,y1,z1

Only 3d geometries that qualify for the min and max pairs for all three axes are returned.

In order to accomplish this, Geotools must support

  • 3D Envelopes: a 3D envelope geometry class and a 3D referenced envelope geometry class.
  • 3D Bounding Boxes: a 3D Bounding Box has two additional attributes (min z and max z) and filters geometries using all three dimensions.

Status

Voting has not started yet:

Tasks

This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success

 

no progress

(tick)

done

(error)

impeded

(warning)

lack mandate/funds/time

(question)

volunteer needed

  1. NC: Implement
  2. Update default implementation
  3. Update wiki (both module matrix and upgrade to to 2.5 pages) |
  4. Remove deprecated code from GeoTools project
  5. Update the user guide
  6. Update or provided sample code in demo
  7. review user documentation

API Changes

The changes are API additions, rather than changes.
There will be the following new interfaces in geoapi:

  • BBOX3D, for the 3D bbox filter, subinterface of BBOX

There will be the following new classes in main

  • BBOX3DImpl, implementation of interface
  • Envelope3D, Extension of JTS Envelope
  • ReferencedEnvelope3D, Referenced version of Envelope3D

Furthermore, the FIlterFactory interfaces will be extended with the following methods:

  • BBOX3D  bbox(String propertyName, double minx, double miny, double minz, double maxx, double maxy, double maxz, String srs);
  • BBOX3D  bbox( Expression geometry, double minx, double miny, double minz, double maxx, double maxy, double maxz, String srs);
  • BBOX3D  bbox( Expression geometry, double minx, double miny, double minz, double maxx, double maxy, double maxz, String srs, MatchAction matchAction);

Corresponding with their 2D equivalents.

 

Because ReferencedEnvelope3D must be derived from Evelope3D, it cannot be derived from ReferencedEvelope. Both have a joint parent (Envelope), but ReferencedEvelope3D is not a ReferencedEnvelope.
To solve this issue an additional proposal is made to change the API (optional, after discussion):

  • Create a ReferencedEvelope interface
  • Let ReferencedEnvelope class be derived from ReferencedEvelope interface
  • Switch all code that uses ReferencedEnvelope class to using ReferencedEvelope interface (Possibly little changes?)
  • Let ReferencedEvelope3D class implement ReferencedEnvelope interface

Filter

BEFORE:

AFTER:

Documentation Changes

list the pages effected by this proposal

  • No labels