[Java-collab] Re: Collab on Geometry

Markus Schneider schneider at lat-lon.de
Fri Jul 3 04:49:14 EDT 2009


Hello Jody and others,

sorry for the delay. I am all ears now.

I guess we could start with a breakout IRC session -- preferrably at the beginning of next week, when Rutger Bezema from
deegree is available again.

It may however be worthwhile to present our ideas of the target requirements on the mailing list first. Here's our side
of the story (for now):

- Support every (vector?!) geometry-construct from GML 3.1.1 (and GML 3.2.1), so it's for example possible to read in
arbitrary GML (geometry) documents and have a faithful in-memory representation.

- Support 2D and 3D space. Andrea said he is keen of having support for measures as well. Would 4D be enough? Or should
we just keep this unconstrained?

- Keep the overhead (compared to using JTS directly) as low as possible: for simple geometries the geometry model would
probably just act as a thin wrapper around JTS.

- Support topological predicates using JTS. For not-natively supported geometries, a linearized version (curves) would
be used for the predicate evaluation. For 3D geometries, this has it limitations, but it should be possible to support
tests on the footprint and provide a full-3D bbox operator.

- Represent referenced geometries (xlink) as in the following example ). Note the pointProperty elements in the
LineString element:

<MultiGeometry srsName="EPSG:4326" xmlns="http://www.opengis.net/gml"
  xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/base/gml.xsd">
  <geometryMembers>
    <Point gml:id="P1">
      <coord>
        <X>0.0</X>
        <Y>0.0</Y>
      </coord>
    </Point>
    <Point gml:id="P2">
      <coord>
        <X>1.0</X>
        <Y>1.0</Y>
      </coord>
    </Point>
    <LineString gml:id="L1">
      <pointProperty xlink:href="#P1" />
      <pointProperty>
        <Point>
          <pos>1.0 0.0</pos>
        </Point>
      </pointProperty>
      <pointProperty xlink:href="#P2" />
      <pointProperty>
        <Point>
          <pos>0.0 1.0</pos>
        </Point>
      </pointProperty>
    </LineString>
  </geometryMembers>
</MultiGeometry>

Note that the xlinks could also be pointing to external resources.

- Design an efficient binary format so the complex geometries can be stored in today's spatial backends (e.g. PostGIS).
As already mentioned, the trick would be to delegate predicates to the (linearized) native geometry column and use the
BLOB for reconstructing the original one.

The existing codebase already implements some of the mentioned requirements (except predicates and backend format).
There's also a quite comprehensive test suite for all kinds of GML geometry constructs.

Ready for your comments / additions.

Best regards,
Markus

Jody Garnett wrote:
> Hi Markus:
> 
> I got a bit distracted by the fun technical details and missed the
> important part.
> 
> First of all thanks you to both Andrea and yourself for sitting down
> and talking about collaboration. Sounds like it was an excellent
> sprint.
> 
> Secondly - I am very keen to collaborate on the 3D Geometry front; and
> belive that others in the GeoTools community will be interested as
> well. What is a sensible next step? We traditionally make use of
> "breakout IRC" sessions; or should I hunt down interested parties and
> ask them to join this email list?
> 
> Jody


-- 
Markus Schneider

l a t / l o n  GmbH
Aennchenstrasse 19           53177 Bonn, Germany
phone ++49 +228 184960       fax ++49 +228 1849629
http://www.lat-lon.de        http://www.deegree.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://lists.osgeo.org/pipermail/java-collab/attachments/20090703/496c65ca/signature.bin


More information about the Java-collab mailing list