|
||
---|---|---|
.github/workflows | ||
doc | ||
icons | ||
roentgen | ||
scheme | ||
test | ||
.gitattributes | ||
.gitignore | ||
README.md | ||
requirements.txt | ||
roentgen.py |
Röntgen (or Roentgen when ASCII is preferred) project consists of
- simple Python OpenStreetMap renderer (see usage, renderer documentation),
- set of CC-BY 4.0 icons that can be used outside the project.
The idea behind the Röntgen project is to show all the richness of the OpenStreetMap data: to have a possibility to display any map feature represented by OpenStreetMap data tags by means of colors, shapes, and icons. Röntgen is created for OpenStreetMap contributors: to display all changes one made on the map even if they are small, and for users: to dig down into the map and find every detail that was mapped.
Unlike standard OpenStreetMap layers, Röntgen is a playground for experiments where one can easily try to support proposed tags, tags with little or even single usage, deprecated tags.
Röntgen is intended to be highly configurable, so it can generate precise but messy maps for OSM contributors as well as pretty and clean maps for OSM users, can use slow algorithms for some experimental features.
Usage
To get SVG map, just run
python roentgen.py -b <lon1>,<lat1>,<lon2>,<lat2>
(e.g. python roentgen.py -b 2.284,48.86,2.29,48.865
). It will automatically download OSM data and write output map to map.svg
. For more options see Map generation.
Map features
Röntgen features:
- detailed icons to display subtypes like power tower design,
- can display multiple icons for one entity to cover more features,
- use color to visualize
colour
and other features like plant types, - display privitive 3D shapes for buildings,
- display directions with gradient sectors,
- use width to display roads.
Simple building shapes
Simple shapes for walls and shade in proportion to building:levels
, building:min_level
, height
and min_height
values.
Trees
Visualization of tree leaf types (broadleaved or needleleaved) and genus or taxon by means of icon shapes and leaf cycles (deciduous or evergreen) by means of color.
Viewpoint and camera direction
Visualize direction
tag for tourism
=viewpoint
and camera:direction
for man_made
=surveillance
.
Power tower design
Visualize design
values used with power
=tower
tag.
Emergency
Japanese map symbols
There are special symbols appearing on Japanese maps.
Icon set
If tag is drawable it is displayed using icon combination and colors. All icons are under CC BY license. So, do whatever you want but give appropriate credit. Icon set is heavily inspired by Maki, Osmic, and Temaki icon sets.
Feel free to request new icons via issues for whatever you want to see on the map. No matter how frequently the tag is used in OpenStreetMap since final goal is to cover all tags. However, common used tags have priority, other things being equal.
Generate icon grid and individual icons with python roentgen.py icons
. It will create icon_grid.svg
file, and SVG files in icon_set/ids
directory where files are named using shape identifiers (e.g. power_tower_portal_2_level.svg
) and in icon_set/names
directory where files are named using shape names (e.g. Röntgen portal two-level transmission tower.svg
). Files from the last directory are used in OpenStreetMap wiki (e.g. File:Röntgen_portal_two-level_transmission_tower.svg
).
Icon combination
Some icons can be combined into new icons.
Map styles
All tags style
Options: --show-missing-tags --overlap 0
.
Display as many OpenStreetMap data tags on the map as possible.
Pretty style
Options: --draw-captions main --level overground
.
Display only not overlapping icons and main captions.
Creation time mode
Visualize element creation time with --mode time
.
Author mode
Every way and node displayed with the random color picked for each author with --mode user-coloring
.
Map generation
Requirements
- Python (at least 3.8).
Installation
pip install -r requirements.txt
Script running
There are simple Python renderer that generates SVG map from OpenStreetMap data. You can run it using:
python roentgen.py \
-b ${LONGITUDE_1},${LATITUDE_1},${LONGITUDE_2},${LATITUDE_2} \
-o ${OUTPUT_FILE_NAME} \
-s ${OSM_ZOOM_LEVEL}
Example:
python roentgen.py -b 2.284,48.86,2.29,48.865
Main arguments
Required
--boundary-box
or-b
: boundary box to draw. Value:<longitude 1>,<latitude 1>,<longitude 2>,<latitude 2>
. If first value is negative, use quotation marks and space before first-
. For example,-b " -122.335,47.614,-122.325,47.617"
.
Optional
--scale
or-s
: OSM zoom level. Default is 18.-o
: path to output SVG file name. Default ismap.svg
.-i
: path to input XML file name. If this argument is not set, XML file will be downloaded through OpenStreetMap API.
Check all arguments with python roentgen.py --help
.
Tile generation
python roentgen.py tile \
-c ${LATITUDE},${LONGITUDE} \
-s ${OSM_ZOOM_LEVEL}
Tile will be stored as SVG file to tiles/tile_<zoom level>_<x>_<y>.svg
, where x
and y
are tile coordinates.
Example:
python roentgen.py tile -c 55.7510637,37.6270761 -s 18
will generate SVG file tiles/tile_18_158471_81953.svg
.