[gdal-dev] clipping linestrings with ogr2ogr may create points
Kay F. Jahnke
_kfj at yahoo.com
Wed Nov 14 00:34:33 PST 2018
Hi all!
I have a file with contour lines 'contour.shp' (made with gdal_contour)
which I want to clip with a rectangle. I was using this command to
obtain 'clipped.shp'
ogr2ogr -clipsrc 460000 5105000 465000 5110000 clipped.shp contour.shp
But whatever I tried, I got an error:
ERROR 1: Attempt to write non-linestring (GEOMETRYCOLLECTION) geometry
to ARC type shapefile.
ERROR 1: Unable to write feature 84 from layer contour.
ERROR 1: Terminating translation prematurely after failed
I took a good while to realize that the clipping actually produced a
single point, where one of the contours left the clipping rectangle,
came back to coincide with the clipping rectangle on this point and went
further out again.
The geometry looks like this:
/ <- linestring
* /
/ \ /
---*---*---- <- top of clipping rectangle
/ ^
/ | yields single point to the GEOMETRYCOLLECTION
So technically the result is correct. The single point is inside the
clipping rectangle, and therefore part of the output, which can't be
stored in the output shapefile because that already has linestrings in it.
I managed to avoid the problem by changing the clipping rectangle ever
so slightly:
ogr2ogr -clipsrc 460000.0001 5105000.0001 464999.9999 5109999.9999 \
clipped.shp contour.shp
And I can also save to other formats which can take several geometries,
like KML.
But I'm not quite happy with either of the solutions so I'd like to
discuss this issue. Are there maybe additional parameters to limit the
geometries resulting from clipping to linestrings, or to exclude
resulting isolated points from the output? If ogr2ogr were to output
linestrings an points separately instead of putting them in a
GEOMETRYCOLLECTION, I could use -skipfailures, but since the clipped
linestring is inside the GEOMETRYCOLLECTION, when using -skipfailures,
it is removed from the output as well - and missing contour lines on a
hillside stick out like a sore thumb.
So my issue is not strictly speaking a bug report, it's more about what
a user would expect when clipping a bunch of linestrings, namely to
receive back a bunch of linestrings, never mind geometrical correctness.
With regards
Kay
More information about the gdal-dev
mailing list