You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tiles/app/geojson2vt.py

39 lines
1.2 KiB

import uuid
import subprocess
from pathlib import Path
import json
def geojson2vt(uploaded_geojson) -> str:
"""Convert geojson file to vector tiles
Args:
uploaded_geojson: GeoJSON file uploaded by user
Returns:
str: vector tiles id
"""
# save the uploaded file
# get a path to the saved geojson
uploaded_geojson_path = "land.geojson" # replace value with the path to the saved geojson
vector_tiles_id = uploaded_geojson_path + uuid.uuid4().hex
tippecanoe_command = f"tippecanoe --maximum-zoom=g --output-to-directory={vector_tiles_id} --drop-densest-as-needed --no-tile-compression {uploaded_geojson_path}"
#subprocess.run(tippecanoe_command, shell=True) # https://stackoverflow.com/a/51950538/14742462
metadata_path = Path(vector_tiles_id, "metadata.json")
with open(metadata_path, "r") as metadata_file:
metadata = json.load(metadata_file)
with open("catalog.json", "r") as catalog_file:
catalog = json.load(catalog_file)
catalog.append(metadata)
with open("catalog.json", "w") as catalog_file:
json.dump(catalog, catalog_file, ensure_ascii=False)
return vector_tiles_id
if __name__ == "__main__":
geojson2vt("ert")