[geos-devel] RE: [GEOS] #468: Geometry breaks valid() and buffer(): "Assertion failed: (0), function query, file AbstractSTRtree.cpp, line 286"

Christopher DeMars chdemars at ucdavis.edu
Fri Aug 19 12:45:04 EDT 2011


I initially wasn't sure if the failure was caused by a particular
geometry formation or due to the size of the dataset. I have since
tried other county layers from the same source (California Department
of Water Resources) and got the same error after processing a small
number of polygons, so whatever the polygon encoding issue, it is
fairly common in this dataset. I can extract other example polygons if
anyone is interested.

--Christopher

On Fri, Aug 19, 2011 at 8:24 AM, Martin Davis <mtnclimb at telus.net> wrote:
> Good to have the problem narrowed down.
>
> There's nothing obviously wrong with the polygon, at least from the JTS
> perspective.  Perhaps Sandro can shed some light on the issue...
>
> On 8/19/2011 7:03 AM, Christopher DeMars wrote:
>
> Thank you Mr. Davis for your attention,
>
> I tried your suggestion of buffering elements individually then
> merging the buffers. I buffered several elements without issue, then
> got the same program stopping error message as before. On the plus
> side, I did isolate a polygon that was crashing things. Attached is
> the wkt and wkb of that polygon.
>
> --Christopher
>
>
> On Thu, Aug 18, 2011 at 8:53 PM, Martin Davis <mtnclimb at telus.net> wrote:
>
> Incidentally, this is one of those cases where buffering by unioning the
> buffers of the components far outperforms the straight buffer (for distance
> = 100, 10 s vs 70 s).
>
> This is something you might be able to try, if your data model permits it.
> Split the geometry into its components, and process them all separately.
> This should give better performance, and may avoid the GEOS issues.
>
> On 8/18/2011 8:43 PM, Martin Davis wrote:
>
> I have tested this in JTS 1.12, and can confirm that both isValid and buffer
> work correctly.  The buffer operation does take quite a while and requires a
> significant amount of memory.
>
> So the geometry is fine.  There may be some issues with GEOS.
>
> On 8/18/2011 3:44 PM, Christopher DeMars wrote:
>
> Since the ticket upload function is limited to 256Kb, I thought I
> would try to send an example file via this list.
>
> Attached is water1.wkb, a multipolygon that fubars GEOS buffer or
> valid functions. I can supply water2 and/or either file as wkt.
>
> Thank you for any help you can offer,
> --Christopher
>
>
> ---------- Forwarded message ----------
> From: GEOS <geos-trac at osgeo.org>
> Date: Thu, Aug 18, 2011 at 3:08 PM
> Subject: [GEOS] #468: Geometry breaks valid() and buffer(): "Assertion
> failed: (0), function query, file AbstractSTRtree.cpp, line 286"
> To:
>
>
> #468: Geometry breaks valid() and buffer(): "Assertion failed: (0), function
> query, file AbstractSTRtree.cpp, line 286"
> ------------------------+---------------------------------------------------
>  Reporter:  chdemars    |       Owner:  strk
>     Type:  defect      |      Status:  new
>  Priority:  major       |   Milestone:  3.3.1
> Component:  Core        |     Version:  3.3.0
>  Severity:  Unassigned  |    Keywords:
> ------------------------+---------------------------------------------------
>  GEOS is pretty far down in the software stack I'm using, but it looks like
>  my program stopping error lies there.
>
>  Software being used:
>  geos-config --version 3.3.0
>  I'm using GeoDjango and PostGIS on top of GEOS with development taking
>  place on Mac OSX
>
>  Geometry source:
>  original source is:
>  http://www.water.ca.gov/landwateruse/docs/landusedata/shapes/04bu.zip
>
>  After loading that (and the other DWR land use files) into my
>  PostGIS/GeoDjango database I extracted all the water features using:
>  water = DWRlanduse.objects.filter(class1__contains='NW',
>  survey_area__contains='BUTTE COUNTY').collect()
>
>  I have attached the wkb and wkt output of the above with water1 using
>  .unionagg() and water2 using .collect() to produce a MultiPolygon and
>  GeometryCollection respectively. Both produce failure.
>
>  If I try to use .buffer() or .valid() functions on either water1 or water2
>  I get the same failure:
>  Assertion failed: (0), function query, file AbstractSTRtree.cpp, line 286
>  which says one of the 'childBoundables' is of an unsupported type.
>  Functions like area or centroid work fine.
>
>  I would like to know if the error is a problem with GEOS and/or a problem
>  with the geometry. Regardless of the source of error, I would also like to
>  know how to go about fixing it.
>
>  Thank you for your time and efforts,
>  --Christopher
>
> --
> Ticket URL: <http://trac.osgeo.org/geos/ticket/468>
> GEOS <http://geos.refractions.net/>
> GEOS (Geometry Engine - Open Source) is a C++ port of the Java
> Topology Suite (JTS).
>
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1392 / Virus Database: 1520/3842 - Release Date: 08/18/11
>
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1392 / Virus Database: 1520/3842 - Release Date: 08/18/11
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
>
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1392 / Virus Database: 1520/3844 - Release Date: 08/19/11
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>


More information about the geos-devel mailing list