パイクラおじさんの日記

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

Python言語

軌道の中心線(1)

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

木を生やす(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 …

木を生やす(1)

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

pycraパッケージ(0)

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

モジュール化

いつも同じパスの文字列を定義しているし、DEM構成点種別マップの定数などをまとめて定義してimportして使えるようにしたい。 モジュール化を調べたら、パッケージというものもあったので、パッケージ化も試してみる。 maku77.github.io 上のサイトを参考に…

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…

グリッドを表示

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に分割(これ…

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

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

引数と文字列フォーマット

100個のXMLファイルを個別に処理するにしても、その度にソースコードを書き換えるのは面倒なので、引数で指定したい。 引数 引数にアクセスするにはsysをインポートして、配列sys.argvで参照する。 # coding: utf-8 import sys print(sys.argv) argv.pyとし…

XMLパーサー

PythonのXMLパーサーをググると、これが見つかりました。 20.5. xml.etree.ElementTree — ElementTree XML API — Python 3.6.1 ドキュメント まずはこのXMLをパースして<gml:tupleList>を見つけて、中のテキストを取り出す(だけの)プログラム(xmlparse.py)を書いてみまし</gml:tuplelist>…