enable parallel/offset lines using chainable coordinate transformations #927

Closed
springmeyer opened this Issue Oct 22, 2011 · 10 comments

4 participants

@springmeyer
Mapnik member

We have a new class of coordinate transforms that support fairly robust offsetting of lines (#180). But, I'm not comfortable exposing this (adding support for the symbolizer properties to trigger it) until I figure out the best way to make this transform be combinable with other transforms. The idea here is to reduce code duplication but also to sketch out a decent framework for being able to chain more/future operations. E.g. you should be able to both smooth and offset lines. Doable, just needs some serious focus.

@springmeyer springmeyer was assigned Oct 22, 2011
@springmeyer springmeyer added a commit that referenced this issue Oct 22, 2011
@springmeyer springmeyer add a new, experimental coord_transform impl to support offsetting li…
…ne verticies - closes #180 - next task of exposing functionality refs #927
cad0c60
@xificurk

I've planned to take a look at the offset part of the transformation, because after testing I'm not really satisfied with the results. Imho there is still one major problem - short segments with large offset (relatively to the length of the segment) create loops, see http://img803.imageshack.us/img803/7703/riveroffset.png

@springmeyer
Mapnik member

@xificurk - you should check out the code I added in cad0c60 - it has some improvements over previous iterations as far as avoiding spikes.

@kkaefer kkaefer pushed a commit to kkaefer/mapnik that referenced this issue Feb 16, 2012
@springmeyer springmeyer add a new, experimental coord_transform impl to support offsetting li…
…ne verticies - closes #180 - next task of exposing functionality refs #927
c92e7ab
@springmeyer
Mapnik member

This is now done in a475b6e. The line symbolizer supports an 'offset' parameter that can be positive or negative. In the future this could be exposed for the line pattern symbolizer as well, if desired.

@mirecta

Hi all this offseting line doesn't work as we can see
http://i48.tinypic.com/33pen1s.png
Black: original linestring
Red: offset line made by mapnik
Blue: offset line made by postgis 2 select (ST_OffsetCurve)

i try to discover where is the problem

@xificurk

mirecta: The problem occurs when the offset is significantly larger than shortest segments of the line as I wrote above. But afaik there is no trivial fix.

@mirecta

yes i know but i try implement algo from postgis 2.0 into mapnik
http://postgis.refractions.net/documentation/manual-2.0/ST_OffsetCurve.html

@springmeyer
Mapnik member

Great there is interest in improving the algorithm. The original need (now several years back) was only high zoom levels, so the spiking (more common as you zoom out) was not a big issue, but I agree it would be nice to completely avoid it.

@springmeyer
Mapnik member

note: offsetting algo was radically improved, see #1269

@PetrDlouhy

Hi. I use offset for LinePatternSymbolizer in my Prague bycicle map (mapa.prahounakole.cz). Would it be possible to enable this feature also for that? Should I open a new ticket for that?

@springmeyer
Mapnik member

I think there may already be a ticket for enabling offset on more symbolizes. If you can't find one then sure, create one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment