【No.005】UTMとは?GIS初心者必読の解説記事

はじめに

GISに関して勉強を進めていると、よく”UTM”という単語を目にすると思いますが、今回はそのUTMについて解説していきます。まずUTMとはUniversal Tranverse Mercatorの略で日本語に直すと「ユニバーサル横メルカトル」になります。地球は球体(楕円体)なので、本来であれば地図も地球儀のように球体で作ることができれば良かったのですが、それだと扱いにくいということで平面にする技術が生まれました。

その手法の1つが中学地理の授業でも習ったメルカトル図法であり、UTMはそれの派生形と考えてもらえばよいかと思います。したがって、まずはメルカトル図法が何かから簡単に解説していきます。

★関連リンク
業務で活用できるAI技集のまとめはこちら

メルカトル図法とは

学術的な話は一旦置いておいて、イメージとしてお伝えしたいと思います。
①まず地球を準備します。②赤道に接するように紙を円筒状に覆います。③地球の中心部の光源で照らした際、円筒状の紙に投影されたものがメルカトル図法で作成した地図になります。特徴として赤道近くでは精度が高いのですが、緯度が大きくなる(=北極・南極に近づく)につれてブレが大きくなります。市販の地図ではこの図法を用いた地図を用いることが多いのですが、ロシアやグリーンランドが必要以上に大きく見えてしまうのもこの図法の特徴といえます。

UTMとは

メルカトル図法が理解できるとUTMの理解はスムーズです。先ほどメルカトル図法の特徴として、赤道付近の精度が高いと記載しました。この恩恵を東西方向ではなく南北方向にしたのがUTMです(つまり中心軸を横にするので横メルカトルと呼ばれています)。図にするとこんな感じでしょうか。今度は東西方向で縮尺がだんだんおかしくなりブレが大きくなります。

ここで1つ問題が発生します。純粋なメルカトル図法のときは赤道を中心軸として平面地図を作成しましたが、UTMの場合はどの子午線(経線)をメインにすれば良いのでしょうか。その答えは「利用シーンによって異なる」になります。実はUTMは6°おきに番号が管理されていて、UTM1~60まで存在しています(この番号をUTMゾーンと呼びます)。例えば、日本は概ねUTM52~54が該当しているので、これを使うことでより正確な地図をつかうことができます。

もう少し掘り下げて説明をすると、例えばUTM54であれば東経138°~144°の範囲が該当します。この場合、中央子午線は東経141°となり、この経線がUTMの中心軸となります。同じ北海道でも知床などの道東地域ではUTM55、札幌・函館はUTM54の地域になりますので、正確なGIS処理を実施したい場合は座標系を区別して使ったほうが良いという結論になります。

計算機(緯度経度→UTM座標)





X座標:

Y座標:

計算機(UTM座標→緯度経度)




緯度:

経度:

Appendix

ここから先は少し応用編ということで、緯度経度の表記をUTM座標に変換する方法を記載します。Pythonを使いますので、予め以下の準備をお願いします。

・Python環境の構築(Anacondaのインストール等)
・必要ライブラリのインストール(Geopandas)

コードは以下の通りです。

import geopandas as gpd
from shapely.geometry import Point

# 変換したい緯度経度の定義
lon, lat = 139.7671, 35.6812

# WGS84座標系での座標をPointオブジェクトに変換
point = Point(lon, lat)

# PointオブジェクトをgeopandasのGeoDataFrameに変換
gdf = gpd.GeoDataFrame(index=[0], crs="EPSG:4326", geometry=[point])

# UTM zone 53Nに座標変換
gdf_utm = gdf.to_crs("EPSG:6691")

# 座標を表示
print(gdf_utm.geometry.x[0], gdf_utm.geometry.y[0])

まず変換したい任意の緯度経度の値をlon, latに代入します。そして、その後にlon, latを位置情報に変換して、GeoPandasのデータフレームに代入します。”gdf”の中身とcrs値は以下のような形になります。

ここでcrs=”EPSG:4326″の”EPSG:4326″とは世界測地系のWGS84とよばれるもので、GPSにも用いられる座標系になります。この座標系をUTM54(”EPSG:6691″)に変更し、print文で出力しています。
ちなみに”gdf_utm”の中身とcrs値は以下のような形になります。

無事、変換することができました。

コメント