日本の都道府県境をかく / 中国の「省」の境をかく

概略

地図上に気象データなどを表示するプログラム例で、 日本のうちのたとえば関東地方のような空間規模のばあいは、 地図に都道府県の境 (以下「県境」と書く) を入れることにした。

【自然現象をあつかうならば海岸線のつぎには山や川などの地形を表示するべきだという考えもある。 しかし、すくなくとも子どものころから日本で教育をうけた人は、 日本の地理の重要な要素として都道府県名になじんでいるだろうし、 地図上での都道府県の形を記憶している人も多いだろう。 そういう背景のもとでの地図上の位置の手がかりとして県境をいれることにした。】

Cartopy では、海岸線のデータを Natural Earth ( https://www.naturalearthdata.com/ ) というサイトからとってきてつかっている。 同じサイトに、国境や、各国の主要な行政区画の境のデータもある。 それを自動的にダウンロードして 中国の「省」の境を表示させるプログラム例が GeoCAT-examples というサイトの [NCL_overlay_11a.py ] というページにあった。

【ながらく気象データの地図上の表示につかわれてきたソフトウェアに、 NCAR Graphics がある。もともと Fortran から呼び出されるプログラムだったが、 NCL という独自のスクリプト言語もつくられた。 しかしちかごろ、NCAR Graphics 関係者は NCL の開発をやめ、 Python にうつることをすすめている。 GeoCAT-examples のページは、 NCL を利用した例と同等な作図を Cartopy をつかってできることをしめすものなのだ。】

その「China」となっているところ「Japan」に変更したら、そのまま県境を図示するものになり、 わたしの Windows パソコンの Anaconda でも、 実習につかっている Linux マシンのわたしのアカウントでも動作したので、 その形で教材の例文プログラムにふくめてきた。

ところが、ユーザーによっては、それでは県境が表示されない。 そして、その理由をたしかめることがむずかしい。 また、毎回、世界全体の主要な行政区画のデータをダウンロードしてから 日本の部分を切り出すのは、計算機資源のむだづかいともいえる。

そこで、Natural Earth の世界の主要な行政区画のデータを明示的にダウンロードして、 それを編集して、日本の県境を切り出したファイルをつくっておき、 地図をかくプログラムでは、そのファイルを読みこんで作図するようにした。

2022年7月に luce に置いた例文プログラムは、修正前のものだが、 ファイル名に「_v20220803」をふくめたものは修正後のものである。 【今後、整理する予定。】


日本の県境の作図

県境の線データ (領域をかこむ多角形データではない) をつぎの形で用意した。 zip を展開すると「.shp」「.dbf」「.shx」「.prj」でおわる 4 つのファイルが組になっている。 luce と hamana では /home/masuda/mapdata/ne/ 、 niigata では /home/masudako/mapdata/ne の下に置いたので そこから (コピーしないでプログラム実行時に) 読めばよい。 そのほかのばあいは自分の計算機にダウンロードして展開してほしい。

【これは、Natural Earth の、くわしさが「1:10m」 (1千万分の1の地図にふさわしいくわしさ) の 「Cultural」のうちの「Admin 1 - States, Provinces」のデータ群から、 「ne_10m_admin_1_states_provinces_lines.zip」 をダウンロードし、それを展開して、 MANDARA 10 (埼玉大学の 谷 謙二 先生による GISソフトウェア) に読みこんで、 属性表の「ADM0_NAME」という列の値が「Japan」であるオブジェクトだけを 書きだしたものである。 なお、ADM0_NAME が Japan であっても図示してみると位置が変なオブジェクトが 1件あり、それははずしておいた。】

これをつかって、関東地方をふくむ緯線・経線の長方形領域の地図をかき、 海岸線と都道府県境をかくプログラム例を用意した。 [2023-05-24]。

まず、つぎのパッケージの利用予約をする。

import cartopy.io.shapereader as shapereader
from cartopy.feature import ShapelyFeature

そして、プログラム実行ごとに一度、Shapefile 形式であたえられたデータを読みこむ。

# 都道府県境のデータを準備する
shapefilepath = '/home/masudako/mapdata/ne/'
shapefilename = 'ne_10m_admin_1_japan.shp'
shapefilepathname = shapefilepath + shapefilename
province_geos = list(shapereader.Reader(shapefilepathname).geometries())
provinces = ShapelyFeature(province_geos,
                           crs=ccrs.PlateCarree(),
                           facecolor='none', edgecolor='black', lw=0.25)

そして、地図をかくごとに、海岸線につづいてつぎの文を実行する。

# 都道府県境を描く
ax.add_feature(provinces)

なお、Natural Earth から自動的に行政界データをダウンロードして動く方法の プログラム例はつぎのものである。


中国の「省」の境の作図

【2024-06-18現在、niigata では未整備。追って整備する予定。】

中国の主要な行政区画は「省」 (英語では province) である。 ただし、チベット自治区などの「自治区」や北京市などいくつかの「市」も省と横ならびである。 わたしの[地図をかく (2) (セミナー教材 2022-06-28)] の例文 [22e] から、緯度経度範囲を変え、 国境線と中国の省の境界線をひく作図例をつくってみた。 (luce の /home/masuda/map にも追加した。)

これを実行するには、つぎのデータを用意し、 それにあわせてプログラム中の shapefilepath を変更しておく必要がある。 (luce, hamana では、データを /home/masuda/mapdata/ne/ に置いたので そのまま動くはずである。) 地図データのくわしさは「1:50m」 (5千万分の1の地図にふさわしいくわしさ) にした。

プログラム中では、上にのべた日本の県境のばあいとほとんど同じ作業を、 国境線と、省の境界線と、2回くりかえしている。


2022-08-03, 2022-08-04, 2023-05-24, 2024-06-18
増田 耕一 (MASUDA Kooiti)
[計算機を利用した気象分野の実習の教材]