LoginSignup
0
0

地図XMLの投影法を考える: 各都道府県の投影法をチェックする(地図XMLファイルをRで解析)

Last updated at Posted at 2024-02-23

はじめに

背景

地図XMLは公共座標系(平面直角座標系)のものと任意座標系のものがあります。公共座標系は平面直角座標系のことで日本では1系~19系があります。

一般的に、日本において平面直角座標系のそれぞれの系を適用する範囲は以下の国交省告示で定められています。

地図XMLでは、任意座標系と公共座標系の別の話はありますが、公共座標系のそれぞれの系に注目したまとめはあまりないかもしれません。

目的

現在提供されている地図XMLファイルについて、各都道府県の投影法(座標系)を見てみようと思います。

前提

実際の作業

Step 1: 都道府県別に使っている座標系を整理する

Rを使って以下の通り解析しました。

#ライブラリのインストール
#library("dplyr") #データベースの操作をするためのパッケージ(filterなど)
library("stringr") #文字列処理のパッケージ

#ファイルの読み込み
xmlProj <- read.csv("xml-projection-list.csv",fileEncoding="UTF8",header=FALSE,colClasses=rep("character",2))

#ファイル名の最初2桁は都道府県コード
todoufuken <- xmlProj
todoufuken[,1] <- substr(todoufuken[,1],1,2)
todoufuken <- unique(todoufuken)
write.csv(todoufuken, "todoufuken-projection.csv",fileEncoding="cp932")

#ファイル名の最初5桁は市区町村コード
shikuchoson <- xmlProj
shikuchoson[,1] <- substr(shikuchoson[,1],1,5)
shikuchoson <- unique(shikuchoson)
write.csv(shikuchoson, "shikuchoson-projection.csv",fileEncoding="cp932")

得られたファイル(都道府県)は以下のような感じでした。write.csvでShift JIS(cp932)にしないとCSVをエクセルで開いたときに文字化けするのでそうしています。。
image.png

B列(V1)にある2桁の数字は都道府県コード(JIS X 0401)なんですが、全国地方公共団体コードの最初2桁と一緒です。

Step 2: 都道府県別の結果のまとめ

2023年度の地図XMLでは、各都道府県では任意座標系に加え、以下のような座標系を使っていました。(以下の表では任意座標系を抜いてあります。)

コード 都道府県 座標系
01 北海道 公共座標11系, 公共座標12系, 公共座標13系
02 青森県 公共座標10系
03 岩手県 公共座標10系
04 宮城県 公共座標10系
05 秋田県 公共座標10系
06 山形県 公共座標10系
07 福島県 公共座標9系
08 茨城県 公共座標1系,公共座標9系
09 栃木県 公共座標9系
10 群馬県 公共座標9系
11 埼玉県 公共座標9系
12 千葉県 公共座標9系
13 東京都 公共座標9系, 公共座標14系
14 神奈川県 公共座標9系
15 新潟県 公共座標8系
16 富山県 公共座標7系
17 石川県 公共座標7系
18 福井県 公共座標6系
19 山梨県 公共座標8系
20 長野県 公共座標8系
21 岐阜県 公共座標7系
22 静岡県 公共座標8系
23 愛知県 公共座標7系
24 三重県 公共座標6
25 滋賀県 公共座標6
26 京都府 公共座標6
27 大阪府 公共座標6
28 兵庫県 公共座標5
29 奈良県 公共座標6
30 和歌山県 公共座標1系,公共座標6系
31 鳥取県 公共座標5系
32 島根県 公共座標3系
33 岡山県 公共座標5系
34 広島県 公共座標3系,公共座標4系
35 山口県 公共座標3系
36 徳島県 公共座標4系
37 香川県 公共座標4系
38 愛媛県 公共座標4系
39 高知県 公共座標4系
40 福岡県 公共座標2系
41 佐賀県 公共座標1系,公共座標2系
42 長崎県 公共座標1系
43 熊本県 公共座標2系
44 大分県 公共座標2系
45 宮崎県 公共座標2系
46 鹿児島県 公共座標1系,公共座標2系
47 沖縄県 公共座標15系,公共座標16系,公共座標17系

Step 3: 考察

いろいろと考察しました。

  • 当たり前ですが、どの都道府県も任意座標系のデータを持っていました。
  • 公共座標系で東京都に18系、19系が出てこないのは、沖ノ鳥島と南鳥島に公共座標の地図XMLがないということだろう。(任意座標があるかはチェックしていない。)
  • 複数の平面直角座標系を使っているのは、北海道、茨城県、東京都、和歌山県、広島県、佐賀県、鹿児島県、沖縄県であった。
    • 平面直角座標系の告示から考えて、一つの都道府県が複数の座標系を使うことはありうる(例:北海道)。
    • ただし、茨城県と和歌山県で公共座標1系を使っているのは不思議。第1系は長崎と鹿児島の一部で使うものであり、隣り合わない茨城県や和歌山県で使われるのは不思議。ファイルを調べたところ、茨城と和歌山でそれぞれ08222-0530-196.xmlと30208-1700-259.xmlであった。
      image.png
      • 茨城について: 第1系の08222-0530-196.xmlをサーチリストで調べると、鹿嶋市2275-6という地番を1つだけ含みます。地番区域が抜けていますね。前後の並びからみると、地番区域は大字平井とも推測できますが大字平井の2275-6は別のxmlファイル(08222-0530-196)にあります。
        image.png
      • 和歌山について: 第1系の30208-1700-259.xmlをサーチリストで調べると、紀の川市名手上というところです。地番は550くらいから900くらいまででした。
        image.png
        既存の地図XMLデータではすぐに場所は見つかりません。
        image.png
    • 広島にある公共座標4系も気になります(4系は四国4県なので。)。隣の県の座標系なので入り混じってもおかしくないかなと思いつつも、チェックすると第4系のものは34210-2405-461.xmlというファイルです。
      image.png
      こちらは庄原市の地区外や庄原市東城町福代のもので、地番は東城町福代272~585くらいまでの間のいくつかでした。
      image.png
      東城町福代の地番データをみましたが、ファイル461にある地番(例:272-1)は地図上でそれらしい位置に見つかりません。座標の定義ミスでしょうか。
      image.png
    • ここまでくると佐賀県の公共座標1系も気になります。チェックします。伊万里市の41205-3002-191.xmlでした。
      image.png
      伊万里市山代町楠久津のあたりのデータです。
      image.png
      既存の地図データでみると、ここは投影法が隣の県のものであってもただしい位置に表示されていました。
      image.png

参考まで、現在は、G空間情報センターからダウンロードできる各市区町村の変換データ(GeoJSONやSHP)は座標系ごとにあります(下図)。そこで、GeoJSONをダウンロードしてきて特殊な座標のデータを地理院地図で表示しました。
image.png

鹿嶋市の1系(位置ずれ)
image.png

紀の川市の1系(位置ずれ)
image.png

庄原市の4系(位置ずれ)
image.png

伊万里市の1系(ただしい)
image.png

鹿嶋市の1系、紀の川市の1系、庄原市の4系は投影の定義ミスがありそうです。一方で、伊万里の1系は正しいようです。

まとめ

今回、2023年度の地図XMLについて都道府県別の投影法を確認しました。

すべての県で任意座標を使っていますが、任意座標を除くと、大半の県では指定されている公共座標系を使っていました。
国土地理院のページにもあるように、大半の県では1種類の公共座標系になっており、地図XMLも同様でした。
北海道、東京、鹿児島、沖縄は平面直角座標系の定義からみても複数の座標系を持ちますが、それ以外にも佐賀県などが複数の座標系を持っていました。

地図XMLの中には、投影法定義を誤ったと思われるようなものもあり、茨城県の1系、和歌山県の1系、広島県の4系は、正しい位置に配置されませんでした。

(参考)国土地理院のページ
image.png

参照ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0