I have started looking at adapting this for HexDescribe type reasons.
For example: – https://github.com/bluetyson/Map-Generation/blob/main/src/map.py
https://chgowiz-games.blogspot.com/ is working on a epic random generator for a campaign you can read about at his blog – using HexDescribe https://campaignwiki.org/hex-describe
You can see some examples here https://docs.google.com/spreadsheets/d/1G8AZf2tBOtGYr5AEKis7_AZYpJ1_T18LFYp_mi_rikY/edit#gid=1019219400 and https://pastebin.com/raw/W9zgH3pN
Borrowing his business classifications for an example for the Map-Generation software:
The output for this program is GeoJSON, so thanks to QGIS – which is great open source software.
Randomly perturbed Voronoi generation seems to work well for the random wanderiness of towns or cities that spring up.
The original code has churches, monasteries and Cathedrals. Pretty sure our D&D type games don’t need that sort of building type overload.
As well as GeoJSON – it has a viewer script that is basically QTing a PNG, so your usual plt.savefig() before that will get you that version of the output, saved, too. Need to make one that is labelled – maybe a geopandas .
Converting this to perl directly would take a bit of work – no higher level geospatial apis like shapely around there, so would have to redo in gdal directly :- https://metacpan.org/pod/Geo::GDAL. Probably easier to wrap, for fun.