パイクラおじさんの日記

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

2017-01-01から1年間の記事一覧

物体の数を数える(まとめ)

今まで比較のためにいくつかのパラメータを変えて実行していたのを引数で渡して処理するように変更した。 また、結果のlabel配列をファイルに保存するように修正した。 npyobj.pyとして作成。 # coding: utf-8 import numpy as np import matplotlib.pyplot …

物体の数を数える(川)

「池」でのテストを行ったので、次は「川」で試した。 普通の「川」ではサイズ3x3では認識されない可能性があることがわかった。 サイズ1x1を標準にするつもり。

exit()の使い方

今までexit(-1)とか適当に書いてきたけど、ちゃんと調べたら間違ってました。 www.sejuku.net 自分の使いたいexit()はsys.exit(…)でした。 (もちろん、import sysが必要。) 今後、順次スクリプトを修正します。

物体の数を数える(池)

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

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

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

DEM構成点種別のマップ化

標高データには、その標高地点毎の表面情報(「地表面」、「内水面」等で「DEM構成点種別 」という名前)が書いてある。 このデータも出力してみる。 仕様書を確認したところ、次の6種類があった。 DEM構成点種別 意味 割当値 地表面 地表面 5 表層面 不明 4…

下夕田池(しもんたいけ)をロードして(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}-{…

NumPy配列の分割を使って4次メッシュを作成

# coding: utf-8 import numpy as np import matplotlib.pyplot as plt import sys NPY_DIR = "/Users/pycra/Desktop" NPY_FILE = "npydata-{0:04d}-{1:02d}-{2:02d}.npy" NPYDIV5_FILE = "npydiv5-{0:04d}-{1:02d}-{2:02d}-{3:02d}.npy" # ここからスタート…

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

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

5x5倍する

いよいよ5x5倍する。 3x3倍でもあのドット感なので、5x5倍してぼかし処理をしないといけないだろうと、画像処理を調べていたらSciPyにフィルター処理があって、gaussian_filterというので処理してみることに。 5x5倍そのまま 5x5倍 gaussian_filter(2) pyplo…

3x3倍する

np.repeat(array, repeats, axis)という関数(?)で各要素を指定倍数だけ増やせるらしい。 全体を5x5倍すると確認するのにえらいことになる(処理に20時間以上かかる)ので、まずは3次メッシュを3x3くらいして見ようと思う。 xmlnpy.pyを元に最後に配列を縦…

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

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

マイクラ内での読み込み(4)

3次メッシュの読み込みが出来たので、2次メッシュ(5340-22)を読み込んでみることにした。 2次メッシュ(5340-22) まずは5x5は面倒なので、高さを1/5にして.npy形式に出力して、読み込みを実行した。 読み込みには小1時間かかった。 大網駅 小中池 千葉市…

マイクラ内での読み込み(3)

反省点 5mメッシュを標高をそのままの比率でブロックを設置しているので傾斜が急峻。 高度差が大きいところは透けてしまう。 処理が重い。処理中は操作が困難。 対策 5x5に拡大する? 下に土を5個くらい付ける。 sleep(?)を入れてみる。 akatsukix.seesaa…

マイクラ内での読み込み(2)

マイクラでの操作 マイクラでの操作を順番を追って説明します。 Pythonが動くForgeを入れたバージョンで起動 「シングルプレイ」を選択 「ワールド新規作成」を選択 ワールド名:Python Loadnpy ゲームモード:クリエイティブ 「その他のワールド設定…」を選…

マイクラ内での読み込み(1)

(Pythonが実行可能な状態にした)マイクラに認識されるように次のディレクトリ(各自それぞれのバージョンによって違う可能性があります)にloadnpy.pyという名前で保存した。 ~/Library/Application\ Support/minecraft/versions/1.12-forge1.12-14.21.1.2…

NumPy配列のSave

2次メッシュをいきなり読み込ませるのは怖いので、まずは3次メッシュを出力する。 xmlnpy.pyに今までの修正点を入れて、さらにNumPy配列を保存するようにした。 # coding: utf-8 import xml.etree.ElementTree as ET import numpy as np import sys GEO_DIR …

NumPyの配列のLoad/Save

せっかくNumPyの配列ができたので、そのまま保存してマイクラ内でその配列を読み込んだら便利と思って、NumPyの配列のLoad/Saveを調べた。 qiita.com なんだ、関数一発か…

データ数が少ないエリア(2)

左上が海になっているエリア(534020, 534010)のデータをダウンロードして、<gml:startPoint>が0 0以外のデータに対応させた。 (ついでに、534021, 534011もダウンロードした。) 基盤地図情報ダウンロードサービス 左上に海があるエリア 実行結果はFig. 20。 Fig. 20 最新</gml:startpoint>…

データ数が少ないエリア(1)

534023でデータ数が少ないエリアがあったので、それがどこなのかを調べたところ最初に見つかったのが04だった。 xmlplot.pyで処理してみると、33645行あって150 x 225 = 33750行あるべきなのに足りないのは… と、スタート位置<gml:startPoint>を確認すると0 0で正しい。 なの</gml:startpoint>…

隣接エリアのデータ

534022の隣接エリア3つ(534023, 534012, 534013)のデータをダウンロードしてきて、同じように処理してみた。 基盤地図情報ダウンロードサービス エリア選択画面 各エリアの画像はそれぞれFig. 22, 23, 12, 13になっています。(534022も入れました。) Fig…

XMLを配列にする部分の関数化

XMLを配列にする部分を関数化するに当たって、関数内でエラーが発生した場合、どうすりゃいいの? 「例外とか投げるのかな?」とググったら見つかった。 8. エラーと例外 — Python 3.6.1 ドキュメント XML内に<gml:tupleList>が無い場合にExceptionを投げて、例外があっても</gml:tuplelist>…

配列の結合

配列をMatplotlibで図にできるのが便利なので、2次メッシュ全体を1つの図に表示できたらいいなぁと配列の結合でググった。 numpy.concatenate — NumPy v1.13 Manual やはりサイズというか結合する方向の項目数を合わせないといけないので、まずは横に結合し…

標高データをMatplotlibで表示してみる

# coding: utf-8 import xml.etree.ElementTree as ET import numpy as np import matplotlib.pyplot as plot import sys GEO_DIR = "FG-GML-{0:04d}-{1:02d}-DEM5A" GEO_XML = "FG-GML-{0:04d}-{1:02d}-{2:02d}-DEM5A-20161001.xml" if len(sys.argv) < 4: …

標高データを配列に

基盤地図情報~数値標高モデルを利用する - Qiita このページを参考にNumPyを使ってみた。 # coding: utf-8 import xml.etree.ElementTree as ET import numpy as np import sys GEO_DIR = "FG-GML-{0:04d}-{1:02d}-DEM5A" GEO_XML = "FG-GML-{0:04d}-{1:02d…

引数対応のXMLパース

# coding: utf-8 import xml.etree.ElementTree as ET import sys GEO_DIR = "FG-GML-{0:04d}-{1:02d}-DEM5A" GEO_XML = "FG-GML-{0:04d}-{1:02d}-{2:02d}-DEM5A-20161001.xml" if len(sys.argv) < 4: print("xmlparse.py mesh1 mesh2 mesh3") exit(-1) mesh…