WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以有必要讨论下基于Web的地图API分类及应用场景。
Web上的Map API主要分类如下几类:
- Charts:以D3.js,Echarts等为代表。
- LBS:以高德/谷歌/百度地图等为代表。
- WebGIS商业API:ESRI的ArcGIS API For JS,超图的IClient。
- WebGIS开源API:Leaflet,OpenLayers,Cesium,MapboxGL等。
建模工具Blender
https://zhuanlan.zhihu.com/p/628531907
Leaflet
https://leafletjs.com/
OpenLayers
https://openlayers.org/doc/quickstart.html
https://blog.csdn.net/qq_29602347/article/details/99623968
https://viglino.github.io/ol-ext/examples/map/map.layer.3D.html
Cesium
https://github.com/CesiumGS/cesium
https://sandcastle.cesium.com/?src=3D%20Tiles%20Photogrammetry.html
框架比较:主流webgis框架介绍与对比-腾讯云开发者社区-腾讯云
常用的前端地图框架(WebGIS框架)
1. Leaflet
Leaflet 是最著名的前端地图可视化库,它开源、体积小、结构清晰、简单易用。
2. Mapbox GL JS
Mapbox GL JS 是目前最新潮的前端地图库,它的矢量压缩、动态样式和三维性能令人印象深刻。它本身是开源的,但一般依赖于Mapbox公司提供的底图服务。
3. ArcGIS API for JS
ArcGIS API for JS 是较为学院派的前端地图库,它是ArcGIS开发套件中的一部分,和桌面端和服务器端ArcGIS软件有较好的协作。它不开源且收费不低,在学术场景下较为常用。
4. Openlayers
Openlayers 也是常用的前端地图库,它开源,相比于Leaflet更加复杂和完备。
5. Cesium
Cesium 是三维地理可视化的常用库,在大尺度的可视化(地形、建筑、地球)中十分常用。
6. 百度地图 JS API /百度地图 API GL
百度地图 JS API 是传统的二维地图,百度地图 API GL 是三维地图,它们依赖百度地图提供的后台服务。除了地图服务外还有检索、导航、实时交通等关联服务。开发者有免费的限额。
7. 高德地图 JS API
高德地图 JS API 与百度类似。
8. Google Maps JS API
谷歌地图 JS API 在境外有更好的数据。
9. AntV L7
AntV L7 是空间数据可视化库,它可以使用高德地图等协作构建地图可视化。
10. Mapbox.js
Mapbox.js 是 Leaflet 的一个扩展插件(与 Mapbox GL JS 不同)。
webgl开源三维引擎的选择
小场景的开源三维js引擎
1.babylonjs:http://www.babylonjs.com/(当前在用)
优点:有微软背景,有不少的demo,有较详细的api文档,有供测试的平台,有提供3dsmax转换模型的插件,
缺点:中文资料很少,没有系统的中文教程,如从入门到精通都可以给你讲一遍系统的教程,论坛也会被墙,相关的qq群较少,群里的人也不多,所以能真正指导我们的大牛也比较少。应该是国内用的 比较少。
2.threejs(当初选择引擎时关注过,选择了babylonjs后就没有去进步了解了)
优点:国内用的比较多,所以中文的资料也会比较多,有比较系统的中文教程如从入门到精通。用的人比较多,所以相关的qq群较多,群里的人也较多,接触到的大牛应该也会比较多。
缺点:没有提供一些基础建模软件的插件,比如3dsmax的模型导出插件,虽然说提供一些读3ds格式,fbx格式的场景。
大场景基于earth的开源三维js引擎
1.cesiumjs(http://cesiumjs.org/)
优点:有较多的demo,详细的api文档,有测试平台,比较丰富的展示特性和扩展。
2.webglearth(http://www.webglearth.com/)
demo较少,但一些基本的gis功能都有,简单实用,好像没什么更新过
3.openwebglobe(http://world.openwebglobe.org/)
效果不是很好,加载不流畅,展示的功能也比较少,后面就没有进步了解了
WebGis后端
arcgisServer、geoserver、mapserver ……
WebGis中间件
开发时,我们要选择适合自己的中间件。不同的中间件有其特性,如果是一般项目,tomcat等是很合适的,其使用方便,相关技术支持和资料也很好查找。但是如果是大型的集群项目,Weblogic和WebShpere可能是更好的选择,但是这两个中间件首先配置就是有难度的,同时不同的版本,可能对某些jar包的支持存在问题。如果项目必须使用国产的中间件,TongWeb和Apusics是不错的选择。
WebGis地图服务器
在WebGIS中,与其他一般的Web工程有明显区别的就体现在地图服务器上面。一般的地图服务器都由已有的软件商提供了解决方案,比较流行的有AGS、Geoserver、MapServer、SuperServer等。利用这些地图服务器我们能很好的实现地图的发布以及对一些空间查询和空间操作的支持。
WebGis业务服务器
业务服务器是Web项目里不可获取的一环。不管是利用哪些已有框架编写,比如Spring、Struts、Hibernate等,我们一般还是会将业务服务器的实现分为三个层次,即有名的MVC模式。而不同的框架里这三个层次的实现各有差别。
WebGis数据
WebGIS的数据大致可以分为三种,一种是地图、影像数据,一种是空间属性数据、一种是业务数据。地图、影像数据一般是一些png或者其他格式的数据组成。
在GIS中有个很重要的概念,即影像金字塔。这个概念主要是为了加速地图在前端的显示。而我们准备地图、影像数据时,也一般会首先对这些数据进行切图。
空间属性数据,是通过一些工具将已经整理好的数据进行入库。对于AGS,只有连接的是入库数据的mxd,才能发布成FeatureServer服务,以供数据的编辑。当然,空间数据入库后还可以支持业务逻辑的使用。
第三种数据,业务逻辑数据,是每个Web项目必须有的,它根据不同的业务需求将业务所需的数据进行采集和入库。