[geos-devel] Re: WKB parser

strk at refractions.net strk at refractions.net
Sat May 14 04:31:48 EDT 2005


On Fri, May 13, 2005 at 12:51:45PM -0700, Martin Davis wrote:
> JTS is basically a 2D system.  For that reason the equality methods just
> check the 2D values.  I agree this is an issue for checking 3D data.  I
> guess we could have an equalsExact3D to take care of this.  But to my
> mind this is starting to get a bit crufty.  
> 
> With the proving-out of user-defined CoordinateSequences, the new "zen"
> of JTS which I am following is that JTS is basically 2D, but users can
> provide CoordinateSequences which contain extra information at each
> point.  Given this, what JTS methods need to do is let the user define
> the behaviour of CoordinateSequences.  In the case of equality testing,
> this means they have to define CoordinateSequence equality.  This is the
> approach I have taken in the unit test code for WKB I/O.  I have defined
> a Geometry#compareTo(Object, CoordinateSequenceComparator) method, which
> lets the user say how CoordinateSequences should compare.  And I've
> provided an implementation of CoordinateSequenceComparator which allows
> specifying how many dimensions should be compared.  This lets me use
> existing Coordinate objects and compare them across 2 or 3 dimensions.
> 
> Comments?  Does this design solve the problem?

I think it will solve it, yes.
But I think all this flexibility will slow down things more.
Yes, it depends on actual implementation... I'll see how to handle
it.

--strk;

> 
> Martin Davis, Senior Technical Architect
> Vivid Solutions Inc.      www.vividsolutions.com
> Suite #1A-2328 Government Street Victoria, B.C. V8T 5G5
> Phone: (250) 385 6040 - Local 308 Fax: (250) 385 6046
> 
> 
> > -----Original Message-----
> > From: strk at refractions.net [mailto:strk at refractions.net] 
> > Sent: May 13, 2005 9:13 AM
> > To: geos-devel at geos.refractions.net
> > Cc: Martin Davis
> > Subject: Re: [geos-devel] Re: WKB parser
> > 
> > 
> > Martin, I checked out the equalsExact method as suggested
> > by Dave. It internally calls equals() on Coordinates, which
> > is again 2D only. Isn't this a conceptual bug since the
> > metohd is named equalsEXACT ?
> > 
> > Yes, current JTS does the same, it's
> > Geometry#equal(Coordinate, Coordinate, double)
> > 
> > --strk;
> > 
> > On Fri, May 13, 2005 at 05:30:05PM +0200, strk at refractions.net wrote:
> > > On Fri, May 13, 2005 at 09:14:23AM -0400, 
> > dblasby at openplans.org wrote:
> > > > strk,
> > > > 
> > > > JTS has an "equalsExact(Geometry,Geometry)" method and a 
> > > > "equalsExact(Geometry,Geometry, tolerance)".
> > > > 
> > > > I'm pretty sure that GEOS has at least the former.
> > > > 
> > > > I'm not 100% sure if its 2d or 3d (I assume its 3d, but I 
> > could be 
> > > > wrong).
> > > 
> > > I'm making some tests, the tolerance argument is mandatory 
> > with GEOS, 
> > > but code seems broken (a simple comparison of a point in 
> > and out WKB 
> > > returns false...).
> > > 
> > > Anyway, thanks for the point, I'll at least fix that, and 
> > possibly use 
> > > it for testing WKB.
> > > 
> > > --strk;
> > > _______________________________________________
> > > geos-devel mailing list
> > > geos-devel at geos.refractions.net 
> > > http://geos.refractions.net/mailman/listinfo/geos-devel
> > 



More information about the geos-devel mailing list