MapToPoster: Pythonでミニマリスト都市ポスターを作成
MapToPoster: Pythonでミニマリスト都市ポスターを作成
お気に入りの都市のクリーンでアーティスティックな地図を作りたいと思ったことがあれば、MapToPosterがそのツールです。純粋なPythonで書かれたオープンソースプロジェクトで、OpenStreetMap(OSM)のデータをMatplotlibで組み合わせて洗練されたポスターに仕上げます。趣味の地図作成者、ユニークな背景を探しているデザイナー、視覚化ツールが必要なデータサイエンティスト—何にとっても、このリポジトリはすぐに使えるすべてを提供します。
1. MapToPosterが提供するもの
| 機能 | 説明 |
|---|---|
| 設定不要生成 | 単一のCLIコマンドで、選択した半径を中心とした都市のPNGを生成します。 |
| 18種類のあらかじめ用意されたテーマ | クラシックノワールから未来的なネオンサイバーパンクまで、各テーマは背景、道路の色、グラデーションを自動で調整します。 |
| カスタマイズ可能なテーマJSON | themes/{name}.jsonファイルを編集して独自のテーマを作成し、すべてのカラーを制御できます。 |
| 柔軟な距離設定 | 必要に応じて4 km(市中心)から20 km(全市)まで半径を選択できます。 |
| 携帯性 | コードは osmnx、networkx、matplotlib など、定期的に保守されているライブラリにのみ依存します。必要なのはPython 3.9+だけです。 |
| MITライセンス | 無償で利用、改変、再配布が可能です。 |
2. クイックスタート
-
リポジトリをクローン
git clone https://github.com/originalankur/maptoposter.git cd maptoposter -
仮想環境を作成(推奨)
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate -
依存関係をインストール
pip install -r requirements.txt -
ポスターを生成
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)
railway 色を定義してください。
5. 性能に関する考慮点
- 距離制限:大きな半径はOSMからのデータダウンロードを遅くします。
-dは20 km以下にして高速実行を心がけてください。 - キャッシュ:OSMnxはOSMデータを自動的にローカルにキャッシュします。同じ都市を再度実行すると、明らかに高速です。
- ネットワークタイプ:デフォルトは
drive。軽量データが必要ならwalkまたはbikeに切り替えてください。 - DPI:デフォルトは300 dpiです。高速プレビューには150 dpiに設定してください。
6. MapToPosterを使う理由
- ゼロオーバーヘッド:サインアップやAPIキーは不要です。全データはOSMから直接取得されます。
- 創作の自由度:テーマはモジュール化されており、デザイナーは色、グラデーション、タイポグラフィを調整できます。
- 再現性:スクリプトは決定論的です。同じ入力であれば、常に同じ画像が生成されます。
- コミュニティ主導:約5,000件のスターと394件のフォークを誇り、活発なコミュニティ支援があります。
7. 今日から始めよう
- リポジトリをフォークするか、ローカルにクローンしてください。
- 既存のテーマを探索し、いくつかの例を実行してみてください。
- 自分だけのポスターを作成し、SNSで共有するか、ブログ記事に埋め込んでください。
- コントリビューション:バグを発見したらIssueを、または新テーマを提案したらPull Requestを開いてください。
MapToPosterは都市の道路網を視覚的なストーリーへ変換します。旅行ガイド、背景アート、学術図表などを作成する際に、このプロジェクトは高速、スケーラブル、そして美しいマップポスターを作る方法を提供します。全てオープンソース技術で動作します。
マッピングを楽しんでください!
元の記事:
オリジナルを見る