我正在创建MERN应用程序,其中一个主要功能是以interactive choropleth map的形式呈现数据。为了实现它,我需要访问具有管理边界的GeoJSON文件。这些文件包含一组GeoJSON fetures,这些属性将使用数据库中的数据填充。每个GeoJSON文件超过1MB,加载时间可能会对UX产生很大影响。
我尝试在后端读取这些GeoJSON文件(node.js
+ express
),然后用数据库中的数据填充它们并将它们发送回用户访问某个端点。这种方法完全正常,但完成这样的请求需要大约5秒钟,这太长了。
另一方面,在前端(ReactJs
)存储这样的数据会极大地影响加载时间,这也是不需要的。
在这种情况下,存储和访问此类GeoJSON数据的最佳方法是什么?
我建议你尝试减少定义每个形状的点数。最简单的方法是合并相距小于X米的点。有更多先进的算法来简化形状,例如this。
如果您仍需要所有积分,例如:在前端进行计算,首先加载简化形状,然后在后台加载大文件。
定义形状的点的块似乎是缓存的良好候选者。调查一下,以减少数据库访问/处理时间。
我最终做的是为node.js
后端的每个文件定义了特定的端点。
另外,我使用Douglas-Peucker算法缩小了每个文件的大小(根据需要),正如@EriksKlotins所提到的那样