开发者生态
morning
设计展示您所在国家/地区电网的海报
2026-05-18
1 阅读
lyoncy
Grid2Poster 从 OpenStreetMap 数据生成可打印的电网基础设施海报。使用 GeoPandas、OSMnx 和 Matplotlib 下载并渲染一个国家或大陆的传输线。该项目深受 Maptoposter 的启发并重复使用了样式。 Grid2Poster 支持国家、州、省和大洲,以及预定义的区域。 Data Grid2Poster 使用 OpenStreetMap 功能标记为: power=line power=minor_line(启用时) power=cable(启用时) 功能完整性取决于所选国家或地区的 OpenStreetMap 覆盖范围。为数据做出贡献 通过直接在 OpenStreetMap 中映射传输基础设施,可以提高您所在国家/地区的覆盖范围和质量。 MapYourGrid 是一项协调这项工作的社区倡议。它提供教程、国家级完整性/质量统计数据和地图工具,用于从图像中追踪电力线、发电机和变电站。安装 python -m venv .venv source .venv/bin/activate pip install -rrequirements.txt 用法 默认情况下,每次运行都会写入 PNG 和 SVG: python create_grid_poster.py --country Bulgaria 对于大国,减小立交桥查询图块大小: python create_grid_poster.py --country Vietnam --tile-size-km 150 包括配电网(如果有)。覆盖范围在全球范围内显着不同: python create_grid_poster.py --country 德国 --include-minor-lines 列出可用主题。在“themes”目录中创建一个新的主题 JSON 文件以查找您自己的样式。 python create_grid_poster.py --list-themes 使用本地 GeoJSON 文件作为边界而不是地理编码(对于自定义区域或次国家区域很方便)。文件中的所有多边形要素都分解为单个边界。 --country 值仍用于海报标题和输出文件名。 --landscape 将以横向(水平)方向渲染。 python create_grid_poster.py --country "中东和北非" --boundary-geojson ./regions/mena.geojson --landscape --theme neon_cyberpunk 渲染整个大陆。大陆边界来自 Natural Earth admin-0 数据集(首次使用时下载并缓存),因为 Nominatim 不解析大陆名称。接受的值为非洲、南极洲、亚洲、欧洲、北美洲、大洋洲和南美洲。全球这个聚合名称结合了每个有人居住的大陆。 python create_grid_poster.py --country Africa --tile-size-km 500 大陆规模的运行会数百次访问 Overpass API,并且可能需要几个小时。较大的 --tile-size-km 会减少查询数量;选择一个仍低于 Overpass 每个查询大小限制的值。选项 选项 默认 说明 --country - 可通过 Nominatim 解析的国家或地区名称、大陆名称( Africa 、 Antarctica 、 Asia 、 Europe 、 North America 、 Oceania 、 South America )或聚合 Global --boundary-geojson - 具有多边形边界特征的本地 GeoJSON 文件的路径。覆盖 Nominatim/Natural Earth 查找。对于自定义区域、次国家区域或离线工作流程很有用。 --display-country value of --country 要打印在海报上的文本。当地理编码器名称与所需标题不同时很有用。 --subtitle ELECTRICAL TRANSMISSION GRID(或带 --include-minor-lines 的 ELECTRICAL GRID)覆盖国家/地区名称下打印的副标题。 --padding 0.10 边界周围的小数填充。较低的值会放大(0 = 紧密配合,-0.05 = 稍微裁剪到边界内);较高的值会拉出视图。 --theme paper_grid 主题/目录中的主题 ID。 --list-themes - 列出可用主题并退出。 --include-minor-lines off 还获取 power=minor_line 功能。 --include-cables / --no-include-cables 获取电源 = 电缆功能(地下/海底)。默认开启;通过 --no-include-cables 跳过。 --include-outlying off 使海外领土和其他多边形远离主陆地。默认情况下,地理编码边界会过滤到大陆(和附近的岛屿),因此荷兰或法国等国家的海报不包括阿鲁巴、库拉索、法属圭亚那等。 --paper-size - 命名预设,纵向。覆盖 --width / --height 。选项:a5、a4、a3、a2、a1、a0、letter、legal、tabloid。与--landscape结合进行翻转。 --width 297.0 海报宽度(以毫米为单位)(默认值:A3 短边)。 --height 420.0 海报高度(以毫米为单位)(默认值:A3 长边)。 --landscape off 以横向(水平)方向渲染。如果宽度 < 高度,则交换宽度和高度。 --dpi 300 光栅输出 DPI(适用于 PNG 输出)。 --title-size 自动标题字体大小(以磅为单位)。默认情况下根据海报尺寸自动缩放;设置为覆盖。 --tile-size-km 200 立交桥查询图块大小(以公里为单位)。对于幅员辽阔的国家或繁忙的服务器,请使用较小的值。 --format png svg 输出格式: png 、 svg 、 pdf 的任意组合。一次运行会写入多个值。 --output 在海报/输出文件中自动生成