[geos-devel]
createEmptyGeometry()createsinstance ofGeometryCollection
Martin Davis
mbdavis at VividSolutions.com
Thu Mar 30 17:26:41 EST 2006
Here's another example of the use of an empty GeometryCollection: it's what Point.getBoundary() returns. It would definitely be misleading to return something of more definite type in this case, IMO.
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: geos-devel-bounces at geos.refractions.net
> [mailto:geos-devel-bounces at geos.refractions.net] On Behalf Of
> Martin Davis
> Sent: March 30, 2006 2:24 PM
> To: GEOS Development List
> Subject: RE: [geos-devel]
> createEmptyGeometry()createsinstance ofGeometryCollection
>
>
> This isn't a question of what Geometry.isEmpty() returns. In
> fact, isEmpty behaves exactly the way you mention - it checks
> whether there are any points in the Geometry, and returns
> false if not.
>
> The issue is: what should a method return when it needs to
> return an empty geometry, but there is no guide about what
> type of geometry to return? For instance, if you run
> line.intersect(polygon), and they don't actually intersect,
> what should be returned? JTS adopts the convention that an
> empty GeometryCollection is returned. Otherwise, it would
> have to choose a particular type to return, and this might be
> misleading.
>
> Actually reviewing this has exposed a minor but probably bad
> design decision in JTS: empty buffers currently return an
> empty GC, whereas they should return an empty Polygon (to
> maintain the exit condition that buffer always returns a
> polygonal object).
>
> 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: geos-devel-bounces at geos.refractions.net
> > [mailto:geos-devel-bounces at geos.refractions.net] On Behalf Of
> > Mateusz Loskot
> > Sent: March 30, 2006 2:05 PM
> > To: GEOS Development List
> > Subject: Re: [geos-devel] createEmptyGeometry()
> > createsinstance ofGeometryCollection
> >
> >
> > Martin Davis wrote:
> > > Yes. The spec doesn't cover this, but I chose to use an empty
> > > GeometryCollection as a "typeless" empty geometry, for
> > methods which
> > > need to return one. The createEmptyGeometry method is just a
> > > convenience method for this convention.
> >
> > OK, I understant it.
> >
> > > Anyway, what else could that method return that would make sense
> > > (given that it has no type information)?
> >
> > It depends on the idea behind "empty geometry" or "null
> > geometry" [1]. As I know, OGC Simple Feature Spec. explains
> > that empty geometry represents empty point set (empty set of
> > coordinates). According to my understanding: Point is empty
> > if it contains "uninitialized" coordinates MultiPoint is
> > empty if it contains no points in its set. etc.
> >
> > There is also a distinction between empty and null.
> > NULL means something undefined, uninitialized - something
> > unsafe. EMPTY means something well constructor but with empty
> > set of points. In some case, NULL object can be compared to
> > EMPTY object with true result.
> >
> > So, I think isEmpty() function should check the state of the
> > coordinates set of Geometry return appropriate value (true/false).
> >
> > [1] Saying "null geometry" I think about logical meaning but
> > not the physical representation of instance of geometry: null
> > reference/null pointer.
> >
> > Cheers
> > --
> > Mateusz Łoskot
> > http://mateusz.loskot.net
> > _______________________________________________
> > geos-devel mailing list
> > geos-devel at geos.refractions.net
> > http://geos.refractions.net/mailman/listinfo/geos-devel
> >
> _______________________________________________
> 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