Map SVG is an alternative representation of Map JSON. With this software, Map SVG can be generated from and converted back to Map JSON.
This repo provides
- the JS Web Converter
- the CLI
npx valetudo-map-svg
, where you can pipe in Map JSON or Map SVG and the other format is piped out - this package as a library for your JS software
Map SVG may be easier to use, because common software like web browsers and file browsers can directly render it. That's also why Map SVG contains embedded styling (and the segment coloring). Styling is done with CSS, so you can restyle Map SVG by swapping out the style
or marker
elements. Even with embedded styling, Map SVG is usually smaller than Map JSON, either compared as plain text or gzipped, because it uses a more efficient textual encoding. While Map SVG is easy to use for your own software if you want to show the map, the widespread support of SVG should make even more advanced use cases possible. For example, the Map JSON to Minecraft export could possibly be implemented by importing Map SVG in a CAD tool, extrude it, and export it with an ordinary CAD to Minecraft tool.
Conversion of Map JSON's compressedPixels
to an SVG path (and back) is non-trivial. The implementation is optimized, so it only needs constant extra space (excluding the input and output data). Runtime is pixels
or bitmaps).
Segment coloring is done with sweep line algorithms. When