Python環境で地図データを簡単に扱ってみたい
Google Colaboratoryを使ってShape形式ファイルを扱って簡単に地図を表示してみたいと思いたち、ネットをググってたらgeopandasというライブラリがあってそれを使えば簡単ですよってサイトが沢山見つかりました。
では早速やってみよう。
geopandas自体はGoogle Colaboratoryに登録済み
メインのライブラリであるgeopandasをインストールしなければならないと思ってたら、標準でインストール済みでした。どうもありがとうGoogle。
で、geopandasの使い方自体は他のサイトをググってもらうほうがわかりやすいと思ってますが、一点だけどこにも書いてないことをお知らせします。
なお、これは国土地理院などから勝手にshape形式データをダウンロードしてきてgeopandasで使ってみようとした場合です。
ファイルの入手先はこちら(国土交通省 国土数値情報ダウンロードサイト)
ファイルの読み込みエラーが発生
関連サイトからファイルをダウンロードすると、一般に.zipファイルとなっていて、中身としてshape形式として必須の3種類のファイルが含まれています。
.shp 図形の情報を格納するファイル
.bdf 図形の属性情報を格納するファイル
.shx 図形のインデックス情報を格納するファイル
wikipediaにはこのような説明がありました。
必須ファイル:
.shp —シェープ規格:地形情報の本体。
.shx —シェープインデックス規格:地形データの前方検索、後方検索を高速にするための位置インデックス。
.dbf —属性規格:各シェープに対する縦表形式の属性情報。dBASE IV形式準拠。
で、それらファイルをgeopandasで読み込むわけですがそのとき指定するファイル名は.shpの拡張子を持つファイルのみなんですね。
gdf = geopandas.file_read('xxxx.shp")
なので、知識が浅はかな私のようなものは、.zipファイルから.shpファイルだけを解凍してそいつだけフォルダにコピーして読ませようとしたわけです。
するとエラーが発生して全然読めない。
困ってしまってまたググっていろいろな先人が開陳されているサイトを見つけるのですが、どこにも同様のエラーが発生する状況についての説明がない。あっても3つの必須ファイルがありますよっていう説明があるだけ。
で、どうにも問題解決の情報が見つからないので、ものは試しと必須3ファイルをすべて解凍し、同じフォルダにおいてから読み込ませてみると、あら不思議、なんのエラーも発生せず簡単にデータ読み込みが終了致しました。
Google Colaboratoryで実行したときの画面は以下の通り。
同一フォルダに解凍したファイルをすべてアップロードしてます。
(データは神奈川県の行政区域データ)
この投稿で一番大切なこと「必須3ファイルはとりあえず同じフォルダに置いとけ」
ということで、必須3ファイルは同じフォルダに置いとけば、geopandasが勝手に参照してgeoDataFrameにしてくれるっぽいです。
今回の投稿は外部から手に入れたshape形式ファイルをgeopandasで読み込むためのコツについて個人的な忘備録として残しますが、もし同じことで深く悩んでいる方がいらっしゃったら試してみてください。
今回私は簡単に試すことができるGoogle Colaboratoryでやってみましたが、おそらくローカルで試してみても同じだと思います。
追記 2024/09/03)
Copilotに「geopandasでシェープファイルを扱ううときの注意点を教えて」と聞いてみたら、ちゃんと3つのファイルを同じフォルダに置けと教えてくれました。その他にも細かい注意点を教えてくれた。Copilotくん、ありがとう