国土数値情報 行政区域データに基づくオートシェイプ図形のご紹介

H31年行政区域オートシェイプ図形
この記事は約21分で読めます。

弊社ではこれまで、政府統計の総合窓口サイトe-Sataで公開されている2015年国勢調査の市及び区の境界データに基づいたTopoJSONデータと国土数値情報「行政区域データ」に基づいた各都道府県のTopoJSONデータをご提供してきましたが、今回はTopoJSONデータから離れてOffice Open XML (OOXML)形式のなかで、図形や画像などを記述・格納するためのDrawingMLに地図データを変換して作成することに致しましたので、その内容をご紹介したく存じます。

なお地図データに「湖沼」の境界線情報を付与する対応につきまして順番を入れ替えておりますのでお含み置きいただければ幸いです。

スポンサーリンク

いまさら「地図のオートシェイプ図形」とは?

DrawingMLの仕様はOffice製品がXML化されたOffice 2007の時に開発されていますので「今更オートシェープ図形?」と感じられる方が多い事と存じます。またExcel 2016に関して言えば「Bingマップ」アドインや「3Dマップ」機能が提供されているので地図上で位置を示すのであればそれで充分なはずです。

ただこのようなオンラインマップではなく、オフラインでローカルに手っ取り早く図形を表示させたり、地図上で位置を示したい、といった場合があるのではないでしょうか?

確かにオンラインマップはドリルダウンにより詳細な情報を探す場合には向いていますが、必要な情報だけをピックアップして表示した場合には別な方法が必要になる認識です。

そうは言っても「オートシェイプ図形で正しい位置にプロットすることができるのか?」と思われるかもしれません。

この点につきましては後段でご説明したく存じます。

地図をオートシェイプ図形化するにあたり

「地図をオートシェイプ図形化するうえでの考慮点」につきましてまずはご説明いたします。

元とする地図データ

弊社「行政区域TopoJSONデータ全国版」でご提供している地図データ2パターンの内、「(TopoJSON形式)1.7MBまで簡素化」のデータを使用しています。

「オートシェイプ図形に求められる地図精度」としては高精度なものよりも手軽に扱いやすいデータサイズの方が向いている事と存じます。

従いまして簡素化により本来の行政区域境界線とずれている箇所がありますのでお含み置きいただければ幸いです。

なお元データとしてはTopoJSONデータに変換する前のシェープファイルを使用しています。

この理由としては「TopoJSONに変換した際に起こる座標値の微妙なずれ」でご説明いたしましたTopoJSON形式にした時の「微妙な揺らぎ」が排除できるためです。

緯度・経度を平面直角座標に変換

地点を示す緯度・経度の数値をもとにDrawingMLの描画単位に変換することもできますが、そうした場合地球が楕円形であるがために赤道から北・南に向かうほど緯度1度が表す実際の距離は長くなり経度1度の距離は短くなって行きます。

更に「地球の中心、(以下 「地心」と表記)」のズレなどを考えると更にややこしい話になって行きます。

そのため一般的には楕円形を平面に投影する事で緯度・経度で生じる距離的な食い違いを補正する手法が使われています。

日本では19の平面直角座標系が「平成14年国土交通省告示第9号」で定義されています。

詳細につきましては下記国土交通省地理院の下記2つのページをご参照いただければ幸いです。

なお緯度・経度を平面直角座標に変換して求められる数値は角度ではなく19の座標系原点からの距離(「メートル」単位)になります。従いまして原点から南側の緯度と、原点から西側の経度はマイナスの数値で表記されます。

ただしExcelで使用されているDrawingMLの描画単位ではマイナスの数値を設定できないため、各行政区域の最南端・最西端など端からの距離に変換をしてDrawingML用のデータを作成しています。

なお細かな話ですがDrawingMLでは描画の起点は天地を逆転させる必要があり、そのため実際には最北端・最西端からの距離を使用して変換しています。

更に1点お伝えして置かなければならない事として平面直角座標系を採用するという事は、「座標系原点の境目になる都道府県境界線に関してはピッタリと一致しない」という事です。

左図は解り難くて恐縮ですが、福島県境界(左図下部の黒線)と山形県境界(左図赤線と青線)の隣接部分になります。

福島県は座標系原点Ⅸ系で、山形県はⅩ系になります。

左図では山形県境界線の青線はⅩ系で作成していますが、もう一つの赤線はわざとⅨ系で作成しています。

なお左図楕円の部分での青線(山形県Ⅹ系)のズレが少なくなるように位置を調整しています。

画面では解り難いのですが、楕円から外れた箇所ではⅨ系同士の赤線(山形県)と黒線(福島県)の重なりにはズレは生じていないのですが、Ⅹ系の青線(山形県)ではズレが見られます。

このことは平面直角座標系を使う上での宿命であり、もしも座標系原点の境目を接合する必要がある場合は境界線の太さを太くする事で、異なる座標系原点による食い違いを吸収する必要がありますのでお含み置きいただければ幸いです。

測地系と平面直角座標の違い

オンラインマップで使用される測地系は緯度・経度に高さ(標高)を加えた3次元の座標で構成されています。

緯度・経度・標高から3次元の地心直交座標に変換する時の値は距離(メートル単位)となり平面直角座標と同じです。

DrawingMLには3Dエフェクトの機能はありますが、「高さをどのように表現できるか?」につきましてまだ理解できていないため今後の宿題とさせていただきたく存じます。なおExcelで3D設定ができる事が解った場合は測地系でのオートシェープ図形化に再度挑戦してみたいと思います。

なお1点お伝えしておきたい事があります。地心直交座標で求められる緯度・経度にあたる平面座標値と平面直角座標で求められる座標値は別物になります。

従いまして平面直角座標で作成したオートシェイプ図形を測地系で設定されているオンラインマップに重ね合わせたとしても少なからず食い違いが生じますのでお含み置きいただければ幸いです。

平面直角座標のメートル相当の値をDrawingMLでの寸法単位に変換する

ウィキペディアの「Office Open XML ファイルフォーマット」からDrawingMLの説明の一部を引用いたします。

DrawingML 画像の寸法は English Metric Units (EMUs) という単位で表現される。これは英国法とメートル法で一致する数値表現が必要であったためで、1centimeter の1/360,000 にあたり、1inchの1/914,400 であり, 1pointの1/12,700 である。

上記の表現方法を言い変えると1㎝は360,000EMUsになり、DrawingMLの寸法単位はとても小さい事が解ります。

なお1pointが12,700EMUsであるという事は次の章でも出てきますので頭の片隅に残して置いていただければ幸いです。

ということで、オートシェイプ図形に設定する数値は平面直角座標のメートル相当の値に100を掛けて使用しています。

実際の距離(メートル)とオートシェープ図形のサイズ感をまとめると以下のようになります。

実際の距離(メートル)とオートシェープ図形のサイズ感のまとめ
  • 「オートシェイプ図形に設定する数値は平面直角座標のメートル相当の値に100を掛けて使用しています」ので、「実際の地図上の距離1mが100EMUs」となります。
  • オートシェープ図形の「0.01cmは3,600EMUs」なので「オートシェープ図形の0.01cmを実際の地図上の距離に換算すると36m」になります。

Excelでオートシェイプ図形の位置を変更する際の最小単位とは?

地図をオートシェイプ図形にした時に、隣接する行政地域を重ね合わせるためはマウスでドラッグするか前後左右の矢印キーで動かす事になります。

選択したオートシェイプ図形がどのような単位で動かせるか?につきまして、下記All Aboutのサイトで紹介されている「Excelで使われる単位の話」を参考にしてご説明いたします。

オートシェイプを移動する際には「ピクセル」という「ディスプレイの表示やプリンタの出力を構成する最小単位(小さな点)」であるという所と、「ポイント」という単位は「セルの行の高さ(縦幅)と列幅(横幅)で定義が異なる」点が重要です。

なお「ポイント」につきましては高さの「1ポイントは1/72インチ。1インチが約25.4mmなので、1ポイントは25.4mm÷72」で求められる数値を本章では使用しています。

話は変わりますが、セルの高さの調整だけではなくオートシェイプ図形もピクセル単位で移動することになります。

なおExcelでは画面の表示倍率を400%まで拡大することができるのですが、実は400%にした時は、オートシェイプ図形の移動は「ピクセル」の1/4のより細かい単位で移動させる事ができます。

弊社の調べでは倍率100%の時、1ピクセル(pixel)は7,620EMUs、400%にした時は、その1/4の1,905EMUsになります。

ここで重要なお知らせがあります。

お知らせ

隣接する行政地域を重ね合わせようとして時に、Excelで調整可能な最小単位は倍率400%の時でも1.905EMUsとかなり大きな値になります。

前の章で1pointが12,700EMUsになることはご紹介しましたが、オートシェイプの線の太さを最小の0.25pointとした場合、それは12,700EMUsの1/4ですなわち3,175EMUsになります。

一見すると調整可能な最小単位よりも大きいので重ね合わせできそうに思えるのですが、都道府県境界線から中心に位置する行政区域になると重ね合わせが3つ4つとなり、微妙な誤差が相互に作用して綺麗に重ね合わせるのがとても困難になります。

従いましてすべての行政地域を手動で完ぺきな形で重ね合わせる事は難しく、全体を見ながら重なり具合がなるべく均等になるように調整する必要があります。

この点は事前にお含み置きいただければ幸いです。

なおご提供するオートシェイプは、境界線に幅を持たせることで重なりの調整がし易いように行政区域の境界線は0.5ポイントとし、都道府県境界線につきましては0.75ポイントにしています。

また上記のように手動では完全に重ね合わせる事ができないので、「すべての行政地域を各都道府県こどEMUs単位にシステムで配置したオートシェープ図形」を合わせてご提供しています。

「すべての行政地域を各都道府県こどEMUs単位にシステムで配置したオートシェープ図形」は個々の行政地域オートシェープ図形として切り離す事はできるのですが、一度切り離して保存してしまうと元に戻すことはできません。

このオートシェープ図形はグループ化してありますが、動かすときは形を変えないように注意して扱う必要があります。

Excel「図形の書式設定のサイズ」と「DrawingMLの寸法」とは別の物

オートシェープ図形をExcelシート上に配置すると、図形の書式設定で高さ・幅のサイズが表示されます。

オートシェープ図形のサイズは0.01cm単位での指定になります。
一方先の章でもご紹介しましたが、DrawingMLの寸法は English Metric Units (EMUs) という単位で表現され1cm の1/360,000が寸法単位になります。

という事で0.01cmは3,600EMUsです。

従いましてExcelの「図形の書式設定」で表示されるオートシェープ図形のサイズは恐らくEMUs単位の数値を0.01cmに換算し四捨五入して表示していると思われます。

この事から解るようにオートシェープ図形のサイズが変更されたからと言ってDrawingMLの寸法そのもりが変わるわけではありません。

またオートシェープ図形を縦・横にドラッグして変形したとしてもDrawingMLの寸法そのもりが変わるわけではありません。

オートシェイプ図形のサイズを変更し保存してしも、元々のDrawingMLの大きさが変更されるわけではありません。

オートシェープ図形のサイズはDrawingMLではなく、Excelシートの属性として別途保持されているものです。

従って元のサイズが解っていれば元に戻すことができます。

※ただし、「すべての行政地域を各都道府県こどEMUs単位にシステムで配置したオートシェープ図形」や「飛び地のある行政地域のオートシェープ図形」、「都道府県境界オートシェープ図形」のように複数のオートシェープ図形がEMUs単位で配置されていものはグループ化してあっても個々の位置を動かして保存してしまった時は、元の戻すことはできませんのでご注意ください。

コンテンツのご紹介

現在作成が進んている「群馬県の行政地域」を例にしてご紹介いたします。

行政区域境界線(XXdata1シート:XXは都道府県コード)

群馬県には35の行政区域がありますので35個のオートシェープ図形を、行政区域コード順に並べてセルに格納しています。

  • 表示倍率は100%でオートシェープ図形を配置したセルのセル幅は弊社パソコン環境で100に設定しています。
    • ご使用されているパソコン環境によりセル幅は異なりますので100である必要はありません。
  • 境界線の線の幅は0.5ptに設定しています。
  • オートシェープ図形の当初の縦横サイズを表記しています。

高崎市や桐生市のように飛び地(左図赤矢印のところ)がある場合は、グループ化してグループ化したものに「行政区域コード」を附番し、個々のオートシェープ図形には「行政区域コード⁺スペース+連番」を附番しています。

オートシェープ図形の書式設定のサイズでは「縦横比を固定する」にチェックをし、プロパティでは「セルに合わせて移動するがサイズ変更はしない」を設定しています。

ただし、これらの設定は選択したオートシェープ図形に表示される白丸印を縦方向・横方向にドラッグする事での変形を防げません。

またグループ化したオートシェープ図形に含まれてる個々の図形を移動させることは防げませんのでオートシェープ図形を移動する際は構成されている個々の図形を動かさないように注意する必要があります。

従いましてご利用の際は必ずバックアップファイルを作ってからご利用いただきますようお願いいたします。

当該都道府県境界線(XXdata2シート)

各行政地域のオートシェープ図形だけではなく、都道府県境界線のデータもご提供しています。

  • 表示倍率は100%で、オートシェープ図形を配置したセルのセル幅は弊社パソコン環境で200に設定しています。
    • ご使用されているパソコン環境によりセル幅は異なりますので200である必要はありません。
  • 境界線の線の幅は0.75ptに設定しています。

なお都道府県境界のデータは5つのデータをグループ化しています。(左図赤枠)

一つは都道府県境界なのですが、残りの4つはその都道府県の最北端・最東端・最西端・最南端を示すマークになります。

表示倍率400%にしても米粒程度のマークなのですが、下図赤丸の中心に配置されています。

なおこの最北端・最東端・最西端・最南端の情報は簡素化した地図データにもとづくもので、本当の都道府県の最端の値とは異なりますのでお含み置きいただければ幸いです。

この利用目的につきましては後段でご説明致します。

当該都道府県のすべての行政地域をEMUs単位にシステムで配置したオートシェープ図形

当該都道府県境界線とは異なりセル幅はデフォルトにしています。この理由ですが、Excelで表示倍率を拡大した時、セル途中で画面固定することはできず、必ずシート左上に位置するセルの左上の位置がシート左上に来る形でしか固定できません。そのためにはセル幅が小さい方が向いているためです。

先の章でもお知らせいたしましたが、DrawingMLの描画単位がとても小さいので隣接する行政区域を手動で正確につなぎ合わせる事は困難です。

そこですべての行政区域をシステムでEMUs単位につなぎ合わせたオートシェープ図形をご提供しています。

個々の行政区域は独立したオートシェイプ図形になって、行政区域コードがオブジェクトの名称になっているところは先のコンテンツと同じですが、境界線の線の幅が0.25ptと小さくなっていまするところが異なります。

倍率を400%にした時の本章のコンテンツと、次の章でご紹介する個々のオートシェープ図形を手動でつなぎ合わせたものとを比較してみると、明らかに重なり具合が異なることが解ります。

なおこれも先の章でお知らせしましたが、オートシェープ図形を移動させる最小単位(400%の倍率で1ピクセル(pixel)の1/4」よりも小さな値でDrawingMLの位置は指定されているため、この中に設定されているオートシェープ図形の位置を移動させてしまうと、クイックアクセスツールバーの「元にに戻す」以外の操作で同じ位置に戻すことはできませんのでご注意ください。

従いましてご利用の際は必ずバックアップファイルを作ってからご使用いただけますようお願いいたします。

手動で行政区域境界線をつなぎ合わせる(Map Jigsaw)

手動で個々の行政区域オートシェープ図形をつなぎ合わせる事が試せるように「Map Jigsaw」シートと、つなぎ合わせた結果の一例として「Map Jigsaw列」のシートをご用意しております。

このシートのオートシェープ図形は全体像を半分以上見渡せない場合はサイズを50%に縮小設定しています。

この理由なのですが、Excelの表示倍率で100%未満に縮小した場合、ただ単にオートシェープ図形の位置を移動しただけでも「図形の書式設定のサイズ」が保持されない現象が発生します。

詳細につきましては「Excelで地図のオートシェープ図形を使用する際の注意点」をご参照いただければ幸いです。

オートシェープ図形を移動しただけで「図形の書式設定のサイズ」が変わってしまうのではジグソーパズルとしては成立しなくなってしまいます。

そこで、あらかじめサイズを50%に縮小した形でご提供することで、表示倍率の縮小を使用しなくても良いようにしています。なお50%縮小したオートシェープ図形のサイズにつきましては、「Size」シートのG列とN列(左図赤枠)に掲載しています。

一方、縮小されているために重ね合わせが難しくなって場合があります。

その場合は表示倍率を200%、300%、400%に設定してご使用いただければ幸いです。

なお先の章でご説明してきたように、ジグソーパズルと言いながらもライン同士がピッタリとは重なり合いません。従いまして、だいたい合わせる形で試していただければ幸いです。

なお個々のオートシェープ図形には透明度90%で塗りつぶしの色を設定してあります。

オートシェープ図形に地点を精度を上げてプロットするには

オートシェープ図形にある程度の地図的精度があったとしても、緯度・経度から地点を特定するための手段が無いと全体的な精度を上げることはできません。

そのために「オンラインマップと重ねる」事ができれば良いのですが、実はオンラインマップでは緯度・経度に標高を加えた「3次元の地心直交座標」が一般的に使われているため、平面直角座標で作成したオートシェイプ図形と重ね合わせることはできません。

左図はBingマップアドインで最北端・最東端・最西端・最南端の地点を青色の小さい●印でプロットしたものに、都道府県境界オートシェープ図形を重ね合わせたて見た事例です。

とても解り難い事と存じますが、東西の赤丸の重なりは良いとしても、南北は北を合わせると南がずれていってしまう相反関係にある事が解ります。

どらかと言うと反時計回りに少し回転できれば南北は重なり合うかもしれませんが、そうすると今度は東西が少しずれてしまう事になります。

ざっくりとプロットしたい時は良いかもしれませんが、ただズームインした時は、そのたびにどこかの行政区域の東西南北で位置を合わせる必要があり、実用化するのは難しいという認識です。

そこでExcelのグラフの中にある散布図(相関図)を使用して平面直角座標の値をプロットする事例をご紹介いたします。

オートシェープ図形とグラフ散布図を重ね合わせる

記事が長くなってきましたので、今回は要点に絞ってご説明をして、ぐらい散布図の詳細につきましては別途記事『「地図のオートシェープ図形」に合わせたExcelグラフ散布図の設定-その1』と『〃-その2』にてご説明いたしたく存じます。

事前の注意事項

  • 平面直角座標の緯度(X座標)を散布図のY軸(系列)、経度(Y座標)をX軸(系列)に設定します。
    • 平面直角座標と散布図ではxとyの示す緯度・経度が逆転しますのでお間違い無いようお願いいたします。
  • 使用するオートシェープ図形は「当該都道府県のすべての行政地域をEMUs単位にシステムで配置したオートシェープ図形」(以下当該オートシェープ図形と表記します)になります。
  • つなぎ合わせる際に、Excelの表示倍率を変更する事が多くなりますが設定可能な倍率を事前に確かめて置く必要があります。
    • この理由につきましては別途記事にてご説明致します。

最北端・最東端・最西端・最南端の4点を合わせる

当該オートシェープ図形とグラフ散布図を重ね合わせるためには、東西南北の緯度・経度の情報を平面直角座標に変換した値を用意して、グラフ散布図に最北端・最東端・最西端・最南端をプロットして置く必要があります。

その上で先の章でお知らせした都道府県境界オートシェープ図形に設定してある最北端・最東端・最西端・最南端のマークとグラフ散布図にプロットされた点とが重なり合うようにグラフ散布図のサイズの高さと幅を調整します。

なお調整するにあたり下記の準備が必要です。

  1. 地図の縮尺としてどのようなサイズにするか?を最初に決めてからグラフ散布図とのサイズ調整をします。
    • 当該オートシェープ図形は構成されている個々のオートシェープ図形を移動して保存すると元に戻する事はできなくなるので、必ずバックアップファイルを作ってから実施をしてください。
  2. つぎに「座標系原点の位置を調整するか?」を決めます。
    • 平面直角座標の座標系原点から南方向・東方向に離れていると、当該オートシェープ図形が表示させるために画面をスクロールしなければならなくなります。
    • 調整すると平面直角座標系原点の位置はずれますが、それ以外の地点の値にズレはありません。
    • 調整する値の求め方につきましては別途記事にてご説明致します。
  3. グラフ散布図の横軸・縦軸の軸オプションで境界値の最大値・最小値と単位、軸の値を設定します。
    • 後から設定することもできますが、重ね合わせた結果にずれが生じる事があり、その場合は二度手間となりますのでご注意ください。
    • 設定する値の求め方につきましては別途記事にてご説明致します。

当該オートシェープ図形とグラフ散布図を上図のような形で合わせる事で、ある程度の精度を保持したまま地点をプロットすることができるようになります。

この形になるまでには何度か試行錯誤で微調整を繰り返してはいますが、無理のない範囲で重ね合わせて見ていただければ幸いです。

なお「もう重なりを修正しない」という時は、当該オートシェープ図形とグラフ散布図をグループ化した上で、書式設定のサイズで「縦横比を固定する」、プロパティに「セルに合わせて移動するがサイズ変更はしない」を設定して置きます。

ただしこれでも操作の仕方によってはずれを防ぐことはできないので、万全を期すのであれば「シートの保護」をしてシートの内容を触れないようにしておくと安心です。

「シートの保護」をしてもグラフのデータ範囲をデータの表に併せて多めに設定しておけば、データの表を更新した内容はグラフに反映されます。

グラフ散布図に地点情報を設定するには

グラフ散布図にプロットするデータは下記のような表にセットしてご提供しています。

この表の詳細な内容は別途記事にてご説明致しますが、つぎのような機能があります。

  1. グラフ散布図では系列ごとにプロットする地点の書式を設定することができます。
  2. プロットする地点の緯度・経度は「度分秒」または「十進法度」で指定できます。
  3. 平面直角座標への変換はVBAマクロで計算をしています。
  4. グラフ散布図の横軸・縦軸の軸オプションに指定する「境界値の最大値・最小値」を関数式を使用して計算しています。

実際にグラフ散布図の「データソースの選択」で範囲指定しているのは次の2つの列です。

  • 「M列」を「系列の編集」で「系列Yの値」にセット
  • 「N列」を「系列の編集」で「系列Xの値」にセット

オートシェープ図形とグラフ散布図を重ね合わせた結果

グラフ散布図に表示するマーカーは形や色を系列ごとに指定することができます。

左図の緑色アンカーのようにオリジナル画像を設定することも可能です。

なお上図では左図のように3つの系列を設定していますのでお含み置きいただければ幸いです。

グラフ散布図(直線)を使用して一連の緯度・経度情報をラインで表示させる

グラフ散布図は地点情報をプロックするだけではなく、一連のデータをラインで表示させることもできます。

詳細は別途記事にてご紹介いたしますが、下記のように「利根川」(水色実線)や「上越新幹線」(灰色破線)などのライン情報も更に重ね合わせることで、「当該オートシェープ図形・グラフ散布図地点・グラフ散布図ライン」を一体化して表示させることができます。

最後に

地図のオートシェイプ図形を用いて地点や一連の緯度・経度情報をどのように見せる事ができるか?につきまして、ざっくりとご紹介をさせていただきました。

国土数値情報ダウンロードのページには、様々なポイントやライン情報が公開されています。

中には非商用のデータが含まれていますが、オートシェイプとの重ね合わせで使用することができそうなものがいくつかあります。

ただしダウンロードしたファイルをそのまま使用するとはできません。連続した緯度・経度情報として取り出すためには何かしらの加工(データの並べ替えや地点数削減など)が必要です。

加工方法につきまして別途記事でご紹介したいと思いますが、主要なデータにつきましてはそのまま使える形で弊社サイトから無償でダウンロードできるように整備して行生きたいと考えています。

今後のスケジュールですが、詳細記事をまとめながら47都道府県のデータを11月中旬目途で順次作成をして参ります。

その後来年2021年早々には主要なデータをご提供できるように整備する予定です。

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