Osmgraph.pm
Jump to navigation
Jump to search
Introduction
This is a PERL module with several functions for drawing simple maps. This page shows the functions of Version 2.0 of the module. The module is used by osmrender.pl and Mapping Quality i.e.
Version 2.0 also supports SVG maps with textPaths for street names.
Problems with special characters in SVG?
Edit the first line of the SVG-file: either use
- encoding="utf-8" or
- encoding="iso-8859-1"
Sometimes one or the other works. I haven't figured it out yet...
Functions
General
- enableSVG ()
- initGraph ($sizeX, $left, $bottom, $right, $top) - give real world coordinates, sizeX in pixels, Y is automatic
- writeGraph ($fileName) - write drawn graphic to file in png format
- writeSVG ($fileName) - write drawn graphic to file in SVG format
Map
- drawArea ($color, @nodes) - color as string, nodes as array ($lon1, $lat1, $lon2, $lat2...)
- drawNodeDot ($lon, $lat, $color, $size) - draws dot at real world position, size (1..5)
- drawNodeCircle ($lon, $lat, $color, $size) - draws circle at real world position, size (1..5)
- drawRuler ($color) - size and position is automatic, top right corner
- drawTextPix ($x, $y, $text, $color, $size) - draws text at pixel position, size (1..5)
- drawTextPos ($lon, $lat, $offX, $offY, $text, $color, $size) - draws text at real world coordinates, offsets can be given in pixels, $size (1..5)
- drawWay ($color, $size, @nodes) - draws way given by nodes in array ($lon1, $lat1, $lon2, $lat2...), size = thickness
- labelWay ($col, $size, $font, $text, $tSpan, @nodes) - labels a way with i.e. a street name. tSpan = offset to line/way (will only be drawn in SVG image!)
Information
- drawHead ($text, $color, $size) - text for top left, size (1..5)
- drawFoot ($text, $color, $size) - text for bottom left, size (1..5)
- drawLegend ($size, @entries) - draw legend texts in different colors, size (1..5) Example: ("text2", "col1", "text1", "col2").
Geometry
- drawCircleRadius ($lon, $lat, $radius, $size, $color) - draws circle at real world coordinates, radius in meters
- drawCircleRadiusText ($lon, $lat, $radius, $size, $color, $text) - draws circle at real world coordinates, radius in meters, draws text below circle
Chart
- drawChartColumns ($lon, $lat, $offX, $offY, $sizeY, $columnWidthPix, $yMax, $color, @values) - draws a chart at real world coordinates, offsets can be given. Size in height must be given, Max Y for this height as well. Column width must be given in pixels. Values as array (v1, v2...).
Colors
- black
- darkgray
- gray
- lightgray
- white
- red
- orange
- darkorange
- tomato
- yellow
- blue
- lightblue
- pink
- green
- darkgreen
- lightgreen
- brown
- lightbrown
Hint
The outcommented function nodes2Coordinates can be used in the main program to convert lists of nodeIds to lists of coordinate pairs.