GISで使われる地図データなどをPythonで利用する機会があったので、調べたことをまとめておく。最終的には、シェープファイル形式のデータをPythonで読み込んで、matplotlibでプロットしてみる。
Windows10のWSL(Ubuntu 18.04)。
GISで使われるデータフォーマットにはいくつか種類があって、まずはラスターデータとベクターデータに分けられる。ラスターデータはざっくり言うとjpgやpngなどの画像で、ベクターデータは座標や線などの情報からなるデータ。PDFで拡大しても画像のように線などが荒くならないのは、PDFではベクターデータを扱えるから。GISで使われるベクターデータにもいくつかフォーマットがあって、そのひとつがシェープファイル。シェープファイルは本体の拡張子shpのファイルとその他の複数のファイルから構成される。
国土地理院のホームページにある地球地図日本の第2.2版ベクタの全レイヤをダウンロード。ダウンロードしたファイルを解凍すると、いくつかのシェープファイルがある。今回は日本の海岸線データ(coastl_jpn.shp)とフェリー航路データ(ferryl_jpn.shp)を可視化してみる。
調べた限りGIS用データを扱えるPythonライブラリはいくつかあるが、GeoPandasを使うことにした。Pandasという名前がついているように、GeoPandasではPandasと同じデータ形式が使える。Pandasに慣れていれば他のライブラリよりも扱いやすいかもしれない。
GeoPandasはpipでインストールできる。
ダウンロードしたシェープファイルをmatplotlibで可視化する。
結果は以下の通りで、日本の海岸線は黒、フェリー航路は青でプロットした。
環境
Windows10のWSL(Ubuntu 18.04)。
GISで使われるデータ
GISで使われるデータフォーマットにはいくつか種類があって、まずはラスターデータとベクターデータに分けられる。ラスターデータはざっくり言うとjpgやpngなどの画像で、ベクターデータは座標や線などの情報からなるデータ。PDFで拡大しても画像のように線などが荒くならないのは、PDFではベクターデータを扱えるから。GISで使われるベクターデータにもいくつかフォーマットがあって、そのひとつがシェープファイル。シェープファイルは本体の拡張子shpのファイルとその他の複数のファイルから構成される。
可視化するデータ
国土地理院のホームページにある地球地図日本の第2.2版ベクタの全レイヤをダウンロード。ダウンロードしたファイルを解凍すると、いくつかのシェープファイルがある。今回は日本の海岸線データ(coastl_jpn.shp)とフェリー航路データ(ferryl_jpn.shp)を可視化してみる。
GIS用データを扱えるPythonライブラリ
調べた限りGIS用データを扱えるPythonライブラリはいくつかあるが、GeoPandasを使うことにした。Pandasという名前がついているように、GeoPandasではPandasと同じデータ形式が使える。Pandasに慣れていれば他のライブラリよりも扱いやすいかもしれない。
GeoPandasはpipでインストールできる。
シェープファイルの可視化
ダウンロードしたシェープファイルをmatplotlibで可視化する。
import geopandas as gpd # matplotlibのターミナル対応 import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt def main(): # シェープファイルのあるディレクトリ shape_dir = 'gm-jpn-all_u_2_2/' # シェープファイル名 shape_fname_l = ['coastl_jpn.shp', 'ferryl_jpn.shp'] # プロットする色 color_l = ['black', 'blue'] fig, ax = plt.subplots(figsize = (20,16)) for shape_fname, color in zip(shape_fname_l, color_l): # シェープファイルの読み込み data = gpd.read_file(shape_dir + shape_fname) data.plot(ax=ax, color=color) plt.savefig('gis_coast_ferry.pdf') plt.clf() if __name__ == '__main__': main()
結果は以下の通りで、日本の海岸線は黒、フェリー航路は青でプロットした。
0 件のコメント:
コメントを投稿