2013-07-19 23 views
3

我還沒有設法找到將兩個* .mbtiles文件連接在一起的方法(第一個包含從0-16縮放級別和第二個縮放級別17)。我正在與不同的SQLite管理員工作,但沒有mather如何導出和導入database1到數據庫1,我沒有成功 - 二進制領域總是如此嚴重損壞,它無法得到image.png回來。將兩個mbtiles文件連接在一起

有誰知道將兩個mbtiles文件連接在一起的簡單程序嗎?

回答

6

如果兩個文件具有相同的元數據,如果tiles表實際上是表,而不是視圖,你可以簡單地一個數據追加到另一個表:

/* open database1 as main database, then: */ 
ATTACH 'database2' AS db2; 
INSERT INTO tiles SELECT * FROM db2.tiles; 
+0

它的工作,thx :) – user2362608

+0

這是如何可以從Linux命令行完成?有任何想法嗎? –

+0

錯誤:無法修改圖塊,因爲它是視圖 – toutpt

1

在我來說,我有與@CL錯誤。解決方案:

Error: cannot modify tiles because it is a view 

所以,我的數據庫的模式是不同的:

> .schema 

CREATE TABLE grid_key (
    grid_id TEXT, 
    key_name TEXT 
); 
CREATE TABLE grid_utfgrid (
    grid_id TEXT, 
    grid_utfgrid BLOB 
); 
CREATE TABLE images (
    tile_data blob, 
    tile_id text 
); 
CREATE TABLE keymap (
    key_name TEXT, 
    key_json TEXT 
); 
CREATE TABLE map (
    zoom_level INTEGER, 
    tile_column INTEGER, 
    tile_row INTEGER, 
    tile_id TEXT, 
    grid_id TEXT 
); 
CREATE TABLE metadata (
    name text, 
    value text 
); 
CREATE VIEW tiles AS 
    SELECT 
     map.zoom_level AS zoom_level, 
     map.tile_column AS tile_column, 
     map.tile_row AS tile_row, 
     images.tile_data AS tile_data 
    FROM map 
    JOIN images ON images.tile_id = map.tile_id; 
CREATE VIEW grids AS 
    SELECT 
     map.zoom_level AS zoom_level, 
     map.tile_column AS tile_column, 
     map.tile_row AS tile_row, 
     grid_utfgrid.grid_utfgrid AS grid 
    FROM map 
    JOIN grid_utfgrid ON grid_utfgrid.grid_id = map.grid_id; 
CREATE VIEW grid_data AS 
    SELECT 
     map.zoom_level AS zoom_level, 
     map.tile_column AS tile_column, 
     map.tile_row AS tile_row, 
     keymap.key_name AS key_name, 
     keymap.key_json AS key_json 
    FROM map 
    JOIN grid_key ON map.grid_id = grid_key.grid_id 
    JOIN keymap ON grid_key.key_name = keymap.key_name; 
CREATE UNIQUE INDEX grid_key_lookup ON grid_key (grid_id, key_name); 
CREATE UNIQUE INDEX grid_utfgrid_lookup ON grid_utfgrid (grid_id); 
CREATE UNIQUE INDEX images_id ON images (tile_id); 
CREATE UNIQUE INDEX keymap_lookup ON keymap (key_name); 
CREATE UNIQUE INDEX map_index ON map (zoom_level, tile_column, tile_row); 
CREATE UNIQUE INDEX name ON metadata (name); 

這樣你就可以適應的解決方案是這樣的:

首先更新元數據,你想要的方式,例如:

sqlite> UPDATE metadata SET value = '7' WHERE name = 'minzoom'; 

然後插入磚:

sqlite> INSERT OR REPLACE INTO images SELECT * from db2.images; 
sqlite> INSERT OR REPLACE INTO map SELECT * from db2.map; 
相關問題