Python code to replace tileset in mapbox with api

50 Views Asked by At

I want to replace two existing tilesets in mapbox with an geojson file using the mapbox API in Python. But I keep getting the error 'not authorized - no token'. What am i doing wrong? Is this the wright way of coding but is the token not valid? Or am I missing something in my code? I wrote this Python script:

import requests
import json

mapbox_token = 'xxxx'
username = 'sss'
wijk_tileset_id = 'sss.9l1h5qnt'
buurt_tileset_id = 'sss.7vee460g'
geojson_file_path_wijk = 'H:\MIZ\BI\Mapbox\CBS wijk en buurt kaarten\Geojson bestanden\CBS Wijken 2023     
uitgebreid.geojson'
geojson_file_path_buurt = 'H:\MIZ\BI\Mapbox\CBS wijk en buurt kaarten\Geojson bestanden\CBS Buurten 
2023 uitgebreid.geojson'

try:
    with open(geojson_file_path_wijk, 'r') as file:
        geojson_data_wijk = json.load(file)
except FileNotFoundError:
    print('Het opgegeven GeoJSON-bestand kon niet worden gevonden.')
    exit(1)
except json.JSONDecodeError:
    print('Er was een fout bij het decoderen van de JSON-gegevens in het bestand.')
    exit(1)

replace_url_wijk = f'https://api.mapbox.com/tilesets/v1/sources/{username}/{wijk_tileset_id}'

headers = {
    'Authorization': f'Bearer {mapbox_token}',
}

response_wijk = requests.put(replace_url_wijk, json=geojson_data_wijk)

if response_wijk.status_code == 200:
    print('GeoJSON-bestand succesvol vervangen in Mapbox WBI - WIJKEN Tileset.')
else:
    print('Fout bij het vervangen van GeoJSON-bestand in Mapbox WBI - WIJKEN Tileset.')
    print('Statuscode:', response_wijk.status_code)
    print('Response-tekst:', response_wijk.text)


try:
    with open(geojson_file_path_buurt, 'r') as file:
        geojson_data_buurt = json.load(file)
except FileNotFoundError:
    print('Het opgegeven GeoJSON-bestand kon niet worden gevonden.')
    exit(1)
except json.JSONDecodeError:
    print('Er was een fout bij het decoderen van de JSON-gegevens in het bestand.')
    exit(1)


replace_url_buurt = f'https://api.mapbox.com/tilesets/v1/sources/{username}/{buurt_tileset_id}'


headers = {
    'Authorization': f'Bearer {mapbox_token}',
}


response_buurt = requests.put(replace_url_buurt, headers=headers, json=geojson_data_buurt)


if response_buurt.status_code == 200:
    print('GeoJSON-bestand succesvol vervangen in Mapbox WBI- BUURTEN Tileset.')
else:
    print('Fout bij het vervangen van GeoJSON-bestand in Mapbox WBI - BUURTEN Tileset.')
    print('Statuscode:', response_buurt.status_code)
    print('Response-tekst:', response_buurt.text)
0

There are 0 best solutions below