第13章 地理院・国交省データの利用

第13章 地理院・国交省データの利用

標高メッシュデータ

データの下準備

地理院からデータをダウンロードするとzipで圧縮されている.中にはXML形式のファイルが入っている. これを扱いやすくするために緯度,経度,標高のxyz形式にするため, 同じく地理院からダウンロードできる基盤地図情報ビューアをインストールする. これを起動して開く画面に,標高メッシュのzipファイルをドラッグすると地形が描画される.

「エクスポート>標高メッシュをシェープファイルへ出力」を選んで開く画面で,(1)直角座標系に出力するチェックを外し,(2)出力ファイル名の拡張子を「.xyz」に変える.拡張子がデフォルトのままだと,後で開いても文字化けして読み取れなかった.ただし(1)はナントカ座標系とやらのxyz座標で出力したいのならチェックが必要(図*※相互参照無効*).

基盤地図情報ビューアによるxyz形式への変換時の画面.(標高データ: 国土地理院基盤地図情報数値標高モデル)

基盤地図情報ビューアによるxyz形式への変換時の画面.(標高データ: 国土地理院基盤地図情報数値標高モデル)

データの読み込み

作成したxyzファイルは,numpyを使ってcsvと同じ方法で読み込める. すなわちdelimiterを「,」にしてnp.loadtxt()である. ただそのままだと最初の列に行番号が入っているので, 必要なxyzの列だけを取り出すためにusecols=[1,2,3]としてcolumnを指定すると良い.

dat = np.loadtxt(r"out.xyz",
                 delimiter=",",
                 usecols=[1,2,3])

国交省による道路等の線データの利用

道路や鉄道路線などのデータをダウンロードすると,シェープファイルやgeojsonファイルなどが入っている.これをライブラリを使って取り込んでプロットする.

jsonライブラリの利用

(1)import json. (2)open(<.geojson>, ‘r’, encoding=<utf_8_sig>) (3)json.load(openfile) (4)条件で絞込.(5)リストに格納してプロット.

ダウンロードしたファイルのutf-8フォルダー中にある方の.geojsonデータを使う.直上のフォルダにも.geojsonがあるがencodingを何にすれば良いのかわからず使えなかった.‘cp932’にしてみたがエラーが出た.

import json
train_path_gj = "鉄道/utf8/N02-21_RailroadSection.geojson"
jopen = open(train_path_gj,
             'r',
             encoding = 'utf_8_sig'
             )
dat_j = json.load(jopen)

kobe = []
# ftr = []
for data in dat_j["features"]:
    if "神戸電鉄" in data["properties"]["N02_004"]:
        # ftr.append(data["properties"]["N02_004"])
        tmp = data["geometry"]["coordinates"]
        kobe.append(tmp)

for i in range(len(kobe)):
    fig.plot(
        data = kobe[i],
        style = 'f0.2c/0.1c',
        pen = '0.5p'
        )
国交省からダウンロードした鉄道データをjsonライブラリを用いて読み込みプロットした結果.(標高データ: 国土地理院基盤地図情報数値標高モデル; 鉄道路線データ: 国土交通省国土数値情報)

国交省からダウンロードした鉄道データをjsonライブラリを用いて読み込みプロットした結果.(標高データ: 国土地理院基盤地図情報数値標高モデル; 鉄道路線データ: 国土交通省国土数値情報)

geopandasの利用

gpd.read_file(<utf-8のgeojsonデータ>, encoding='utf_8_sig')

condaでインストールできるライブラリgeopandasを使う方法.(1)shpファイルを使う場合:

train_path = "鉄道/N02-21_RailroadSection.shp"
df = gpd.read_file(train_path_gj, encoding='cp932')

(2)geojsonファイルを使う場合:

import geopandas as gpd
train_path_gj = "鉄道/N02-21_RailroadSection.geojson"
df = gpd.read_file(train_path_gj, encoding='utf_8_sig')