[GRASS-dev] vector layer contains error not detected by v.build nor cleaned in v.clean

Markus Metz markus.metz.giswork at gmail.com
Wed Jan 25 23:40:16 PST 2017


On Wed, Jan 25, 2017 at 5:19 PM, Paulo van Breugel <p.vanbreugel at gmail.com>
wrote:
>
>
>
> On 25-01-17 16:57, Markus Metz wrote:
>
>
>
> On Wed, Jan 25, 2017 at 12:31 PM, Paulo van Breugel <
p.vanbreugel at gmail.com> wrote:
> >
> > Dear all,
> >
> > I have a vector layer which I cleaned up using v.clean. It all appears
to be fine, but when trying to export using the libkml in v.out.ogr and the
type=area option, I am getting the warning and error messages like below:
> >
> > Warning 1: Ring Self-intersection at or near point
> > 88.100626640406631 27.668444701473838
> > ERROR 6: Invalid polygon
> > Warning 1: Ring Self-intersection at or near point
> >
> > In the resulting kml file, some of the polygons are missing. If I use
the kml output in v.out.ogr, I am not getting any warnings, but similarly,
some of the polygons are missing.
> >
> > When I import the layer in Spatialite and check the geometries I am
getting similar warnings / error messages, e.g.,:
> >
> > 27 Ring Self-intersection at or near point 82.397900772562522
29.707213605319616
> >
> >
> > How can I identify and clean these issues in GRASS? Checking for
topological errors with v.build does not result in any error, and I tried
the various tools in v.clean to no avail.
>
> Did you try
> v.clean -c type=boundary tool=rmsa,break,rmdangle threshold=0,0,-1
> ?
>
> Yes, I tried
>
> Also try v.build -e
>
>
> Tried that too, it does not report any error.
>
> Generally where the boundaries of two polygons with the same category
touch each other by one point (illustrated below), Spatialite and QGIS
(both using geos) seem to report an error for that point.
>
> +-----+   +
> |     | /   \
> |  A  |+  A  +
> |     | \   /
> +-----+   +
>
OK. In some cases, the vertex is not exactly on the line but just slightly
off. It depends on how floating point precision is handled if this is
regarded as an intersection or not. If GRASS assumes a smaller floating
point precision error than GEOS, GRASS treats it as no intersection while
GEOS might recognize an intersection. A solution could be to snap
boundaries with a very small threshold.

Just a guess.

Markus M

>
> I am not sure yet if that is what is causing the problem (missing
polygons) when exporting to kml. I am cleaning a layer now for export. Will
report how that worked out.
>
> Markus M
>
> >
> > Paulo
> > _______________________________________________
> > grass-dev mailing list
> > grass-dev at lists.osgeo.org
> > https://lists.osgeo.org/mailman/listinfo/grass-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20170126/9c92f0ac/attachment.html>


More information about the grass-dev mailing list