torutkのブログ

ソフトウェア・エンジニアのブログ

国土数値情報(シェープファイル形式)をArcGISへ取り込み


ソフトウェアで地図を扱うには、電子化された地図データが必要になります。
地図データはそれなりの価格で販売されていますが、政府等公的機関から無償で入手できるものもあります。日本の電子地図データで無償で入手できる代表的なデータが次です。

  • 国土数値情報
  • 位置参照情報(街区、大字・町丁目)
  • 基盤地図情報

国土数値情報

国土交通省国土政策局が提供する地図データです。ダウンロードサイトは次です。

http://nlftp.mlit.go.jp

土地利用、各種行政区域、地価、交通量、鉄道駅乗降数、公共機関などの情報や、海岸線、河川、湖沼などの地形情報があります。

データ形式として、JPGIS形式の他、H24.4から、ESRIシェープ形式が提供されるようになりました。JPGISは扱いが面倒なのでシェープ形式が出てとても利用しやすくなりました。

位置参照情報

国土交通省国土政策局が提供する、住所の代表地点と緯度経度を定義した情報です。住所から地図上の場所を検索する等に必要なデータです。ダウンロードは上述の国土数値情報と同じサイトから行います。

データ形式は、CSV形式です。

基盤地図情報

国土交通省国土地理院が整備するデータです。ダウンロードは次のURLからリンクを辿ります(無償だが利用が登録制になったので、ログインアカウントを作成する必要あり)。

http://www.gsi.go.jp/kiban/

測量基準点、標高、海岸線、公共施設境界線、行政区画、道路縁、軌道中心線、建物外周線などが対象となっています。データの細かさは、都市計画区域は2500分の1、それ以外は25000分の1レベルとなっています。標高については、10mメッシュが日本全体、一部5mメッシュとなっています。

データ形式は国土数値情報と同じJPGIS形式です。

国土数値情報のダウンロードとArcGISへの取り込み

今回、試しに国土数値情報の中から海岸線、行政区域、河川をGISツールのArcGISで読み込み表示させてみます。また、それぞれデータが県別に分かれているので、日本全国にマージしてみます。

海岸線

まず、海岸線データをダウンロードしました。JPGIS形式とシェープ形式の両方のファイルが入った県別のアーカイブファイルを1つずつダウンロードします。

アーカイブファイルを解凍展開するとシェープ形式ファイルが入っているので、ArcGIS(ArcMap)でデータを追加すると表示されます。シェープファイルには地理座標系の情報が含まれていないので、別途ArcCatalogで地理座標系に日本測地系2000(JGD2000)を指定する必要があります。

県別では扱いにくいので、ArcGISのジオプロセシングツール(データ管理ツール>一般>マージ)を使用して1つのシェープにまとめました。

以下は、UTMゾーン54N投影法で50万分の1縮尺の東京湾を表示した画面のキャプチャです。かなり細かいですね。


行政区域

行政区域もJPGIS形式とシェープ形式の両方が入った県別アーカイブファイルをダウンロードします。

以下は、海岸線と同様UTMゾーン54N投影で50万分の1縮尺の東京湾付近を表示した画面のキャプチャです。

県別では扱いにくいので、ArcGISのジオプロセシングツール(データ管理ツール>一般>マージ)を使用して1つのシェープにまとめました。

河川

河川も同様JPGIS形式とシェープ形式の両方が入った県別アーカイブファイルをダウンロードします。

以下は、海岸線と同様UTMゾーン54N投影で50万分の1縮尺の東京湾付近を表示した画面のキャプチャです。

県別では扱いにくいので、ArcGISのジオプロセシングツール(データ管理ツール>一般>マージ)を使用して1つのシェープにまとめようとしましたが、エラーとなってしまいました。

地方別(東北、北陸、関東、・・・)をマージ単位として細かくマージしていったところ、中国地方で鳥取のデータのマージに失敗しました。

ERROR001156 入力OID883で失敗しました。値8707040を出力フィールドW05_001に書き込めません。

JPGIS形式の方を見ると、8707040という値は見られないので、シェープ形式のデータのバグかなと思われます。いったん鳥取県のデータを別シェープファイルにエクスポートし、それをマージすることで問題回避しました。

次に、地方別にマージしたデータを一つにマージしたところ、北海道のデータでエラーとなりました。河川名の属性で文字列が長すぎるようです。シェープファイル個々を見ると、この属性の最大文字数がばらばらの値となっていました。おそらく、個別シェープファイルの中の最大文字数がそのファイルでの属性の最大文字数として定義され、マージの際は最初に処理するシェープの最大文字数が適用されるからと思われます。

マージする入力ファイルの順番が並び替えられるので、北海道を一番上にすることで問題回避しました。

なお、データ量は約28万レコード(ポリライン28万本)でした。