implement PMTiles to directory

This commit is contained in:
Brandon Liu
2021-03-03 10:30:51 +08:00
parent 27e2305fb4
commit f1878f4ed1

View File

@@ -1,12 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
#pmtiles to files #pmtiles to files
#pmtiles to mbtiles
#mbtiles to pmtiles
import os
import argparse import argparse
import json
import os
import sqlite3 import sqlite3
import shutil
from pmtiles.reader import read from pmtiles.reader import read
from pmtiles.writer import write from pmtiles.writer import write
@@ -20,8 +19,11 @@ args = parser.parse_args()
if os.path.exists(args.output) and not args.overwrite: if os.path.exists(args.output) and not args.overwrite:
print("Output exists, use --overwrite to overwrite the output.") print("Output exists, use --overwrite to overwrite the output.")
exit(1) exit(1)
if os.path.exists(args.output) and args.overwrite: if args.overwrite:
os.remove(args.output) if os.path.isfile(args.output):
os.remove(args.output)
elif os.path.isdir(args.output):
shutil.rmtree(args.output)
if args.input.endswith('.mbtiles') and args.output.endswith('.pmtiles'): if args.input.endswith('.mbtiles') and args.output.endswith('.pmtiles'):
conn = sqlite3.connect(args.input) conn = sqlite3.connect(args.input)
@@ -58,6 +60,20 @@ elif args.input.endswith('.pmtiles') and args.output.endswith('.mbtiles'):
conn.commit() conn.commit()
conn.close() conn.close()
elif args.input.endswith(".pmtiles"): elif args.input.endswith(".pmtiles"):
print("PMTiles to directory not yet implemented") os.makedirs(args.output)
with read(args.input) as reader:
metadata = reader.metadata
metadata['format']
with open(os.path.join(args.output,'metadata.json'),'w') as f:
f.write(json.dumps(metadata))
for tile, data in reader.tiles():
directory = os.path.join(args.output,str(tile[0]),str(tile[1]))
path = os.path.join(directory,str(tile[2]) + '.' + metadata['format'])
os.makedirs(directory,exist_ok=True)
with open(path,'wb') as f:
f.write(data)
else: else:
print("Conversion not implemented") print("Conversion not implemented")