IIIF Georeference Extension JSONからXYZタイルを生成し、TileServer GLで配信、MapLibre GL JSで表示するまでの手順をまとめます。

OSM上に東京大学鳥瞰図をオーバーレイ表示

概要

IIIi(m(T(M(FiXbmiaiY-blpGfZuteLe-tiSiogileb)reler)reosvefreee)rGrf)Le-GntLJciSeleJsSON

必要環境

  • Docker / Docker Compose
  • Python 3.x
  • GDAL (gdal_translate, gdalwarp, gdal2tiles.py)
  • Pillow (pip3 install pillow)
  • mb-util

GDALのインストール

#b#srumeUdawbocuOinaSntpsut(t/HaDiolenmlbseitbgaardnlealwl)gdal-binpython3-gdal

mb-utilのインストール

pip3installmbutil

1. プロジェクト構成

wtms/ddsfdoatroctyockalnse/et/rse-/ncdo/mpose.yml###mMbatpiLliebsre

2. Docker Compose設定

docker-compose.yml:

sertfvirilicproicprcemoooenmoooeesanr-lstanr-lssegttutegttut:reas"maneas"mav:i:8e/rd:i:8e/ren8sdst:n8sftrme8:at:ne8:r::ar8tygr9op_:alui_:nutn8:ennn8tnia0/slxa0ellm8d:e:m"neee0a/saedsr:"tssl::s/at-p/-twysiwusitltntstlmeoemresspsps-p-spetefheridradvloreenerst/-eengrnglvdi:enlrxa/thetsmtl:ro

3. IIIF画像からXYZタイルを生成

iiif-georef-tilesを使用します。

Canvas形式とManifest形式の両方に対応しています。

#gc#pidytXtiYhciZolinof3n-egsechortrCiteappfnts-vs:ta//isi/ligeiisft_hguMebao.nrcieoffme_/stntoa_ktaimUluRerLsa.1p9y6/<iIiIiIfF-_gGeEoOrReEfF-_tUiRlLe>s.giotutput-dir/tiles_output

例:東京大学鳥瞰図

python3scripts/iiif_georef_to_tiles.pyhttps://nakamura196.github.io/iiif_geo/canvas.jsonoutput-dir/tiles_output

Canvas形式とManifest形式の両方を入力として受け付けます。Manifest形式の場合は自動的に最初のCanvasを抽出します。

処理の流れ:

  1. IIIF Georeference JSONを取得(Manifest形式の場合は自動でCanvasを抽出)
  2. IIIF Image APIから画像をダウンロード(full/maxでサーバー最大サイズを取得)
  3. 全GCPを埋め込み(gdal_translate)
  4. 座標変換(gdalwarp、多項式次数はJSONから取得)
  5. XYZタイル生成(gdal2tiles.py)

4. XYZタイルをmbtilesに変換

TileServer GLで配信するため、XYZタイルをmbtiles形式に変換します。

重要 : --scheme=xyz オプションを指定してください。指定しないとY座標が反転し、南半球に表示されてしまいます。

python3-c"frommbutilimportdisk_to_mbtiles;disk_to_mbtiles('tiles_output/tiles','data/tokyo_utokyo.mbtiles',image_format='png',scheme='xyz')"

メタデータの追加

mb-utilで生成したmbtilesにはメタデータがないため、手動で追加します:

sIIEqNNOlSSFiEEtRReTT3IIdNNaTTtOOa/mmteeottkaayddoaa_ttuaato((knnyaaomm.eem,,btvviaallleuusee))VVAA'LLEUUOEEFSS'''nfaomrem'a,t'','png');');

注意 : scheme=xyzなどのメタデータは追加しないでください。mbutilは内部的にTMS形式でY座標を保存しており、TileServer GLはデフォルトでTMS形式として認識します。scheme=xyzを追加すると座標変換がスキップされ、タイルが正しく表示されなくなります。

5. TileServer GLを起動

dockercomposeup-d

確認

TileServer GLのトップページ

データ詳細ページ(TileJSON情報)

6. MapLibre GL JSで表示

TileServer GLからタイルを取得してMapLibreで表示します。

#b#srumeUdawbocuOinaSntpsut(t/HaDiolenmlbseitbgaardnlealwl)gdal-binpython3-gdal

0

不透明度の調整

スライダーで不透明度を調整することで、ベースマップとの比較が容易になります。

不透明度100%不透明度50%

基本コマンド

#b#srumeUdawbocuOinaSntpsut(t/HaDiolenmlbseitbgaardnlealwl)gdal-binpython3-gdal

1

エンドポイント

URL説明
http://localhost:8888/TileServer GLトップページ
http://localhost:8888/data.jsonデータソース一覧
http://localhost:8888/data/{name}.jsonTileJSON
http://localhost:8888/data/{name}/{z}/{x}/{y}.pngタイル取得
http://localhost:8889/MapLibreビューア

参考リンク