如何将17.7MB的GeoJSON文件上传至Mapbox Dataset?
解决Mapbox Datasets API上传大GeoJSON文件的问题
问题原因
直接用POST /datasets/v1/{username}上传17.7MB文件触发的request entity too large错误,是因为该端点的单次请求payload存在隐性大小限制(虽未在文档明确标注,但实际约为10MB),无法直接承载超过限制的文件。
解决方案
推荐两种可行的处理方式:
方式一:手动分块上传(无额外工具依赖)
创建空数据集
先发起POST请求创建空数据集容器,获取返回的datasetId:curl -X POST "https://api.mapbox.com/datasets/v1/${MAPBOX_USERNAME}?access_token=${MAPBOX_ACCESS_TOKEN}" \ --header "Content-Type:application/json" \ -d '{"name": "10m精度海岸线", "description": "Natural Earth海岸线数据"}'保存返回结果中的
id字段值(记为DATASET_ID)。拆分GeoJSON文件
将原文件拆分为多个大小不超过5MB的子文件(可使用geojson-split工具):# 先安装工具:npm install -g geojson-split geojson-split ne_10m_coastline.json -m 5000000执行后会生成
part-1.json、part-2.json等拆分文件。批量上传特征
循环将每个拆分文件的特征通过PATCH请求添加到数据集:for file in part-*.json; do curl -X PATCH "https://api.mapbox.com/datasets/v1/${MAPBOX_USERNAME}/${DATASET_ID}/features?access_token=${MAPBOX_ACCESS_TOKEN}" \ --header "Content-Type:application/json" \ -d @$file done
方式二:使用Mapbox CLI自动处理(更简便)
Mapbox官方CLI会自动处理大文件的分块上传,无需手动拆分:
- 安装并登录CLI
npm install -g @mapbox/mapbox-cli mapbox login # 输入你的Mapbox Access Token完成登录 - 直接上传创建数据集
工具会自动完成数据集创建、分块上传等操作,无需额外干预。mapbox datasets upload ne_10m_coastline.json --name "10m精度海岸线"
内容的提问来源于stack exchange,提问作者Matthew Herbst
相关产品推荐
相关产品推荐

