Wednesday, March 18, 2009

GEOS 3.1.0

We completed the 3.1.0 release cycle today! Here's the announcement:
The GEOS team is pleased to announce that GEOS 3.1.0 has been pushed out the door, cold, wet, trembling and looking for love.

http://download.osgeo.org/geos/geos-3.1.0.tar.bz2

Version 3.1.0 includes a number of improvements over the 3.0 version:

  • PreparedGeometry operations for very fast predicate testing.
    • Intersects()
    • Covers()
    • CoveredBy()
    • ContainsProperly()
  • Easier builds under MSVC and OpenSolaris
  • Thread-safe CAPI option
  • IsValidReason added to CAPI
  • CascadedUnion operation for fast unions of geometry sets
  • Single-sided buffering operation added
  • Numerous bug fixes.

Users of the upcoming PostGIS 1.4 will find that compiling against GEOS 3.1 provides them access to some substantial performance improvements and some extra functions.
Thanks everyone on the GEOS team for the work over this cycle!
 

5 comments:

Dale said...

Great news! One note though -- it looks like the buffering speedups from JTS aren't in this build -- can you confirm that?

Paul Ramsey said...

I can confirm that, sadly, there are a number of JTS changes -- buffer speed, buffer reliability, internal snapping -- that are missing from this release.

Regina Obe said...

So what does ContainsProperly do exactly? and when would you use it instead of Contains? Inquiring minds want to know.

Paul Ramsey said...

A.ContainsProperly(B) if B intersects the interior of A but not the boundary (or exterior).

Regina Obe said...

Okay I guess we'll need to make clearer the documentation of ST_Contains -- because its still not clear and we can document ST_Containsproperly correct? I'll steal Martin's contains definition from

http://lin-ear-th-inking.blogspot.com/2007/06/subtleties-of-ogc-covers-spatial.html

Geometry A contains Geometry B iff no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.

So I guess the big take home lesson I am looking for is that

ST_Contains(A,A) = true

But
ST_ContainsProperly(A,A) = false

but neither Contains nor ContainsProperly in case of contain their boundaries.

About Me

My Photo
Paul Ramsey
Victoria, British Columbia, Canada
View my complete profile

Followers

Blog Archive

Labels