Reads a series of text files for each elevation of a Dwarf Fortress embark, and creates an Excel workbook showing the embark area's topography with one worksheet per elevation. The workbook formats cell contents to differentiate various tile types (currently, bodies of water, trees, grass, plants, boulders, rock walls/ramps, soil walls/ramps, pebbles, and subterranean tiles).
This is a much better method than my first attempt that did a lot of image processing of screenshots, but does require use of DFHack to create the text files.
pip install -r requirements.txt
Currently uses:
- openpyxl
See Installing DFHack for instructions on how to install DFHack.
Copy export-map.lua to the DFHack scripts folder (in the Steam version, that's Dwarf Fortress/dfhack-config/scripts).
Ideally, right after you start a new embark with DFHack enabled,
pause the game and run export-map in DFHack.
By default, export-map will not show any fully subterranean elevations to reduce spoilers.
Run it as export-map spoilers to get exports from all elevations.
This will write a set of map-exports/NAME_OF_FORTRESS/NAME_OF_FORTRESS-*.txt files under the main Dwarf Fortress folder.
Organize your text export files in this folder by world name, for example: elevations/Quakevaults/Quakevaults-*.txt for all text files from the Quakevaults embark.
python df-map-export.py --help for help. Currently shows:
usage: df-map-export.py [-h] [--basedir BASEDIR] [--zoom ZOOM] [--embark-elevation EMBARK_ELEVATION] [--enable-macros]
world
positional arguments:
world Folder in basedir containing minimap screenshots
options:
-h, --help show this help message and exit
--basedir BASEDIR Base directory containing folders with minimap elevations (defaults to
'elevations')
--zoom ZOOM Spreadsheet zoom level (in percent, defaults to 25)
--embark-elevation EMBARK_ELEVATION
Elevation of embark site (if specified, will set active sheet in Excel workbook)
--enable-macros Create Excel workbook with macros to propagate zoom level and cell location across sheets
The --enable-macros parameter adds some VBA code to the workbook that will keep track of your zoom level and position in the active worksheet and set the zoom level and position of new worksheets to match.
That lets you easily move through worksheets to get a feel for how your fortress works in a 3D sense.
For example, if you use the default text files in the examples/elevations/Quakevaults folder:
python .\df-map-export.py --basedir examples/elevations Quakevaults --embark-elevation 46
Or if you copy them to the elevations folder:
python .\df-map-export.py Quakevaults --embark-elevation 46
See the examples folder for some elevation files and resulting spreadsheets.