パイクラおじさんの日記

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

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

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

実行結果

個別に出力すると意外と使えそうなデータもありそう。

例えば、田、その他農用地とか、森林とかはどうせ広いからこの程度のメッシュでも使えるような気がする。

また、荒地、海浜とかは地表に石とか砂が露出したイメージで草、土ブロック一辺倒から変化をつけられる。

道路、鉄道は微妙。ちゃんとつながってないのが痛い。

種別100(田)

f:id:pycra:20171009053313p:plain

種別200(その他農用地)

f:id:pycra:20171009053327p:plain

種別500(森林)

f:id:pycra:20171009053342p:plain

種別600(荒地)

f:id:pycra:20171009053355p:plain

種別700(建物用地)

f:id:pycra:20171009053407p:plain

種別901(道路)

f:id:pycra:20171009053419p:plain

種別902(鉄道)

f:id:pycra:20171009053436p:plain

種別1000(その他用地)

運動競技場、空港、競馬場、野球場、学校、港湾地区、人工造成地の空地 f:id:pycra:20171009053449p:plain

種別1100(河川地及び湖沼)

f:id:pycra:20171009053501p:plain

種別1400(海浜)

f:id:pycra:20171009053514p:plain

種別1500(海水域)

f:id:pycra:20171009053524p:plain

種別1600(ゴルフ場)

f:id:pycra:20171009053535p:plain

スクリプト

# 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()