Как загрузить большой файл geojson в mapbox?

У меня большой файл geoJson (почти 700 МБ), и мне нужно загрузить его в мою карту с помощью сервера 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 ответ

Как намекал @Caramiriel, тип Unimplemented: 3 обычно означает, что ваши плитки сжаты, а Mapbox GL JS ожидает несжатых плиток. Просто добавьте заголовок Content-Encoding: gzip и дайте браузеру распаковать на лету.

Другие вопросы по тегам