1

我有一个很大的 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 tile:

    ./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 文件?

谢谢!

4

1 回答 1

2

正如@Caramiriel 所暗示的,未实现的类型:3 通常意味着您的图块已压缩,而 Mapbox GL JS 期待未压缩的图块。只需添加一个 Content-Encoding: gzip 标头并让浏览器即时解压缩。

于 2018-12-16T22:58:29.403 回答