MapToPoster: Pythonでミニマリスト都市ポスターを作成

MapToPoster: Pythonでミニマリスト都市ポスターを作成

お気に入りの都市のクリーンでアーティスティックな地図を作りたいと思ったことがあれば、MapToPosterがそのツールです。純粋なPythonで書かれたオープンソースプロジェクトで、OpenStreetMap(OSM)のデータをMatplotlibで組み合わせて洗練されたポスターに仕上げます。趣味の地図作成者、ユニークな背景を探しているデザイナー、視覚化ツールが必要なデータサイエンティスト—何にとっても、このリポジトリはすぐに使えるすべてを提供します。


1. MapToPosterが提供するもの

機能 説明
設定不要生成 単一のCLIコマンドで、選択した半径を中心とした都市のPNGを生成します。
18種類のあらかじめ用意されたテーマ クラシックノワールから未来的なネオンサイバーパンクまで、各テーマは背景、道路の色、グラデーションを自動で調整します。
カスタマイズ可能なテーマJSON themes/{name}.jsonファイルを編集して独自のテーマを作成し、すべてのカラーを制御できます。
柔軟な距離設定 必要に応じて4 km(市中心)から20 km(全市)まで半径を選択できます。
携帯性 コードは osmnxnetworkxmatplotlib など、定期的に保守されているライブラリにのみ依存します。必要なのはPython 3.9+だけです。
MITライセンス 無償で利用、改変、再配布が可能です。

2. クイックスタート

  1. リポジトリをクローン

    git clone https://github.com/originalankur/maptoposter.git
    cd maptoposter
    

  2. 仮想環境を作成(推奨)

    python -m venv .venv
    source .venv/bin/activate   # Windows: .venv\Scripts\activate
    

  3. 依存関係をインストール

    pip install -r requirements.txt
    

  4. ポスターを生成

    python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
    

    結果: posters/barcelona_warm_beige_20260108_172924.png が生成されます。

引数を任意の都市/国の組み合わせとテーマ名に置き換えることができます。python create_map_poster.py --list-themes を実行して、利用可能な全オプションを確認してください。


3. テーマ一覧

テーマ スタイル 推奨用途
feature_based 道路階層付きのクラシックな黒と白 テキスト重視の地図凡例
gradient_roads 滑らかなグラデーションの道路 科学的可視化
noir 純黒背景に白い道路 映画・ウェブサイト向けのポスターデザイン
midnight_blue 紺色の背景、金色の道路 夜の都市ムード
blueprint 建築図面 建築プロジェクト
neon_cyberpunk 電気ピンク/シアンを散りばめたダーク 未来的なゲーム背景
warm_beige セピア調 ヴィンテージ風都市ムード
pastel_dream 柔らかなパステル 軽やかなウェディング招待状
japanese_ink ミニマリストな墨絵 文化作品
forest 濃い緑 自然志向のテーマ
ocean 青とティール 沿岸都市のレイアウト
terracotta 地中海風の暖かさ 暖かい旅行ポスター
sunset 暖かなオレンジ 夕暮れ都市アート
autumn 燃える赤 秋季テーマ
copper_patina 酸化銅 産業系・ヴィンテージスタイル
monochrome_blue 単一の青系統 企業ブランディング

4. MapToPosterの拡張

4.1 新しいテーマの追加

例:my_fantasy.json:

{
  "name": "Fantasy",
  "description": "A whimsical map theme",
  "bg": "#111111",
  "text": "#AAFFAA",
  "gradient_color": "#22AA22",
  "water": "#004400",
  "parks": "#006600",
  "road_motorway": "#FF0044",
  "road_primary": "#FF8844",
  "road_secondary": "#FFCC44",
  "road_tertiary": "#FFF444",
  "road_residential": "#999999",
  "road_default": "#666666"
}
ポスター生成器を -t fantasy で実行します。

4.2 新しい地図レイヤーの追加

道路の前に鉄道を挿入するには:

# create_map_poster.pyで公園取得後に
try:
    railways = ox.features_from_point(point, tags={"railway": "rail"}, dist=dist)
except Exception:
    railways = None
if railways is not None and not railways.empty:
    railways.plot(ax=ax, color=THEME["railway"], linewidth=0.5, zorder=2.5)
テーマJSONに railway 色を定義してください。


5. 性能に関する考慮点

  • 距離制限:大きな半径はOSMからのデータダウンロードを遅くします。-d は20 km以下にして高速実行を心がけてください。
  • キャッシュ:OSMnxはOSMデータを自動的にローカルにキャッシュします。同じ都市を再度実行すると、明らかに高速です。
  • ネットワークタイプ:デフォルトは drive。軽量データが必要なら walk または bike に切り替えてください。
  • DPI:デフォルトは300 dpiです。高速プレビューには150 dpiに設定してください。

6. MapToPosterを使う理由

  • ゼロオーバーヘッド:サインアップやAPIキーは不要です。全データはOSMから直接取得されます。
  • 創作の自由度:テーマはモジュール化されており、デザイナーは色、グラデーション、タイポグラフィを調整できます。
  • 再現性:スクリプトは決定論的です。同じ入力であれば、常に同じ画像が生成されます。
  • コミュニティ主導:約5,000件のスターと394件のフォークを誇り、活発なコミュニティ支援があります。

7. 今日から始めよう

  1. リポジトリをフォークするか、ローカルにクローンしてください。
  2. 既存のテーマを探索し、いくつかの例を実行してみてください。
  3. 自分だけのポスターを作成し、SNSで共有するか、ブログ記事に埋め込んでください。
  4. コントリビューション:バグを発見したらIssueを、または新テーマを提案したらPull Requestを開いてください。

MapToPosterは都市の道路網を視覚的なストーリーへ変換します。旅行ガイド、背景アート、学術図表などを作成する際に、このプロジェクトは高速、スケーラブル、そして美しいマップポスターを作る方法を提供します。全てオープンソース技術で動作します。

マッピングを楽しんでください!

この記事を共有