こちらからお試しいただけます:https://ktak.dev/peak-sight
国土地理院が公開している地図は 2D で構成されており、等高線だけを見ても立体的なイメージが初心者には難しいです。 現在の山に関する地図アプリは 2D がメインであり、中には Google Earth のような 3D 対応のものもありますが、登山情報が詳しく記載されているとは言い難い状況です。 そのため、登山に特化した 3D 地図アプリの開発を行いました。
今回開発したマップは 3D / 2D、地形図 / 航空写真の 4 種類に対応しています。 また、画面に映っている山の情報や登山道が地図上に表示されており、選択すると整理された情報を閲覧することができます。 さらに、クマの出没情報や、登山道の標高グラフも表示され、登山に必要な情報を一つのアプリで取得可能です。
地形を分かりやすく可視化し、詳細な山・登山道の情報を簡単に取得可能
クマの出没情報や登山道の標高グラフなど、登山に役立つ情報を一つのアプリで提供
山を選択した時に自動で最適な位置にジャンプするなど、マップとコンテキストパネルが連動
- ユーザが自由に登山道を選択したり結んだりできる機能を追加する
- 2 点間の登山道のルート検索機能を追加する
- マップ描画に必要なデータの配信体制を再検討する
- 登山道や山のデータが大量にありながらも、操作性がよくなるように DB の検索を工夫した
- 独自のアルゴリズムを用いることで、登山道のデータを簡潔かつ分かりやすく整備した
- 山を選択するとその山まで移動する UI や、登山道を選択すると標高データが表示されるなど、マップとコンテキストパネルの連動性を高めた
- Next.js
- FastAPI
- PostgreSQL
- PostGIS
- Redis
- Cloudflare
- Web ブラウザが動作するパソコンやスマートフォン
- Deploy: Oracle Cloud Infrastructure, Cloudflare, GitHub Actions
- DB の階層的な検索
- 山や登山道のデータが大量にある中で、応答性を向上させるために、DB の階層的な検索を実装しました
- これにより、ユーザが山や登山道を選択した際の応答性が向上しました
- 登山道をマージする独自のアルゴリズム
- 登山道のデータを分かりやすく表示するために、登山道をマージする独自のアルゴリズムを開発しました
- Ball Tree や Union Find を活用し、登山道のデータを簡潔に整理しました
- マップのタイル画像をキャッシュする仕組み
- Cloudflare と Redis を活用し、マップのタイル画像をキャッシュする仕組みを開発しました
- これにより、マップの表示速度が向上しました