Mapbox渲染大型数据集

时间:2018-03-08 00:28:50

标签: reactjs mapbox mapbox-gl-js mapbox-gl react-map-gl

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

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

以下是步骤:

  1. 用户打开网站
  2. 网站从服务器端点获取数据
  3. 网站收到提取的数据(geojson - 其中9个)
  4. React为每个geojson集创建一个图层,并将这些信息作为状态传递给Mapbox组件
  5. Mapbox获取这些数据并呈现它,我相信这是大部分时间都在这里。
  6. 以下是数据格式: https://eflow.nyc3.digitaloceanspaces.com/class_geo_data/classGeo.json

    我的问题:

    1. 这需要花费很长时间来呈现数据的原因是什么?是因为线段太多了吗?我已经看到在更短的时间内呈现了超过100mb的数据。
    2. 在Mapbox中渲染此数据集的最佳做法是什么?
    3. 我正在使用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",     "不可变":" 3.8.2",     " material-ui":" 0.19.4",     "对象分配":" 4.1.0",     "反应":" 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 个答案:

答案 0 :(得分:1)

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

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

    这是一种完全不同于我原始方法的方法,即从我自己的API获取数据然后让Mapbox呈现它。但它将负载速度从10秒以下降低到1-2秒