On Jun 27, 2011, at 12:14 AM, Flo Ledermann wrote:

> 
> 
> On 06/27/2011 07:07 AM, Dane Springmeyer wrote:
>> 
>> On Jun 26, 2011, at 10:48 PM, Magnus Bäck wrote:
>> 
>>> So, I converted that GPX file into a shapefile with gpx2shp
>>> before feeding it to Mapnik. As I didn't see any crossing lines
>>> when viewing either the GPX file nor the shapefile I've assumed
>>> it was somehow related to Mapnik. Also, the lines are (in most
>>> cases) a little bit too perpendicular and of equal length to
>>> indicate a problem with the data itself.
>> 
>> Yep, rendering artifact, that I can replicate. Your hunch was right. Not 
>> looked closely yet as to the cause, but likely the high density of nodes 
>> triggers those sharp spikes in some part of AGG.
> 
> Just as additional info: this is not a bug, although it can lead to
> extreme looking cases like the above. It's the way line drawing works
> with noisy data, which will always contain small but sharp spikes. The
> data points will "jump" left and right of the actual route, producing
> very sharp angles perpendicular to the track. Depending on the line join
> setting, these are exaggerated to sharp triangles sticking out of the track.
> 
> See http://www.carto.net/papers/svg/samples/stroking.shtml#lineJoin fpr
> an illustration. Under the heading of stroke-miterlimit you find an
> example of such a sharp edge case, producing a long, sharp triangular
> spike. (This is page is for SVG, but the same will be true of pretty
> much any graphics package)
> 
> The solution is, as Dane said, to set an appropriate line join mode
> other than "miter", or to set an appropriate miter limit if the renderer
> supports it. (This doesn't seem to be supported/exposed by mapnik)

Flo, nice spot. Perhaps you could code up a patch to support setting 
mitre-limit ? It appears it is hardcoded currently on line 140:

http://trac.mapnik.org/browser/trunk/src/agg/process_line_symbolizer.cpp#L140

Dane

> 
> Best,
> 
> Flo
> 
> 
>> 
>> The fix, however, is easy, and likely something want you want anyway for 
>> smoother a looking line given the high density of node.
>> 
>> Add these two extra options to the LineSymbolizer:
>> 
>> stroke-linejoin="round" stroke-linecap="round"
>> 
>> That should fix things up nicely. Though your pre-processing solution is 
>> great too of course because things will draw faster that way.
>> 
>> Dane
> _______________________________________________
> Mapnik-users mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/mapnik-users

_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

Reply via email to