prettymaps 如何用 plotter 模式导出钢笔绘图仪兼容的 SVG?

发布时间:2026/9/15 16:29:11
prettymaps 如何用 plotter 模式导出钢笔绘图仪兼容的 SVG? prettymaps 如何用 plotter 模式导出钢笔绘图仪兼容的 SVG【免费下载链接】prettymapsDraw pretty maps from OpenStreetMap data! Built with osmnx matplotlib shapely项目地址: https://gitcode.com/GitHub_Trending/pr/prettymaps如果你要从 OpenStreetMap 数据生成一份适合钢笔绘图仪pen plotter执行的线稿输出prettymaps 提供了modeplotter绘图模式。README 的原文描述是“Useplottermode to export a pen plotter-compatible SVG (thanks to abey79s amazing vsketch library)”——即渲染交给 vsketch 库完成产出与绘图仪兼容的 SVG 线条图。完成这一任务只需要三步安装 prettymaps、确认 plotter 预设、用prettymaps.plot()以modeplotter跑一次查询。运行环境为 Python 3.12README 版本徽标plot()会通过 osmnx 从 OpenStreetMap 拉取数据因此需要能访问 OSM 的网络环境。安装与依赖确认本地安装一条命令即可pip install prettymapsplotter 模式依赖的vsketch1.0.0已包含在包的依赖清单里见 requirements.txt 与 prettymaps/draw.py 中的import vsketch随pip install prettymaps一起安装无需额外操作。安装完成后可以先跑一次默认的 matplotlib 模式确认环境可用查询词可以是地址、经纬度元组或 GeoDataFrame 边界这是 README 对your_query的说明import prettymaps prettymaps.plot(Porto Alegre)运行成功时终端会打印一条拉取耗时信息例如 README 文档中的示例输出Fetching geodataframes took 14.43 seconds具体数值随区域和网络变化此处为文档示例值。查看 plotter 相关预设prettymaps 的参数组合以 JSON 文件形式保存在 prettymaps/presets/ 目录下称为 preset。列出全部预设import prettymaps prettymaps.presets()其中与绘图仪直接相关的是plotter和barcelona-plotter两个内置预设。查看某个预设的完整参数prettymaps.preset(barcelona-plotter)返回一个Preset对象其params就是传给prettymaps.plot()的参数字典。直接读预设文件更直观例如 barcelona-plotter.json 定义了layers绘制街道按 highway 类型区分宽度、建筑building标签、绿地三类图层的 OSM 查询style绘图仪风格的样式键如streets: {stroke: 1, fill: 1, penWidth: 2}以及perimeter: {draw: false}表示跳过 perimeter 图层radius: 500、dilate: 100圆形边界半径与边界外扩量。关于这些样式键源码给出了明确的对应关系plotter 模式下每个图层会以stroke、penWidth、fill键调用 vsketch 对象的stroke()、penWidth()、fill()方法缺省时默认stroke(1)、penWidth(0.3)、noFill()draw: false的图层则不绘制见 prettymaps/draw.py 的mode plotter分支。用 plotter 模式运行查询README 给出的 plotter 模式示例是完整可运行的坐标为巴塞罗那某处import prettymaps plot prettymaps.plot( (41.39491, 2.17557), mode plotter, layers dict(perimeter {}), preset barcelona-plotter, scale_x .6, scale_y -.6, )各参数的作用按源码核对如下mode plotter把渲染后端从 matplotlib 切换为 vsketch。此时画布初始化为 A4 横向尺寸vsk.size(a4, landscapeTrue)见 prettymaps/draw.pypreset barcelona-plotter加载上面的预设你额外传入的layers、style会做深度合并并覆盖预设中的同名键源码函数override_preset的说明是 “override it with additional parameters”所以示例里layers dict(perimeter {})是在预设基础上补一个 perimeter 图层而不是替换全部图层scale_x .6、scale_y -.6几何变换参数在绘图前对所有 GeoDataFrame 应用平移、缩放、旋转transform_gdfs见 prettymaps/draw.py查询参数支持地址字符串、(纬度, 经度)元组或 GeoDataFrame换成你自己的区域即可。show参数默认为Trueplotter 模式下showTrue会调用vsk.display()展示 vsketch 结果matplotlib 模式则调用plt.show()见 prettymaps/draw.py。核对输出结果一次成功的运行应满足以下来自文档的现象终端打印拉取耗时如 README 该示例对应的文档输出Fetching geodataframes took 4.82 seconds文档示例值实际耗时因区域而异默认showTrue时弹出 vsketch 画布显示的就是绘图仪兼容的线稿内容——README 上方配图即该命令的运行结果截图函数返回Plot数据类包含geodataframes各图层的 GeoDataFrame 字典、fig、ax等字段可继续用于后续处理。可选分支与限制内置plotter预设plotter.json 包含 streets、building、water、forest、green、beach、parking 全套图层且radius: false即按区域整体绘制而非圆形裁剪README 说明radius False用于 “plot an entire region”。它的style各项为空字典因此所有图层走stroke(1)/penWidth(0.3)/noFill()默认值。自定义样式与保存预设可通过style字典传stroke、fill、penWidth等键调整单个图层的绘图仪风格再用prettymaps.create_preset(my-preset, layers..., style...)存到 presets 目录复用README 的create_preset示例。保存文件的说明仓库文档没有提供“把 vsketch 画布直接另存为 .svg 文件”的参数save_as在源码里走的是plt.savefig()作用于 matplotlib 图不适用于 vsketch 画布。README 的表述是把 plotter 模式本身作为绘图仪兼容 SVG 的导出路径结果经由 vsketch 对象展示。署名要求README 明确要求图中保留致谢文字data © OpenStreetMap contributors 与仓库署名“mandatory by their license”源码中 credit 文本仅在 matplotlib 模式绘制见 prettymaps/draw.py 的mode matplotlib条件plotter 线稿打印时需要自行保留署名。更多基础用法图层与样式自定义、保存地图等可继续参考 docs/usage.md。【免费下载链接】prettymapsDraw pretty maps from OpenStreetMap data! Built with osmnx matplotlib shapely项目地址: https://gitcode.com/GitHub_Trending/pr/prettymaps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考