[OSM-dev] PNG type for Mapnik map
Artem Pavlenko
artem.mapnik at googlemail.com
Thu Dec 20 19:37:37 GMT 2007
On 20 Dec 2007, at 18:07, Jochen Topf wrote:
> On Wed, Dec 19, 2007 at 10:36:06PM +0000, Jon Burgess wrote:
>> On Wed, 2007-12-19 at 12:49 +0000, Tom Hughes wrote:
>>>> Jochen Topf wrote:
>>>>
>>>>> http://svn.openstreetmap.org/applications/rendering/mapnik/
>>>>> generate_tiles.py
>>>>> uses a call to the external 'convert' program to reduce the
>>>>> number of colors
>>>>> for tiles rendered by Mapnik to 255. Since version r571 Mapnik
>>>>> supports
>>>>> writing to 8 bit palette PNGs. Palette PNGs are generally
>>>>> smaller than
>>>>> normal PNGs.
>>>>>
>>>>> Is there any reason NOT to change the code to use Mapniks
>>>>> function to
>>>>> write out the image directly as 8bit paletted PNG, make the images
>>>>> smaller and save the call to 'convert'? (If nobody comes up with a
>>>>> reason, I'll change the code.)
>>>>
>>>> AFAIK, the main reason the feature was added to mapnik was that /
>>>> we/
>>>> needed it because the external convert was really slow (about
>>>> the same
>>>> amount of time as the whole rest of the render).
>>>
>>> The generate_tiles.py script is only an example - whilst changing it
>>> is probably a good idea I don't think it will have an affect on
>>> anything very much.
>>
>> Artem mentioned that the colour reduction technique is still fairly
>> experimental. It would be great for people to try it in order to iron
>> out any kinks before we adopt it on the main site.
>
> I tried it out and the png256 stuff in Mapnik doesn't do the right
> thing. You'll end up with tiles not fitting together because the
> colors
> as slightly off. The change is large enough to see in some places.
>
Yes, I had the same experience. Not very often, but there'll be some
tiles that don't match (background colour usually)
> Imagemagick convert seems to better with this. The algorithm it
> uses is
> described on http://www.imagemagick.org/script/quantize.php . But I
> could imagine that there are pathological cases where it also breaks.
>
Yes, as with any quantization. AFAIK ImageMagick is using some kind
of octree algorithms and so is Mapnik.
Thanks for the link and I'll check it out.
> I haven't looked into the algorithm that Mapnik uses, but maybe it can
> be improved by making sure that all colors mentioned in the Map file,
> i.e. all colors that we explicitly asked for, are retained. That way
> only the "artificial" colors created by the antialiasing will be
> changed.
> This should make sure that tiles will always fit together because all
> the larger colored areas will use the same colors.
The above is pretty much what I'm thinking of trying. We can collect
colours distribution from *.xml file.
It would easy for solid strokes and fills and not so easy for image
based symbols, which might have thousands of colours.
I guess we can quickly quantize them as well. Also, we can just have
a predefined set of colours, might work even better. There is
probably some kind of cartographic rule - good map should have no
more then 24 different prime colours or something.
Another thing I'd like to investigate is using different colour
spaces. I had more correct (visually on macbook) palette while
quantizing in YCbBr.
Anyways, could you send me those tiles, where colours don't much,
please ? With original RGBA versions if possible.
Cheers
Artem
>
> Jochen
> --
> Jochen Topf jochen at remote.org http://www.remote.org/jochen/
> +49-721-388298
>
>
> _______________________________________________
> dev mailing list
> dev at openstreetmap.org
> http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev
More information about the dev
mailing list