Mapbox 渲染大型数据集

Mapbox render large dataset

我正在使用 mapbox 构建一个网站来渲染大约 24mb 的 geojson 数据。我将这些数据存储在后端服务器中,API 请求大约需要 2300 毫秒,而显示这些数据的前端地图将花费 10 多秒。

GeoJson 是河流数据,其中包含许多 MultiLineString。数据被清理。

步骤如下:

  1. 用户打开网站
  2. 站点在服务器端点获取数据
  3. 站点接收获取的数据(geojson - 其中 9 个)
  4. React 为每个 geojson 集创建一层,并将这些信息作为状态传递给 Mapbox 组件
  5. Mapbox 获取这些数据并进行渲染,我相信这是花费最多时间的地方。

数据格式如下: https://eflow.nyc3.digitaloceanspaces.com/class_geo_data/classGeo.json

我的问题:

  1. 为什么要花这么长时间来呈现数据?是因为线段太多了吗?我见过在更短的时间内呈现超过 100mb 的数据。
  2. 在 Mapbox 中渲染此数据集的最佳做法是什么?

我正在使用 react-map-gl,不确定实际使用的是哪个版本的 mapbox gl。

谢谢 狮子座

依赖关系:

"babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "copy-webpack-plugin": "4.3.1", "webpack-dotenv-plugin": "^2.0.2", "animate.css": "3.6.1", "axios": "0.18.0", "d3": "4.13.0", "flexboxgrid": "6.3.1", "get-json": "1.0.0", "immutable": "3.8.2", "material-ui": "0.19.4", "object-assign": "4.1.0", "react": "16.2.0", "react-dom": "16.2.0", "react-map-gl": "3.2.0", "react-redux": "5.0.5", "react-router-dom": "4.2.2", "react-router-redux": "5.0.0-alpha.6", "redux": "3.6.0", "redux-thunk": "2.1.0", "superagent": "3.8.1", "topojson": "3.0.2"

我不确定为什么这么快,但正确的方法是:

  1. 将我的数据集分成更小的块
  2. 将每个作为图层加载到 mapbox studio 中,并加载到您创建的地图样式中
  3. 下载整个 json 文件
  4. 使用 Mapbox 渲染地图

这与我原来的方法完全不同,我原来的方法是从我自己的 API 获取数据,然后让 Mapbox 渲染它。但是它将加载速度从 10+ 秒

降低到 1-2 秒