標高データの取得
標高データには,国土交通省の5mメッシュのDEM (数値標高モデル,Digital Elevation Model)を用います.
基盤地図情報ダウンロードサービス > 数値標高モデルより取得できます.
5mメッシュごとに標高値が与えられています.
左側で5mメッシュの部分の3つのチェックボックスをオンにします.
今回は,例として,神奈川県を対象とします.
画面左側で,5A(航空レーザ測量)を選択します.最も精度が高い測量方式です.
Pythonによる分析
必要なライブラリのインストール
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from shapely.geometry import Point
import folium
from shapely.geometry import LineString, MultiPoint
from lxml import etree #XML や HTML の解析、操作、生成を効率的に行うライブラリ
from pathlib import Path
import geopandas as gpd
GeoTiff形式への変換
標高データの処理および分析には,GeoTIFFと呼ばれるファイル形式に変換する必要があります.
そこで,Pythonを用いて,先ほど数値標高モデルからダウンロードした標高データを,一括でGeoTIFF形式に変換し,描画したり,ある施設の標高(最寄りの標高値)を取得したりする方法を紹介します.
以下の方が,Githubに公開してくださったので,こちらを参考にいたします.
↓参考記事
主な分析コード
- convert_all_dem.py: 数値標高モデルでダウンロードしたzipファイルをまとめてダウンロード
- build_dem_index.py: 全タイルの緯度経度範囲をJSONに記録
- plot_dem_overview.py: GeoTIFFをまとめて表示(
distutilsがPython3.12以降廃止になったので,代わりにsetuptoolsをインストール) - get_elevation.py: 緯度経度座標から標高値を取得する関数
get_elevation.pyの中で,一点誤植と思われる箇所があります.
場所:with rasterio.open(tif_path) as src: の次の行
誤)col, row =
正)row, col =
実装
plot_dem_overview.py
get_elevation.py
メインとなるのはおそらくこの部分でしょう.
標高を知りたい施設や場所の緯度経度を指定すると,最寄りの標高値を返してくれます.
get_elevation関数を,データフレームの各行に対して適用すれば,施設リストからまとめて標高値を付与することができます.
例)port_list_dfのlatitude, longitude列の値を元に,各行に標高値を付与:
for idx, row in port_list_df.iterrows():
lat = row["latitude"]
lon = row["longitude"]
elevation = get_elevation(lat, lon)
port_list_df.at[idx, "elevation"] = elevation


