mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 02:41:09 +00:00
python pmtiles-to-mbtiles: lift vector_layers and tilestats into json metadata key [#120]
This commit is contained in:
@@ -128,11 +128,24 @@ def pmtiles_to_mbtiles(input, output):
|
||||
if header["tile_type"] == TileType.MVT:
|
||||
metadata["format"] = "pbf"
|
||||
|
||||
json_metadata = {}
|
||||
for k, v in metadata.items():
|
||||
if not isinstance(v, str):
|
||||
if k == "vector_layers":
|
||||
json_metadata["vector_layers"] = v
|
||||
continue
|
||||
elif k == "tilestats":
|
||||
json_metadata["tilestats"] = v
|
||||
continue
|
||||
elif not isinstance(v, str):
|
||||
v = json.dumps(v, ensure_ascii=False)
|
||||
cursor.execute("INSERT INTO metadata VALUES(?,?)", (k, v))
|
||||
|
||||
if len(json_metadata) > 0:
|
||||
cursor.execute(
|
||||
"INSERT INTO metadata VALUES(?,?)",
|
||||
("json", json.dumps(json_metadata, ensure_ascii=False)),
|
||||
)
|
||||
|
||||
for zxy, tile_data in all_tiles(source):
|
||||
flipped_y = (1 << zxy[0]) - 1 - zxy[2]
|
||||
cursor.execute(
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import unittest
|
||||
import sqlite3
|
||||
from io import BytesIO
|
||||
import os
|
||||
import json
|
||||
from pmtiles.writer import Writer
|
||||
from pmtiles.reader import Reader, MemorySource
|
||||
from pmtiles.convert import (
|
||||
@@ -51,10 +53,19 @@ class TestConvert(unittest.TestCase):
|
||||
"center_lon_e7": 0,
|
||||
"center_lat_e7": 0,
|
||||
},
|
||||
{"": "value"},
|
||||
{"vector_layers": ['vector','layers'],
|
||||
"tilestats":{'tile':'stats'}},
|
||||
)
|
||||
|
||||
pmtiles_to_mbtiles("test_tmp.pmtiles", "test_tmp.mbtiles")
|
||||
conn = sqlite3.connect('test_tmp.mbtiles')
|
||||
cursor = conn.cursor()
|
||||
res = cursor.execute("SELECT value from metadata where name = 'json'")
|
||||
data = res.fetchone()[0]
|
||||
json_metadata = json.loads(data)
|
||||
self.assertEqual(json_metadata['vector_layers'], ['vector', 'layers'])
|
||||
self.assertEqual(json_metadata['tilestats'], {'tile':'stats'})
|
||||
|
||||
mbtiles_to_pmtiles("test_tmp.mbtiles", "test_tmp_2.pmtiles", 3)
|
||||
|
||||
def test_mbtiles_header(self):
|
||||
|
||||
Reference in New Issue
Block a user