mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 10:51:07 +00:00
Merge pull request #193 from rouault/python_convert_gzip_tile_compression
Python: mbtiles_to_pmtiles(): set tile_compression = gzip when converting from MVT MBTiles
This commit is contained in:
@@ -40,8 +40,8 @@ def mbtiles_to_header_json(mbtiles_metadata):
|
|||||||
else:
|
else:
|
||||||
header["tile_type"] = TileType.UNKNOWN
|
header["tile_type"] = TileType.UNKNOWN
|
||||||
|
|
||||||
if mbtiles_metadata.get("compression") == "gzip":
|
if tile_format == "pbf" or mbtiles_metadata.get("compression") == "gzip":
|
||||||
header["tile_compression"] = Compression.GZIP # TODO: does this ever matter?
|
header["tile_compression"] = Compression.GZIP
|
||||||
else:
|
else:
|
||||||
header["tile_compression"] = Compression.UNKNOWN
|
header["tile_compression"] = Compression.UNKNOWN
|
||||||
|
|
||||||
@@ -65,6 +65,11 @@ def mbtiles_to_pmtiles(input, output, maxzoom):
|
|||||||
|
|
||||||
tileid_set.sort()
|
tileid_set.sort()
|
||||||
|
|
||||||
|
mbtiles_metadata = {}
|
||||||
|
for row in cursor.execute("SELECT name,value FROM metadata"):
|
||||||
|
mbtiles_metadata[row[0]] = row[1]
|
||||||
|
is_pbf = mbtiles_metadata["format"] == "pbf"
|
||||||
|
|
||||||
# query the db in ascending tile order
|
# query the db in ascending tile order
|
||||||
for tileid in tileid_set:
|
for tileid in tileid_set:
|
||||||
z, x, y = tileid_to_zxy(tileid)
|
z, x, y = tileid_to_zxy(tileid)
|
||||||
@@ -75,14 +80,10 @@ def mbtiles_to_pmtiles(input, output, maxzoom):
|
|||||||
)
|
)
|
||||||
data = res.fetchone()[0]
|
data = res.fetchone()[0]
|
||||||
# force gzip compression only for vector
|
# force gzip compression only for vector
|
||||||
if data[0:2] != b"\x1f\x8b":
|
if is_pbf and data[0:2] != b"\x1f\x8b":
|
||||||
data = gzip.compress(data)
|
data = gzip.compress(data)
|
||||||
writer.write_tile(tileid, data)
|
writer.write_tile(tileid, data)
|
||||||
|
|
||||||
mbtiles_metadata = {}
|
|
||||||
for row in cursor.execute("SELECT name,value FROM metadata"):
|
|
||||||
mbtiles_metadata[row[0]] = row[1]
|
|
||||||
|
|
||||||
pmtiles_header, pmtiles_metadata = mbtiles_to_header_json(mbtiles_metadata)
|
pmtiles_header, pmtiles_metadata = mbtiles_to_header_json(mbtiles_metadata)
|
||||||
if maxzoom:
|
if maxzoom:
|
||||||
pmtiles_header["max_zoom"] = int(maxzoom)
|
pmtiles_header["max_zoom"] = int(maxzoom)
|
||||||
|
|||||||
Reference in New Issue
Block a user