如何将较大的geojson文件加载到mapbox中?

时间:2018-12-16 10:06:05

标签: mapbox mapbox-gl-js mbtiles vector-tiles tippecanoe

我有一个很大的geoJson文件(将近700MB),我需要使用mapbox和openmaptiles服务器将其加载到我的地图中。 我需要一个外部文件,所以不能使用Mapbox Studio上载和转换数据。

我不能使用geojson2mvt,因为文件很大并且超过了内存堆。因此,我使用Tippecanoe将其转换为.Mbtiles。但是,我不能在mapbox中使用这种格式。 我按照以下步骤将Mbtiles转换为.mvt:

  1. 安装tippecanoe(https://github.com/mapbox/tippecanoe)和 生成mbtiles:

    tippecanoe -o mbt_file.mbtiles -z18 input_file.geojson -pC

  2. 安装mb-util(https://github.com/mapbox/mbutil)并进行转换 mbtiles到mvt磁贴:

    ./mbutil/mb-util mbt_file.mbtiles mvt_dir --image_format=pbf

  3. 所有文件现在都是正确格式,但是您必须更改它们的格式 扩展名:

    find mvt_dir -iname "*.pbf" -exec bash -c 'mv "$0" "${0%\.pbf}.mvt"' {} \;

文件已成功转换为.mvt,但是当我尝试将其加载到地图中时,显示以下错误:

blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:11754 Uncaught Error: Unimplemented type: 3
    at No.skip (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:11754)
    at No.readFields (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:11574)
    at new Za (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:9948)
    at $a (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:9964)
    at No.readFields (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:11573)
    at new VectorTile (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:9978)
    at blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:14432
    at XMLHttpRequest.T.r.onload (blob:null/e1d9d487-dfa4-48b1-aa0e-b66527f28ac8:416)

有人可以帮我解决这个问题吗?还是有什么方法可以显示我的大geojson文件?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如@Caramiriel所提到的,未实现类型:3通常表示您的图块已压缩,而Mapbox GL JS期望未压缩的图块。只需添加Content-Encoding:gzip标头,然后让浏览器即时进行解压缩即可。