土地利用細分メッシュ再考
土地利用細分メッシュが100mメッシュだからと言って、まるっきり使えないというのはもったいないので、「各種別毎に表示してみたらどうだろうか?」と種別コードを指定して表示するスクリプトを書いて実行してみた。
実行結果
個別に出力すると意外と使えそうなデータもありそう。
例えば、田、その他農用地とか、森林とかはどうせ広いからこの程度のメッシュでも使えるような気がする。
また、荒地、海浜とかは地表に石とか砂が露出したイメージで草、土ブロック一辺倒から変化をつけられる。
道路、鉄道は微妙。ちゃんとつながってないのが痛い。
種別100(田)
種別200(その他農用地)
種別500(森林)
種別600(荒地)
種別700(建物用地)
種別901(道路)
種別902(鉄道)
種別1000(その他用地)
運動競技場、空港、競馬場、野球場、学校、港湾地区、人工造成地の空地
種別1100(河川地及び湖沼)
種別1400(海浜)
種別1500(海水域)
種別1600(ゴルフ場)
スクリプト
# coding: utf-8 import xml.etree.ElementTree as ET import numpy as np import matplotlib.pyplot as plot import sys JPGIS_FILE = "JPGIS/5340/L03-b-14_5340-jgd_GML/L03-b-14_5340.xml" if len(sys.argv) < 2: sys.exit("Usage: jgsb2npy.py typeNo") typeNo = int(sys.argv[1]) tree = ET.parse(JPGIS_FILE) root = tree.getroot() for e in root.getiterator(): print(e.tag) tl = root.find('./{http://nlftp.mlit.go.jp/ksj/schemas/ksj-app}LanduseSubdivisionMesh/{http://nlftp.mlit.go.jp/ksj/schemas/ksj-app}coverage/{http://www.opengis.net/gml/3.2}rangeSet/{http://www.opengis.net/gml/3.2}DataBlock/{http://www.opengis.net/gml/3.2}tupleList') if tl is None: raise Exception("{http://www.opengis.net/gml/3.2}tupleList is not found") lines = tl.text.split("\n") array = np.empty((800,800), dtype=int) i = 0 for l in lines: d = l.split(" ") d.pop(0) d = np.array(d, dtype=int) if len(d) == 800: array[i] = d i += 1 array = 1 * (array == typeNo) plot.imshow(array, interpolation='nearest') plot.colorbar() plot.show()