福島のへそってどこ?検証してみた
Aizu Advent Calendar 2022
この投稿はAizu Advent Calendar 2022 16日目の記事です。
15日目は Yuoreiさんの Macのターミナルを改造してみた - yuorei’s blog
17日目は HAMADAさんの お風呂の水位センサーを作るために、ラズパイからLINEに通知できるようにしてみた話
です。(遅れてしまい申し訳ないです)
はじめに
どうもこんにちは、今年は車1台,バイクが2台となぜかエンジン付きの乗り物を3台手に入れた飛ばすはとバスと申します。最近は、バイク乗りの世界大会に出るために道なき道をでっけーバイクで突き進んだり、公道を走れない競技用のバイクを土の上で振り回したりしています。
今回の投稿は、自分が日常で感じた疑問をプログラムの力を借りて解決した話を書きます。
福島のへそ
自分は福島県で育ち、会津大学に進学して福島県に22年ほど住んだ生粋の福島県民です。
22年福島に住んだ身としては、福島県について結構色々なことを知っていた気でいたんですが、最近福島県の本宮市について、このような情報を目にしました。
市では、本宮市が福島県のほぼ中央に位置し、古くから交通の要衝であったことから、新たなアピールポイントとして「福島のへそのまち」として県内外に発信していくこととなりました。
平成23年12月には、全国各地で「へそ」「中心」「まんなか」を名乗る自治体による「全国へそのまち協議会」に“福島のへそのまち”として本宮市も加盟しました。
そうです、福島県本宮市は「福島のへそ」として地域おこしをしているのです。
福島県民からすると「確かに本宮市は福島県の中心部にあるし、こう言われるのも納得だな」とも思うんですが、今一度福島県本宮市の場所を確認してみましょう。
みなさん、思ってますよね、そうですよね...
なんかへそ感なくね...?
「福島のへそ」として言っている本宮市の言い分としては「本宮市が福島県の中心部にある」となっていますが、上の地図で見たところ、もうちょっとへそ感のある場所はありそうです。(多分郡山市がへそなんじゃないかなと思います)
今回は、「本当の福島のへそはどこか?」という疑問をプログラムを通して解消していこうかなと思います。
福島のへそを定義してみる
そもそも、「へそ」についての定義をしなければこの記事のゴールは見つけられません。というわけでこの記事の中での「へそ」をきちんと定義してみましょう。
へそ(中心)と定義できそうなものは色々とありますが、「へそ」としてよく使われるようなものとして 重心があります。重心とは、福島県を一枚の平らな板にしたときに重さが釣り合う点のことで、その物体における中心としてよく用いられています。
この記事の中では福島県のへそを「重心」として考え、重心を求めることで、本当の福島のへそを割り出すことを目標とします。
ちなみに会津のへそというのもある
福島県の重心を求める
福島県の重心を求めるということについて、どう進めていくかを考えます。決めなくてはいけないこととしては主に以下の2つです。
- 重心の求め方
- データはどうするか?
データの準備
データの準備は、調べたら出てきた joponyol.net さんのデータを利用しようと思います。
こちらはjsonでデータが提供されているので、jsonをパースすればいい感じにデータが使えるはずです。
重心の求め方
重心は緯度・経度の平均を取れば求めることができます。
ここで、重心となる点Gを
今回は、福島県の重心をjsonのデータから拾ってきて、上の計算を行い、実際の「福島のへそ」を求めることにします。
福島のへそを求めてみる
データのダウンロード
japonyol.net から、県境のデータをダウンロードしてきます。以下のコマンドを実行することで prefecture.geojson
が手に入ります。
$ wget https://japonyol.net/editor/article/prefectures.geojson
実際にどのようなデータが来ているのかを見てみます。 jq
を使って軽くどんなデータかを確認します。ちょっとかっこ悪いですが、head
コマンドを使って手がかりを探ります。
$ cat prefectures.geojson | jq . | head -30
{
"type": "FeatureCollection",
"metadata": {
"generated": "Copyrights Campo Salado",
"url": "https://japonyol.net"
},
"features": [
{
"type": "Feature",
"properties": {
"pref": 1,
"name": "北海道"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
141.663476,
45.031326
],
[
141.660782,
45.035583
],
[
141.660013,
45.036897
],
このjsonの構造から、雑に福島県の県境の緯度経度をcsvへ抽出するPythonのスクリプトを書いてみます。ひとまずcsvに書き出せればいいので、可読性はあまり期待できません。
import json
import csv
with open('prefectures.geojson') as f:
j = json.load(f)
for feature in j["features"]:
if feature["properties"]["name"] == "福島県":
coordinates = feature["geometry"]["coordinates"]
point = [p for i in coordinates for j in i for p in j]
with open('fukushima_bound.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['longitude', 'latitude'])
writer.writerows(point)
このスクリプトを書いていて気づいたのですが、 prefecture.geojson
に保存されている緯度経度の情報が (緯度, 経度)
の順ではなく、 (経度, 緯度)
になっているので注意です。
このスクリプトを動かすと fukushima_bound.csv
というCSVファイルが生成され、その中に県境のデータが出力されます。実際に重心を出す前に、このデータがきちんと福島県の県境のデータを持っているかの確認をしましょう。
県境のデータがきちんと作成できているか確認する
これがきちんとしたデータとなっているかを確認します。
Google Mapには、ユーザーが自由に地図を作ることができる機能があるのですが、これにcsvファイルを食わせると、緯度経度から自動的にピンを打ってくれます。この機能を利用して、上で作成したcsvファイルから地図を作成し、きちんと福島県の県境のデータが作成できているかを見てみます。
実際に食わせた結果がこちら
北西部のデータが欠損しているかと思われましたが、これはGoogleMapの仕様で、ポイントとして追加できるのは1つの地図で2000箇所までという制約があるようです。
$ wc fukushima_bound.csv
2658 2658 57932 fukushima_bound.csv
生成されたcsvのデータ数は約2600件なので、600件分のデータがプロットされていないようですが、このように表示されているので、きちんとデータが取れてきているようです。
福島県の重心を見つける
実際に重心を見つけてみましょう。
Pythonで求めてもいいですが、csvファイルですしスプシの機能でちゃちゃっとやってしまいます。
というわけで、福島県の重心は (37.3912749, 140.1456353) だとわかりました!
GoogleMapで見てみた
実際に福島県のどこが重心なのかをGoogle Mapで見てみます。
Google Mapは緯度経度を直接入れて検索が可能なため、検索バーに緯度経度を入れて検索してみます。
というわけで、福島県の重心は 湖南町(郡山市) だということがわかりました。
自分の地元は福島県の県南地方出身で、会津時代には帰省時によくここらへんをうろちょろしていたので、結構身近な土地でもあります。なんならこの道を通ったこともあります。大学時代を思い出して懐かしい気持ちに浸ることができました。
まとめ
今回の記事では、本当の福島のへそを調査するということで、県境のデータを元に福島県の重心を求めました。
結果として、地域おこしをしている本宮市ではなく、猪苗代湖の南東部に位置する「郡山市湖南町」が 本当の福島のへそ ということが分かりました。
交通の要所としての「福島のへそ」の本宮市、そして「重さが釣り合う点としての福島のへそ」の湖南町、どちらも意味が違えど、立派な「福島のへそ」です。この記事を読んだ皆さん、ぜひ一度福島県へいらっしゃってください。
今回利用したPythonスクリプトはgistにまとめています。こちらは少し改良を加えており、csvに書き出さないで直接重心を求めるようにしています。また、福島県以外の重心も求められますので、気になった方はぜひ調べてみてください!
出典・引用
Discussion