Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kpop-pmtiles development #571

Closed
hfu opened this issue Aug 16, 2024 · 10 comments
Closed

kpop-pmtiles development #571

hfu opened this issue Aug 16, 2024 · 10 comments
Assignees

Comments

@hfu
Copy link
Contributor

hfu commented Aug 16, 2024

あらすじ

話が次のように展開しています。

  1. H3 とズームレベルの対応づけを考える。
  2. 対応づけのテストを兼ねて、Kontur Population data (400m resolution) の PMTiles (kpop-pmtiles) を作る

H3 とズームレベルの対応づけ

ベクトルタイルに h3 のデータを詰め込むことを考慮した場合に、h3 の resolution と zoom level を対応づける

原案1

z h
0 0
1 0
2 0
3 1
4 2
5 2
6 3
7 4
8 5
9 5
10 6
11 6
12 7
13 8
14 8
15 9
16 10
17 11
18 12

原案2

z h
0 0
1 0
2 0
3 1
4 2
5 3
6 4
7 4
8 5
9 5
10 6
11 6
12 7
13 7
14 8
15 9
16 10
17 11
18 12
@hfu
Copy link
Contributor Author

hfu commented Aug 16, 2024

原案2を採用してみようと思います。その根拠について ChatGPT に説明してもらっておきました。

第二案に基づいたH3の解像度(resolution、以下h)とズームレベル(zoom level、以下z)の対応関係を、H3とズームレベルの基本的な特徴を含めながら説明します。この説明では、地理情報システム(GIS)やスマートマップ技術のユーザーにとって重要な視点を考慮し、客観的な評価を行います。

H3とZoom Levelの基本概念

H3は、Hexagonal Hierarchical Spatial Indexing Systemの略で、Uberが開発した地理空間データの階層的なインデックスシステムです。H3の解像度(h)は、各ステップで約7倍に細かくなる形で六角形セルを細分化します。解像度が高くなるほど、セルの大きさは小さくなり、より詳細な位置情報を表現できます。

一方、**ズームレベル(z)**は、ウェブマップや地図アプリケーションにおける表示の拡大・縮小を制御するもので、レベルが上がるほど地図のスケールが大きくなり、より詳細な地理情報を表示します。ズームレベルは2の乗数に基づき、各ズームステップで解像度が倍になる形式です。

第二案: H3 ResolutionとZoom Levelの対応関係

以下の表に基づいて説明します。

z h
0 0
1 0
2 0
3 1
4 2
5 3
6 4
7 4
8 5
9 5
10 6
11 6
12 7
13 7
14 8
15 9
16 10
17 11
18 12

1. 低ズームレベル(z=0〜2)と解像度h=0

この範囲では、ズームレベルが低いため、広域な地図表示が求められ、H3の解像度も最も粗いh=0が採用されています。低ズームでは、詳細な地理情報よりも全体の地形や地理的な大まかな位置関係を把握することが重要であるため、解像度を高くする必要はありません。

2. 中間ズームレベル(z=3〜12)での段階的な解像度向上

中間ズームレベルでは、h=1から始まり、徐々に解像度が上がります。この段階的な増加は、ズームイン時に滑らかな視覚的変化を提供し、ユーザーが自然な感覚で地図を操作できるように設計されています。

  • z=3〜4: h=1→2で、まだ広域を表示しつつも、やや詳細な地理情報を表示する必要があるシナリオに適しています。
  • z=5〜6: h=3→4にかけて、さらに詳細な情報を提供しつつも、過剰に細かくなることを避けています。
  • z=7〜12: ここではh=4〜7の範囲で、段階的な解像度向上が続きますが、z=7やz=9のように、一時的に解像度が固定されることがあります。これは、スムーズなズーム操作を優先し、特定のズームレベル間で大きな解像度変化を防ぐための措置です。

3. 高ズームレベル(z=13〜18)と高解像度(h=8〜12)

z=13以降は、ユーザーがより詳細な地図表示を求める場面であり、H3の解像度もそれに合わせて高くなります。

  • z=14〜18: h=8→12と解像度が徐々に細かくなり、最も高いズームレベルでは非常に詳細な情報を表示できます。この段階では、都市部の詳細な地図や、建物単位の表示が可能です。

客観的なメリット

  1. 視覚的連続性: 第二案は、解像度の変更が滑らかで、一貫したズーム体験を提供します。特にz=5〜12の中間ズームレベルで、リズムよく解像度が変化するため、ユーザーがズーム操作を行った際に違和感を感じることが少ないでしょう。

  2. 柔軟な適応性: 広域地図から詳細地図まで、異なるスケールで自然な表示を実現するため、さまざまな地理空間アプリケーションに柔軟に適応できます。都市計画や緊急対応、ナビゲーションなど、多岐にわたる用途に向いています。

  3. 計算リソースの最適化: 第二案では、ズームレベルが高くなるほど解像度が細かくなる一方で、中間ズームでの解像度の増加は適度に抑制されています。これにより、必要以上のデータ処理が発生せず、リソース効率を保ちながらも、視覚的な一貫性を維持できます。

結論

第二案のH3解像度とズームレベルの対応は、滑らかなズーム操作と視覚的な一貫性を提供する設計であり、特に中間から高ズームレベルでの地理情報の詳細表示に強みがあります。地図の用途に応じた柔軟な表示を実現するため、幅広いシナリオに適したバランスの取れたアプローチと評価できます。

@hfu
Copy link
Contributor Author

hfu commented Aug 16, 2024

実際にデータを作ってみて、第三案を作ってみました。

z h
0 0
1 0
2 0
3 1
4 2
5 3
6 4
7 5
8 6
9 7
10 8
11 9
12 10
13 11
14 12

@hfu
Copy link
Contributor Author

hfu commented Aug 16, 2024

第三案について、ChatGPT に解説を生成させました。

この新しいズームレベルとH3解像度の対応表は、詳細な地理情報を必要とするユーザーに最適なソリューションを提供します。ズームレベルが上がるごとに、データの詳細度が高まり、ユーザーが必要に応じて帯域を消費して詳細な情報を取得できるという合理的な設計が特徴です。

主な特徴:

  1. データ転送の最適化
    不要なデータ転送を抑え、必要な場合にのみ高精度のデータを取得することで、帯域の無駄を排除し、システム全体のパフォーマンスを向上させます。

  2. スケーラブルな詳細度
    このモデルは、低解像度のグローバルビューから高解像度のローカルビューまで、ズームレベルに応じて柔軟に対応。例えば、ズームレベル0では世界全体の概要が表示され、ズームレベル14では細かい地形まで確認できます。

  3. ユーザーに寄り添った設計
    詳細情報が必要な場合のみ帯域を消費する設計は、ユーザーのニーズに応じた柔軟なデータ提供を実現し、無駄のない情報取得を可能にします。必要な情報だけを効果的に取得できるため、ストレスフリーな地図閲覧が実現します。

このモデルは、次世代の動的な地理情報アプリケーションにとって理想的なソリューションとなり、使いやすさと効率性を兼ね備えた未来志向のシステムを提供します。

@hfu
Copy link
Contributor Author

hfu commented Aug 16, 2024

作業中のリポジトリ

https://github.com/optgeo/kpop-pmtiles

@hfu hfu changed the title h3 の resolution と zoom level を対応づける kpop-pmtiles development Aug 16, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 16, 2024

@yuiseki
Copy link
Member

yuiseki commented Aug 17, 2024

Adopted at FOIL4G

@yuiseki yuiseki self-assigned this Aug 17, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 17, 2024

@yuiseki ありがとうございます!

データを少し増やし、凝った色をつけてみています。

スクリーンショット 2024-08-17 11 10 041
https://observablehq.com/@hfu/kpop-pmtiles

@hfu
Copy link
Contributor Author

hfu commented Aug 18, 2024

案4

原案3ベースで、一段アップシフトしてみました。

z h
0 0
1 0
2 1
3 2
4 3
5 4
6 5
7 6
8 7
9 8

https://github.com/optgeo/kpop-pmtiles/blob/main/dump_db.rb で実装してあります。

@hfu
Copy link
Contributor Author

hfu commented Aug 19, 2024

Qiita エントリを書きました。
https://qiita.com/hfu/items/d5efcdd4e87984ea40a5

@hfu
Copy link
Contributor Author

hfu commented Aug 20, 2024

作業完成したので、クローズします。

@hfu hfu closed this as completed Aug 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants