New "mbtiles://{name}" reference syntax (#27)

This commit is contained in:
Petr Sloup 2016-08-21 10:08:17 +02:00
parent ee1cb21dfd
commit e9cad399c9
5 changed files with 25 additions and 12 deletions

View file

@ -34,7 +34,7 @@
"request": "2.74.0",
"sharp": "0.15.1",
"sphericalmercator": "1.0.5",
"tileserver-gl-styles": "0.1.0"
"tileserver-gl-styles": "0.2.0"
},
"devDependencies": {
"should": "^10.0.0",

View file

@ -90,7 +90,7 @@ var startWithMBTiles = function(mbtilesFile) {
},
"styles": {},
"data": {
"data": {
"osm2vectortiles": {
"mbtiles": path.basename(mbtilesFile)
}
}

View file

@ -169,15 +169,21 @@ module.exports = function(options, repo, params, id, dataResolver) {
var source = styleJSON.sources[name];
var url = source.url;
if (url.lastIndexOf('mbtiles', 0) === 0) {
if (url.lastIndexOf('mbtiles:', 0) === 0) {
// found mbtiles source, replace with info from local file
delete source.url;
var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0;
var mbtilesFile = url.substring(
(fromData ? 'mbtiles_data://' : 'mbtiles://').length);
var mbtilesFile = url.substring('mbtiles://'.length);
var fromData = mbtilesFile[0] == '{' &&
mbtilesFile[mbtilesFile.length - 1] == '}';
if (fromData) {
mbtilesFile = dataResolver(mbtilesFile);
mbtilesFile = dataResolver(
mbtilesFile.substr(1, mbtilesFile.length - 2));
if (!mbtilesFile) {
console.log('ERROR: data "' + mbtilesFile + '" not found!');
process.exit(1);
}
}
queue.push(function(callback) {

View file

@ -16,11 +16,15 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
Object.keys(styleJSON.sources).forEach(function(name) {
var source = styleJSON.sources[name];
var url = source.url;
if (url.lastIndexOf('mbtiles', 0) === 0) {
var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0;
var mbtiles = url.substring(
(fromData ? 'mbtiles_data://' : 'mbtiles://').length);
var identifier = reportTiles(mbtiles, fromData);
if (url.lastIndexOf('mbtiles:', 0) === 0) {
var mbtilesFile = url.substring('mbtiles://'.length);
var fromData = mbtilesFile[0] == '{' &&
mbtilesFile[mbtilesFile.length - 1] == '}';
if (fromData) {
mbtilesFile = mbtilesFile.substr(1, mbtilesFile.length - 2);
}
var identifier = reportTiles(mbtilesFile, fromData);
source.url = 'local://data/' + identifier + '.json';
}
});

View file

@ -106,6 +106,9 @@ module.exports = function(opts, callback) {
});
if (dataItemId) { // mbtiles exist in the data config
return dataItemId;
} else if (fromData) {
console.log('ERROR: data "' + mbtiles + '" not found!');
process.exit(1);
} else {
var id = mbtiles.substr(0, mbtiles.lastIndexOf('.')) || mbtiles;
while (data[id]) id += '_';