1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonのfoliumパッケージをオフライン仕様に改造し、インタラクティブな地図をオフライン環境で使えるようにする方法

1
Last updated at Posted at 2025-05-14

1.モチベーション

基本的にインターネット接続ができず、インターネット接続できる端末は物理的に他の端末と切り離されている、というセキュリティ意識が(異常に)高い環境の人に、ニッチなメリットがあると思って書いています。
とりあえずここにコード類はおきました。

2.趣旨

Pythonで地図を使うとき、インタラクティブな操作(google mapライクな地図操作)を実現する一番メジャーな方法はFoliumパッケージだと思います。しかし、残念ながらFoliumはオンライン環境を前提に作られており、動かすたびにオンライン上のリソース(jsonファイルやcssファイル)を参照しに行くようになっているので、完全オフライン環境だと全然動きません😢

もちろん、単に「オフラインで地図を使いたい!」というだけの場合、Pythonにこだわりがなければ、QGISを使って一旦オンライン環境で必要な地図レイヤーを全部ダウンロードしておいて、そのデータをそのままオフライン環境でも使う、というのが一番手っ取り早い方法だと思います。しかしここでは、あくまでWebアプリみたいなものを作るために、「PythonでFoliumパッケージを使いたい...しかもオフラインで...」というかなりニッチなニーズに向けて方法を解説してみたいと思います。

実は同じ発想で作られた(と思われる)コード↓がgithubにあるのですが、少なくとも私の環境ではうまく動きませんでした。なんか古いし、メンテナンスもされてなさそうです。

コード解説

単純化すると、以下2ステップに集約されます。

  • ①Foliumパッケージが参照しにいっているオンライン上のリソース(Jsonファイル、CSSファイル)をすべてローカルにDLしてきて、foliumパッケージを改変してそのローカルファイルを毎回参照するように改造する
  • ②地図レイヤーは、QGISを使ってOpen Street MapのXYZタイルを必要な倍率のものだけ全部画像としてダウンロードしてローカルに持ってしまう*

※ 私の作った上記githubのリポジトリには、既にOpen Street Mapの2種類の地図の一定の倍率のデータを画像データとして格納してあるので、これを流用すればQGISを使った地図タイルのDL作業は不要。

(詳しい説明を今後加筆予定)

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?