パソコン情報

Python初心者が、Geminiに聞いて地図を作製した方法

ココがポイント

PythonをWindowsPCで使用するなんて初めて!

キャンプ場の場所をピン立て明記

始まりは、もう一つの運営ブログ「ゆったり日和(アウトドアを気楽にENJOY)」にて、4ヶ所のキャンプ場をピックアップしたのですが、地図にピン立てしてキャンプ場名を記載するのが、画像加工が必要になったことで、もっと簡単に地図画像を作成する方法は無い物かと色々やっていました。

最初は、ダイレクトに、Windows11搭載のCopilotにて、キャンプ場名から地図を作製する指示をしましたが、なかなか正確な地図が生成されませんでした。

次に、Geminiから同じ指示をすると、Googleのリンクリストを教えてくれるだけで地図は生成できませんでした。そこから、生成する方法はないのか?と聞いたら、Pythonで作成する方法を指示されました。

ココがダメ

Pythonって言っても、今まで使ったことがありません!

もし、AIを有償に変更すればダイレクトに地図の生成をしてくれるならと考えましたが、その前にできるのか?もわからないし、毎月支払う料金が発生しますので、まずは、Pythonをやってみることにしました。

 

Geminiに言われるまま環境準備

参考

(1)VS Codeをインストール Visual Studio Code公式サイトからWindows版をダウンロードしてインストールします。

(2)日本語化とPython対応 VS Codeを起動し、左側のメニューにある「四角いアイコン(Extensions)」をクリックします。

    • Japanese と検索して「Japanese Language Pack」をインストール(右下の再起動ボタンを押す)。

    • Python と検索して、Microsoft製の「Python」拡張機能をインストール。

 

ここから、Microsoft製の「Python」拡張機能のインストールで戸惑いました。

参考

(1)VS Codeの「ファイル」メニューから「新しいテキストファイル」を作成。

(2)ファイル名を test.py として保存(保存場所はデスクトップなどでOK)。

(3)以下のコードをコピーして貼り付けます。

Python

 
print("Hello, Python!")

(4)画面右上の 「▷(実行ボタン)」 をクリック!

(5)画面下のターミナルに Hello, Python! と出れば、あなたのPCは完璧なPython環境になりました。

 

ココに注意

実行ボタンを押すと、Pythonインタープリターが選択されていません

いろいろやっているうちに、マイクロソフトのストアが出てきて、Python3.11は、現在使用できませんとなっていました。

結局、Python公式サイト (python.org) からダウンロードしてインストールしました。

python-manager-25.2.msix」というプログラムで、Geminiが言うDownload Python 3.13.xじゃなかったので、Geminiに聞くと、それでOKということでインストールしました。

正しく入ったか確認

インストールが終わったら、一度「コマンドプロンプト」で確認します。

  1. キーボードの Windowsキー を押し、cmd と打ってエンター。

  2. 黒い画面に python と入力してエンター。

  3. Python 3.13.x ... と表示されれば成功です!

 

その後、いろいろやって自分がアップロードした画像にキャンプ場のピンを立ててキャンプ場名を入れる事をしましたが、最終的には、ピンがずれて場所が間違っていたりしました。

 

Googleマップの静止画を取得して作成する方法

GeminiにGoogleマップからピンを立てキャンプ場名を明記する画像を作成する方法を聞くと下記のような回答がでました。

Pythonのプログラムで最新の地図(静止画)を直接取得して保存するには、「folium」で地図を作成し、それを「selenium」というブラウザ自動操作ツールを使って画像(PNG)として保存する方法が最も自由度が高く、Googleマップのような見た目を無料で実現できます。

さらに詳しく

理解していませんが、指示の通りに進みました!

 

ライブラリの準備

準備として、ライブラリのインストールが必要

pip install folium selenium webdriver-manager

PowerShellSEから実行してみました。「pipは内部コマンド・・・認識されていません」というエラーになりました。

さらに、Geminiに問い合わせると下記を実行しろということで。

python -m pip install folium selenium webdriver-manager

 

プログラムの準備

Geminiへのプロンプトとしては、

1.九十九里オートキャンプ場「太陽と海」
2.キャンプマナビス
3.有野実苑オートキャンプ場
4.イレブンオートキャンプパーク

の4か所のキャンプ場の位置にピンを立てキャンプ場名を明記してください。と言う感じです。

 

1ヶ所だけ表示されなかったりしたので、なんどかGeminiとやりとりして最終的にうまくいったのが、下記のプログラムになります。

import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import folium

# --- 1. キャンプ場の正確な座標 ---
locations = [
    {"name": "九十九里「太陽と海」", "lat": 35.7115, "lon": 140.6385},
    {"name": "キャンプマナビス", "lat": 34.9255, "lon": 139.8252},
    {"name": "有野実苑オートキャンプ場", "lat": 35.6981, "lon": 140.4034},
    {"name": "イレブンオートキャンプパーク", "lat": 35.3458, "lon": 140.0543}
]

# 地図の作成
m = folium.Map(tiles="OpenStreetMap")

# ピンと「常に表示される名前」を追加
for loc in locations:
    # ピンを立てる
    folium.Marker(
        location=[loc["lat"], loc["lon"]],
        icon=folium.Icon(color="red", icon="info-sign")
    ).add_to(m)
    
    # 名前を常に表示する(DivIconを使用)
    folium.map.Marker(
        [loc["lat"], loc["lon"]],
        icon=folium.DivIcon(
            icon_size=(150,36),
            icon_anchor=(0,0),
            html=f'<div style="font-size: 12pt; color: black; font-weight: bold; background-color: rgba(255,255,255,0.7); width: fit-content; padding: 2px; border: 1px solid gray;">{loc["name"]}</div>',
        )
    ).add_to(m)

# 【重要】すべてのピンが収まるように地図の範囲を自動調整
points = [[loc["lat"], loc["lon"]] for loc in locations]
m.fit_bounds(points)

# 保存
temp_html = r"D:\python\temp_map.html"
output_file = r"D:\python\outputimage.png"
m.save(temp_html)

# --- 2. 画像として保存(Selenium) ---
chrome_options = Options()
chrome_options.add_argument("--headless")
# 少し大きめのサイズでキャプチャ
chrome_options.add_argument("--window-size=1200,1000")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)

abs_path = "file://" + os.path.abspath(temp_html)
driver.get(abs_path)

# 地図の描画待ち
time.sleep(3)

# 保存
driver.save_screenshot(output_file)
driver.quit()

print(f"完了しました。画像を確認してください: {output_file}")

 

ちなみに、Pythonの実行コマンドは、プログラムが置いてあるフォルダを指定して実行しています。

自分は、python D:\python\という場所に置いたので、python D:\python\ファイル名.pyとなります。

PowerShellSEから実行しました。

 

作成された画像

下記が作成された画像になります。

場所も確認してみましたが、あっています。

ちなみに、temp_map.htmlというHTMLファイルも出力されており、ブラウザから同じ画像を確認することができます。

 

Python使うといろいろと便利かも!

初めてPythonにふれてみましたが、画像加工をするよりか簡単に早くできる方法を見つけることができました。

ついでに、GeminiにPythonで他に何ができるのかを聞いてみました。

 

Gemini質問

今回、Pythonで簡単に地図上にマッピングをすることができましたが、他にPythonで簡単にできる作業でお勧めはありますか?

Pythonは「面倒な繰り返し作業」を「一瞬」に変えるのが非常に得意です。今回の地図作成のように、数行のコードで大きな成果が得られるお勧め作業を3つ紹介します。


1. ExcelやCSVの自動集計・グラフ化

今回のキャンプ場リストのように、データがExcelにある場合、Pythonを使えば**「複数のExcelファイルを合体させ、計算し、グラフ付きのPDFレポートにする」**という作業が数秒で終わります。

  • ライブラリ: pandas, openpyxl

  • 例: 毎月の売上Excelを読み込んで、自動で前月比を計算し、棒グラフを作成して保存する。

2. Web情報の自動収集(スクレイピング)

今回の地図に、「最新の宿泊料金」や「現地の天気」も載せたいと思ったことはありませんか?Pythonなら、特定のサイトから最新情報を自動で取ってくることができます。

  • ライブラリ: Requests, BeautifulSoup

  • 例: 毎日決まった時間に、キャンプ場の予約空き状況や周辺のスーパーの特売情報をチェックして自分にメールする。

3. 画像の一括加工・整理

デジカメやスマホで撮った大量のキャンプ写真を、**「一瞬で全部同じサイズにリサイズし、日付ごとにフォルダ分けして、写真の隅にロゴを入れる」**といった作業も得意です。

  • ライブラリ: Pillow(今回使ったもの), os

  • 例: フォルダ内の100枚の画像すべてに、「2024 Camp Memory」という文字を一括で入れる。

ココがポイント

Python知らなくてもAIに聞けば何とかなる!

そういう便利な時代になってきましたね。