概要
.geojson ファイルがあり、( tippecanoe / geobuf / その他を使用して) それらを .mbtiles または .pbf ファイルに変換して、サーバー ( TileServer-GL / OpenMapTiles / その他のベクター タイル サーバー) から Google マップにベクター タイルとして提供したいと考えています。 Deck.GLのMVTLayer。
予想された結果:
- .mbtiles ファイルの代わりに TileServer-GL .pbf ファイルからサービスを提供できるようにします。
- 特定の .mbtiles ファイルでフォルダーを明示的に開始することなく、TileServer-GL から複数の .mbtiles (または .pbf) ファイルをフォルダーから提供できるようにします。
実績:
- 以下に示すように、Deck.GL MVTLayerとベクター タイルを統合した Google マップを使用して、TileServer-GL から特定の .mbtiles ファイルを形状またはポイントのコレクションとして提供しています。
- 何も管理しませんでした。
私の試み
const map = new google.maps.Map(document.getElementById('container'), {
center: { lat: 51.47, lng: 0.45 },
zoom: 10
});
const deckOverlay = new deck.GoogleMapsOverlay({
layers: [
new deck.MVTLayer({
//working
data: `http://localhost:8080/data/SA1_2016-AU-tippecanoe/{z}/{x}/{y}.pbf`,
//expected, but server NOT starting
//data: `http://localhost:8080/data/SA1_2016-AU-geobuf/{z}/{x}/{y}.pbf`,
minZoom: 0,
maxZoom: 23,
getLineColor: [1, 1, 1],
getFillColor: [0, 153, 76],
pickable: true,
autoHighlight: true,
onClick: info => info.object && console.log('onClick', info.object)
})
]
});
deckOverlay.setMap(map);
データ ファイルを含むフォルダーから、Docker から TileServer-GL を実行しています。
docker run --rm -it -v ${pwd}:/data -p 8080:80 maptiler/tileserver-gl --verbose --mbtiles SA1_2016-AU-tippecanoe.mbtiles
Docker から、tippecanoe を使用して .geojson ファイルを .mbtiles ファイルに変換しています。ただし、大きなファイルの場合、変換に時間がかかるようです。約 890 MB の .mbtiles ファイルを取得しています。57,000 個の機能を含む 45 MB の .geojson ファイルから 60 分。
docker run -it --rm -v ${pwd}:/data tippecanoe:latest tippecanoe --output=/data/SA1_2016-AU-tippecanoe.mbtiles /data/SA1_2016-AU.geojson
geobuf (json2geobuf) を使用して、.geojson ファイルを直接 .pbf ファイルに高速に変換することができました。約 32 MB の .pbf ファイルを取得しています。57,000 個の特徴を含む 45 MB の .geojson ファイルから 37 秒。
json2geobuf SA1_2016-AU.geojson > SA1_2016-AU-geobuf.pbf
ただし、TileServer-GL からも OpenMapTiles-Server からも .pbf ファイルを直接提供できないようです。
私は試した
docker run --rm -it -v ${pwd}:/data -p 8080:80 maptiler/tileserver-gl --verbose --mbtiles SA1_2016-AU-geobuf.pbf
しかし、TileServer-GL が起動しません。
ERROR: Metadata missing in the MBTiles.
Make sure SA1_2016-AU-geobuf.pbf is valid MBTiles
config.json ファイルをローカルに作成した後、再実行も試みました
docker run --rm -it -v ${pwd}:/data -p 8080:80 maptiler/tileserver-gl --verbose --mbtiles SA1_2016-AU-geobuf.pbf
docker run --rm -it -v ${pwd}:/data -p 8080:80 maptiler/tileserver-gl --verbose SA1_2016-AU-geobuf.pbf
config.json
{
"options": {
"paths": {
"root": "/usr/src/app/node_modules/tileserver-gl-styles",
"fonts": "fonts",
"styles": "styles",
"mbtiles": "/data"
}
},
"styles": {},
"data": {
"SA1_2016-AU-geobuf": {
"mbtiles": "SA1_2016-AU-geobuf.pbf"
}
}
}
しかし、TileServer-GL が起動しません。
SQLITE_NOTADB: file is not a database
OpenMapTiles サーバーでは、入力ファイルを指定する方法さえ見つかりません (参照):
docker run --rm -it -v ${pwd}:/data -p 8080:80 klokantech/openmaptiles-server
私の質問
- TileServer-GL または OpenMapTiles サーバーで .mbtiles ファイルの代わりに .pbf ファイルを直接提供するにはどうすればよいですか?
- TileServer-GL を使用して、特定の .mbtiles ファイルで明示的に開始せずに、フォルダーからすべてのファイル (.mbtiles) を提供するにはどうすればよいです
docker ... maptiler/tileserver-gl --mbtiles some-file.mbtiles
か?