LoginSignup
10
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!

MBTiles制作時のはまりポイントについてのメモ

Last updated at Posted at 2023-07-06

2年連続でほぼ同じポイントでハマったんで、3年目の俺がまた同じはまりポイントでググった時にこの記事に当たることを願って、2年間はまりポイントと奮闘した記録を残しておきます。

使ったツール:
MBUtil

前提

MBTilesファイルの中身はSQlite 3のデータベースです。
デバッグと言ってもデータベースに漏れている項目を無理やりSQLで入れるのがメインです。

メタデータが記載されていない

MBTilesを生成する時には生成するディレクトリーにメタデータになるJSONファイルを残す必要があります。

メタデータを記載したJSONファイルがなくてもMBTilesが生成されますが、MapTiler ServerやFMEとかで中身を確認する時にはメタデータがないと怒られます。

メタデータを記載したJSONを書いてMBTilesを再生成してもいいですが、またMBTilesを生成しようとするととてつもなく時間(3日程度)がかかるんで、直接SQLiteでデータベースの中に入ってmetadataのテーブルを入れたほうが手間も時間もかからないんで、そのような方法でデバッグします。

まずはSQLiteでmbtilesファイルの中身を確認します。

そして、.tableで中身に入っているテーブル一覧を確認します。

metadataが入っていないってことは、メタデータを作成されていないということになるんで、それを入れていきます。

CREATE TABLE metadata (name text, value text);

これでメタデータのテーブルが作成されます。

nameformatが設定されていないといけないようなので、その二つの情報をSQLでメタデータに追加していきます。

INSERT INTO metadata VALUES ('name','テスト地図');
INSERT INTO metadata VALUES ('format', 'png');

Boundsが設定されていない問題

MBTilesファイルのメタデータ内のBoundsというアトリビュートが設定されていないとMapTiler Serverで使えないです。

なので、Boundsを設定していって、MBTilesのファイルを使えるようにします。

まずは、さっきと同じようにSQlite 3でMBTilesのデータベースを開きます。

そして、SQLのコマンドでBoundsの数値をメタデータのテーブルに追加していきます。

INSERT INTO metadata VALUES ('bounds', '-180.0,-85,180,85');

これではまりポイントが全て解消されたはずです。

参考資料:
https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md

10
0
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
10
0