ポーランドの真ん中と日本の真ん中を計算で求めてみた。
突然ですが、日本の真ん中はどこだと思いますか?
私の地元の近くの岐阜県郡上市には「日本まん真ん中センター」という、怪しげな施設があり、子供の頃はそこが日本の真ん中だと思っていました。
しかし、ある日、テレビを見ていると、長野や群馬にも真ん中を主張している自治体があることを知って「?」となりました。
ちょっと調べてみると、それぞれ一応の言い分はあるものの、全く納得できないものばかりでした。
長野県小川村
本州のへそだそうです。本州の陸地平面の重心だそうです。なるほど、重心であれば真ん中と言っても差し支えないでしょう。でも、なぜ本州だけなのでしょう?本州以外の人に失礼です。
群馬県渋川市
日本列島を円で囲った中心なのだそうです。なるほど、外接円の中心も理にかなってる気がします。でも、それって、ちゃんと最東端の南鳥島とか最北端の択捉島を入れてやってますか?私も同じ条件で簡単に試してみましたが、愛知県あたりになりそうで、どう考えても群馬県ではなさそうです。
岐阜県郡上市の日本まん真ん中センター
1995年の国勢調査で、日本の人口重心が郡上市の前身にあたる美並村にあったことを記念して建設されたもので、総工費約22億円を投じ1997年(平成9年)4月にオープンした。
wikipedia
突っ込みどころが多いですね。日本の真ん中と聞かれて、人口重心の場所を答える人は少ないと思います。それに人口重心って、毎年移動しているからもう郡上市じゃありません。
それにも関わらず、22億円もかけてるなんて、、、誰も止めなかったのでしょうか?
この他にもいくつか真ん中を主張する自治体はあるようですが、どれも自分の都合のいい条件を持ってきて真ん中と言い張っているだけです。日本の真ん中として納得させてくれるものは、ありませんでした。
ポーランドの真ん中と日本の真ん中
前置きが長くなってしまいましたが、今回の記事は、私が考える国の真ん中を自分で計算してみようという(遊び)企画です。
もちろん、日本だけじゃなくてポーランドの真ん中も計算します。
条件
私が考える国土の真ん中は国土の陸地平面の重心です。長野県小川村と同じアプローチですが、ちゃんと日本の国土を基準に計算します。外接円の中心でもいいのですが、外接円だと、沖ノ鳥島のような軍事的な島の存在によって、中心が大きく動いてしまいます。これだと、なんとなく納得感が薄れてしまいます。重心であれば、上記のような小島の存在はほとんど無視できます。
今回、地形データはメルカトル図法の地形画像を用いました。↓の黒い部分の重心座標を求めます。
日本
湖をどうするかは微妙なところだったのですが、陸地として計算しました。
ポーランド
シュチェチン湖は国境なので、陸地から外しました。
実装
一応計算したときのコードを載せておきます。計算過程の意味で残しただけなので、読み飛ばしてもらって大丈夫です。
地形画像の全陸地部分のピクセル座標の平均値をとってから、ピクセルの値を緯度経度に変換しました。
long totalX = 0;
long totalY = 0;
int count = 0;
PVector northPixel = new PVector(0, img.height);
PVector southPixel = new PVector(0, -1);
PVector westPixel = new PVector(img.width, 0);
PVector eastPixel = new PVector(-1, 0);
for (int y = 0; y < img.height; y++) {
for (int x = 0; x < img.width; x++) {
int index = y * img.width + x;
color c = img.pixels[index];
if (alpha(c) > 125) {
if (y < northPixel.y) northPixel = new PVector(x, y);
if (y > southPixel.y) southPixel = new PVector(x, y);
if (x < westPixel.x) westPixel = new PVector(x, y);
if (x > eastPixel.x) eastPixel = new PVector(x, y);
totalX += x;
totalY += y;
count++;
}
}
}
float avgX = totalX / (float)count;
float avgY = totalY / (float)count;
// Poland
float westLong = 14.07;
float eastLong = 24.09;
float northLat = 54.50088;
float southLat = 49.;
float avgLong = map(avgX, westPixel.x, eastPixel.x, westLong, eastLong);
float avgLat = map(avgY, northPixel.y, southPixel.y, northLat, southLat);
結果
日本
計算結果は北緯36.993 東経138.582でした。
新潟県中魚沼郡津南町と長野県下水内郡栄村との境界付近でした。この2つの役所の観光課の人は、すぐに正確な座標を計算して、22億円のモニュメントを建てる企画を提案しましょう!
ポーランド
計算結果は北緯51.897東経19.256でした。
ここは、ウッチ北西部の森の入口でしょうか。
実は、ポーランドでは既に重心の計算がされています。wikipediaによると、1966年に計算したものが長く使われてきたが、その後に条件が変わって、2018年に再計算されたそうです。
1966年版の座標はPiątek(金曜日)という地名の場所で、やはりそこにはモニュメントが立っています。2018年の修正版の場所は個人の私有地なのだそうです。
それがここ。
私の計算結果とは20kmくらいのズレが出ています。考えられる誤差の原因は、以下のとおりです。
- 本来であれば、メルカトル図法の湾曲を補正すべきだが、平面に近似して画像の座標と緯度経度をマッピングしている。
- ポーランド版は領海やシュチェチン湖も考慮しているが、私の計算は考慮していない。
- 拾ってきた地図が正確ではなかった。
1と3に関しては、個人の遊び企画なので、ご勘弁ください!2に関してはどうでしょう。こちらの記事によると、計算したら沼地の上に来てしまって、モニュメントを建てられなかったから領海を含めたって書いてありますね。ポーランドも大人の都合を持ち出してきましたね。
まとめ
プログラムを作って、日本とポーランドの真ん中(陸地の重心)を計算してみました。
日本の真ん中は新潟県と長野県の県境付近でした。
新潟県中魚沼郡津南町か長野県下水内郡栄村の役所の人はまちおこしのチャンスかも知れませんね。
ポーランドの真ん中はウッチ北西部の森の入り口でした。
ポーランドでも日本でも、「真ん中」の場所にモニュメントを立てたがっているようです。多少、事実を曲げてでも。真ん中へのあこがれは人類共通なのでしょうか?