パイクラおじさんの日記

MinecraftでPythonを勉強するおじさんの日記です。

ジオクラ

テレポートカプセル

サバイバルモードの制限を調査するのに、サバイバルモードでは飛行モードが無いので高い所に行くのにテレポート・コマンド(実際にはsetPos関数)で移動する前に足場を作らないといけないし、地下も足場を作って、自分の入る空間を作って、さらに松明を設置…

トーテムポール的なモノ

方位がわかるようなトーテムポール的なオブジェを剣+右クリックで設置できるといいなぁ〜と、まずはどんな形がいいかと作ってみた。 (もうちょっと上にしたい。) いろいろ調整して、こんな感じになった。 夜になってもわかるように松明を付けた。 スクリ…

軌道の中心線(1)

基盤地図情報の基本項目をダウンロードしてくると、基本項目のいろんなデータが一緒に入ったZIPファイルになっている。 軌道の中心線のデータは緯度経度で指定されているので、1次メッシュ番号、2次メッシュ番号から2次メッシュ上のインデックスへ変換して軌…

道路や鉄道

土地利用細分メッシュでの森林の判定はイマイチだったので、とりあえず置いておいて、違う情報で道路や鉄道ができないか考える。 基盤地図情報の基本項目のデータ説明を見ると、道路の縁や軌道の中心線が取れるらしい。 軌道というのは鉄道の線路のことを指…

なぜ普通の草が生やせないのか?

よく見る、この草。 見にくいので周りを土に変えて。 これが生やせない。 mcpipy/mcpi/block.pyを確認したけど、それらしいのはGRASS_TALL(31)とFERN(31, 2)くらいしかない。 で、GRASS_TALLを指定すると、枯れた木?が生えた。 ブロックID=32が「枯れ木」な…

標高データに土地利用細分メッシュを重ねる(3)

いろいろ調整して不自然さを除いてみた(農地を「草」ブロックにした。一部、そのまま)。 地面に立っての風景(本当はこの草じゃなくて普通の草を生やしたい)。 ちょっと高い位置から。 奥の赤いブロックは「建物」がある場所。 スクリプト # coding: utf-…

標高データに土地利用細分メッシュを重ねる(2)

さすがに色分けするとあからさまなので、「森林」の場所に「木」を生やしてみる。 なんか、いい感じ。 「木」を減らして「草」を生やして、「田」の場所に「耕地」ブロックを配し、「小麦」ブロックを乗せてみた。 これはイマイチ。 木を減らしすぎたのと、…

標高データに土地利用細分メッシュを重ねる(1)

標高データで地形を作りながら、一番上のブロックを土地利用細分メッシュで色分けしてみた。 いざ、塗ってみるとちょっと大雑把。 /python loadnpy4.py 5340 22 0 スクリプト loadnpy4.pyとして保存。 # coding: utf-8 import mcpi.minecraft as minecraft i…

土地利用細分メッシュから切り出す

土地利用細分メッシュから指定の範囲を切り出すスクリプト(detach.py)を書いた。 # coding: utf-8 import numpy as np import matplotlib.pyplot as plot import pycra.npydata as nd import sys L03B_FORMAT = "npyl03-b-{0:04d}.npy" L03B_MESH2_FORMAT = …

土地利用細分メッシュ再考

土地利用細分メッシュが100mメッシュだからと言って、まるっきり使えないというのはもったいないので、「各種別毎に表示してみたらどうだろうか?」と種別コードを指定して表示するスクリプトを書いて実行してみた。 実行結果 個別に出力すると意外と使えそ…

土地利用細分メッシュ

国土数値情報ダウンロードサービス 続いて、土地利用細分メッシュもマップとして表示してみた。 細分とはいえ、100mメッシュなのでこれも厳しい。 # coding: utf-8 import xml.etree.ElementTree as ET import numpy as np import matplotlib.pyplot as plot…

土地利用3次メッシュ

国土交通省のGISのサイトに「土地利用3次メッシュ」なるものがあったので、最新版をダウンロードしてマップとして表示してみた。 1kmメッシュと書いてあるので、かなり大きな範囲での情報なので使えない。 80x80のサイズ。 ソースコードはコレ。 ファイル名…

木を生やす(5)

「木を生やす(1)」で書いた「木を生やす」意味の1.の方「木を生やす場所を決める」を考える。 木を生やす場所を決める方法として、1つには地形から判断する方法がある。次の2つの画像はだいたい同じ範囲の標高データとGoogleマップの衛星写真だけど、だい…

木を生やす(4)

wood.pyをモジュール化してpycraパッケージに追加したい。 そして、他のスクリプトから使えるようにしたい。 pycra/wood.pyとして保存。 # coding: utf-8 import mcpi.minecraft as minecraft import mcpi.block as block import math import random import …

木を生やす(3)

コマンド1つで幹も生やして葉っぱも生成したい。 leaves.pyを関数にして、木(幹)の位置と高さを指定して、それに合わせて葉っぱを生成する。 wood.pyとして、こんな感じに実装。 # coding: utf-8 import mcpi.minecraft as minecraft import mcpi.block as…

木を生やす(2)

leaves.pyを外はそのままで内部を間引くようにしてみた。 # coding: utf-8 import mcpi.minecraft as minecraft import mcpi.block as block import math import random import sys # ここからスタート mc = minecraft.Minecraft() if len(sys.argv) < 6: sy…

木を生やす(1)

木を生やしたい。 木を生やすには、次の2つの項目がある。 木を生やす場所を決める。 生やす木の形を決めて、実際にブロックを設置する。 木を生やす場所を決めるのは、またの機会にして、今回は木の形を決めて実際にブロックを設置する方を考える。 適切な…

池の水面データを参照しながらブロックを設置する(2)

loadnpy3.pyを先に池を作ってから、水を設置するように変更した。 さらに、x軸のループではsleepを入れないようにした。 これは問題はあるけど、水の処理をあまり走らせたくないので。 # coding: utf-8 import mcpi.minecraft as minecraft import mcpi.bloc…

池の水面データを参照しながらブロックを設置する(1)

loadnpy3.pyとして作成した。 # coding: utf-8 import mcpi.minecraft as minecraft import mcpi.block as block import numpy as np import pycra.npydata as nd import sys from time import sleep LOG_FMT = "Z step ({}/{})" # ここからスタート mc = mi…

池の水面データの生成

watersurf.pyとして実装した。 # coding: utf-8 import numpy as np import pycra.npydata as nd import re import sys WATER_SURF_FILE = "water-surf.npy" if len(sys.argv) < 7: sys.exit("watersurf.py npfilename hyoukou point_y point_x ymin:ymax xm…

pycraパッケージ(0)

今まで書いてきたスクリプトから、共通する部分を集めてpycraパッケージを作る。 まだ(0)として、NPY_DIRとメッシュ番号を含んだファイル名を分解する正規表現しか定義してない。 構成ファイル pycra __init__.py npydata.py 各ファイルの内容 __init__.p…

物体の数を数える(池)

DEM構成点種別マップでこのページの「物体の数を数える」を試した。 プログラム 物体として認識されるサイズとして3種類を試した結果を表示するようにした。 buttai.pyとして作成。 # coding: utf-8 import numpy as np import matplotlib.pyplot as plt imp…

DEM構成点種別のマップ化によって

DEM構成点種別のマップを見て、「池の個数と位置(範囲)がわかるといいなぁ〜」と思った。 DEM構成点種別のマップ NumPyの配列の操作をいろいろ調べていて、ちらっと見た記事を思い出して探した。 このページの「物体の数を数える」という部分。 SciPyで画…

下夕田池(しもんたいけ)をロードして(1)

とりあえず下夕田池(しもんたいけ)をロードしてみた。 ロード中。 ロードが完了して。 フィルターによって縁がなだらかになっているのがわかった。 ただし、現在は縁は66mなのに池の底が-1mなので急激に深くなっているけど。 池の深さを5m(標高61m)とか…

内水面の処理(1)

川や湖、池は現在は一律-9mにしてあるけど、本来は周りの標高に合わせて、それらしい底を作って水を張りたい。 閉じた池ならまだいいけど、川だとなかなか厄介。 また、5mメッシュデータなら内水面の判断が簡単だけど、5x5倍してフィルターかけたデータだと…

範囲を指定しての切り出し

配列から任意の範囲を指定して切り出したい。 例えば、池とその周辺だけとか。 npyext.pyとして作成した。 # coding: utf-8 import numpy as np import sys NPY_DIR = "/Users/pycra/Desktop/NPY_DATA" if len(sys.argv) < 4: print("npyext.py npyfilename …

グリッドを表示

plotnpy.pyで引数でグリッドを表示できるようにした。 # coding: utf-8 import numpy as np import matplotlib.pyplot as plot import sys NPY_DIR = "/Users/pycra/Desktop/NPY_DATA" # ここからスタート if len(sys.argv) < 2: print("plotnpy.py npyfilen…

ファイル名を整理

いろいろなサイズのNumPy配列のファイルを作っているので、わけがわからなくてなってきたので、ちゃんと規則を決めておく。 種類 サイズ NumPy 2次メッシュ 1500x2250 npydata-{0:04d}-{1:02d}.npy 2次メッシュ (DEM構成点種別) 1500x2250 npysurf-{0:04d}-{…

処理に時間がかかり過ぎる

ちょっと試そうにも3次メッシュ(150, 225)で6〜7分。5x5倍(750, 1125)すると2時間半。 2次メッシュはそのままのサイズ(1500, 2250)でsleepを1/10にして1時間。ただし、これはかなり神経を使う。 やはり確認は5x5倍で見たいので3次メッシュを5x5に分割(これ…

1/5スケールを読み込んでみて…

気付いた事 1/5スケールでも全体を見渡すことはできない。 池や川がみんな同じ深さになっていて、水を張ってない。 道路や鉄道が欲しい。 駅やショッピングセンター、工場等、目印になる構造物が欲しい。 木や草が生えてない。 田んぼや畑、防風林とか土地利…