PythonでWeb地図アプリを作ってみよう
by
ぴっかりん
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PythonでWeb地図アプリを 作ってみよう 青木亮祐 / ぴっかりん (@ra0kley) PyCon mini Shizuoka 2026 2026.02.21
Slide 2
Slide 2 text
PyCon mini Shizuoka 2026 はじめに ● 本発表は、所属会社で行っていることではなく、個人で 使ってみたライブラリの発表になります ● デモは、以下のリンクからGoogle Colab上で 実行することが可能です https://colab.research.google.com/drive/1t5xE- G9oq1hWenw6uhf10xjls204SF2a?usp=sharing ● X(旧Twitter)を見ていることが多いので、ぜひ #pyconshizu を付けて感想をポストして頂けると嬉しいです! 2
Slide 3
Slide 3 text
PyCon mini Shizuoka 2026 本日のトークのゴール ✓ Web地図を作る上での基本事項がざっくり分かる ✓ 指定した場所の地図を表示できるようになる ✓ 緯度、経度の列があるCSV形式のデータを地図上に 表示できるようになる ✓ ????? 3
Slide 4
Slide 4 text
PyCon mini Shizuoka 2026 発表内容 1. 自己紹介 2. Web地図の基礎 3. leafmapの紹介と基礎 4. 静岡のデータを可視化してみよう 5. まとめ 4
Slide 5
Slide 5 text
5 自己紹介 01
Slide 6
Slide 6 text
PyCon mini Shizuoka 2026 1. 自己紹介 ● 出身: 静岡県駿東郡長泉町 ● 趣味: 地理空間情報と戯れる、散歩、旅行... ● 推し: 鬼頭明里さん、すそのん、不動産情報ライブラリス ● 活動: PLATEAU ADVOCATE 2025、 OSGeo.JP 運営委員、 SatAI.Challenge 運営メンバ ←「ぴっかりん」という名前でSNS等に 生息してます 6 「国土数値情報(行政区域データ)」(国土交通省)を 加工して作成
Slide 7
Slide 7 text
PyCon mini Shizuoka 2026 1. 自己紹介 私のPyCon参加歴 PyConJP 2021(オンライン) 7
Slide 8
Slide 8 text
PyCon mini Shizuoka 2026 1. 自己紹介 私のPyCon参加歴 PyConJP 2021(オンライン) PyConJP 2022(オンサイト) PyCon APAC 2023(オンサイト) 8 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成
Slide 9
Slide 9 text
PyCon mini Shizuoka 2026 1. 自己紹介 私のPyCon参加歴 PyConJP 2021(オンライン) PyConJP 2022(オンサイト) PyCon APAC 2023(オンサイト) PyCon mini Shizuoka 2024 continue (オンサイト・発表) あと、PyCon JP 2025(広島)でも発表しています 9 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成
Slide 10
Slide 10 text
PyCon mini Shizuoka 2026 1. 自己紹介? 実は右の地図、都道府県名のほかに 位置の情報も含まれているデータ から作成しています 10 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成
Slide 11
Slide 11 text
PyCon mini Shizuoka 2026 1. 自己紹介? 11 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成 ・・・ =
Slide 12
Slide 12 text
PyCon mini Shizuoka 2026 ・・・ 1. 自己紹介? 12 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成 = 都道府県の形が緯度、経度で表され格納
Slide 13
Slide 13 text
PyCon mini Shizuoka 2026 1. 自己紹介? このように「位置情報」をもつデータ(位置情報+αでも当然OK) → 地理空間情報 世の中には、様々な地理空間情報が溢れています! 13
Slide 14
Slide 14 text
PyCon mini Shizuoka 2026 1. 自己紹介? 世の中には、様々な地理空間情報が溢れています! 14 位置情報! 静岡市「静岡市公共施設一覧」を加工して作成
Slide 15
Slide 15 text
PyCon mini Shizuoka 2026 1. 自己紹介? 3Dの地理空間情報もあります!(この話はまたどこかで) 15 静岡県「VIRTUAL SHIZUOKA 静岡県 中・西部 点群データ」を東京都デジタルツイン3Dビューアで表示
Slide 16
Slide 16 text
PyCon mini Shizuoka 2026 1. 自己紹介? 今までのPyConでは3Dデータや衛星画像など専門的なことを 話してきました 16 PyCon mini Shizuoka 2024 continue 「 PythonでPLATEAUのデータを扱ってみる」 PyCon JP 2025 「 Hello, satellite data! ~Pythonではじめる 衛星データ解析~」
Slide 17
Slide 17 text
PyCon mini Shizuoka 2026 1. 自己紹介? しかし、そのベースとなっている地図について話していなかった & 最近はPythonでも扱いやすくなってきた ということで、PythonでWeb地図アプリを作る方法を お話したいと思います!! 17
Slide 18
Slide 18 text
PyCon mini Shizuoka 2026 1. 自己紹介? PythonでWeb地図を作成するモチベーション Pythonは、位置情報が付いたデータを解析できるライブラリが たくさんある (空間関係を用いた専門処理から、深層学習までさまざま) Web地図を用いた表示までできると、 解析から可視化までのワークフローが構築可能!! 18
Slide 19
Slide 19 text
19 Web地図の基礎 02
Slide 20
Slide 20 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 そもそもWeb地図とは? ✓ Webブラウザ上でインタラクティブに操作できる地図 ✓ 有名なものだと、Google Maps、OpenStreetMapなど → 皆さん、当たり前のように使っていますよね 20 OpenStreetMap 地理院地図(電子国土WEB)
Slide 21
Slide 21 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 位置の表し方 ✓ 緯度、経度 → 経度: 東西方向 → 緯度: 南北方向 ✓ 皆さんお馴染みですよね? 21 出典: https://commons.wikimedia.org/wiki/ File:Latitude_and_Longitude_of_the_Earth.svg
Slide 22
Slide 22 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 位置の表し方 ✓ 地球は球体、けど平面に表したい! → 球体を平面になるように変換すればOK → この変換を「投影」、変換のルールを「地図投影法」という → 面積、角度、距離をすべて正確には再現できない(歪みを許容) 22 ※ Nano Bananaにより作成
Slide 23
Slide 23 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 位置の表し方 ✓ Webメルカトル図法 → Google Mapsをはじめ、多くのWeb地図サービスで使用 → 北緯および南緯約85度以上の領域の描画をあきらめ、 地球全体を正方形の地図で表現 23 ※ Nano Bananaにより作成 約85度以上の部分は あきらめる
Slide 24
Slide 24 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 位置の表し方 ✓ 平面直角座標系 → 日本全体を19の領域に分割し、 その範囲を平面として変換 → 日本の公共測量で使用 オープンデータにて、位置が 平面直角座標系で記載 されていることも 24 出典: https://www.gsi.go.jp/sokuchikijun/jpc.html
Slide 25
Slide 25 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 地図データ 主に、「ラスターデータ」と「ベクターデータ」の2種類がある 25 ラスターデータ ベクターデータ 地理院地図 航空写真 地理院地図Vector
Slide 26
Slide 26 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 ラスターデータ 格子状に並んだ数値情報を含むピクセルの集合として表現されるデータ → 代表的なものが航空写真などの画像データ → 地形や気温のような連続性のあるデータを扱うのに適している メリット 単純な構造のため、計算や比較がしやすい デメリット 解像度がピクセルの大きさで決まるので、拡大や縮小で劣化する 26
Slide 27
Slide 27 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 さまざまなラスターデータ 航空写真以外にも地表面温度、標高など 27 © 国土地理院 © JAXA EORC © JAXA EORC 航空写真 標高 地表面温度
Slide 28
Slide 28 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 ベクターデータ 頂点の集合からなる幾何学的な形状を持つデータのこと → ある地点(お店の場所など)や道路、建物の形状と属性など → 細かい形状を表現するのに適している メリット 拡大/縮小による劣化が無く、細かい形状を表現できる デメリット 計算や比較がラスターデータに比べ難しい 28
Slide 29
Slide 29 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 ベクターデータの種類 ベクターデータには、3つの種類がある 29 ポイント ライン ポリゴン 特定の位置を示す形状 2つ以上の点を結んだ線 の形状、長さを持つ 頂点を結ぶ線が閉じた形 状(面)、面積を持つ 店舗やバス停の場所など 道路の中心線や鉄道など 建物や道路、公園など
Slide 30
Slide 30 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 Web地図を支える仕組み: 地図タイル ✓ 大きな位置情報データを事前にタイル状に分割し、必要な範囲の データだけを配信可能とする仕組み → 必要な範囲のみを読み込むことで、高速に表示ができる ✓ 全世界を所定のルールでタイル上に分割し、それぞれのタイルに 横方向の位置(X)と縦方向の位置(Y)、表示倍率(Z)を付与 → Webメルカトル投影法による世界地図を原点に分割していく 30
Slide 31
Slide 31 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 Web地図を支える仕組み: 地図タイル ✓ (0, 0)のWebメルカトル投影法による世界地図から 4分割ずつして、世界全体の領域を表現 31 出典: https://maps.gsi.go.jp/development/siyou.html
Slide 32
Slide 32 text
PyCon mini Shizuoka 2026 2. Web地図の基礎 Web地図を支える仕組み: 地図タイル 地図タイルの表示倍率を「ズームレベル」という 32 出典: https://maps.gsi.go.jp/development/siyou.html
Slide 33
Slide 33 text
33 leafmapの紹介と基礎 03
Slide 34
Slide 34 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 “超”便利なライブラリ leafmap 地理空間情報の可視化や簡単な解析を簡単にできるPythonライブラリ MITライセンスなので、比較的自由に利用可能 34 出典: https://leafmap.org/
Slide 35
Slide 35 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 インストール方法 Pythonのパッケージ管理ライブラリを用いてインストール可能 ※ いずれにせよ仮想環境を新しく作るのがオススメ(依存関係が。。。) 個人的には、pixiがオススメ uvでインストールする場合 pixiでインストールする場合 35 $ uv add leafmap $ pixi add leafmap
Slide 36
Slide 36 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 地図の表示 サンプルとして、さっそく会場周辺の地図を表示していきます。 なんと、 3行のコードで表示することができます。 36
Slide 37
Slide 37 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 地図の表示 サンプルとして、さっそく会場周辺の地図を表示していきます。 なんと、 3行のコードで表示することができます。 37 地図の中心としたい緯度経度をリスト形式で指定 緯度、経度の順番 初期表示のズームレベルを指定
Slide 38
Slide 38 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 地図の表示 会場周辺の地図が表示されました!!!!! 38
Slide 39
Slide 39 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 マーカーの表示 地図上に会場の場所にマーカーを立てていきましょう。 「add_marker」メソッドで実現ができます。 39
Slide 40
Slide 40 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 マーカーの表示 地図上に会場の場所にマーカーを立てていきましょう。 「add_marker」メソッドで実現ができます。 40 マーカーを立てたい場所の緯度経度をリスト形式で指定 緯度、経度の順番
Slide 41
Slide 41 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 マーカーの表示 会場の場所にマーカーが表示されました! 41
Slide 42
Slide 42 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 ポップアップの表示 マーカーをクリックすると、地図上にポップアップで 情報を表示できるようにしていきましょう。 「add_marker」メソッドの「popup」引数に指定し実現できます 42
Slide 43
Slide 43 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 ポップアップの表示 「ここが会場」というポップアップが表示されました 43
Slide 44
Slide 44 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 ポップアップの表示 「ここが会場」というポップアップが表示されましたが、幅が短すぎて 縦書きみたいになっています。少し工夫をしてみます。 また、ポップアップの表示内容はHTMLで指定できます。 ついでに太字にしてみましょう。 44
Slide 45
Slide 45 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 ポップアップの表示 「folium」というライブラリを用いて、ポップアップをカスタムできます。 45
Slide 46
Slide 46 text
PyCon mini Shizuoka 2026 3. leafmapの紹介と基礎 ポップアップの表示 きちんと横書きで表示され、「ここが会場」も太字になりました! 46
Slide 47
Slide 47 text
47 静岡のデータを可視化してみよう 04
Slide 48
Slide 48 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう ここで唐突な質問 皆さん、お昼ごはんに何を 食べましたか? (静岡にはおいしい食べ物がたくさんあります!!!) 48
Slide 49
Slide 49 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 私は、昨年参加時のお昼ごはんに海鮮丼を食べました 静岡は、海鮮もおいしい!! (帰静したときに、1回は海鮮を食べてるくらい) 49
Slide 50
Slide 50 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 静岡市にある用宗漁港、清水港、由比漁港の3つの港があります ここで、水揚げされる魚介類を「しずまえ鮮魚」といいます 50 出典: https://www.city.shizuoka.lg.jp/s2473/s005023.html
Slide 51
Slide 51 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 静岡県のオープンデータカタログカタログサイトから 「しずまえ鮮魚」を食べることが出来る飲食店のデータを 使っていきます(※ 古い情報であることに注意) 51 出典: https://opendata.pref.shizuoka.jp/dataset/12287.html
Slide 52
Slide 52 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう まずは、pandasでCSVを読み込み中身を確認 52
Slide 53
Slide 53 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう CSVの中身を見ると、「緯度」「経度」が含まれている! 53 静岡市「しずまえおさかな処マップ 掲載飲食店」を改変して使用、CC BY 4.0
Slide 54
Slide 54 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 地図に表示する際は、「スポット名」、「詳細」、「電話番号」、「URL」 辺りも表示したい → 欠損値の情報もあり、そのままだと「NaN」と地図上に 表示されてしまう → pandasで当該箇所は「情報なし」に置換しよう 54 静岡市「しずまえおさかな処マップ 掲載飲食店」を改変して使用、CC BY 4.0
Slide 55
Slide 55 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう ここから先は、コードが長くなるため、Google Colabの Notebookをメインに説明していきます。 詳しくは、冒頭に案内したNotebokをご覧ください。 55
Slide 56
Slide 56 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 欠損値を「情報なし」に変換 56
Slide 57
Slide 57 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう それでは、きれいにしたデータを地図上に表示していきます。 先ほど、書いたコードをベースに追加していきます。 57
Slide 58
Slide 58 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう DataFrameの内容を地図上に追加 for文でDataFrameの内容を1つずつ抽出しながらポップアップに 表示する内容を装飾、地図に追加を繰り返していきます。 58
Slide 59
Slide 59 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう DataFrameの内容を地図上に追加 地図上にDataFrameの内容が表示されました!! 59
Slide 60
Slide 60 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう カスタムアイコンの追加 地図上に情報を表示することができるようになりましたが、 ✓ 会場と飲食店のマーカーの区別がつかない ✓ 何だか味気ない といった課題があります。 そこで、飲食店のマーカーをカスタムしましょう。 以下のお魚のアイコンを表示していきます 60
Slide 61
Slide 61 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう カスタムアイコンの追加 「folium」というライブラリにある「CustomIcon」を用いると 画像やアイコンのサイズを指定し、地図上に表示できます。 61
Slide 62
Slide 62 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう カスタムアイコンの追加 お魚のアイコンが地図上に表示され、会場のマーカーと区別できました! 62
Slide 63
Slide 63 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 近接したマーカーのグループ化 お魚のアイコンが表示されたのはいいですが、 密集している個所はたくさんのお魚が表示され、見づらいです。 そこで、近接した場所のマーカーはグループ化するようにします。 「folium」というライブラリにある「MarkerCluster」を用いると 近接したマーカーをグループ化し、地図上に表示できます。 63
Slide 64
Slide 64 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 近接したマーカーのグループ化 64
Slide 65
Slide 65 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう 近接したマーカーのグループ化 グループ化され、見やすくなりました!! 65
Slide 66
Slide 66 text
PyCon mini Shizuoka 2026 4. 静岡のデータを可視化してみよう HTMLとして出力 たった1行でHTML形式で出力可能!! このHTMLをGitHub Pagesなどで公開すれば、 誰でも地図を見れるように!! 66
Slide 67
Slide 67 text
67 まとめ 05
Slide 68
Slide 68 text
68 まとめと思いきや宣伝です! 05
Slide 69
Slide 69 text
PyCon mini Shizuoka 2026 5. 宣伝 今回、用いたPythonライブラリであるleafmapのような 地理空間情報を扱う自由かつオープンソースなソフトウェア群を FOSS4G(Free and Open Source Software for Geospatial) といいます そして、このFOSS4Gのコミュニティを支援している団体が主催する 年次カンファレンスの名前もFOSS4Gです(ややこしい) 各地の支部が主催する会議の名前も“FOSS4G”を冠することが多い (自己紹介にあったOSGeo.JPは日本の支部) 69
Slide 70
Slide 70 text
PyCon mini Shizuoka 2026 5. 宣伝 ● PyCon JP 2026は、8/21~23に広島国際会議場で開催 70 出典: https://2026.pycon.jp/
Slide 71
Slide 71 text
PyCon mini Shizuoka 2026 5. 宣伝 なんと、その1週間後に 同じ広島国際会議場で 71
Slide 72
Slide 72 text
PyCon mini Shizuoka 2026 5. 宣伝 FOSS4G Hiroshima 2026が 開催されます!! 72 出典: https://2026.foss4g.org/en/
Slide 73
Slide 73 text
PyCon mini Shizuoka 2026 5. 宣伝 現在、発表のプロポーザルも募集中です!! 73 出典: https://x.com/osgeojapan/status/2021472266895216922
Slide 74
Slide 74 text
74 今度こそまとめです! 06
Slide 75
Slide 75 text
PyCon mini Shizuoka 2026 6. まとめ ● 地図を作成するためには、さまざまな知識が必要だが Pythonをはじめ、さまざまなツールのおかげで楽にできるように ● PythonでもWeb地図作成できるライブラリが近年出てきています ● Pythonを用いると、データ処理からWeb地図表示まで 一気通貫で可能!!! 今回の場合だと、欠損値の処理と地図上にデータを表示 75
Slide 76
Slide 76 text
PyCon mini Shizuoka 2026 本日のトークのゴール ✓ Web地図を作る上での基本事項がざっくり分かる ✓ 指定した場所の地図を表示できるようになる ✓ 緯度、経度の列があるCSV形式のデータを地図上に 表示できるようになる ✓ 生成AIに質問するための地図の知識が身に付いた!? 76
Slide 77
Slide 77 text
PyCon mini Shizuoka 2026 6. まとめ Pythonを用いて、地理空間情報で遊ぶのは めっちゃ楽しいです!!! あなたもぜひ、地理空間情報の沼へ! そして、FOSS4G Hiroshima 2026にも遊びに来てください 77
Slide 78
Slide 78 text
ありがとうございました! ↑ X (旧Twitter)アカウント ↑ GitHubアカウント 78