PR

QGISとMANDARAの座標値の違いをLeaflet+TopoJSON環境で確認する

国土数値情報行政区域TopoJSON
この記事は約14分で読めます。

国土地理院の国土数値情報 行政区域データを一回QGISとMANDARA10でそれぞれ読み込み、シェープファイル(Shapefile)形式で保存したデータをmapshaperでTopoJSONに変換して座標値の違いがどのように現れるかを確認して見る事にします。

読み込むデータはシェープファイル形式ですが、それを地図情報は何も加工せずに名前を付けてシェープファイル形式で保存します。
なお文字コードは元データのShift-JISからUTF-8に変更しています。

保存したデータはmapshaperでTopoJSON形式に変換をした後、TopoJSONデータをWebブラウザで表示するためにLeafletというWeb地図を扱えるJavascriptライブラリを使用して両者を重ね合わせて表示させることにします。

結論としては、MANDARAの座標値が単精度になっているためなのですが、まずは地図情報を扱ううえで避けて通ることができない「測地系」につきまして確認をしたく存じます。

スポンサーリンク

測地系の違いとは?

昨今は携帯電話の位置情報サービスのデータをビックデータとして集めて人の動きを解析する事ができるようになって来ています。

この位置情報というのは現在地の緯度経度の情報になるのですが、緯度経度というのは一意に決まるものだと普通は思ってしまうのですが、地理情報システム(GIS)の世界では「基準とする測量方法によって変わってくる」ものなのです。

「測地系」の詳細につきましては下記「空間情報クラブ」のページで解り易く説明されていますので、是非ご参照いただければ幸いです。

本シリーズに関係する範囲で上記ページのポイントをまとめますと、下記のようになります。

  • 測地系とは、地球を測るにあたり「地球の形の捉え方」とそれに基づき「どこから測るのか?(=基準点)」を定義したものになります。
  • 日本では測地系を大別すると「日本測地系(「旧測地系」)」と「世界測地系」に分れますが、2002年4月の測量法改正以降は基本測量や公共測量は「世界測地系」で測量する必要があります。
  • 世界測地系はワールドワイドに対応したものですが、現在日本で構築・維持されている日本測地系2011(=JGD2011)は2012年からで、前身として2001年からの日本測地系2000(JGD2000)が存在しています。
  • 世界測地系の中でアメリカで構築・維持されている測地系WGS84と日本測地系2000の間には「現在ほとんど誤差がない」のですが、厳密には両者は異なるものとして区別する必要があります。

なお世界測地系につきましては国土地理院の「世界測地系移行に関する質問集(Q&A)」のサイトで次のように説明されています。

世界測地系とは、世界で共通に利用できる位置の基準をいいます。
 測量の分野では、地球上での位置を経度・緯度で表わすための基準となる座標系及び地球の形状を表わす楕円体を総称して測地基準系といいます。つまり、世界測地系は、世界共通となる測地基準系のことをいいます。

MANDARA10のシェープファイル出力は日本測地系2000になる

MANDARA10の「ヘルプ目次」から「起動画面と設定画面」を開いていただくとその中に「設定画面のメニュー」の項目があり、更にスクロールすると「シェープファイル出力(設定画面)」が現れます。

そこに書かれている記述を下記に引用させていただきます。

座標系・測地系が設定してある地図ファイルを使用している場合には,prjファイルも出力されます。その際、「日本測地系」の場合は「Tokyo」、世界測地系の場合は「JGD_2000」として出力されます。

なお元となる国土地理院の国土数値情報 行政区域データの座標系は「JGD2011 / (B, L) 」と記載されていますので、MANDARA10でシェープファイル出力すると測地系が日本測地系2011から日本測地系2000に変換される事になります。

日本測地系2011と日本測地系2000の違いについて

日本測地系2011と2000の違いにつきましては、先ほども参照致しました「空間情報クラブ」の下記ページで解り易く説明されていますので、是非ご参照いただければ幸いです。

「JGD2011へ移行したきっかけは、東日本大震災による大規模な地殻変動」のためになりますが、それにより北海道・近畿・中国・九州沖縄に中部の愛知県・静岡県を加えた西日本と、それ以外の中部・東北・関東の東日本で測地座標系が異なっており国土地理院では、位置の変化を補正するための座標補正パラメータファイル(PatchJGD)を提供しています。このパラメータを使用することで計算処理することが可能です。

なお下記の国土地理院のページで座標標高補正パラメータファイルが公開されています。

そうなりますと、MANDARA10はJGD2000となりますが元となるJGD2011から補正しているはずなので座標値に違いができるとは思えません。

QGISの座標参照システム(Coordinate Reference System)とは

QGISには座標参照システム(CRS)という機能があります。下記「QGISユーザーガイド」の「投影の操作」で説明されていますが、現時点(2020/4/15)でのユーザガイドの最新はv3.10になります。

ポイントを下記にまとめています。

・ 座標参照システム(CRS)は、数値座標を地球の表面上の位置に関連付ける方法です。
・QGISは約7,000の既知のCRSをサポートしています。
・これらの標準CRSは、European Petroleum Search Group(EPSG)およびInstitut Geographique National de France(IGNF)によって定義されたものに基づいています。

なお上記の一番最後に書かれているIGNFはフランスの公的行政機関になるためEPSGの方がGoogle検索などで探し易いです。

これだけの情報ですと、これまで話題にしてきた世界測地系との関係性が解らないのですが、左図QGISの座標参照系の選択画面にある「あらかじめ定義されたCRS」を見ると、座標参照系のなかにJGD2011が複数存在していることが解ります。

左図では参照系ID蘭の番号が少しだけ違うものが2つ表示されています。

ただし今回使用しているのは世界測地系が設定してある地図ファイルなので、QGISが自動的に最適なCRSを設定してくれるため(注1)何もしなくても大丈夫ですが、念のため「epsg.io」のサイトで「JDG2011」を入力して検索をすると29個の対象レコードが見つかります。

(注1)QGIS3.12ではデフォルトの設定として世界測地系WGS-84(EPSG4326)に座標変換することを提案してきます。両者に差がほとんどないため、それを受け入れてもほぼ問題はありませんが「JDG2011」を明示的に選択することも可能です。なお座標変換を受け入れたとしても保存をする際にはCSRは元の世界測地系 「JDG2011」 が初期設定されています。

今回は上記に関して個々の内容のご説明を省略しておりますのでお含み置きいただければ幸いです。
なおEPSG6668と6667の違いはデータの単位が「度」か「メートル」かになり、基本的には使用目的や使用地域、座標系によって分けられている認識です。

両者の地図情報を重ね合わせて見る

QGISとMANDARAのデータの作り方で測地系の違いによる差は無い事が解りましたので、実際に両者を重ね合わせて見たいと思います。

世界測地系が設定してあるシェープファイルを「mapshaper」を使ってTopoJSONに変換し、「Leaflet」を使用してWeb上に表示させています。

対象の県は、「海を持たない県」のなかで比較的面積の小さく、市区町村の数が多い埼玉県を選択しています。
下記は画像になりますが、埼玉県全体のTopoJSONデータを元データを加工せずにWebに公開することは利用規約でNGなので一つの市を切り出してご紹介したく存じます。

今回選んだのは埼玉県の日高市になりますが、なぜ日高市を選んだのか?につきましては特に理由は無く、下図のように何となく真ん中に近い位置だったためです。

まず画面キャプチャーでご説明致します。その後で実際に動かしてご確認いただければ幸いです。

ズームレベル13で初期画面が開きます。ズームレベルは「11から20」で設定しています。

理由があって中心から少し右にずれた位置にフォーカスしています。

地図にカーソルを合わせると地図の背景色が薄青色に変わりますが、青はMANDARA10で作成した地図データを表しています。

画面上に赤と青の小さい丸印が表示されています。

丸印の中心付近にカーソルを合わせると、赤丸では地図の背景色が薄赤色に変わりますが、赤はQGISで作成した地図データを表しています。

赤丸の部分で境界線が微妙に青線より外側に出ているために、その辺りでカーソルを移動させると検知して色が変わります。
青丸の部分では逆の状態になっているために背景色が青色に変わります。

別の境界線上でも色が変わる所がありますが、確認した範囲では丸印を付けたところがそれぞれの色の変化が一番起きやすい場所になっていました。

画面右上の「プラス・マイナス」ボタンでズームイン・ズームアウトします。

それ以外にもマウスのホイールを「前方回転・後ろ回転」、マウス左ボタンを「ダブルクリック・シフトキーを押しながらのダブルクリック」でもズームイン・ズームアウトします。

今回は、「ブラス・マイナス」ボタンを使用して画面の中心を変えないようにしてご説明致します。

左図はズームレベル14になった状態です。

赤丸・青丸の位置がズームレベル13の時と変わっています。

地図の縮尺によって線がずれている場所と言いますか、色の変化が一番起きやすい場所が変わります。

両者は本当に微妙なずれなので、一定の場所にならずにズームレベルによって変化して行きます。

左図はズームレベル15で地理院標準タイルのチェックボックスをクリックした状態になります。

地理院標準タイルはズームレベル5~18で提供されていますが、市区町村界の表示はズームレベル12~17までになります。

両者の線が市区町村界から外れる事はありません。

左図はズームレベル16でOpenStreetMapのチェックボックスをクリックした状態になります。

OpenStreetMapはズームレベル18まで提供されています。

画面を動かして見ていただければ解るのですが、OpenStreetMapの市区町村界は少しずれている箇所があることが解ります。

なお国土地理院標準タイルの方が最新の状態であると認識しています。

左図はズームレベル17の状態ですが、17以降には丸印は表示していません。

微妙ではありますが、赤線と青線のずれが目視で解る場所があります。
(例えば左図のカーソル部分)。そのようなところでカーソルを移動させていただくと背景色が変わります。

左図はズームレベル18の状態です。

色の変わるポイントが見つけ易くなっている事と存じます。

左図はズームレベル19の状態です。

地図の縮尺としては1.25/1000になりますのでかなりな高精度での表示になります。

カーナビゲーションシステムの地図としては不十分がもしれませんが、分布図のためであれば十分である認識です。

「実際に動かせるサイトのご紹介」

下記リンクをクッリクしていただくと、上記でご説明したウェッブサイトが動かせる形で開きます。
Leafret.jpを使用したHTMLファイルになります。是非一度ご確認をいただければ幸いです。

Saitama11Hitaka51

なお恐れ入りますが動作確認をしたブラウザ環境は下記になります。

  • Google Chrome バージョン: 81.0.4044.113
  • Internet Explorer11 更新バージョン11.0.185(KB4550905)
  • Microsoft Edge  44.18.18362.449.0
  • FireFox 75.0

ずれが起きる原因はMANDARA10での座標値の持ち方の違いから

以前MANDARAの掲示板でmapshaperでMANDARA10で作成したシェープファイルを開くとintersections(線の交差)ができる理由について質問させていただいたところ、「MANDARAでは、座標を単精度で保持しており、もともとのシェープファイルの倍精度よりも粗くなる」というご回答をいただいておりました。

単精度という事は、有効数字は7桁ちょっととなりますので、緯度は概ね小数点以下5桁、経度は概ね小数点以下4桁までが値を保持できている分けです。

両者の座標値の違いをファイルを開いて確認するためにはテキストファイルの中に緯度経度がそのまま保存されている必要があります。

ところでTopoJSONはGeoJSON の拡張形式になります。下記のページで仕様の概要が説明されているのですが理解するのは難しいです。

ただひとつ言える事は、「GeoJSONで定義されているオブジェクトが持つ数値座標を『トポロジー』という名称の新しい型を定義して、『元(GeoJSON)に戻せる形』で変換したものである」という事です。

従いまして、TopoJSONファイルはテキスト形式ではありますが、windowsの「メモ帳」などで開いても緯度経度情報として見る事はできません。

そこでシェープファイルをmapshaperでGeoJSON形式に変換して両者の中身を比べて見る事にします。

最初に現れる緯度経度を5個表に転記したものが下記になります。

NoMANDARA
経度
QGIS
経度
MANDARA
緯度
QGIS
緯度
1139.35394287109375139.3539379122049735.92447662353515635.9244755857797
2139.3542938232422139.354297081645135.92446136474609435.924459747819185
3139.354736328125139.3547296105831535.9244804382324235.924480586010304
4139.35577392578125139.3557684948202735.9244995117187535.92450113461973
5139.35621643066406139.3562093388899335.92449569702148435.92449697255728

両者一致する桁数は5桁から8桁とバラつきはありますが、概ね7桁になっています。

なおQGISの緯度経度の値が正しいのか?につきましては、国土数値情報 行政区域データ埼玉県でダウンロードするデータの中には、シェープファイル・GeoJSON・XMLの3種類が含まれています。その中のGeoJSONファイルを開いて値の検索をすると上記5つは緯度経度ともに一致するデータが存在する事が解ります。

従いましてQGISで加工した場合は、元ファイルからのデータのずれはほぼ無いものと思われます。

最後に

このたび国土数値情報 行政区域データの各都道府県TopoJSONデータをご提供するにあたり、データ加工はMANDARA10ではなくQGISを使用しています。

前回「国勢調査TopoJSON For PowerBI」を作成した時は、ローカル環境でのWebブラウザ表示につきましては考慮していませんでしたが、今回は使用を想定しています。

そうした場合、ズームレベルが高い表示ができてしまうために座標値の取り方につきましても考慮が必要になる認識です。

ただし、国土地理院の利用規約により元データをそのままご提供する事ができない以上、座標値の簡素化は避けて通ることはできません。
そうなりますと、今回ご説明致しましたMANDARA10での微妙な座標値のずれに関して気にかけても、最終的には簡素化により平らかにならされてしまうために成果物にどれだけ影響があるか?は明確には解らないところがあります。

ただそうは言いましても、ご提供する成果物が元ファイルとほぼずれの無い状態から簡素化したものであった方が僅かなりともより良い成果物をご提供できるものと考えております。

次回は「TopoJSONに変換した際に起こる座標値のずれ」についてご説明致します。

以上、最後までご一読いただき誠にありがとうございました。