[GRASS-dev] Re: [GRASS GIS] #426: v.in.ogr: split long boundaries
GRASS GIS
trac at osgeo.org
Mon Mar 2 02:43:53 EST 2009
#426: v.in.ogr: split long boundaries
--------------------------+-------------------------------------------------
Reporter: neteler | Owner: grass-dev at lists.osgeo.org
Type: enhancement | Status: new
Priority: major | Milestone: 6.5.0
Component: Vector | Version: unspecified
Resolution: | Keywords:
Platform: All | Cpu: All
--------------------------+-------------------------------------------------
Comment (by mmetz):
Replying to [comment:9 hamish]:
>
> it would be nice to keep a method to import exact data, even if
splitting will be the default.
>
Do you mean, don't split when polygons are not cleaned (-c flag)?
> how would it be split? after a certain number of vertices of a polyline
like v.split or every "n" map units in a grid like v.in.gshhs?
>
I'm currently using line length in map units. The threshold is guestimated
from feature density in each layer. BTW, v.in.gshhs restricts bounding box
dimensions, similar to every "n" map units in a grid, but better. Using
line length is faster than using max bbox dimensions.
I do the splitting during OGRFeature import in order to not to inflate the
coor file size. Independent of splitting, after cleaning, more than 50% of
the coor file are dead lines, IOW if you would copy only alive lines to a
final output vector you could reduce the coor file size by more than 50%.
Splitting so early means that final boundary segments are shorter than the
threshold used because both "break polygons" and "break lines" break lines
at intersections. That's the reason why I don't want to make splitting
threshold a user option to avoid complaints.
The alternative would be to split after "break polygons" and "remove
duplicates", just before "break boundaries". Boundaries would then have a
max length of threshold, but this further inflates coor file size. The
reason why I don't want to further inflate the coor file size with more
dead lines is missing LFS support in the vector libs...
>
> note v.generalize currently requires to run v.build.polylines first to
get correct output. I don't know if that is a feature or a bug.
> but if breaking polylines was the default for v.in.ogr it could become a
widespread subtle problem for it.
>
Hmm, I think v.build.polylines should be run first anyway for
v.generalize. The cleaning process in v.in.ogr usually generates boundary
segments independent of whether boundaries are split.
Markus M
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/426#comment:10>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list