pax_global_header00006660000000000000000000000064122211403660014507gustar00rootroot0000000000000052 comment=74650b7a2cc138410acff659192822c9d52793a5 mapnik-reference-5.0.6/000077500000000000000000000000001222114036600147325ustar00rootroot00000000000000mapnik-reference-5.0.6/2.0.0/000077500000000000000000000000001222114036600153675ustar00rootroot00000000000000mapnik-reference-5.0.6/2.0.0/reference.json000066400000000000000000001305751222114036600202330ustar00rootroot00000000000000{ "version": "2.0.0", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" } }, "symbolizers" : { "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background.", "description": "Map Background image" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "api": "fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "gamma": { "css": "polygon-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "smooth": { "css": "polygon-smooth", "api": "smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Amount of smoothing applied" } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers", "default-value": "none", "default-meaning": "solid line" }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line" ], "doc": "Attempt to place markers on a point once or on a line repeatedly", "default-value": "line" }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "float" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "float" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated labels", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "doc": "An SVG transformation definition", "default-value": "", "default-meaning": "no transformation", "type": "string" } }, "shield": { "name": { "css": "shield-name", "type": "string", "required": true, "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "type": "boolean", "default-value": false }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Determines the minimum amount of padding that a shield gets relative to other shields", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "float", "default-value": 0, "doc": "Length before wrapping long names." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "float" }, "file": { "css": "shield-file", "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "middle" }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "no-text": { "css": "shield-no-text", "type": "boolean", "doc": "Whether the shield should make room for a text label.", "default-value": "false" }, "justify-alignment": { "css": "shield-justify-alignment", "type": "string", "doc": "Define how text in a shield's label is justified", "default-value": "middle" } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": ["local","global"], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "mode": { "css": "raster-mode", "default-value": "normal", "type": [ "normal", "grain_merge", "grain_merge2", "multiply", "multiply2", "divide", "divide2", "screen", "hard_light" ], "doc": "The blending technique used to overlay this raster image on the layer below. Normal simply covers the layer. Grain merge adds the two layers together and subtracts 128 from the value, making the resulting area sometimes high-contrast. Screen often gives a lighter, washed-out appearance. Multiply multiplies the pixels, giving a high-contrast result. Divide divides the upper layer by the lower layer, making a lighter version." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "fast", "bilinear", "bilinear8", "bicubic", "spline16", "gaussian", "lanczos" ], "default-value": "fast", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "integer", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "string", "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" } }, "text": { "name": { "css": "text-name", "type": "string", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "float" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "float" }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "float", "doc": "Distance between repeated text labels on a line" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "float", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "float", "doc": "Allows the label to be displaced from its ideal position by a number of pixels" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "none", "doc": "If present, the maximum angle change, in degrees, allowed between adjacent characters in a label. This will stop label placement around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom" ], "doc": "Position of label relative to point position.", "default-value": "middle", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Determines the minimum amount of padding that a text symbolizer gets relative to other text", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "float", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. See TextSymbolizer docs for format." }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "middle" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center" ], "doc": "Set the text alignment.", "default-value": "center" } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "float", "default-value": "0" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null" ] } } mapnik-reference-5.0.6/2.0.1/000077500000000000000000000000001222114036600153705ustar00rootroot00000000000000mapnik-reference-5.0.6/2.0.1/reference.json000066400000000000000000001305751222114036600202340ustar00rootroot00000000000000{ "version": "2.0.1", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" } }, "symbolizers" : { "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background.", "description": "Map Background image" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "api": "fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "gamma": { "css": "polygon-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "smooth": { "css": "polygon-smooth", "api": "smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Amount of smoothing applied" } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers", "default-value": "none", "default-meaning": "solid line" }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line" ], "doc": "Attempt to place markers on a point once or on a line repeatedly", "default-value": "line" }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "float" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "float" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated labels", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "doc": "An SVG transformation definition", "default-value": "", "default-meaning": "no transformation", "type": "string" } }, "shield": { "name": { "css": "shield-name", "type": "string", "required": true, "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "type": "boolean", "default-value": false }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Determines the minimum amount of padding that a shield gets relative to other shields", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "float", "default-value": 0, "doc": "Length before wrapping long names." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "float" }, "file": { "css": "shield-file", "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "middle" }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "no-text": { "css": "shield-no-text", "type": "boolean", "doc": "Whether the shield should make room for a text label.", "default-value": "false" }, "justify-alignment": { "css": "shield-justify-alignment", "type": "string", "doc": "Define how text in a shield's label is justified", "default-value": "middle" } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": ["local","global"], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "mode": { "css": "raster-mode", "default-value": "normal", "type": [ "normal", "grain_merge", "grain_merge2", "multiply", "multiply2", "divide", "divide2", "screen", "hard_light" ], "doc": "The blending technique used to overlay this raster image on the layer below. Normal simply covers the layer. Grain merge adds the two layers together and subtracts 128 from the value, making the resulting area sometimes high-contrast. Screen often gives a lighter, washed-out appearance. Multiply multiplies the pixels, giving a high-contrast result. Divide divides the upper layer by the lower layer, making a lighter version." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "fast", "bilinear", "bilinear8", "bicubic", "spline16", "gaussian", "lanczos" ], "default-value": "fast", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "integer", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "string", "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" } }, "text": { "name": { "css": "text-name", "type": "string", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "float" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "float" }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "float", "doc": "Distance between repeated text labels on a line" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "float", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "float", "doc": "Allows the label to be displaced from its ideal position by a number of pixels" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "none", "doc": "If present, the maximum angle change, in degrees, allowed between adjacent characters in a label. This will stop label placement around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom" ], "doc": "Position of label relative to point position.", "default-value": "middle", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Determines the minimum amount of padding that a text symbolizer gets relative to other text", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "float", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. See TextSymbolizer docs for format." }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "middle" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center" ], "doc": "Set the text alignment.", "default-value": "center" } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "float", "default-value": "0" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null" ] } } mapnik-reference-5.0.6/2.0.2/000077500000000000000000000000001222114036600153715ustar00rootroot00000000000000mapnik-reference-5.0.6/2.0.2/reference.json000066400000000000000000001305751222114036600202350ustar00rootroot00000000000000{ "version": "2.0.2", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" } }, "symbolizers" : { "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background.", "description": "Map Background image" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "api": "fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "gamma": { "css": "polygon-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "smooth": { "css": "polygon-smooth", "api": "smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Amount of smoothing applied" } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers", "default-value": "none", "default-meaning": "solid line" }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line" ], "doc": "Attempt to place markers on a point once or on a line repeatedly", "default-value": "line" }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "float" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "float" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated labels", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "doc": "An SVG transformation definition", "default-value": "", "default-meaning": "no transformation", "type": "string" } }, "shield": { "name": { "css": "shield-name", "type": "string", "required": true, "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "type": "boolean", "default-value": false }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Determines the minimum amount of padding that a shield gets relative to other shields", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "float", "default-value": 0, "doc": "Length before wrapping long names." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "float" }, "file": { "css": "shield-file", "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "middle" }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "no-text": { "css": "shield-no-text", "type": "boolean", "doc": "Whether the shield should make room for a text label.", "default-value": "false" }, "justify-alignment": { "css": "shield-justify-alignment", "type": "string", "doc": "Define how text in a shield's label is justified", "default-value": "middle" } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": ["local","global"], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "api": "gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "mode": { "css": "raster-mode", "default-value": "normal", "type": [ "normal", "grain_merge", "grain_merge2", "multiply", "multiply2", "divide", "divide2", "screen", "hard_light" ], "doc": "The blending technique used to overlay this raster image on the layer below. Normal simply covers the layer. Grain merge adds the two layers together and subtracts 128 from the value, making the resulting area sometimes high-contrast. Screen often gives a lighter, washed-out appearance. Multiply multiplies the pixels, giving a high-contrast result. Divide divides the upper layer by the lower layer, making a lighter version." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "fast", "bilinear", "bilinear8", "bicubic", "spline16", "gaussian", "lanczos" ], "default-value": "fast", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "integer", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "string", "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" } }, "text": { "name": { "css": "text-name", "type": "string", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "float" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "float" }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "float", "doc": "Distance between repeated text labels on a line" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "float", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "float", "doc": "Allows the label to be displaced from its ideal position by a number of pixels" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "none", "doc": "If present, the maximum angle change, in degrees, allowed between adjacent characters in a label. This will stop label placement around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom" ], "doc": "Position of label relative to point position.", "default-value": "middle", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Determines the minimum amount of padding that a text symbolizer gets relative to other text", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "float", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. See TextSymbolizer docs for format." }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "middle" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center" ], "doc": "Set the text alignment.", "default-value": "center" } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "float", "default-value": "0" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null" ] } } mapnik-reference-5.0.6/2.1.0/000077500000000000000000000000001222114036600153705ustar00rootroot00000000000000mapnik-reference-5.0.6/2.1.0/reference.json000066400000000000000000002273251222114036600202340ustar00rootroot00000000000000{ "version": "2.1.0", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." }, "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0] ], "doc": "A list of image filters." }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" }, "group-by": { "default-value": "", "type":"string", "default-meaning": "No special layer grouping will be used during rendering", "doc": "https://github.com/mapnik/mapnik/wiki/Grouped-rendering" }, "buffer-size": { "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the Layer extent (in pixels) used to when querying and (potentially) clipping the layer data during rendering" }, "maximum-extent": { "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query this specific layer data during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Layer." } }, "symbolizers" : { "*": { "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0] ], "doc": "A list of image filters." }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background.", "description": "Map Background image" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "gamma": { "css": "polygon-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "gamma-method": { "css": "polygon-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "clip": { "css": "polygon-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "polygon-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-gamma-method": { "css": "line-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers (only exists for experimental svg support in Mapnik which is not yet enabled)", "default-value": "none", "default-meaning": "solid line" }, "stroke-miterlimit": { "css": "line-miterlimit", "type": "float", "doc": "The limit on the ratio of the miter length to the stroke-width. Used to automatically convert miter joins to bevel joins for sharp angles to avoid the miter extending beyond the thickness of the stroking path. Normally will not need to be set, but a larger value can sometimes help avoid jaggy artifacts.", "default-value": 4.0, "default-meaning": "Will auto-convert miters to bevel line joins when theta is less than 29 degrees as per the SVG spec: 'miterLength / stroke-width = 1 / sin ( theta / 2 )'" }, "clip": { "css": "line-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "line-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "offset": { "css": "line-offset", "type": "float", "default-value": 0, "default-meaning": "no offset", "doc": "Offsets a line a number of pixels parallel to its actual path. Postive values move the line left, negative values move it right (relative to the directionality of the line)." }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." }, "geometry-transform": { "css": "line-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker, if set, overrides both the opacity of both the fill and stroke", "default-value": 1, "default-meaning": "The stroke-opacity and fill-opacity will be used", "type": "float" }, "fill-opacity": { "css": "marker-fill-opacity", "doc": "The fill opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line", "interior" ], "default-value": "point", "default-meaning": "Place markers at the center point (centroid) of the geometry", "doc": "Attempt to place markers on a point, in the center of a polygon, or if markers-placement:line, then multiple times along a line. 'interior' placement can be used to ensure that points placed on polygons are forced to be inside the polygon interior" }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "expression" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "expression" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated labels", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "clip": { "css": "marker-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "marker-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "marker-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "marker-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "shield": { "name": { "css": "shield-name", "type": "expression", "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "file": { "css": "shield-file", "required": true, "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "type": "boolean", "default-value": false }, "allow-overlap": { "css": "shield-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping shields are shown or hidden.", "default-meaning": "Do not allow shields to overlap with other map elements already placed." }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Determines the minimum amount of padding that a shield gets relative to other shields", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "unsigned", "default-value": 0, "doc": "Length of a chunk of text in characters before wrapping text" }, "wrap-before": { "css": "shield-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "unsigned", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "unsigned" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "auto" }, "vertical-alignment": { "css": "shield-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "The shield's vertical alignment from its centerpoint", "default-value": "middle" }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "justify-alignment": { "css": "shield-justify-alignment", "type": [ "left", "center", "right", "auto" ], "doc": "Define how text in a shield's label is justified", "default-value": "auto" }, "clip": { "css": "shield-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "shield-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" }, "clip": { "css": "line-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "line-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "line-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": [ "local", "global" ], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" }, "opacity": { "css": "polygon-pattern-opacity", "type": "float", "doc": "(Default 1.0) - Apply an opacity level to the image used for the pattern", "default-value": 1, "default-meaning": "The image is rendered without modifications" }, "clip": { "css": "polygon-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "polygon-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "near", "fast", "bilinear", "bilinear8", "bicubic", "spline16", "spline36", "hanning", "hamming", "hermite", "kaiser", "quadric", "catrom", "gaussian", "bessel", "mitchell", "sinc", "lanczos", "blackman" ], "default-value": "near", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "unsigned", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." }, "comp-op": { "css": "raster-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "comp-op": { "css": "point-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "text": { "name": { "css": "text-name", "type": "expression", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "unsigned" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "unsigned" }, "wrap-before": { "css": "text-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "unsigned", "doc": "Distance between repeated text labels on a line (aka. label-spacing)" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "unsigned", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "unsigned", "doc": "Allows the label to be displaced from its ideal position by a number of pixels (only works with placement:line)" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "22.5", "doc": "The maximum angle change, in degrees, allowed between adjacent characters in a label. This value internally is converted to radians to the default is 22.5*math.pi/180.0. The higher the value the fewer labels will be placed around around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "Position of label relative to point position.", "default-value": "auto", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Determines the minimum amount of padding that a text symbolizer gets relative to other text", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "expression", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. An example is `text-placements: \"E,NE,SE,W,NW,SW\";` " }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "auto" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center", "auto" ], "doc": "Define how text is justified", "default-value": "auto", "default-meaning": "Auto alignment means that text will be centered by default except when using the `placement-type` parameter - in that case either right or left justification will be used automatically depending on where the text could be fit given the `text-placements` directives" }, "clip": { "css": "text-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "text-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "expression", "default-value": "0" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null", "point", "linestring", "polygon", "collection" ] } } mapnik-reference-5.0.6/2.1.1/000077500000000000000000000000001222114036600153715ustar00rootroot00000000000000mapnik-reference-5.0.6/2.1.1/reference.json000066400000000000000000002312421222114036600202260ustar00rootroot00000000000000{ "version": "2.1.1", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." }, "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0] ], "doc": "A list of image filters." }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" }, "group-by": { "default-value": "", "type":"string", "default-meaning": "No special layer grouping will be used during rendering", "doc": "https://github.com/mapnik/mapnik/wiki/Grouped-rendering" }, "buffer-size": { "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the Layer extent (in pixels) used to when querying and (potentially) clipping the layer data during rendering" }, "maximum-extent": { "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query this specific layer data during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Layer." } }, "symbolizers" : { "*": { "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0] ], "doc": "A list of image filters." }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background.", "description": "Map Background image" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "gamma": { "css": "polygon-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "gamma-method": { "css": "polygon-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "clip": { "css": "polygon-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "polygon-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-gamma-method": { "css": "line-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers (only exists for experimental svg support in Mapnik which is not yet enabled)", "default-value": "none", "default-meaning": "solid line" }, "stroke-miterlimit": { "css": "line-miterlimit", "type": "float", "doc": "The limit on the ratio of the miter length to the stroke-width. Used to automatically convert miter joins to bevel joins for sharp angles to avoid the miter extending beyond the thickness of the stroking path. Normally will not need to be set, but a larger value can sometimes help avoid jaggy artifacts.", "default-value": 4.0, "default-meaning": "Will auto-convert miters to bevel line joins when theta is less than 29 degrees as per the SVG spec: 'miterLength / stroke-width = 1 / sin ( theta / 2 )'" }, "clip": { "css": "line-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "line-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "offset": { "css": "line-offset", "type": "float", "default-value": 0, "default-meaning": "no offset", "doc": "Offsets a line a number of pixels parallel to its actual path. Postive values move the line left, negative values move it right (relative to the directionality of the line)." }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." }, "geometry-transform": { "css": "line-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker, if set, overrides both the opacity of both the fill and stroke", "default-value": 1, "default-meaning": "The stroke-opacity and fill-opacity will be used", "type": "float" }, "fill-opacity": { "css": "marker-fill-opacity", "doc": "The fill opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line", "interior" ], "default-value": "point", "default-meaning": "Place markers at the center point (centroid) of the geometry", "doc": "Attempt to place markers on a point, in the center of a polygon, or if markers-placement:line, then multiple times along a line. 'interior' placement can be used to ensure that points placed on polygons are forced to be inside the polygon interior" }, "multi-policy": { "css": "marker-multi-policy", "type": [ "each", "whole", "largest" ], "default-value": "each", "default-meaning": "If a feature contains multiple geometries and the placement type is either point or interior then a marker will be rendered for each", "doc": "A special setting to allow the user to control rendering behavior for 'multi-geometries' (when a feature contains multiple geometries). This setting does not apply to markers placed along lines. The 'each' policy is default and means all geometries will get a marker. The 'whole' policy means that the aggregate centroid between all geometries will be used. The 'largest' policy means that only the largest (by bounding box areas) feature will get a rendered marker (this is how text labeling behaves by default)." }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "expression" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "expression" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated labels", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "clip": { "css": "marker-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "marker-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "marker-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "marker-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "shield": { "name": { "css": "shield-name", "type": "expression", "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "file": { "css": "shield-file", "required": true, "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "type": "boolean", "default-value": false }, "allow-overlap": { "css": "shield-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping shields are shown or hidden.", "default-meaning": "Do not allow shields to overlap with other map elements already placed." }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Determines the minimum amount of padding that a shield gets relative to other shields", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "unsigned", "default-value": 0, "doc": "Length of a chunk of text in characters before wrapping text" }, "wrap-before": { "css": "shield-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "unsigned", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "unsigned" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "(Default 1.0) - opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "auto" }, "vertical-alignment": { "css": "shield-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "The shield's vertical alignment from its centerpoint", "default-value": "middle" }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "justify-alignment": { "css": "shield-justify-alignment", "type": [ "left", "center", "right", "auto" ], "doc": "Define how text in a shield's label is justified", "default-value": "auto" }, "clip": { "css": "shield-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "shield-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" }, "clip": { "css": "line-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "line-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "line-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": [ "local", "global" ], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" }, "opacity": { "css": "polygon-pattern-opacity", "type": "float", "doc": "(Default 1.0) - Apply an opacity level to the image used for the pattern", "default-value": 1, "default-meaning": "The image is rendered without modifications" }, "clip": { "css": "polygon-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "polygon-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "near", "fast", "bilinear", "bilinear8", "bicubic", "spline16", "spline36", "hanning", "hamming", "hermite", "kaiser", "quadric", "catrom", "gaussian", "bessel", "mitchell", "sinc", "lanczos", "blackman" ], "default-value": "near", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "unsigned", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." }, "comp-op": { "css": "raster-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "comp-op": { "css": "point-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "text": { "name": { "css": "text-name", "type": "expression", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "unsigned" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "unsigned" }, "wrap-before": { "css": "text-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "unsigned", "doc": "Distance between repeated text labels on a line (aka. label-spacing)" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "unsigned", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "unsigned", "doc": "Allows the label to be displaced from its ideal position by a number of pixels (only works with placement:line)" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "22.5", "doc": "The maximum angle change, in degrees, allowed between adjacent characters in a label. This value internally is converted to radians to the default is 22.5*math.pi/180.0. The higher the value the fewer labels will be placed around around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "Position of label relative to point position.", "default-value": "auto", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Tell positioning algorithm to avoid labeling near intersection edges.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Determines the minimum amount of padding that a text symbolizer gets relative to other text", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "expression", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. An example is `text-placements: \"E,NE,SE,W,NW,SW\";` " }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "auto" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center", "auto" ], "doc": "Define how text is justified", "default-value": "auto", "default-meaning": "Auto alignment means that text will be centered by default except when using the `placement-type` parameter - in that case either right or left justification will be used automatically depending on where the text could be fit given the `text-placements` directives" }, "clip": { "css": "text-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "text-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "expression", "default-value": "0" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null", "point", "linestring", "polygon", "collection" ] } } mapnik-reference-5.0.6/CHANGELOG.md000066400000000000000000000122001222114036600165360ustar00rootroot00000000000000## CHANGELOG ### 5.0.6 Tagged Sept 26, 2012 Updated when Mapnik 2.3.x was at 68ff3ce. * Added `color-to-alpha` image filter ### 5.0.5 Tagged Sept 19, 2012 Updated when Mapnik master was at 2ebd3e9bf8. * Removed uneeded `description` properties. * Corrected the `text-min-padding` doc to note that it only relates to whether a label is within a given distance of the edge of a (meta)tile not other text. * Added Map `background-image-opacity` and `background-image-comp-op` * Added `line-pattern-offset` * Added `direct-image-filters` * Added `scale-hsla` `image-filter` * Added `raster-colorizer` * Added `text-halo-rasterizer` * Added `geometry-transform` * Added `shield-transform`, `shield-placements`, and `shield-placement-type` * Added `debug-mode` to visualize collision boxes * Moved experimental `latest/datasources.json` to `latest/datasources.template` so `datasources.json` now is fully baked ### 5.0.4 Tagged February 5th, 2013 Updated when Mapnik master was at 19e52c013639. * Exposed simplify and simplify-algorithm properties ### 5.0.3 Tagged January 2, 2013 Updated when Mapnik master was at fd089a228b7. * Added value keywords known by Mapnik for rhs filtering (#42) ### 5.0.2 Tagged November 29, 2012 Updated when Mapnik master was at 26889c4761e. * Added the obscure `shield-unlock-image` parameter, long supported by Mapnik. ### 5.0.1 Tagged November 26, 2012 Updated when Mapnik master was at c39c839452 and 2.1.x branch as at 0b2f2f8ee0. * Adds new reference for Mapnik 2.1.1 (upcoming) * Adds marker-multi-policy option for >= 2.1.1 ### 5.0.0 Tagged Sept 6, 2012 Updated when Mapnik master was at a513d3f97 * Updates the schema by introducing a `"unsigned"` type for integer values. Carto and other parsers will be backwards-compatible with values specified in floats by rounding them to integers. #### 4.0.5 Tagged Aug 30, 2012 Updated when Mapnik master was at 2e44e8c4 * Various docs fixes * Added `interior` option for `markers-placement` * Fixed required values for shields with Mapnik >= 2.1 * Added `map-maximum-extent` * Fixed up layer and style properties in all versions * Remove `font-set` which was uneeded * Fixed doc string for `marker-width`. #### 4.0.4 Tagged Aug 15, 2012 Updated when Mapnik master was at 4cf1484 * Removed experimental `colorize-alpha` comp-op to match Mapnik removal (https://github.com/mapnik/mapnik/issues/1371). #### 4.0.3 Tagged Aug 8, 2012 Updated when Mapnik master was at 7847af51e7 * Corrected internally reported versions for `latest` and `2.0.2` #### 4.0.2 Tagged Aug 8, 2012 Updated when Mapnik master was at 7847af51e7 * Made `point-file` optional * Added `marker-ignore-placement` to 2.0.1 as per backport (https://github.com/mapnik/mapnik/issues/1163) * Added new 2.0.2 reference - an exact copy of 2.0.1 as no changes were made in Mapnik between these releases #### 4.0.1 Tagged Aug 2, 2012 Updated when Mapnik master was at a22b31b0cc * Added `line-gamma-method` and `polygon-gamma-method` * Added `line-miterlimit` * Removed remaining `shield-no-text` from `latest/reference.json` #### 4.0.0 Tagged Aug 1, 2012 Updated when Mapnik master was at a22b31b0cc * Now `transform` properties are `functions` type * Added `fill-opacity` for markers * Exposed clip and smooth on all appropriate symbolizers * Declared `text-orientation` as expression type * Matched `transform` naming with Mapnik * Fixed default value for `raster-scaling` to `near` * Added more `raster-scaling` types: `near,spline36,hanning,hamming,hermite,kaiser,quadric,catrom,bessel,mitchell,sinc,blackman` * Removed `raster-mode`, use `raster-comp-op` instead * Added polygon-pattern-opacity - newly supported in Mapnik * Fixed up which symbolizers support `comp-op` (removed buildings, added line-pattern) * Removed `no-text` for shield symbolizer since Mapnik >= 2.1.x no longer uses this. * Fixed naming of `stroke-dashoffset` * Renamed all instances of `composite-operation` to `comp-op` to match mapnik/svg spec * Fixed `buffer-size` type in 2.0.1 reference (uri -> float) * Improved tests: run them with `make test` #### 3.1.0 * Add `shield-allow-overlap` * Add `shield-vertical-alignment` * Add `text-wrap-before` and `shield-wrap-before` * Made `marker-width`, `marker-height`, and `shield-name` expressions * Fixed default value for text/shield alignment properties #### 3.0.0 * Add `expression` type * Add `functions` type * Add transform function definitions for `point-transform` and, eventually, other transforms #### 2.2.2 * Fixed type definition of `font-directory` in reference targeting latest mapnik #### 2.2.1 * Fixed type definition of `font-directory`, ensuring it is interpreted as a uri #### 2.2.0 * Add `raster-comp-op` (temporarily named `raster-composite-operation`) #### 2.1.0 * Add `invert()` image filter function * Rename `color-spin` compositing to `colorize-alpha` #### 2.0.0 * The style-property `image-filters` becomes of the `functions` type and gains `[name, arity]` specs for each function. #### 1.0.0 * For the property `buffer-size` under the Map symbolizer, the CSS representation becomes `buffer-size`, not `buffer. #### 0.0.1 * Added symbolizer-specific `composite-operation` code. mapnik-reference-5.0.6/LICENSE.md000066400000000000000000000022731222114036600163420ustar00rootroot00000000000000This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to mapnik-reference-5.0.6/Makefile000066400000000000000000000004021222114036600163660ustar00rootroot00000000000000all: latest/datasources.json latest/datasources.json: node util/make-datasource-ref.js latest/datasources.template > latest/datasources.json check test: latest/datasources.json python test/test.py node test/lint.js .PHONY: test latest/datasources.json mapnik-reference-5.0.6/README.md000066400000000000000000000043071222114036600162150ustar00rootroot00000000000000# mapnik-reference `mapnik-reference` is a parse-able spec of what Mapnik can do - what main structures it supports (like layers, styles, and symbolizers) and the properties they can contain. It's useful for building parsers, tests, compilers, and syntax highlighting/checking for languages. ## Versioning The version of this repository indicates the schema of the reference.json file. Schema changes of any type are expected to change the implementation requirements of a parser, so they will increment the major version of this repository in [semver style](http://semver.org/). The directories in this repository directly correspond to released versions of Mapnik and the next targeted release of Mapnik. The latest reference, usually targeted toward a pre-release, is copied into `/latest` for convenience. ## Meaning The structure of the file is as such: * `version`: the version of Mapnik targeted. Same as the containing directory. * `style`: properties of the `Style` XML element * `layer`: properties of the `Layer` XML element * `symbolizers/*`: properties that apply to **all** symbolizers * `symbolizers/symbolizer`: properties that apply to **each** type of symbolizer * `colors`: named colors supported by Mapnik. see `include/mapnik/css_color_grammar.hpp` ## Using This is a valid [npm](http://npmjs.org/) module and therefore can easily be used with [node.js](http://nodejs.org/). npm install mapnik-reference Once installing it as a dependency (like it's used in Carto), it can be included and used for a specific version of Mapnik: ```javascript var mapnik_reference = require('mapnik-reference'); var data = mapnik_reference.version['2.1.0']; ``` Other implementations will want to simply copy the [JSON](http://www.json.org/) file from the desired implementation, like `2.0.1/reference.json`. For python we could consider uploading to pypi if there is interest. The file can then be parsed with any of the many [json parsers](http://www.json.org/). ## Testing Tests require python: make test ## Users * [carto.js](https://github.com/mapbox/carto) * Mapnik itself (the util/validate-mapnik-instance.py is used to check binding consistency like in [#1427](https://github.com/mapnik/mapnik/issues/1427)) mapnik-reference-5.0.6/index.js000066400000000000000000000011131222114036600163730ustar00rootroot00000000000000var fs = require('fs'), path = require('path'); // Load all stated versions into the module exports module.exports.version = {}; ['2.0.0', '2.0.1', '2.0.2', '2.1.0', '2.1.1', 'latest'].map(function(version) { module.exports.version[version] = JSON.parse( fs.readFileSync( path.join(__dirname, version, 'reference.json'), 'utf8')); if (version === 'latest') { module.exports.version[version].datasources = JSON.parse( fs.readFileSync( path.join(__dirname, version, 'datasources.json'), 'utf8')).datasources; } }); mapnik-reference-5.0.6/latest/000077500000000000000000000000001222114036600162265ustar00rootroot00000000000000mapnik-reference-5.0.6/latest/datasources.json000066400000000000000000000402151222114036600214400ustar00rootroot00000000000000{ "datasources": { "csv": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" }, "row_limit": { "type": "unsigned", "doc": "Max amount of features to read from the datasource", "default-value": 0, "default-meaning": "All features will be read from the datasource (unless row_limit is > 1)" }, "strict": { "type": "boolean", "doc": "Control if the datasource should throw on invalid rows", "default-value": false, "default-meaning": "Unless this option is set to true the datasource will skip invalid rows and attempt to parse as much data as possible" }, "inline": { "type": "string", "doc": "Raw tabular data to be read instead of reading data from a file", "default-value": "", "default-meaning": "Unless this option is provided data will be read from the `file` option" }, "escape": { "type": "string", "doc": "The escape character to use for parsing data", "default-value": "A single backslash (aka. reverse solidus): \\", "default-meaning": "A backslash will be used as the assumed character that the data uses for escaping other characters" }, "quote": { "type": "string", "doc": "The quote character to use for parsing data", "default-value": "A quotation mark (aka. double quote): \"", "default-meaning": "A backslash will be used as the assumed character that the data uses for escaping other characters" }, "separator": { "type": "string", "doc": "The separator character to use for parsing data", "default-value": "Basic autodetection is used to determine the best default value if the user does not manually supply a separator.", "default-meaning": "A comma will be used unless more tabs (\t), pipes (|), or semicolons (;) are detected than commas in the header row (in that order of preference)" }, "headers": { "type": "string", "doc": "A comma separated list of header names that can be set to add headers to data that lacks them", "default-value": "", "default-meaning": "Headers will be parsed from the first line of the data unless this option is set" }, "filesize_max": { "type": "float", "doc": "The maximum filesize in MB that will be accepted", "default-value": 20, "default-meaning": "A file that is larger that 20 MB will not be accepted and an error will be throw unless the user manually passes this option with a larger value (useful only in cases where your machine has a lot of memory)" } }, "gdal": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "geojson": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "occi": { "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "ogr": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "osm": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "postgis": { "table": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": true }, "key_field": { "type": "boolean", "doc": "", "default-value": "", "default-meaning": "" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" }, "dbname": { "type": "string", "doc": "Database name", "default-value": "username", "default-meaning": "Will default to a database named after the user (as per libpq defaults)", "required": false }, "host": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "password": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "port": { "type": "unsigned", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "user": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "connect_timeout": { "type": "unsigned", "doc": "", "default-value": 4, "default-meaning": "", "required": false }, "schema": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "extent": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "estimate_extent": { "type": "boolean", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "geometry_table": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "geometry_field": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "cursor_size": { "type": "unsigned", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "row_limit": { "type": "unsigned", "doc": "Max amount of features to read from the datasource", "default-value": 0, "default-meaning": "All features will be read from the datasource (unless row_limit is > 1)", "required": false }, "srid": { "type": "unsigned", "doc": "", "default-value": 0, "default-meaning": "", "required": false }, "initial_size": { "type": "unsigned", "doc": "", "default-value": 1, "default-meaning": "", "required": false }, "max_size": { "type": "unsigned", "doc": "", "default-value": 10, "default-meaning": "", "required": false }, "simplify_geometries": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false }, "autodetect_key_field": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false }, "persist_connection": { "type": "boolean", "doc": "", "default-value": true, "default-meaning": "Connections, successfully created, will be kept open until Mapnik shuts down", "required": false }, "extent_from_subquery": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false } }, "python": { "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "raster": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" } }, "rasterlite": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" } }, "shape": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" } }, "sqlite": { "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" }, "table": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": true }, "key_field": { "type": "boolean", "doc": "", "default-value": "", "default-meaning": "" } } } } mapnik-reference-5.0.6/latest/datasources.template000066400000000000000000000277621222114036600223160ustar00rootroot00000000000000{ "types": { "type": { "type": "string", "doc": "The type of the option", "values": ["string","float","boolean","unsigned"], "required": true }, "doc": { "type": "string", "doc": "The basic description of the option and the expected behavior if you provide it", "required": true }, "default-value": { "type": "string", "doc": "Either an empty string if there is no default value, a description of the default value, or the default value itself (if appropriate)", "required": true }, "default-meaning": { "type": "string", "doc": "A detailed description of what the behavior will be if the default value is left unchanged", "required": true }, "required": { "type": "boolean", "doc": "A boolean value to signify if the option is required. Can be left out and if not present it will be assumed that the option is not required", "required": false }, "recommented": { "type": "boolean", "doc": "A boolean value to signify if the option is recommended, even if it is not required. This is meant to indicate to users that better behavior or performance will be gained if they manually provide the option and that they should seek to understand why it exists (and also why/how it needs to be manually provided)", "required": false } }, "variables": { "encoding": { "type": "string", "doc": "The encoding value for the datasource attributes", "default-value": "utf-8", "default-meaning": "UTF8 will be the assumed encoding for string attribute values" }, "row_limit": { "type": "unsigned", "doc": "Max amount of features to read from the datasource", "default-value": 0, "default-meaning": "All features will be read from the datasource (unless row_limit is > 1)" }, "file": { "type": "string", "doc": "Path to the file for the datasource", "default-value": "", "default-meaning": "", "required": true }, "base": { "type": "string", "doc": "A base path used to complete a full path to a file.", "default-value": "", "default-meaning": "Only the `file` option will be used to attempt to load data from the filesystem" }, "extent" : { "type": "string", "doc": "A comma or space delimited bounding box in the format of minx,miny,maxx,maxy that, if provided, will be used to report the extent of the datasource. The primary reason the option exists is for performance: providing this option at datasource creation saves the time otherwise needed to scan the data for the actual extent, which for large datasets can be very significant. The datasource extent, whether manually provided or automatically calculated is used during rendering to decide if the datasource should be queried for features or not (skipped for best performance). If the extent intersects with the map rendering extent then the datasource will be queried and the query extent will be clipped to the reported datasource extent. So, this means that this option can also be used to restrict which features are available for a given datasource", "default-value": "", "default-meaning": "The datasource extent will be determined at runtime by querying the data, which may be slow, although the extent only needs to be determined once per datasource initialized and it will be cached for further rendering", "recommended": true }, "table" : { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": true }, "key_field": { "type": "boolean", "doc": "", "default-value": "", "default-meaning": "" } }, "datasources": { "csv": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)", "row_limit":"<@(row_limit)", "strict": { "type": "boolean", "doc": "Control if the datasource should throw on invalid rows", "default-value": false, "default-meaning": "Unless this option is set to true the datasource will skip invalid rows and attempt to parse as much data as possible" }, "inline": { "type": "string", "doc": "Raw tabular data to be read instead of reading data from a file", "default-value": "", "default-meaning": "Unless this option is provided data will be read from the `file` option" }, "escape": { "type": "string", "doc": "The escape character to use for parsing data", "default-value": "A single backslash (aka. reverse solidus): \\", "default-meaning": "A backslash will be used as the assumed character that the data uses for escaping other characters" }, "quote": { "type": "string", "doc": "The quote character to use for parsing data", "default-value": "A quotation mark (aka. double quote): \"", "default-meaning": "A backslash will be used as the assumed character that the data uses for escaping other characters" }, "separator": { "type": "string", "doc": "The separator character to use for parsing data", "default-value": "Basic autodetection is used to determine the best default value if the user does not manually supply a separator.", "default-meaning": "A comma will be used unless more tabs (\t), pipes (|), or semicolons (;) are detected than commas in the header row (in that order of preference)" }, "headers": { "type": "string", "doc": "A comma separated list of header names that can be set to add headers to data that lacks them", "default-value": "", "default-meaning": "Headers will be parsed from the first line of the data unless this option is set" }, "filesize_max": { "type": "float", "doc": "The maximum filesize in MB that will be accepted", "default-value": 20.0, "default-meaning": "A file that is larger that 20 MB will not be accepted and an error will be throw unless the user manually passes this option with a larger value (useful only in cases where your machine has a lot of memory)" } }, "gdal": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)" }, "geojson": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)" }, "occi": { "encoding":"<@(encoding)" }, "ogr": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)" }, "osm": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)" }, "postgis": { "table": "<@(table)", "key_field": "<@(key_field)", "encoding":"<@(encoding)", "dbname": { "type": "string", "doc": "Database name", "default-value": "username", "default-meaning": "Will default to a database named after the user (as per libpq defaults)", "required": false }, "host": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "password": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "port": { "type": "unsigned", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "user": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "connect_timeout": { "type": "unsigned", "doc": "", "default-value": 4, "default-meaning": "", "required": false }, "schema": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "extent": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "estimate_extent": { "type": "boolean", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "geometry_table": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "geometry_field": { "type": "string", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "cursor_size": { "type": "unsigned", "doc": "", "default-value": "", "default-meaning": "", "required": false }, "row_limit": { "type": "unsigned", "doc": "Max amount of features to read from the datasource", "default-value": 0, "default-meaning": "All features will be read from the datasource (unless row_limit is > 1)", "required": false }, "srid": { "type": "unsigned", "doc": "", "default-value": 0, "default-meaning": "", "required": false }, "initial_size": { "type": "unsigned", "doc": "", "default-value": 1, "default-meaning": "", "required": false }, "max_size": { "type": "unsigned", "doc": "", "default-value": 10, "default-meaning": "", "required": false }, "simplify_geometries": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false }, "autodetect_key_field": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false }, "persist_connection": { "type": "boolean", "doc": "", "default-value": true, "default-meaning": "Connections, successfully created, will be kept open until Mapnik shuts down", "required": false }, "extent_from_subquery": { "type": "boolean", "doc": "", "default-value": false, "default-meaning": "", "required": false } }, "python": { "encoding":"<@(encoding)" }, "raster": { "file":"<@(file)", "base":"<@(base)" }, "rasterlite": { "file":"<@(file)", "base":"<@(base)" }, "shape": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)" }, "sqlite": { "file":"<@(file)", "base":"<@(base)", "encoding":"<@(encoding)", "table": "<@(table)", "key_field": "<@(key_field)" } } } mapnik-reference-5.0.6/latest/reference.json000066400000000000000000002570151222114036600210710ustar00rootroot00000000000000{ "version": "latest", "style": { "filter-mode": { "type": [ "all", "first" ], "doc": "Control the processing behavior of Rule filters within a Style. If 'all' is used then all Rules are processed sequentially independent of whether any previous filters matched. If 'first' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed ('first' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML)", "default-value": "all", "default-meaning": "All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true." }, "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0], ["colorize-alpha", -1], ["color-to-alpha", 1], ["scale-hsla", 8] ], "doc": "A list of image filters that will be applied to the active rendering canvas for a given style. The presence of one more more `image-filters` will trigger a new canvas to be created before starting to render a style and then this canvas will be composited back into the main canvas after rendering all features and after all `image-filters` have been applied. See `direct-image-filters` if you want to apply a filter directly to the main canvas." }, "direct-image-filters": { "css": "direct-image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0], ["colorize-alpha", -1], ["color-to-alpha", 1], ["scale-hsla", 8] ], "doc": "A list of image filters to apply to the main canvas (see the `image-filters` doc for how they work on a separate canvas)" }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "layer" : { "name": { "default-value": "", "type":"string", "required" : true, "default-meaning": "No layer name has been provided", "doc": "The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique in the map" }, "srs": { "default-value": "", "type":"string", "default-meaning": "No srs value is provided and the value will be inherited from the Map's srs", "doc": "The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: '+init=epsg:4326'" }, "status": { "default-value": true, "type":"boolean", "default-meaning": "This layer will be marked as active and available for processing", "doc": "A property that can be set to false to disable this layer from being processed" }, "minzoom": { "default-value": "0", "type":"float", "default-meaning": "The layer will be visible at the minimum possible scale", "doc": "The minimum scale denominator that this layer will be visible at. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "maxzoom": { "default-value": "1.79769e+308", "type":"float", "default-meaning": "The layer will be visible at the maximum possible scale", "doc": "The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer's visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6" }, "queryable": { "default-value": false, "type":"boolean", "default-meaning": "The layer will not be available for the direct querying of data values", "doc": "This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true" }, "clear-label-cache": { "default-value": false, "type":"boolean", "default-meaning": "The renderer's collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer", "doc": "This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers" }, "group-by": { "default-value": "", "type":"string", "default-meaning": "No special layer grouping will be used during rendering", "doc": "https://github.com/mapnik/mapnik/wiki/Grouped-rendering" }, "buffer-size": { "default-value": "0", "type":"float", "default-meaning": "No custom buffer will be used for the layer and rather the Map buffer-size will be used", "doc": "Extra tolerance around the Layer extent (in pixels) used when querying the layer data during rendering. If set this will override the Map buffer-size" }, "maximum-extent": { "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query this specific layer data during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Layer." } }, "symbolizers" : { "*": { "image-filters": { "css": "image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0], ["colorize-alpha", -1], ["color-to-alpha", 1], ["scale-hsla", 8] ], "doc": "A list of image filters that will be applied to the active rendering canvas for a given style. The presence of one more more `image-filters` will trigger a new canvas to be created before starting to render a style and then this canvas will be composited back into the main canvas after rendering all features and after all `image-filters` have been applied. See `direct-image-filters` if you want to apply a filter directly to the main canvas." }, "direct-image-filters": { "css": "direct-image-filters", "default-value": "none", "default-meaning": "no filters", "type": "functions", "functions": [ ["agg-stack-blur", 2], ["emboss", 0], ["blur", 0], ["gray", 0], ["sobel", 0], ["edge-detect", 0], ["x-gradient", 0], ["y-gradient", 0], ["invert", 0], ["sharpen", 0], ["colorize-alpha", -1], ["color-to-alpha", 1], ["scale-hsla", 8] ], "doc": "A list of image filters to apply to the main canvas (see the `image-filters` doc for how they work on a separate canvas)" }, "comp-op": { "css": "comp-op", "default-value": "src-over", "default-meaning": "add the current layer on top of other layers", "doc": "Composite operation. This defines how this layer should behave relative to layers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "opacity": { "css": "opacity", "type": "float", "doc": "An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer)", "default-value": 1, "default-meaning": "no separate buffer will be used and no alpha will be applied to the style after rendering" } }, "map": { "background-color": { "css": "background-color", "default-value": "none", "default-meaning": "transparent", "type": "color", "doc": "Map Background color" }, "background-image": { "css": "background-image", "type": "uri", "default-value": "", "default-meaning": "transparent", "doc": "An image that is repeated below all features on a map as a background." }, "background-image-comp-op": { "css": "background-image-comp-op", "type": "float", "doc": "Set the compositing operation used to blend the image into the background", "default-value": "src-over", "default-meaning": "The background-image will be blended with the background normally (placed on top of any existing background-color)", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "background-image-opacity": { "css": "background-image-opacity", "type": "float", "doc": "Set the opacity of the image", "default-value": 1, "default-meaning": "The image opacity will not be changed when applied to the map background" }, "srs": { "css": "srs", "type": "string", "default-value": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "default-meaning": "The proj4 literal of EPSG:4326 is assumed to be the Map's spatial reference and all data from layers within this map will be plotted using this coordinate system. If any layers do not declare an srs value then they will be assumed to be in the same srs as the Map and not transformations will be needed to plot them in the Map's coordinate space", "doc": "Map spatial reference (proj4 string)" }, "buffer-size": { "css": "buffer-size", "default-value": "0", "type":"float", "default-meaning": "No buffer will be used", "doc": "Extra tolerance around the map (in pixels) used to ensure labels crossing tile boundaries are equally rendered in each tile (e.g. cut in each tile). Not intended to be used in combination with \"avoid-edges\"." }, "maximum-extent": { "css": "", "default-value": "none", "type":"bbox", "default-meaning": "No clipping extent will be used", "doc": "An extent to be used to limit the bounds used to query all layers during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Map." }, "base": { "css": "base", "default-value": "", "default-meaning": "This base path defaults to an empty string meaning that any relative paths to files referenced in styles or layers will be interpreted relative to the application process.", "type": "string", "doc": "Any relative paths used to reference files will be understood as relative to this directory path if the map is loaded from an in memory object rather than from the filesystem. If the map is loaded from the filesystem and this option is not provided it will be set to the directory of the stylesheet." }, "paths-from-xml": { "css": "", "default-value": true, "default-meaning": "Paths read from XML will be interpreted from the location of the XML", "type": "boolean", "doc": "value to control whether paths in the XML will be interpreted from the location of the XML or from the working directory of the program that calls load_map()" }, "minimum-version": { "css": "", "default-value": "none", "default-meaning": "Mapnik version will not be detected and no error will be thrown about compatibility", "type": "string", "doc": "The minumum Mapnik version (e.g. 0.7.2) needed to use certain functionality in the stylesheet" }, "font-directory": { "css": "font-directory", "type": "uri", "default-value": "none", "default-meaning": "No map-specific fonts will be registered", "doc": "Path to a directory which holds fonts which should be registered when the Map is loaded (in addition to any fonts that may be automatically registered)." } }, "polygon": { "fill": { "css": "polygon-fill", "type": "color", "default-value": "rgba(128,128,128,1)", "default-meaning": "gray and fully opaque (alpha = 1), same as rgb(128,128,128)", "doc": "Fill color to assign to a polygon" }, "fill-opacity": { "css": "polygon-opacity", "type": "float", "doc": "The opacity of the polygon", "default-value": 1, "default-meaning": "opaque" }, "gamma": { "css": "polygon-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon edges" }, "gamma-method": { "css": "polygon-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "clip": { "css": "polygon-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "simplify": { "css": "polygon-simplify", "type": "float", "default-value": 0.0, "default-meaning": "geometry will not be simplified", "doc": "geometries are simplified by the given tolerance" }, "simplify-algorithm": { "css": "polygon-simplify-algorithm", "type": ["radial-distance", "zhao-saalfeld", "visvalingam-whyatt" ], "default-value": "radial-distance", "default-meaning": "geometry will not be simplified using the radial distance algorithm", "doc": "geometries are simplified by the given algorithm" }, "smooth": { "css": "polygon-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line": { "stroke": { "css": "line-color", "default-value": "rgba(0,0,0,1)", "type": "color", "default-meaning": "black and fully opaque (alpha = 1), same as rgb(0,0,0)", "doc": "The color of a drawn line" }, "stroke-width": { "css": "line-width", "default-value": 1, "type": "float", "doc": "The width of a line in pixels" }, "stroke-opacity": { "css": "line-opacity", "default-value": 1, "type": "float", "default-meaning": "opaque", "doc": "The opacity of a line" }, "stroke-linejoin": { "css": "line-join", "default-value": "miter", "type": [ "miter", "round", "bevel" ], "doc": "The behavior of lines when joining" }, "stroke-linecap": { "css": "line-cap", "default-value": "butt", "type": [ "butt", "round", "square" ], "doc": "The display of line endings" }, "stroke-gamma": { "css": "line-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of stroke line" }, "stroke-gamma-method": { "css": "line-gamma-method", "type": [ "power", "linear", "none", "threshold", "multiply" ], "default-value": "power", "default-meaning": "pow(x,gamma) is used to calculate pixel gamma, which produces slightly smoother line and polygon antialiasing than the 'linear' method, while other methods are usually only used to disable AA", "doc": "An Antigrain Geometry specific rendering hint to control the quality of antialiasing. Under the hood in Mapnik this method is used in combination with the 'gamma' value (which defaults to 1). The methods are in the AGG source at https://github.com/mapnik/mapnik/blob/master/deps/agg/include/agg_gamma_functions.h" }, "stroke-dasharray": { "css": "line-dasharray", "type": "numbers", "doc": "A pair of length values [a,b], where (a) is the dash length and (b) is the gap length respectively. More than two values are supported for more complex patterns.", "default-value": "none", "default-meaning": "solid line" }, "stroke-dashoffset": { "css": "line-dash-offset", "type": "numbers", "doc": "valid parameter but not currently used in renderers (only exists for experimental svg support in Mapnik which is not yet enabled)", "default-value": "none", "default-meaning": "solid line" }, "stroke-miterlimit": { "css": "line-miterlimit", "type": "float", "doc": "The limit on the ratio of the miter length to the stroke-width. Used to automatically convert miter joins to bevel joins for sharp angles to avoid the miter extending beyond the thickness of the stroking path. Normally will not need to be set, but a larger value can sometimes help avoid jaggy artifacts.", "default-value": 4.0, "default-meaning": "Will auto-convert miters to bevel line joins when theta is less than 29 degrees as per the SVG spec: 'miterLength / stroke-width = 1 / sin ( theta / 2 )'" }, "clip": { "css": "line-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "simplify": { "css": "line-simplify", "type": "float", "default-value": 0.0, "default-meaning": "geometry will not be simplified", "doc": "geometries are simplified by the given tolerance" }, "simplify-algorithm": { "css": "line-simplify-algorithm", "type": ["radial-distance", "zhao-saalfeld", "visvalingam-whyatt" ], "default-value": "radial-distance", "default-meaning": "geometry will not be simplified using the radial distance algorithm", "doc": "geometries are simplified by the given algorithm" }, "smooth": { "css": "line-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "offset": { "css": "line-offset", "type": "float", "default-value": 0, "default-meaning": "no offset", "doc": "Offsets a line a number of pixels parallel to its actual path. Positive values move the line left, negative values move it right (relative to the directionality of the line)." }, "rasterizer": { "css": "line-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate AGG rendering method that sacrifices some accuracy for speed." }, "geometry-transform": { "css": "line-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "markers": { "file": { "css": "marker-file", "doc": "An SVG file that this marker shows at each placement. If no file is given, the marker will show an ellipse.", "default-value": "", "default-meaning": "An ellipse or circle, if width equals height", "type": "uri" }, "opacity": { "css": "marker-opacity", "doc": "The overall opacity of the marker, if set, overrides both the opacity of both the fill and stroke", "default-value": 1, "default-meaning": "The stroke-opacity and fill-opacity will be used", "type": "float" }, "fill-opacity": { "css": "marker-fill-opacity", "doc": "The fill opacity of the marker", "default-value": 1, "default-meaning": "opaque", "type": "float" }, "stroke": { "css": "marker-line-color", "doc": "The color of the stroke around a marker shape.", "default-value": "black", "type": "color" }, "stroke-width": { "css": "marker-line-width", "doc": "The width of the stroke around a marker shape, in pixels. This is positioned on the boundary, so high values can cover the area itself.", "type": "float" }, "stroke-opacity": { "css": "marker-line-opacity", "default-value": 1, "default-meaning": "opaque", "doc": "The opacity of a line", "type": "float" }, "placement": { "css": "marker-placement", "type": [ "point", "line", "interior" ], "default-value": "point", "default-meaning": "Place markers at the center point (centroid) of the geometry", "doc": "Attempt to place markers on a point, in the center of a polygon, or if markers-placement:line, then multiple times along a line. 'interior' placement can be used to ensure that points placed on polygons are forced to be inside the polygon interior" }, "multi-policy": { "css": "marker-multi-policy", "type": [ "each", "whole", "largest" ], "default-value": "each", "default-meaning": "If a feature contains multiple geometries and the placement type is either point or interior then a marker will be rendered for each", "doc": "A special setting to allow the user to control rendering behavior for 'multi-geometries' (when a feature contains multiple geometries). This setting does not apply to markers placed along lines. The 'each' policy is default and means all geometries will get a marker. The 'whole' policy means that the aggregate centroid between all geometries will be used. The 'largest' policy means that only the largest (by bounding box areas) feature will get a rendered marker (this is how text labeling behaves by default)." }, "marker-type": { "css": "marker-type", "type": [ "arrow", "ellipse" ], "default-value": "ellipse", "doc": "The default marker-type. If a SVG file is not given as the marker-file parameter, the renderer provides either an arrow or an ellipse (a circle if height is equal to width)" }, "width": { "css": "marker-width", "default-value": 10, "doc": "The width of the marker, if using one of the default types.", "type": "expression" }, "height": { "css": "marker-height", "default-value": 10, "doc": "The height of the marker, if using one of the default types.", "type": "expression" }, "fill": { "css": "marker-fill", "default-value": "blue", "doc": "The color of the area of the marker.", "type": "color" }, "allow-overlap": { "css": "marker-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping markers are shown or hidden.", "default-meaning": "Do not allow makers to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "marker-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "spacing": { "css": "marker-spacing", "doc": "Space between repeated markers in pixels. If the spacing is less than the marker size or larger than the line segment length then no marker will be placed", "default-value": 100, "type": "float" }, "max-error": { "css": "marker-max-error", "type": "float", "default-value": 0.2, "doc": "The maximum difference between actual marker placement and the marker-spacing parameter. Setting a high value can allow the renderer to try to resolve placement conflicts with other symbolizers." }, "transform": { "css": "marker-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "clip": { "css": "marker-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "smooth": { "css": "marker-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "marker-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "marker-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "shield": { "name": { "css": "shield-name", "type": "expression", "serialization": "content", "doc": "Value to use for a shield\"s text label. Data columns are specified using brackets like [column_name]" }, "file": { "css": "shield-file", "required": true, "type": "uri", "default-value": "none", "doc": "Image file to render behind the shield text" }, "face-name": { "css": "shield-face-name", "type": "string", "validate": "font", "doc": "Font name and style to use for the shield text", "default-value": "", "required": true }, "unlock-image": { "css": "shield-unlock-image", "type": "boolean", "doc": "This parameter should be set to true if you are trying to position text beside rather than on top of the shield image", "default-value": false, "default-meaning": "text alignment relative to the shield image uses the center of the image as the anchor for text positioning." }, "size": { "css": "shield-size", "type": "float", "doc": "The size of the shield text in pixels" }, "fill": { "css": "shield-fill", "type": "color", "doc": "The color of the shield text" }, "placement": { "css": "shield-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "How this shield should be placed. Point placement attempts to place it on top of points, line places along lines multiple times per feature, vertex places on the vertexes of polygons, and interior attempts to place inside of polygons." }, "avoid-edges": { "css": "shield-avoid-edges", "doc": "Avoid placing shields that intersect with tile boundaries.", "type": "boolean", "default-value": false }, "allow-overlap": { "css": "shield-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping shields are shown or hidden.", "default-meaning": "Do not allow shields to overlap with other map elements already placed." }, "minimum-distance": { "css": "shield-min-distance", "type": "float", "default-value": 0, "doc": "Minimum distance to the next shield symbol, not necessarily the same shield." }, "spacing": { "css": "shield-spacing", "type": "float", "default-value": 0, "doc": "The spacing between repeated occurrences of the same shield on a line" }, "minimum-padding": { "css": "shield-min-padding", "default-value": 0, "doc": "Minimum distance a shield will be placed from the edge of a metatile.", "type": "float" }, "wrap-width": { "css": "shield-wrap-width", "type": "unsigned", "default-value": 0, "doc": "Length of a chunk of text in characters before wrapping text" }, "wrap-before": { "css": "shield-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "shield-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long names." }, "halo-fill": { "css": "shield-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "shield-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "character-spacing": { "css": "shield-character-spacing", "type": "unsigned", "default-value": 0, "doc": "Horizontal spacing between characters (in pixels). Currently works for point placement only, not line placement." }, "line-spacing": { "css": "shield-line-spacing", "doc": "Vertical spacing between lines of multiline labels (in pixels)", "type": "unsigned" }, "dx": { "css": "shield-text-dx", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "shield-text-dy", "type": "float", "doc": "Displace text within shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "shield-dx": { "css": "shield-dx", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "shield-dy": { "css": "shield-dy", "type": "float", "doc": "Displace shield by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "opacity": { "css": "shield-opacity", "type": "float", "doc": "The opacity of the image used for the shield", "default-value": 1 }, "text-opacity": { "css": "shield-text-opacity", "type": "float", "doc": "The opacity of the text placed on top of the shield", "default-value": 1 }, "horizontal-alignment": { "css": "shield-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The shield's horizontal alignment from its centerpoint", "default-value": "auto" }, "vertical-alignment": { "css": "shield-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "The shield's vertical alignment from its centerpoint", "default-value": "middle" }, "placement-type": { "css": "shield-placement-type", "doc": "Re-position and/or re-size shield to avoid overlaps. \"simple\" for basic algorithm (using shield-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "shield-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. An example is `shield-placements: \"E,NE,SE,W,NW,SW\";` " }, "text-transform": { "css": "shield-text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "justify-alignment": { "css": "shield-justify-alignment", "type": [ "left", "center", "right", "auto" ], "doc": "Define how text in a shield's label is justified", "default-value": "auto" }, "transform": { "css": "shield-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "clip": { "css": "shield-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "shield-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "line-pattern": { "file": { "css": "line-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "An image file to be repeated and warped along a line" }, "clip": { "css": "line-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "simplify": { "css": "line-pattern-simplify", "type": "float", "default-value": 0.0, "default-meaning": "geometry will not be simplified", "doc": "geometries are simplified by the given tolerance" }, "simplify-algorithm": { "css": "line-pattern-simplify-algorithm", "type": ["radial-distance", "zhao-saalfeld", "visvalingam-whyatt" ], "default-value": "radial-distance", "default-meaning": "geometry will not be simplified using the radial distance algorithm", "doc": "geometries are simplified by the given algorithm" }, "smooth": { "css": "line-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "offset": { "css": "line-pattern-offset", "type": "float", "default-value": 0, "default-meaning": "no offset", "doc": "Offsets a line a number of pixels parallel to its actual path. Positive values move the line left, negative values move it right (relative to the directionality of the line)." }, "geometry-transform": { "css": "line-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "line-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "polygon-pattern": { "file": { "css": "polygon-pattern-file", "type": "uri", "default-value": "none", "required": true, "doc": "Image to use as a repeated pattern fill within a polygon" }, "alignment": { "css": "polygon-pattern-alignment", "type": [ "local", "global" ], "default-value": "local", "doc": "Specify whether to align pattern fills to the layer or to the map." }, "gamma": { "css": "polygon-pattern-gamma", "type": "float", "default-value": 1, "default-meaning": "fully antialiased", "range": "0-1", "doc": "Level of antialiasing of polygon pattern edges" }, "opacity": { "css": "polygon-pattern-opacity", "type": "float", "doc": "Apply an opacity level to the image used for the pattern", "default-value": 1, "default-meaning": "The image is rendered without modifications" }, "clip": { "css": "polygon-pattern-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "simplify": { "css": "polygon-pattern-simplify", "type": "float", "default-value": 0.0, "default-meaning": "geometry will not be simplified", "doc": "geometries are simplified by the given tolerance" }, "simplify-algorithm": { "css": "polygon-pattern-simplify-algorithm", "type": ["radial-distance", "zhao-saalfeld", "visvalingam-whyatt" ], "default-value": "radial-distance", "default-meaning": "geometry will not be simplified using the radial distance algorithm", "doc": "geometries are simplified by the given algorithm" }, "smooth": { "css": "polygon-pattern-smooth", "type": "float", "default-value": 0, "default-meaning": "no smoothing", "range": "0-1", "doc": "Smooths out geometry angles. 0 is no smoothing, 1 is fully smoothed. Values greater than 1 will produce wild, looping geometries." }, "geometry-transform": { "css": "polygon-pattern-geometry-transform", "type": "functions", "default-value": "none", "default-meaning": "geometry will not be transformed", "doc": "Allows transformation functions to be applied to the geometry.", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ] }, "comp-op": { "css": "polygon-pattern-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "raster": { "opacity": { "css": "raster-opacity", "default-value": 1, "default-meaning": "opaque", "type": "float", "doc": "The opacity of the raster symbolizer on top of other symbolizers." }, "filter-factor": { "css": "raster-filter-factor", "default-value": -1, "default-meaning": "Allow the datasource to choose appropriate downscaling.", "type": "float", "doc": "This is used by the Raster or Gdal datasources to pre-downscale images using overviews. Higher numbers can sometimes cause much better scaled image output, at the cost of speed." }, "scaling": { "css": "raster-scaling", "type": [ "near", "fast", "bilinear", "bilinear8", "bicubic", "spline16", "spline36", "hanning", "hamming", "hermite", "kaiser", "quadric", "catrom", "gaussian", "bessel", "mitchell", "sinc", "lanczos", "blackman" ], "default-value": "near", "doc": "The scaling algorithm used to making different resolution versions of this raster layer. Bilinear is a good compromise between speed and accuracy, while lanczos gives the highest quality." }, "mesh-size": { "css": "raster-mesh-size", "default-value": 16, "default-meaning": "Reprojection mesh will be 1/16 of the resolution of the source image", "type": "unsigned", "doc": "A reduced resolution mesh is used for raster reprojection, and the total image size is divided by the mesh-size to determine the quality of that mesh. Values for mesh-size larger than the default will result in faster reprojection but might lead to distortion." }, "comp-op": { "css": "raster-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] }, "default-mode": { "css": "raster-colorizer-default-mode", "type": [ "discrete", "linear", "exact" ], "doc": "TODO" }, "default-color": { "css": "raster-colorizer-default-color", "type": "color", "doc": "TODO" }, "epsilon": { "css": "raster-colorizer-epsilon", "type": "float", "doc": "TODO" }, "stop": { "css": "raster-colorizer-stops", "type": "tags", "serialization": "tag", "tagname": "tagname", "doc": "TODO" } }, "point": { "file": { "css": "point-file", "type": "uri", "required": false, "default-value": "none", "doc": "Image file to represent a point" }, "allow-overlap": { "css": "point-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping points are shown or hidden.", "default-meaning": "Do not allow points to overlap with each other - overlapping markers will not be shown." }, "ignore-placement": { "css": "point-ignore-placement", "type": "boolean", "default-value": false, "default-meaning": "do not store the bbox of this geometry in the collision detector cache", "doc": "value to control whether the placement of the feature will prevent the placement of other features" }, "opacity": { "css": "point-opacity", "type": "float", "default-value": 1.0, "default-meaning": "Fully opaque", "doc": "A value from 0 to 1 to control the opacity of the point" }, "placement": { "css": "point-placement", "type": [ "centroid", "interior" ], "doc": "How this point should be placed. Centroid calculates the geometric center of a polygon, which can be outside of it, while interior always places inside of a polygon.", "default-value": "centroid" }, "transform": { "css": "point-transform", "type": "functions", "functions": [ ["matrix", 6], ["translate", 2], ["scale", 2], ["rotate", 3], ["skewX", 1], ["skewY", 1] ], "default-value": "", "default-meaning": "No transformation", "doc": "SVG transformation definition" }, "comp-op": { "css": "point-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "text": { "name": { "css": "text-name", "type": "expression", "required": true, "default-value": "", "serialization": "content", "doc": "Value to use for a text label. Data columns are specified using brackets like [column_name]" }, "face-name": { "css": "text-face-name", "type": "string", "validate": "font", "doc": "Font name and style to render a label in", "required": true }, "size": { "css": "text-size", "type": "float", "default-value": 10, "doc": "Text size in pixels" }, "text-ratio": { "css": "text-ratio", "doc": "Define the amount of text (of the total) present on successive lines when wrapping occurs", "default-value": 0, "type": "unsigned" }, "wrap-width": { "css": "text-wrap-width", "doc": "Length of a chunk of text in characters before wrapping text", "default-value": 0, "type": "unsigned" }, "wrap-before": { "css": "text-wrap-before", "type": "boolean", "default-value": false, "doc": "Wrap text before wrap-width is reached. If false, wrapped lines will be a bit longer than wrap-width." }, "wrap-character": { "css": "text-wrap-character", "type": "string", "default-value": " ", "doc": "Use this character instead of a space to wrap long text." }, "spacing": { "css": "text-spacing", "type": "unsigned", "doc": "Distance between repeated text labels on a line (aka. label-spacing)" }, "character-spacing": { "css": "text-character-spacing", "type": "float", "default-value": 0, "doc": "Horizontal spacing adjustment between characters in pixels" }, "line-spacing": { "css": "text-line-spacing", "default-value": 0, "type": "unsigned", "doc": "Vertical spacing adjustment between lines in pixels" }, "label-position-tolerance": { "css": "text-label-position-tolerance", "default-value": 0, "type": "unsigned", "doc": "Allows the label to be displaced from its ideal position by a number of pixels (only works with placement:line)" }, "max-char-angle-delta": { "css": "text-max-char-angle-delta", "type": "float", "default-value": "22.5", "doc": "The maximum angle change, in degrees, allowed between adjacent characters in a label. This value internally is converted to radians to the default is 22.5*math.pi/180.0. The higher the value the fewer labels will be placed around around sharp corners." }, "fill": { "css": "text-fill", "doc": "Specifies the color for the text", "default-value": "#000000", "type": "color" }, "opacity": { "css": "text-opacity", "doc": "A number from 0 to 1 specifying the opacity for the text", "default-value": 1.0, "default-meaning": "Fully opaque", "type": "float" }, "halo-fill": { "css": "text-halo-fill", "type": "color", "default-value": "#FFFFFF", "default-meaning": "white", "doc": "Specifies the color of the halo around the text." }, "halo-radius": { "css": "text-halo-radius", "doc": "Specify the radius of the halo in pixels", "default-value": 0, "default-meaning": "no halo", "type": "float" }, "halo-rasterizer": { "css": "text-halo-rasterizer", "type": [ "full", "fast" ], "default-value": "full", "doc": "Exposes an alternate text halo rendering method that sacrifices quality for speed." }, "dx": { "css": "text-dx", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the X axis. A positive value will shift the text right", "default-value": 0 }, "dy": { "css": "text-dy", "type": "float", "doc": "Displace text by fixed amount, in pixels, +/- along the Y axis. A positive value will shift the text down", "default-value": 0 }, "vertical-alignment": { "css": "text-vertical-alignment", "type": [ "top", "middle", "bottom", "auto" ], "doc": "Position of label relative to point position.", "default-value": "auto", "default-meaning": "Default affected by value of dy; \"bottom\" for dy>0, \"top\" for dy<0." }, "avoid-edges": { "css": "text-avoid-edges", "doc": "Avoid placing labels that intersect with tile boundaries.", "default-value": false, "type": "boolean" }, "minimum-distance": { "css": "text-min-distance", "doc": "Minimum permitted distance to the next text symbolizer.", "type": "float" }, "minimum-padding": { "css": "text-min-padding", "doc": "Minimum distance a text label will be placed from the edge of a metatile.", "type": "float" }, "minimum-path-length": { "css": "text-min-path-length", "type": "float", "default-value": 0, "default-meaning": "place labels on all paths", "doc": "Place labels only on paths longer than this value." }, "allow-overlap": { "css": "text-allow-overlap", "type": "boolean", "default-value": false, "doc": "Control whether overlapping text is shown or hidden.", "default-meaning": "Do not allow text to overlap with other text - overlapping markers will not be shown." }, "orientation": { "css": "text-orientation", "type": "expression", "doc": "Rotate the text." }, "placement": { "css": "text-placement", "type": [ "point", "line", "vertex", "interior" ], "default-value": "point", "doc": "Control the style of placement of a point versus the geometry it is attached to." }, "placement-type": { "css": "text-placement-type", "doc": "Re-position and/or re-size text to avoid overlaps. \"simple\" for basic algorithm (using text-placements string,) \"dummy\" to turn this feature off.", "type": [ "dummy", "simple" ], "default-value": "dummy" }, "placements": { "css": "text-placements", "type": "string", "default-value": "", "doc": "If \"placement-type\" is set to \"simple\", use this \"POSITIONS,[SIZES]\" string. An example is `text-placements: \"E,NE,SE,W,NW,SW\";` " }, "text-transform": { "css": "text-transform", "type": [ "none", "uppercase", "lowercase", "capitalize" ], "doc": "Transform the case of the characters", "default-value": "none" }, "horizontal-alignment": { "css": "text-horizontal-alignment", "type": [ "left", "middle", "right", "auto" ], "doc": "The text's horizontal alignment from its centerpoint", "default-value": "auto" }, "justify-alignment": { "css": "text-align", "type": [ "left", "right", "center", "auto" ], "doc": "Define how text is justified", "default-value": "auto", "default-meaning": "Auto alignment means that text will be centered by default except when using the `placement-type` parameter - in that case either right or left justification will be used automatically depending on where the text could be fit given the `text-placements` directives" }, "clip": { "css": "text-clip", "type": "boolean", "default-value": true, "default-meaning": "geometry will be clipped to map bounds before rendering", "doc": "geometries are clipped to map bounds by default for best rendering performance. In some cases users may wish to disable this to avoid rendering artifacts." }, "comp-op": { "css": "text-comp-op", "default-value": "src-over", "default-meaning": "add the current symbolizer on top of other symbolizer", "doc": "Composite operation. This defines how this symbolizer should behave relative to symbolizers atop or below it.", "type": ["clear", "src", "dst", "src-over", "dst-over", "src-in", "dst-in", "src-out", "dst-out", "src-atop", "dst-atop", "xor", "plus", "minus", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "contrast", "invert", "invert-rgb", "grain-merge", "grain-extract", "hue", "saturation", "color", "value" ] } }, "building": { "fill": { "css": "building-fill", "default-value": "#FFFFFF", "doc": "The color of the buildings walls.", "type": "color" }, "fill-opacity": { "css": "building-fill-opacity", "type": "float", "doc": "The opacity of the building as a whole, including all walls.", "default-value": 1 }, "height": { "css": "building-height", "doc": "The height of the building in pixels.", "type": "expression", "default-value": "0" } }, "debug": { "mode": { "css": "debug-mode", "type": [ "collision", "vertex" ], "default-value": "collision", "doc": "The mode for debug rendering", "type": "string" } } }, "colors": { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255,235,205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "grey": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50], "transparent": [0, 0, 0, 0] }, "filter": { "value": [ "true", "false", "null", "point", "linestring", "polygon", "collection" ] } } mapnik-reference-5.0.6/package.json000066400000000000000000000004311222114036600172160ustar00rootroot00000000000000{ "author": "Mapnik Developers", "name": "mapnik-reference", "description": "Reference for Mapnik Styling Options", "version": "5.0.6", "repository": { "type": "git", "url": "git://github.com/mapnik/mapnik-reference.git" }, "engines": { "node": "*" } } mapnik-reference-5.0.6/test/000077500000000000000000000000001222114036600157115ustar00rootroot00000000000000mapnik-reference-5.0.6/test/lint.js000066400000000000000000000033141222114036600172160ustar00rootroot00000000000000#!/usr/bin/env node var fs = require('fs'); var references = require(".."); var lint_ref = function(ver) { var ref = references.version[ver] var symbolizers = ref.symbolizers; console.log('Missing doc properties'); console.log('----------------------'); var missing_doc_properties = 0; var cursim = ''; for (var symbolizer in symbolizers) { if (symbolizer === 'colors') continue; for (var prop in symbolizers[symbolizer]) { if (!symbolizers[symbolizer][prop].doc) { if (symbolizer !== cursim) { cursim = symbolizer; console.log(symbolizer); } console.log('- ' + prop); missing_doc_properties++; } } } console.log('----------------------'); console.log(missing_doc_properties, 'missing doc properties'); console.log('----------------------'); console.log('Missing default value'); console.log('----------------------'); var missing_doc_properties = 0; var cursim = ''; for (var symbolizer in symbolizers) { if (symbolizer === 'colors') continue; for (var prop in symbolizers[symbolizer]) { if (symbolizers[symbolizer][prop]['default-value'] === undefined) { if (symbolizer !== cursim) { cursim = symbolizer; console.log(symbolizer); } console.log('- ' + prop); missing_doc_properties++; } } } console.log('----------------------'); console.log(missing_doc_properties, 'missing default-value'); } for (var key in references.version) { lint_ref(key); }; mapnik-reference-5.0.6/test/test.py000077500000000000000000000021011222114036600172370ustar00rootroot00000000000000#!/usr/bin/env python try: # <= python 2.5 import simplejson as json except ImportError: # >= python 2.6 import json versions = ['2.0.0','2.0.1', '2.0.2', '2.1.0', '2.1.1', 'latest'] for v in versions: print '-- testing %s/reference.json' % v reference = json.load(open('%s/reference.json' % v, 'r')) assert reference assert reference['version'] == v,"%s not eq to %s" % (reference['version'],v) for sym in reference['symbolizers'].items(): assert sym[1] for i in sym[1].items(): if sym[0] not in ['map','*']: group_name = sym[0] if group_name == 'markers': group_name = 'marker' css_name = i[1]['css'] assert group_name in css_name, "'%s' not properly prefixed by '%s'" % (css_name,group_name) assert 'type' in i[1].keys(), '%s: type not in %s' % (sym[0], i[0]) assert 'doc' in i[1].keys(), '%s: doc string not in %s' % (sym[0], i[0]) assert 'css' in i[1].keys(), '%s: css not in %s' % (sym[0], i[0]) mapnik-reference-5.0.6/util/000077500000000000000000000000001222114036600157075ustar00rootroot00000000000000mapnik-reference-5.0.6/util/make-datasource-ref.js000077500000000000000000000057231222114036600220760ustar00rootroot00000000000000var fs = require('fs'); var path = require('path'); var util = require('util'); var assert = require('assert'); var existsSync = require('fs').existsSync || require('path').existsSync var args = process.argv.slice(1); var cmd = path.basename(process.argv.slice(1,2)); var options = {}; args = args.filter(function (arg) { var match; if (match = arg.match(/^--?([a-z][0-9a-z-]*)$/i)) { arg = match[1] } else { return arg } switch (arg) { case 'd': case 'debug': options.debug = true; break; default: console.log("Usage: "+cmd+" "); console.log("Options:"); console.log(" -d --debug"); process.exit(0); break; } }); var input = args[1]; if (input && input[0] != '/') { input = path.join(process.cwd(), input); } if (!input) { console.log(cmd+": no input file"); process.exit(1); } var ext = path.extname(input); if (!ext) { console.log(cmd+": please pass a layers.json file"); process.exit(1); } if (!existsSync(input)) { console.log(cmd+": file does not exist: '" + input + "'"); process.exit(1); } var data = JSON.parse(fs.readFileSync(input)); // TODO - add support for includes? js_numbers = { 'float':'number', 'unsigned':'number', 'string':'string', 'boolean':'boolean', } function validate_prop(types,prop_name,prop_value) { Object.keys(types).forEach(function(key) { var type_def = types[key]; if (type_def.required) { assert.ok(key in prop_value,key+' not defined for '+ prop_name); } if (type_def.values) { assert.ok(type_def.values.indexOf(prop_value.type) > -1,prop_value.type+' not found in '+ type_def.values); } if (prop_value['default-value']) { assert.ok(typeof(prop_value['default-value']) === js_numbers[prop_value.type],typeof(prop_value['default-value'])+' not === '+prop_value.type+ ' for '+prop_name) } }); } // expand gyp-like variables to build out entire file Object.keys(data.datasources).forEach(function(key) { var ds = data.datasources[key]; // handle commented sections if (key[0] == '#') { delete data.datasources[key]; } else { if (options.debug) console.warn('Handling '+key) Object.keys(ds).forEach(function(prop) { var match = ds[prop].match && ds[prop].match(/<@\((.+)\)/); if (match && match[1]) { ds[prop] = data.variables[prop]; if (options.debug) { console.warn(' handling variable for "'+prop+'"'); } } else { if (options.debug) { console.warn(' handling raw object for "'+prop+'"'); } } validate_prop(data.types,prop,ds[prop]); }); } }); if (!options.debug) { delete data.types; delete data.variables; console.log(JSON.stringify(data,null," ")); }mapnik-reference-5.0.6/util/validate-mapnik-instance.py000077500000000000000000000124371222114036600231430ustar00rootroot00000000000000#!/usr/bin/env python import os import sys import json import mapnik if not mapnik.mapnik_version() > 200100: print 'Error: this script is only designed to work with Mapnik 2.1 and above (you have %s)' % mapnik.mapnik_version_string() sys.exit(1) mapnik_version = mapnik.mapnik_version_string().replace('-pre','') reference_file = './%s/reference.json' % mapnik_version if not os.path.exists(reference_file): print '\n*** WARNING *** reference.json not found for your mapnik version (%s), defaulting to latest\n' % mapnik_version reference_file = './latest/reference.json' reference = json.load(open(reference_file, 'r')) type_mapping = { 'integer':'int', 'float':'float', 'unsigned':'int', 'boolean':'bool', 'uri':'str', 'string':'str', 'color':'mapnik.Color', 'expression':'mapnik.Expression', 'functions':'todo' } style = mapnik.Style() for prop in reference['style'].items(): key = prop[0].replace('-','_') assert hasattr(style,key), "'%s' not a valid property of Style" % key layer = mapnik.Layer('foo') for prop in reference['layer'].items(): key = prop[0].replace('-','_') assert hasattr(layer,key), "'%s' not a valid property of Layer" % key map_instance = mapnik.Map(256,256) for prop in reference['symbolizers']['map'].items(): key = prop[0].replace('-','_') # https://github.com/mapnik/mapnik/issues/1419 if not key in ['minimum_version','paths_from_xml','font_directory']: assert hasattr(map_instance,key), "'%s' not a valid property of Map" % key # https://github.com/mapnik/mapnik/issues/1427 text_fixups = { 'size':'text_size', 'opacity':'text_opacity', 'spacing':'label_spacing', 'max_char_angle_delta':'maximum_angle_char_delta', 'placement':'label_placement' } total_fails = 0 before = 0 for sym in reference['symbolizers'].items(): if sym[0] not in ['map','*']: #if sym[0] in ['raster']: sym_name = ''.join([s.title() for s in sym[0].split('-')]) sym_object = getattr(mapnik,sym_name+'Symbolizer') instance_var = None if sym_name in ['PolygonPattern','LinePattern']: instance_var = sym_object(mapnik.PathExpression('')) elif sym_name == 'Shield': instance_var = sym_object(mapnik.Expression('True'),'DejaVu Sans Book', 10, mapnik.Color('black'), mapnik.PathExpression('')) else: instance_var = sym_object() fails = [] for prop in sym[1]: key = prop.replace('-','_') if key == 'file': key = 'filename' if sym_name == 'Line' and 'stroke' in key: stroke_instance = instance_var.stroke if key == 'stroke': key = 'color' else: key = key.replace('stroke_','') if not hasattr(stroke_instance,key): fails.append("'%s' not a valid property of %s" % (key,'Stroke')) elif sym_name == 'Markers' and 'stroke' in key: stroke_instance = instance_var.stroke if not stroke_instance: # marker.stroke is boost::optional stroke_instance = mapnik.Stroke() if key == 'stroke': key = 'color' else: key = key.replace('stroke_','') if not hasattr(stroke_instance,key): fails.append("'%s' not a valid property of %s" % (key,'Stroke')) else: # temporary hotfix until: https://github.com/mapnik/mapnik/issues/1427 if sym_name in ['Text','Shield']: if key in text_fixups: key = text_fixups[key] if not hasattr(instance_var,key): fails.append("'%s' not a valid property of %s" % (key,sym_name)) else: attr_instance = getattr(instance_var,key) prop_type = sym[1][prop]['type'] if not isinstance(prop_type,list): mapnik_py_type = type_mapping[prop_type] # TODO - make mapnik.Expression ctor a proper class if attr_instance is None: continue if mapnik_py_type == 'mapnik.Expression': #expected_expr = "" expected_expr = "" if not str(type(attr_instance)) == expected_expr: print 'type error: %s for %s/%s is not %s (ex' % (type(attr_instance),sym_name,key) elif prop_type == 'functions': pass else: if not isinstance(attr_instance,eval(mapnik_py_type)): #print sym[1][prop] print 'type error: %s (actual) for %s/%s is not %s (expected)' % (type(attr_instance),sym_name,key,eval(mapnik_py_type)) if len(fails): print '\n\n%s -->\n' % (sym_name) for f in fails: print f #print '(' + '|'.join([i for i in dir(instance_var) if not '__' in i]) + ')' total_fails += len(fails); print '\n\nTotal issues: %s' % total_fails