Skip to content
This repository

enable parallel/offset lines using chainable coordinate transformations #927

Closed
springmeyer opened this Issue October 21, 2011 · 10 comments

4 participants

Dane Springmeyer Petr Morávek Miroslav Talasek PetrDlouhy
Dane Springmeyer
Owner

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.

Dane Springmeyer springmeyer referenced this issue from a commit October 21, 2011
Dane Springmeyer add a new, experimental coord_transform impl to support offsetting li…
…ne verticies - closes #180 - next task of exposing functionality refs #927
cad0c60
Petr Morávek

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

Dane Springmeyer
Owner

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

Konstantin Käfer kkaefer referenced this issue from a commit in kkaefer/mapnik October 21, 2011
Dane Springmeyer add a new, experimental coord_transform impl to support offsetting li…
…ne verticies - closes #180 - next task of exposing functionality refs #927
c92e7ab
Dane Springmeyer
Owner

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.

Dane Springmeyer springmeyer closed this May 29, 2012
Miroslav Talasek

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

Petr Morávek

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.

Miroslav Talasek

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

Dane Springmeyer
Owner

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.

Dane Springmeyer
Owner

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?

Dane Springmeyer

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
Something went wrong with that request. Please try again.