LoginSignup
5
1

ベクターデータからPMTilesを生成する方法

Last updated at Posted at 2023-12-11

はじめに

この記事は FOSS4G Advent Calendar 2023 11日目の記事です。

GIS界隈ではCloud Optimizedが重要なキーワードになっています。Cloud Optimizedとは、特別なサーバ実装を必要とせず、大きな位置情報データの一部分を配信することを可能とするファイル形式の総称です。本記事は、Cloud Optimized形式のうち、PMTiles(ベクトルタイル)の生成方法に焦点を当てた記事になります。具体には、京都市がオープンデータとして公開している、京都市固定資産税(土地)地番図データからPMTilesを生成する方法について説明します。PMTilesの生成方法については、Zennでも記事を書いていますので、あわせてご覧ください。

PMTilesの特徴

  • 単一ファイル形式のタイルデータ
  • ラスタータイル、ベクトルタイルともに対応
  • 地球規模のタイルマップの保存
  • S3 のようなストレージとHTTP Range Requestsのみを使用

PC環境

OS:Windows 10 Pro
CPU:Intel Core i7-9700
メモリ:32GB

前提条件

  • ベクターデータからPMTilesの生成は、手元にMBTilesがあるならProtomaps公式のgo-pmtilesを使用したほうが良さそうです。
  • 一方で、手元にGeoJSONやFlatGeobufがあるならfeltのtippecanoeを使用したほうが良さそうです。
  • 今回は、後者のfeltのtippecanoeを用いた、PMTilesの生成方法について説明します。

環境構築

  • QGISがインストール済みであること。
  • QGISのバージョンは、3.34.0です。

  • WSL2(Ubuntu-20.04)がインストール済みであること。

  • feltのtippecanoeがインストール済みであること。

  • Windows 10へのtippecanoeのインストール方法は下記のとおりです。

  • ただし、上記に記載のgit clone https://github.com/mapbox/tippecanoe.gitの箇所をgit clone https://github.com/felt/tippecanoe.gitへの変更が必要です。

  • tippecanoeのバージョンはv2.23.0です。

  • 下記のサイトより京都市固定資産税(土地)地番図データのシェープファイルをダウンロードし、解凍済みであること。

シェープファイルからFlatGeobufを生成

  • シェープファイルからFlatGeobufの生成にはQGISを使用します。
  • 地番図データの座標参照系(CRS)が平面直角座標系6系(EPSG:2448)なので、エクスポート時の座標参照系(CRS)をWGS84(EPSG:4326)にしておきます。

image.png

FlatGeobufからPMTilesを生成

  • FlatGeobufからPMTilesの生成にはfeltのtippecanoeを使用します。
  • WSLを起動して、下記のコマンドを実行します。
tippecanoe -o kyotoshi_chiban_r05.pmtiles kyotoshi_chiban_r05.fgb -pf -pk -P
  • tippecanoeのオプション
    -P:並列読み込み
    ただし、下記の記事によると、-Pオプションが有効なのは、GeoJSONSeqのみのようです。

-pf:地物数制限を無視する(1タイルあたり200,000フィーチャに制限しない)
-pk:ファイルサイズ制限を無視する(1タイルあたり500Kバイトに制限しない)

-z, -Z:ズームレベル指定

  • ズームレベルを指定する場合は下記のとおりになります。
  • -Z10 -z18とすると、ズームレベル10-18の範囲でタイルを生成します。
  • 指定しない場合は自動的に設定されます(ズームレベル0~14)。
  • 大文字のZが最小ズームレベル、小文字のzが最大ズームレベルを示すことに注意が必要です。
tippecanoe -o kyotoshi_chiban_r05.pmtiless -Z10 -z18 kyotoshi_chiban_r05.fgb -pf -pk -P
  • 下記でズームレベルごとの地理分解能の概数がわかります。
  • ズームレベル14で0.5m相当となり、これは一般的なWeb地図では十分な分解能と言えます。
  • お好みでより高い精度を求めることは可能ですが、タイル数とのトレードオフになります。

生成したPMTilesの確認

  • 生成したPMTilesの確認には、PMTiles Viewerが便利です。
  • PMTilesをドラッグ&ドロップすると、フィーチャが地図上に表示されます。

生成したPMTilesをMapLibre GL JSで表示する

  • 上記の方法で生成したPMTilesとMapLibre GL JSで作成したデモサイトを下記のGitHubにて公開しています。

image.png

参考文献

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