はじめに
花火大会は駅が混雑しますね。
でも夏は花火大会を楽しみたいですよね。
この2つの間にある最適解を最近、考えていました。
電車の混雑にも合わないような最適な花火大会を楽しめる距離を。
隅田川花火大会でベストな範囲の一人当たりのスペース
花火大会の最適な距離は500m~600mで、1.5kmまでならキレイに観える範囲内と以下の記事に書いてありました。
花火の大きさにもよるので、大きい花火だと、近すぎる場合は見えずらく、さらには近すぎると首も痛くなりがちですね。
今回は半径400m~1.5km内で考えてみます。
2024年の東京の隅田川で行われた、かの有名な「隅田川花火大会」の来場者数は約91万人だそうです。
91万人が半径400m~1.5kmに入る場合の密度は
外側の円(半径1500m)の面積は以下
$$ {Area}_{outer}=\pi×(1500)^{2}=7,068,583 m^{2} $$
内側の円(半径400m)の面積は以下
$$ {Area}_{inner}=\pi×(400)^{2}=502,655 m^{2} $$
円環(外側から内側を引いた領域)の面積は以下
$$ Arearing=7,068,583−502,655=6,565,928 m^{2} $$
この領域で91万人の人口密度を求めると、
$$ Density=\frac{910,000}{6,565,928}≒0.1386人/m^{2} $$
よって一人当たり約7.215$m^{2}$のスペースとなります。
これはビルや川が無い完全な平地の場合です。
本来はこれよりも狭いです。
特に東京は建物が多い分、実質もっと人が要れるスペースは少ないです。
1/3のスペースだと考えると約2.4$m^{2}$となります。
畳1枚当たりの広さは1.62平方メートルなので、1畳半のスペースとなります。。
隅田川花火大会で考えるベストな駅
そして、更なる問題は花火大会が終わった後の駅の混雑です。
上記の通り、半径400m~1.5km内が花火鑑賞の適度な距離と仮定し、今回は花火の鑑賞は1kmほどの距離とします。
そして、帰る際の駅は1.5km~2kmにある駅にした方がよさそうですね。
さて、実際にその駅を求めてみましょう。
今回は駅すぱあとのAPIとpythonを使ってその駅を求めてみました。
●km以内の駅を求めるプログラムを作りました。
プログラムは以下です。
import requests
import json
import math
# Haversineの公式を使って2点間の距離を計算する関数
def haversine(lat1, lon1, lat2, lon2):
R = 6371 # 地球の半径 (km)
# 度からラジアンに変換
lat1_rad, lon1_rad = math.radians(lat1), math.radians(lon1)
lat2_rad, lon2_rad = math.radians(lat2), math.radians(lon2)
# 差を計算
dlat = lat2_rad - lat1_rad
dlon = lon2_rad - lon1_rad
# Haversineの公式
a = math.sin(dlat / 2) ** 2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(dlon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
return R * c # 距離を返す (km)
endpoint = "https://api.ekispert.jp/v1/json/station"
api_key = "xxxxxxxxxx" # ★駅すぱあとのAPIキー
# リクエストパラメータ
params = {
"key": api_key,
"prefectureCode": 13, # 東京都の駅を求めるようにしている
}
response = requests.get(endpoint, params=params)
data = response.json()
base_lat = 35.716867
base_lon = 139.805278
nearby_points = []
radius = 2 # 半径2km
for station_item in data["ResultSet"]["Point"]:
distance = haversine(base_lat, base_lon, float(station_item["GeoPoint"]["lati_d"]), float(station_item["GeoPoint"]["longi_d"]))
if distance <= radius:
nearby_points.append(
{
"station_name": station_item["Station"]["Name"],
"lat": float(station_item["GeoPoint"]["lati_d"]),
"lon": float(station_item["GeoPoint"]["longi_d"])
}
)
print(nearby_points)
半径1.5km以内の駅にも、半径2km以内の駅にも含まれている駅を除くと、以下の2つの駅が求められました。
「荒川一中前」駅
「入谷」駅
まとめ
以上をまとめると、
隅田川花火大会は1kmぐらいの距離で見て、駅は「荒川一中前」と「入谷」を使うと良さそうですね。
ただし、鑑賞時は1畳半のスペースになるかもしれないです。