CartoCSS → Mapnik XML
osm
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Oliver Tonnhofer 8af283269d magnacarto-mapnik: cache loaded mapnik map 2 weeks ago
app Added icon to warning messages 7 years ago
builder mapnik: add mapnik3-proj4 builder with backwards compatibility to proj4 (+init) 4 months ago
cmd magnacarto-mapnik: cache loaded mapnik map 2 weeks ago
color husl-go renamed to hsluv-go 7 years ago
config magnacarto-mapnik: cache loaded mapnik map 2 weeks ago
docs examples: update titles 9 years ago
maps app: parse SRS from request 7 years ago
mml mml: pass mml properties to mml.Layer 1 year ago
mss mss: make ZoomRange.ValidFor public 1 year ago
regression fix regression tests with OGR2 6 years ago
render magnacarto-mapnik: cache loaded mapnik map 2 weeks ago
vendor vendor: update dependencies 4 months ago
.gitignore ignore magnacarto-mapnik 9 years ago
.travis.yml travis: build with go 1.13 5 years ago
LICENSE add README and LICENSE 9 years ago
Makefile build: remove -lboost_system, not required anymore 4 years ago
README.md update readme 4 months ago
crosscompile.sh crosscompile: do not use godep 7 years ago
doc.go add package doc strings 9 years ago
example-magncarto.tml add missing example-magnacarto.tml (closes #10) 8 years ago
go.mod vendor: update dependencies 4 months ago
go.sum vendor: update dependencies 4 months ago
version.go build: use git tag as version if available 5 years ago

README.md

Magnacarto

Magnacarto is a CartoCSS map style processor that generates Mapnik XML and MapServer map files.

It is released as open source under the Apache License 2.0.

Features

  • Easy to use map viewer

Magnaserv

  • Generate styles for Mapnik 3 and MapServer

MapServer

OSM-Bright MapServer

Mapnik

OSM-Bright Mapnik

Current status

  • Supports nearly all features of CartoCSS
    • Attachments
    • Instances
    • Classes
    • Color functions
    • Expressions
    • etc.
  • Can successfully convert complex styles (like the OSM Carto style)

Missing

  • Not all CartoCSS features are supported by the MapServer builder
  • Improved configuration
  • ...

Installation

Source

Dependencies

You need Go>1.12

Compiling

Check out or download the repository and call:

make install

Render Plugins

The web-frontend of Magnacarto can render map images with Mapserver and Mapnik.

Mapserver

The Mapserver plugin is already included in the default magnaserv installation and it requires the mapserv binary in your PATH on runtime.

Mapnik

The Mapnik plugin needs to be compiled as an additional binary (magnacarto-mapnik). You need to have Mapnik installed with all header files. It supports 3. Make sure mapnik-config is in your PATH. Call make install to build the plugin binary.

Usage

magnacarto

magnacarto takes a single -mml file.

magnacarto -mml project.mml > /tmp/magnacarto.xml

To build a MapServer map file:

magnacarto -builder mapserver -mml project.mml > /tmp/magnacarto.map

See magnacarto -help for more options.

magnaserv

Magnaserv is a web-frontend for Magnacarto. Make sure the ./app directory is in your working directory or next to the magnaserv executable.

To start magnaserv on port 7070:

magnaserv

Magnaserv will search for .mml files in the current working directory or in direct sub-directories.

To start magnaserv on port 8080 with the Mapserver plugin enabled:

magnaserv -builder mapserver -listen 127.0.0.1:8080

You can configure the location of stylings, shapefiles or images, and database connection parameters with a configuration file. See example-magnacarto.tml:

magnaserv -builder mapserver -config magnacarto.tml

Proj4 compatibility

Update: v1.3.0 (2024-01-24)

Current libproj versions do not support the old "+init=epsg:3857"-style projection strings anymore. The mapnik3 builder now emits "epsg:3857" by default. You can enable compatibility with older libproj/proj4 versions by using the mapnik3-proj4 builder. Make sure to update the SRS of your layers (in the .mml files) to the new "epsg:3857" style. mapnik3-proj4 will add "+init=" for these SRS.

Documentation

See docs/examples for example files and usage instructions.

Refer to the Carto project for documentation of the CartoCSS format.

Refer to the following CartoCSS projects for larger .mml and .mss examples.

Please note that openstreetmap-carto relies on a few advanced Mapnik features that are not supported by Mapserver. Future versions of Magnacarto might work around these limitations.

Support

Please use GitHub for questions: https://github.com/omniscale/magnacarto/issues

Development

The latest developer documentation can be found here: http://godoc.org/github.com/omniscale/magnacarto

The source code is available at: https://github.com/omniscale/magnacarto/

You can report any issues at: https://github.com/omniscale/magnacarto/issues

Test

Unit tests

go test -short ./...

Regression tests

There are regression tests that generate Mapnik and MapServer map files, renders images and compares them. These tests require Image Magick (compare) and MapServer >=7 (shp2img).

go test ./...