2024年5月21日火曜日

散歩地図

チョイソコてんり(2)からの続き

朝の散歩,今日の目標は北東にあるチョイソコてんりの小田中町公民館だったので,片道35分ほどだった。グーグルマップを見誤ったせいでちょっと遠回りになり40分かかった。

そんなわけで,自宅を中心として地図上に一定距離の半径の円を描いたものがあるとなんとなくうれしいような気がした。こういうときは,地理情報システムGISに対応したアプリとかデータとかプログラムを駆使することになる。Mathematicaの該当部分の関数を眺めたところ,それだけでおなかが一杯になって挫折した。

さあ,ChatGPT-4oの出番である。早速お願いしたところ一発で目的が達成できた。ゴイゴイスー(津田さんは中田先生の女婿だって知ってました?)。
Q(koshix):
 天理市の地図のうえで,自宅を中心として半径が500mの倍数となる円を1倍から6倍まで描画したいのです。なるべく簡単で具体的な手順や方法あるいはプログラムを一つ教えてください。言語は,JuliaでもMathematicaでもPythonでもRでも構いません

A(GPT-4o):
Pythonを使用して天理市の地図上に自宅を中心として半径が500mの倍数となる円を描画する方法を示します。この手順では、以下のライブラリを使用します。
・folium: インタラクティブな地図の作成
・geopy: 緯度経度の計算

以下の手順に従ってください。
1.必要なライブラリをインストールします。
(sh)
pip install folium geopy

2.次に、Pythonスクリプトを作成します。以下のコードをコピーして実行してください。
(python)
import folium
from geopy.distance import geodesic
# 自宅の緯度と経度を設定(天理市の例として)
home_location = (34.596047, 135.819249)
# フォリウムマップの作成
m = folium.Map(location=home_location, zoom_start=15)
# 半径500mの倍数となる円を1倍から6倍まで描画
for i in range(1, 7):
    radius = 500 * i
    folium.Circle(
        location=home_location,
        radius=radius,
        color='blue',
        fill=True,
        fill_opacity=0.1
    ).add_to(m)
# 自宅のマーカーを追加
folium.Marker(location=home_location, popup="Home").add_to(m)
# 地図を保存
m.save('tenri_map.html')

このコードは、以下の手順で動作します。

1.home_locationに自宅の緯度と経度を設定します。この例では天理市の中心付近の座標を使用していますが、実際の自宅の座標に置き換えてください。
2.folium.Mapを使用して地図を作成し、初期の表示位置とズームレベルを設定します。
3.半径500mの倍数となる円を1倍から6倍まで描画します。folium.Circleを使用して円を描画し、radius引数で半径をメートル単位で指定します。
4.自宅の位置にマーカーを追加します。
5.作成した地図をHTMLファイルとして保存します。

保存されたtenri_map.htmlファイルをブラウザで開くと、自宅を中心とした円が描かれた地図が表示されます。
ということで,説明も十分読まずに,pythonプログラムをコピペしてjupyter環境で実行すると,アラ不思議,あっというまにインタラクティブな地図上に同心円が書けてしまった。見栄えのために修正したのは透明度だけだ。


図:散歩地図(GPT-4oがつくったpythonプログラムの出力)

0 件のコメント: