実在の地形をMinecraftで再現07 ー範囲に限界があるか?ー
0.はじめに
こんにちは。
これまで6回ほど、この企画をやってきたのですが、コンサベーションGISコンソーシアムジャパン(CGISJ)の利用者の方からWorldPainterで扱えるDEMのサイズ(東西南北のピクセル範囲の意味)の限界があるかどうかというような質問がありましたので、検証してみました。
ただ、結論から先に言ってしまうと、「限界があるかは不明」というのが答えです。
1.検証条件
検証は以下の条件で行いました。
WorldPainter version 2.18.4
データ:コンサベーションGISコンソーシアムジャパン(CGISJ)の標高緯度経度データ
データ範囲:東西26,367pixel、南北53,437pixel、unsigned16bitの10m標高データ(東北6県)
確認したMinecraft:Java版、バージョン1.20.1
JAVA:17.0.7 64bit版
データは、なるべく広い範囲ということで東北6県全てを含む範囲としました。CGISJのデータは県別になっているので、全てモザイクした上で、平面直角座標系第10系の10m分解データに投影変換をしています。細かい話ですが、リサンプリング手法にはBilinearをつかっています。
実際には海もデータに含まれるので、白黒の長方形の範囲全てです。
GISではデータとしてnodata設定ができますが、WorldPainterで取り込むデータには、そういう設定はできないので注意してください。
参考までに陸域のみ表示したのが下の図です。これはGISの機能で見やすく表示しています。猪苗代湖周辺の範囲は後で図示します。
2.Minecraft Java版の仕様上の限界サイズ
ところで、Minecraft Java版の仕様では東西南北で約6,000万ブロック(+-29,999,872ブロック)が限界となっています。
リアルな地球一周は約40,000kmなので、1ブロック1mとしても、4,000万ブロックとなり十分なサイズではありますが、自分でそれを作るというのはあまり現実出来ではないと思います。
そのような用途では、現実の地球を模したマルチプレイサーバー「EarthMC」が立てられているので、そちらも使ってみてください。
なお、日本国内に関して言えば、国土地理院の10mDEMや5mDEMを使ったほうが精度が詳細になります。
3.10mDEMのさらなる加工
DEMデータは浮動小数点32bitのデータですが、Minecraftで扱える高さは整数値で、しかもその幅は-64から319までの384ブロックとなっています。
なるべく地形の再現度をあげようとすれば、高さをこの範囲一杯を使って表現するようにすれば良いわけです。
実際に一杯一杯にしてしまうと、その場所にブロックが置けなくなるので、少し余裕を持っておく必要はあります。
さて、この東北6県の範囲の標高データの実際の範囲は-134mから2352mとなっていました(公表値とは必ずしも一致しません)。
海抜0m以下の地域のうち極端に低い場所がありますが、これは露天掘りの場所です。ここで以降、海抜0m以下★を全部無視するとしても、2,352m+標高0mの1ブロック、2,353ブロック分を384ブロックに割り当てるには、384/2354=約0.16倍をすることになり、データの精度は1桁下がることになります。
結果、小さな起伏や海抜の低い平坦地の表現は難しくなりますが、今回はそれは検証目的ではないので、そのまま一律に進めます。必要なら、変換を調整してみてください。
また0.16倍した後の0値は、海も同等の扱いとします。GISの場合はnodataと0値を分けて扱うことができるので海陸を区分できます。WorldPainterでもvoidというnodata設定はできますが、voidの場所には行けなくなってしまうのです。
さてこのようにして変換したデータは最終的にはgeotiff形式にします。数値型は符号付き16bit(unsigned16bit)にします。
(★追記)今回の対象範囲で、データ上海抜0m以下となっている地域には八戸石炭鉱山、大潟村、南相馬市小高区井田川(マイナス値)、尾鮫沼、鷹架沼、小川原湖、田面木沼、十三湖、万石浦、松川浦(0m)などがあります。また0.16を乗じ、しかもInteger処理をして整数化をしているわけで、6m以下の場所も0になります。この地域について0とする方法を取ると、以降の処理で全て水面になってしまいます。マイナス値をとる陸域部分を陸域として扱うには、GISでそこだけ1の高さを与える、WorldPainterでそこだけ編集するなど、別途扱う必要がありますが、今回は省略します。手作業は万能ですがやはり大変なので、GIS処理で解決する方法について、次回以降で紹介できればと思います。
東北地域以外でも0m地帯がデータ内にある場合は、同じ配慮が必要になると思われます。
4.WorldPainterへのDEMのImport
ここまで来たらWorldPainterに取り込み(Import)を行います。基本的なWorldPainterへの取り込み方法については、Minecraftのワールドを現実のDEM(標高データ)で作る その3-WorldPainterの基本的使い方-も参考にしてください。
File > Import new World > From height map としてImport Height Mapウィンドウを開きます。
ここでいちばん大事なのがWater levelです、ここでその値は-63にします。-64を0つまり海のデータとして使うためです。下の図で青くなっているところは0値つまり海ですが、もし-64にしてしまうと灰色になり、陸地扱いになります。後から編集で水面にすることは出来ますが、ここでやっておくほうが簡単です。
High mappingも319ではなく、316にしています。一番上の高さのところに3ブロック分、ブロックを置けるように余裕を見ています。ここは319でも構いませんが、そうするとその上にはブロックを置けなくなってしまいます。
この状態でOKをクリックするとDEMのimportが開始されます。
今回のデータは前回の八王子のデータより大きいので、ソフトが暫く無反応になりますが、少々お待ちください。
取り込みが終わったら、スクロールをしてみてください。
下の図は福島県周辺の例です。茨城県、栃木県、群馬県、新潟県は今回データとして入れてないので、海になっていますが。。。
この図で1グリッドの大きさは512ブロックです。
取り込んだ全ての地域(追記)
※取り込んだ他の地域の状況を追記しました。どんな感じで取り込まれているかの参考にしてください。(★追記)で書きましたが、標高が6m以下のところは全て海水面にしているので、そこは海水面と同じ(青色)になっています。津軽半島西部、八郎潟あたりが目立ちますね。
5.Minecraft MapへのExport
本来は、水面(内水面)や川、植生などの設定を行って仕上げるのですが、ここでは省略し、直接Minecraft MapへExportします。
File>Export>Exprt as new Minecraft map…とします。
今回はexportできるかどうかの検証なので、ほぼ全部デフォルトで行きます。一部デフォルトを変更する部分についてもMinecraftのワールドを現実のDEM(標高データ)で作る その3-WorldPainterの基本的使い方-と同じにしているので、そちらを参考にしてください。
書き出し中の画面は下の図のとおりです。
ここでは残り時間2時間と書いてあります。
処理が終わったときの画面です。処理はうまく出来ました(Mapの名前はtohokuにしています。)
処理時間は何と2時間46分でした。八王子市を対象にしたときは、1分もかかっていなかったので、まるで違いますね。
また、参考までに、出来たデータのサイズですが、データはフォルダとして作成されますので、その全サイズ(一度ワールドに入った後)をみると、23GB超でした。これも大きいですね。
6.MinecraftでMapを開いてみる
やっとできましたので、さっそくMinecraftで開いてみます。ゲームをやるように開くだけです。
マップ作成直後にシングルプレイを開くと、今作ったワールドが一番上にあるので、それを選択してみてください。ここではクリエイティブモードのデータとして作っています。
1)スポーン地点
DEMデータの真ん中辺りにある場所です。このデータでは秋田県湯沢市の付近ですが、何もわかりませんね。
これではあまりに何もわからないので、先程示した福島県の中央部分にある、猪苗代湖、磐梯山付近の場所に飛んでみます。
2)磐梯山付近
内水面の設定はしておらず、ちょっと絵としてわかりにくいので、猪苗代湖の北にある磐梯山を見てみます。ここではその山頂付近を南から見た絵を示します。
最終的に、高さ方向は2354m/380ブロック=6.2m/ブロックになりますが、水平方向はDEMと同じで10m/ブロックなので、実際よりは横に広がった形になります。視野角設定にもよるので、この絵ではそう見えないかもしれません。
地表のブロックは自動で設置しているもので、植生なども適当です。
ただ同じ場所をGoogle Earthの3Dと見比べてみると、地形要素はおおよそ似通って見えるのではないでしょうか?
まとめ
今回はWorldPainterで扱えるDEMの範囲に限界は有るのかを検証する目的で始めました。結果として、時間はかかりましたが、Mapを作ることは出来たので、範囲の限界がどこにあるかはわかりませんでした。
実は、海外の掲示板に4000*2000ピクセル位が限界だったという記事があったので、その想定でこの範囲にしてみたのですが、見事にクリアしてしまいました。
ソフトのバージョンが上がったせいなのか、64bitのJAVAを使っているせいなのか、原因はまだ分かっていません。
今後もう少し範囲でやってみようとは思いますが、今回でもexportに3時間弱かかっているので、覚悟がいりそうです。
最後に
ここまでご覧いただき、ありがとうございました。
普段は北海道に本拠地を置くNPOに所属し、環境保全を主な題材としてGISやリモセンに関する仕事をしています。
コンサベーションGISコンソーシアムジャパン の活動もその1つです。
ご相談、ご質問、お仕事のご依頼などがございましたら、コンサベーションGISコンソーシアムジャパンWEBサイト掲載のメールアドレスまでメールをお寄せください。
コンサベーションGISコンソーシアムジャパンの活動及びこのnoteでの活動はボランティアで行っているのですが、何分資金が不足しています。
もしサポートしてもいいなという方がいらっしゃいましたら、そちらもよろしくお願いします。
noteの中の人は都内に居るので、お仕事などお声がけいただければと思います。
この記事が気に入ったらサポートをしてみませんか?