🗾
Pythonライブラリを使って、Mapbox の Tilesetsを更新する方法
Pythonを用いてMapboxのTilesetsを更新する方法を紹介いたします。
※ChatGPTと対話しながらたどり着いた内容ですので、もし間違っている点などございましたらコメントいただけると助かります。
準備1:MapboxのPythonライブラリをインストール
pip3 install mapbox
準備2:Mapbox Studio でTileset を作成
処理:CSVデータをアップロードしてTilesetを更新
import mapbox
from mapbox import Uploader
#アクセストークン
mapbox_token = 'aaa'
service = Uploader(access_token=mapbox_token)
#ターゲットとなる mapboxのtilesetを指定
uploads_dest_id = 'bbb'
tileset_name = 'ccc'
with open('/Users/yourname/file.csv', 'rb') as src:
print(type(src))
upload_resp = service.upload(src, tileset=tileset_name, name=uploads_dest_id)
if upload_resp.status_code != 201:
print("Upload failed:", upload_resp.json())
else:
print("Upload successful")
- uploads_dest_id は、Tilesets の "アカウント名.xxxxx" の "xxxxx" の部分
- tileset_name は、任意のものを設定可能
実践:シェアサイクルステーションマップ
どんな場面でこのプログラムを使っているかというと、
地図上に可視化したシェアサイクルのステーションのデータを日次で更新しています。
調査:作業メモ
調べてみたが、結局よくわからないこともあったので後学のためにメモを残しておきます。
ご存じの方がいらっしゃいましたら、ぜひコメントいただけると幸いです。
-
max_zoomlevel, min_zoomlevelなどを指定してアップロードするオプションは見つけられなかった。
-
作成されるtileのprecision(精度)やTileの面積がどのように決められるのかは調べてみたがわからず、アップロード時に指定する方法もなさそうだった。
-
実際、2つの類似したファイルからtileをupload をしたが、precisionとTileの面積が大きく異なるTileが作成された。特に実務上問題があるわけではないのだが、理由がわからないため少し気持ちが悪いなといったところ。
参考:公式マニュアル
Discussion