A mappyfile plugin to convert between RGB and Hex colors, and to add human readable names
Project description
A mappyfile plugin to standardise and convert colors used in a Mapfile. Features include:
conversion between RGB and HEX colors
harmonise all colors in a Mapfile to either RGB or hex values
add human readable color names as comments
add color names to RGB color ranges as comments (not currently possible for HEX color ranges)
Python2 and 3 compatible
See example.map and rainbow_classes.txt for the Mapfile to generate the above image.
Installation
pip install mappyfile-colors
Note installing the mappyfile-colors plugin will automatically install the following dependencies:
mappyfile
webcolors
Online Demo
Go to the online mappyfile demo at http://mappyfile.geographika.net/
Select the “Rainbow colors” map
Open “Settings”, the mappyfile-colors Plugin Settings section allows conversion to RGB and HEX, and to include color names as comments in the Mapfile output
Click the Format button
Usage
To use the colors plugin, import, and then pass in a custom ColorsTransformer. Two additional parameters can also be passed to the mappyfile.loads function:
include_color_names - set to True to add color names as comments (default is False)
conversion_type - a parameter to convert colors within a Mapfile, either import ConversionType or use an integer value to set the conversion:
NO_CONVERSION = 0 TO_RGB = 1 TO_HEX = 2
A sample script to convert RGB to HEX colors, and include the color names is shown below.
import mappyfile
from mappyfile.plugins import mappyfile_colors
from mappyfile_colors import ColorsTransformer, ConversionType
s = """
CLASS
STYLE
COLOR 184 134 11
OUTLINECOLOR 0 0 255
WIDTH 3
END
END
"""
d = mappyfile.loads(s, include_color_names=True, transformer_class=ColorsTransformer, conversion_type=ConversionType.TO_HEX)
print(mappyfile.dumps(d))
This will output the following:
CLASS
STYLE
COLOR "#b8860b" # darkgoldenrod
OUTLINECOLOR "#0000ff" # blue
WIDTH 3
END
END
See the test_plugin.py for further examples.
Color Factory
The plugin also includes a ColorFactory class to return unique colors from color palettes. This can be useful for generating MapServer classes based on unique values. Basic usage is shown below:
color_factory = mappyfile_colors.ColorFactory()
print(color_factory.palette_names)
clrs = color_factory.get_colors(palette_name="maximum_contrast") # returns an iterator
print(next(clrs))
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mappyfile_colors-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e77488df75da9125f4672bed05e6e3dd44a072df73e2afe5e4c3996b3c1271b7 |
|
MD5 | 40387a41c831365199ad19c0d8c042c4 |
|
BLAKE2b-256 | d5b6f20ba06d4d4982b93519e888685887fe98f404f0f5a97445efb512914988 |