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);
これでメタデータのテーブルが作成されます。
name
とformat
が設定されていないといけないようなので、その二つの情報を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