摘要: 我们现在遇到的webGIS,基本都是简单的点线面的展示,传统webGIS复杂的分析方法、算法用到的不多,因此我觉得前端遇到的问题是,前端如何具备更高的性能,如何具有更好的交互性,如何将数据存储到tile里去,按需加载,避免网络传输,如何在前后端进行一些分析计算...
我们现在遇到的webGIS,基本都是简单的点线面的展示,传统webGIS复杂的分析方法、算法用到的不多,因此我觉得前端遇到的问题是,前端如何具备更高的性能,如何具有更好的交互性,如何将数据存储到tile里去,按需加载,避免网络传输,如何在前后端进行一些分析计算,还有如何保护数据,不至于被直接爬虫了,等等。
我们用的基本还是js + nodejs + mongo/postgis,公司也有不少离线计算、实时计算、流式计算云云的大后端输出的信息包含地理,但这些一般做好接口就行了,mongo/postgis 自己玩或者数据量不大的情况都可以考虑,后者非常推荐。
nodejs和数据库的对接方面
1、关系型数据库(主要postgres): 如果你对ORM比较青睐,少写几个sql,可以考虑用sequelize.js。
2、mongoDB,还是比较推荐moogoose,用起来都很舒服。
通过矢量数据渲染瓦片和提供地图服务
渲染可以考虑mapnik,瓦片服务器可以是geoserver或mapserver,都是非常经典的款型了,可以在github上搜索一下cartoDB,看看他们是如何通过开源框架做拼合的,如果要想简单一些,用Mapbox Studio,看看如何通过和less语法类似的cartoCSS去定义自己的底图。
前端基本的框架
leaflet不错,小、快、扩展性好,openlayer也有一些用户,leaflet可以加各种叠加层,反正各种绘制方法都可以有,可以放在他自己定义的层里面,他的js帮你去完成层的拖拽等功能。
前端海量渲染
非webgl莫属了,光画点,100w都是支持的。用webgl应该也是个趋势,比如mapbox-gl从原生的webgl开始写了个现在越来越器重的库。而且支持3d,这个在传统gis里应该是比较弱的,尤其是3d还要大量绘制。
前端的强交互
交互性好,还是svg比较在行,但性能不是很好,特别是手机,如果有要求,可以考虑基于canvas的交互的库,开源的比如 fabric.js 、 kinetic.js、konva.js, 还有百度的zRender等等。