[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