Status of AGG support?

Stephen Woodbridge woodbri at SWOODBRIDGE.COM
Mon Jul 9 11:13:34 EDT 2007



1) Can you confirm that the code you explained below is what is 
currently in SVN?
2) What does your OUTPUTFORMAT look like?
3) Is there anything special that I need to do to reproduce this? Does 
not scheme for generating the palette.txt file meet the requirements of 
the implemented algorithm.
4) Did you try LABEL ALIGN FOLLOW? and did you get labels that looked 
better than the comparison that I showed below?

Best regards,

Yewondwossen Assefa wrote:
> Steve,
>  We tried different ways to allocate an appropriate color palette for 
> 24-8 bit conversion and at the end the following seems to give a good 
> results from the tests we did  (function in mapgd.c 
> msImageCreateWithPaletteGD):
>   - use gd function gdImageCreatePaletteFromTrueColor to create an 
> image  with a number of colors 256 - number of colors from the static 
> palette file
>   - final image would use the generated colors + the ones that are 
> defined in the palette color.
> It adds an additional step/time to do it and there could probably be 
> some optimizing but It seems to work ok specially for maps generated for 
> tiled environment like kaMap.
> Best Regards
> Stephen Woodbridge wrote:
>> Paul, Assefa,
>> How would I use that?
>> Also, I commented out the
>>     #FORMATOPTION "PALETTE=/u/data/maps/palette-google-agg.txt"
>> but the label follows test still looks the same.
>> -Steve
>> Paul Spencer wrote:
>>> Steve (and Steve),
>>> I believe Assefa committed a change that allows you to specify a 
>>> fixed partial palette and GD interpolates the remaining colours.
>>> Cheers
>>> Paul
>>> On 7-Jul-07, at 12:53 AM, Stephen Woodbridge wrote:
>>>> Steve Lime wrote:
>>>>> Thanks, that's why the output blows. The forced palette has no room
>>>>> for interpretation those are the only colors allocated in the output
>>>>> image and all colors are mapped to that palette. That is done after
>>>>> all rendering is complete. It works this way to support tiling to
>>>>> that colors are absolutely consistent from tile to tile. The option
>>>>> really isn't useful beyond offline mass tiling.
>>>> OK, well then have we tried an alternative approach to handling the 
>>>> palette. That would be to take the approach that I thought it was 
>>>> doing :)
>>>> If you define the palette using the method that I described that 
>>>> would freeze the primary colors used in the mapfile. All other 
>>>> palette colors would be allowed to be generated dynamically as 
>>>> needed. When the color reduction process runs it would have to honor 
>>>> those colors in the palette, but could also add additional colors as 
>>>> needed in the additional slots. This would fix the big color shifts 
>>>> that we were seeing in the tiling and any shifting in the 
>>>> anti-aliasing between meta-tiles would probably not be noticeable.
>>>> I think the current approach it way to rigid and absolute, but it 
>>>> might be useful for some situations.
>>>> If the above is relatively easy to implement, I would be happy to 
>>>> run some tests on it.
>>>> -Steve W
>>>>> Steve
>>>>>>>> Stephen Woodbridge <woodbri at SWOODBRIDGE.COM> 07/05/07 11:28 PM
>>>>>>>> >>>
>>>>> Steve Lime wrote:
>>>>>> For comparison purposes I would use 24-bit png regardless.
>>>>>> My question would be how is the palette being constructed? Ideally
>>>>> I take a very simple approach to the palette.txt file and that is:
>>>>> grep -i color > a.txt #edit a.txt a bunch sort -u a.txt >
>>>>> palette.txt
>>>>> wc -l palette.txt 36
>>>>> so the rest of the colors can be allocated for anti-alias colors.
>>>>> -Steve W
>>>>>> you would create a representative image with lot's of linework and 
>>>>>> annotation and then use Gimp, Imagemagick or Photoshop to reduce 
>>>>>> colors to a 8-bit palette and use that. Otherwise the palette force
>>>>>>  option will do a distance computation and the results could get
>>>>>> ugly (and these images are proof)...
>>>>>> Steve
>>>>>>>>> Paul Spencer <pspencer at DMSOLUTIONS.CA> 07/05/07 9:32 PM >>>
>>>>>> PHP? Steve, I'm shocked its not a perl page ;)
>>>>>> I have noticed that the text gets 'bolder' when reducing the
>>>>>> palette, but not like this.
>>>>>> Have you tried without the formatoption for reducing the image?
>>>>>> One thing that may happen is that the antialiasing colours are
>>>>>> getting mapped to black because there isn't room in the palette to
>>>>>> allocate the needed colours.  That does seem unlikely, though.
>>>>>> Cheers
>>>>>> Paul
>>>>>> On 5-Jul-07, at 4:56 PM, Stephen Woodbridge wrote:
>>>>>>> Steve,
>>>>>>> +-87.65&address=&city=&state=&zipcode=&country=&asrv=1&amf=%2Fu%
>>>>>>> Here is a side by side comparison.
>>>>>>> google-aa2 is using "PNG8" google-agg is using "agg/png24"
>>>>>>> OUTPUTFORMAT NAME "agg/png24" MIMETYPE "image/png; mode=24bit" 
>>>>>>> "PALETTE=/u/data/maps/palette-google-agg.txt" END
>>>>>>> ONE of the differences is mapserver-4.10 vs mapserv-4.99 and the
>>>>>>>  fact that 4.99 has broken support for:
>>>>>>> as none of the roads render.
>>>>>>> -Steve
>>>>>>> Steve Lime wrote:
>>>>>>>> Would be nice to have a non-tiled, side-by-side browser to do
>>>>>>>> the comparison with... ;-) It doesn't look to me like identical
>>>>>>>>  mapfiles. For example, I'm looking at Chicago and there look
>>>>>>>> to be some differences in scale settings. For example, the
>>>>>>>> shape of Lake Michigan changes dramatically, see: 
>>>>>>>>  I'll wait
>>>>>>>> on other comments until that can be confirmed. Steve
>>>>>>>>>>> On 7/4/2007 at 10:47 AM, in message <468BC11E. 
>>>>>>>>>>> 2050101 at>, Stephen
>>>>>>>> Woodbridge <woodbri at SWOODBRIDGE.COM> wrote:
>>>>>>>>> Hi Zak,
>>>>>>>>> Thank you and the others for all the responses. I got it 
>>>>>>>>> working this morning:
>>>>>>>>> I have a few questions and
>>>>>>>>>  observations:
>>>>>>>>> The OL app above has two base layers. Both use the same 
>>>>>>>>> mapfile, except one supports AGG and is using 5.0 and the
>>>>>>>>> other is using 4.10.
>>>>>>>>> 1) Notice the white lines in the water boarding some of the 
>>>>>>>>> polygons. What is causing that? How do you get rid of these?
>>>>>>>>> 2) If you switch between 4.10 and 5.0 AGG base layers notice 
>>>>>>>>> that the road widths change. What is causing this? I assume 
>>>>>>>>> this is the same issue as the polygons above.
>>>>>>>>> 3) If you zoom in to 15K scale of closer so street names are
>>>>>>>>>  displayed the text looks really bad on text ALIGN FOLLOW 
>>>>>>>>> labels. And the text is much bolder and blacker than the 4.10
>>>>>>>>>  example.
>>>>>>>>> more below ...
>>>>>>>>> Zak James wrote:
>>>>>>>>>> Steve,
>>>>>>>>>> In our testing, the AGG renderer is about 10% faster than
>>>>>>>>>> GD over a variety of conditions. One caveat is that the 
>>>>>>>>>> sub-pixel positioning of vertices (which greatly improves
>>>>>>>>>> the appearance of features) can cause far longer rendering
>>>>>>>>>> times if suitable overview data aren't available for a
>>>>>>>>>> given scale. We discussed but did not implement strategies
>>>>>>>>>> for mitigating this problem.
>>>>>>>>> I think that discussion should get added to the RFC. If I 
>>>>>>>>> wanted to provide my own overview data what are we talking 
>>>>>>>>> about. Just having generalized data? Any rule of thumb on
>>>>>>>>> when you need to provide this?
>>>>>>>>>> Another issue is that the antialiasing tends to cause
>>>>>>>>>> larger image file sizes.
>>>>>>>>> There really is not much that you can do about this. It will
>>>>>>>>>  impact on bandwidth and tile repository sizes.
>>>>>>>>> -Steve
>>>>>>>>>> zak
>>>>>>>>>> On 7/3/07, Stephen Woodbridge <woodbri at> wrote:
>>>>>>>>>>> Paul, Steve,
>>>>>>>>>>> A few questions:
>>>>>>>>>>> 1) could one of you do a short post on what if anything needs 
>>>>>>>>>>> to be done to use AGG other than install the libs
>>>>>>>>>>> and select some ./ configure options.
>>>>>>>>>>> 2) Any sense on how this compares speed wise to the GD 
>>>>>>>>>>> implementation.
>>>>>>>>>>> 3) is what is in the trunk all that 5.0 will see or is there 
>>>>>>>>>>> some additional work that is planed to be implemented.
>>>>>>>>>>> I would like to give it a try.
>>>>>>>>>>> -Steve W
>>>>>>>>>>> Paul Spencer wrote:
>>>>>>>>>>>> The other thing that I am very keen to have is text 
>>>>>>>>>>>> rendered/ placed using AGG.  Not sure if it will be
>>>>>>>>>>>> done for 5.0 though.
>>>>>>>>>>>> Cheers
>>>>>>>>>>>> Paul
>>>>>>>>>>>> On 3-Jul-07, at 1:25 PM, Steve Lime wrote:
>>>>>>>>>>>>> Hi Tom: AGG support is in the codebase for 5.0. I
>>>>>>>>>>>>> still owe an RFC to explain what was done although
>>>>>>>>>>>>> the addition of AGG doesn't affect any other portions
>>>>>>>>>>>>> of MapServer. It's a big user feature though. I
>>>>>>>>>>>>> recently got a big time sink off my plate and will
>>>>>>>>>>>>> work that up ASAP.
>>>>>>>>>>>>> The support is relatively complete. The guys from DM
>>>>>>>>>>>>>  Solutions can probably comment further as they've
>>>>>>>>>>>>> been using it the most. The AGG vs. GD images DM has 
>>>>>>>>>>>>> supplied are very nice. The quality difference is 
>>>>>>>>>>>>> noticeable with roads in
>>>>>>>>>>> particular.
>>>>>>>>>>>>> The only missing capability that I am aware of has to
>>>>>>>>>>>>>  do with PIXMAP symbols that contain an alpha
>>>>>>>>>>>>> channel. There is a fundamental difference in how AGG
>>>>>>>>>>>>> and GD handle alpha blending (GD is flat out
>>>>>>>>>>>>> backwards).  We use GD to manage the pixel buffer
>>>>>>>>>>>>> that AGG is rendering into so that becomes a problem.
>>>>>>>>>>>>> I'll go into options in the RFC.
>>>>>>>>>>>>> Anyway, other than that the support seems to be
>>>>>>>>>>>>> working nicely is worth trying.
>>>>>>>>>>>>> Steve
>>>>>>>>>>>>>>>> On 7/1/2007 at 10:08 PM, in message
>>>>>>>>>>>>> <7b5b710d0707012008i59c41e8bq8e0ef4d8022f40f8 at>,
>>>>>>>>>>>>>  T om
>>>>>>>>>>> Beard
>>>>>>>>>>>>> <tom at PROJECTX.CO.NZ> wrote:
>>>>>>>>>>>>>> Hi there,
>>>>>>>>>>>>>> This is my first time posting here, and I hope this
>>>>>>>>>>>>>>  is the right forum to ask this question.
>>>>>>>>>>>>>> I was wondering what the status of AGG support was for the 
>>>>>>>>>>>>>> 5.0 release. On searching the archives, the
>>>>>>>>>>>>>>  most recent reference I could find was
>>>>>>>>>>> the
>>>>>>>>>>>>>> minutes from the May 22 IRC meeting that said that there 
>>>>>>>>>>>>>> would be
>>>>>>>>>>> an RFC
>>>>>>>>>>>>>> freeze on June 15, and that an RFC for AGG was 
>>>>>>>>>>>>>> "forthcoming". Did AGG support make it into that freeze? 
>>>>>>>>>>>>>> Is it listed somewhere online?
>>>>>>>>>>>>>> I'd also be interested to know if there is a
>>>>>>>>>>>>>> version currently in Subversion that includes AGG
>>>>>>>>>>>>>> sub-pixel rendering and that works well enough to
>>>>>>>>>>>>>> have a go at compiling on Windows.
>>>>>>>>>>>>>> Regards, Tom Beard
>>>>>>>>>>>> +---------------------------------------------------------------- 
>>>>>>>>>>>>  -+ |Paul Spencer pspencer at    | 
>>>>>>>>>>>> +---------------------------------------------------------------- 
>>>>>>>>>>>>  -+ |Chief Technology Officer | |DM Solutions Group Inc
>>>>>>>>>>>> http:// | 
>>>>>>>>>>>> +---------------------------------------------------------------- 
>>>>>>>>>>>>  -+
>>>>>> +-----------------------------------------------------------------+
>>>>>>  |Paul Spencer                          pspencer at
>>>>>> | +-----------------------------------------------------------------+
>>>>>>  |Chief Technology Officer
>>>>>> | |DM Solutions Group Inc      
>>>>>> | +-----------------------------------------------------------------+
>>> +-----------------------------------------------------------------+
>>> |Paul Spencer                          pspencer at    |
>>> +-----------------------------------------------------------------+
>>> |Chief Technology Officer                                         |
>>> |DM Solutions Group Inc       |
>>> +-----------------------------------------------------------------+

More information about the mapserver-dev mailing list