Skip to main content

pycnik

https://secure.travis-ci.org/Mappy/pycnik.png https://pypip.in/v/pycnik/badge.png https://pypip.in/d/pycnik/badge.png Bitdeli badge

A simple Translator from Python code (with coding conventions) to Mapnik XML stylesheet.

  • features:
    • allow using exotic number of zoom levels and tile sizes (computes scales denominators)

    • provides a mechanism for inheritance

    • automatically add cache-feature attribute when using more than 2 styles

  • caveats:

Install Pycnik

$ git clone https://github.com/Mappy/pycnik.git
$ cd pycnik
$ python setup.py install

Or via pip:

$ pip install pycnik

Dependencies:

  • python-mapnik (mapnik >= 2.x)

  • lxml

Testing

Dependencies:

$ pip install -r requirements/test.pip

To run the tests with nose:

$ nosetests -v

Getting started

Pycnik uses dynamic variable declaration, so you have to use the same keywords as the xml declaration syntax.

example.py:

from pycnik.model import *

BACKGROUND_COLOR = 'rgb(255,255,220)'

NATURAL_RASTER = {
    "type": "gdal",
    "file": "natural_earth.tif"
}

DATABASE_PARAM = {
    "dbname": "database",
    "estimate_extent": "true",
    "host": "0.0.0.0",
    "password": "******",
    "port": "5432",
    "type": "postgis",
    "user": "mapuser",
    "srid": "4326",
}

################
# MAP DEFINITION
################
Map.background_color = BACKGROUND_COLOR
Map.srs = "+init=epsg:4326"
Map.minimum_version = "2.0"
Map.font_directory = "fonts"
Map.buffer_size = 128

########
# LAYERS
########
natural_earth = Layer("natural_earth")
natural_earth.datasource = NATURAL_RASTER

bnd = Layer("country boundaries")
bnd.datasource = DATABASE_PARAM
bnd.table = "schema.boundaries"

########
# STYLES
########
natural_earth.style()[:3] = {
    RASTER: {
        'scaling': 'bilinear'
    }
}

bnd.style("blue")[0:19] = {
    LINE: {
        'fill': 'rgb(255,0,0)',
        'stroke-width': '4'
    },
    'filter': "[countrycode]='ESP'"
}

# change the stroke width from level 10 to 15
# the `filter` and `fill` attributes are preserved
bnd.style("blue")[10:15] = {
    LINE: {'stroke-width': '12'}}

You can see more examples in the test/resources directory.

Generate mapnik XML

$ pycnik example.py -o example.xml

Changelog

1.4 (2015-02-23)

  • fix compute_scales for WGS84

1.3.2 (2012-12-05)

  • allowing any attributes for layer tag

1.3.1 (2012-10-25)

  • Updated documentation

1.3 (2012-10-04)

  • Removed “zoom” comment in tag scaledenominator (for mapnik 2.1)

  • More tests

1.2 (2012-09-11)

  • Added copy_style() helper

1.1 (2012-09-10)

  • Support many symbolizer with the same type in rule

  • More tests

1.0 (2012-08-07)

  • Initial release

Release files for pycnik 1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pycnik 1.4
File Size Uploaded
pycnik-1.4.tar.gz 10.8 kB Details

Release files / pycnik-1.4.tar.gz

Download URL pycnik-1.4.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6a49bcc5fe4268046682de73f017c0d83a68f3a679b92478d001ce172e0f67f3
BLAKE2b-256 checksum
How to use checksums
2a7d1c085a6baadde2f008b732033622329154e41509eb28d5ba7c53e69de3ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.4 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page