尽管我在WebGIS应用程序中使用了Leaflet,但OpenLayers比Leaflet具有更多优势。例如,如果您想在移动设备中使用应用程序,那么OpenLayers暂时是必需的。
有很多与OpenLayers相关的资源,但是我认为使用Leaflet开发应用程序比OpenLayers容易(阅读代码和理解结构更容易)。如果您有时间限制并且对Java语言有一点经验,那么使用Leaflet可能是一个更好的解决方案,可以更快地完成它。或者,如果您想开发一个非常简单的应用程序,则一开始就可以轻松地简化Leaflet。
但是,在用Leaflet开发应用程序之后,现在我希望我一开始就使用过OpenLayers。因为当您的应用程序变得复杂时(例如,从数据库调用复杂的层,开发强大的移动应用程序等),Leaflet开始限制您的能力。因此,我认为在学习阶段花一些时间来了解和学习OpenLayers结构最终将是值得的。
作为项目的细节考虑;
使用地图界面获取功能信息:
Leaflet和OpenLayers都可以完美地做到这一点。这里的重点是获取单击事件的坐标并将请求发送到服务器。这两个应用程序的请求链接将相同。
创建一个自定义工具,从用户那里获取纬度/经度,以了解他/她在地图上的点击位置,然后从栅格中获取气候数据(由服务器上的py脚本处理):
我在Leaflet中实现了这一目标(顺便说一句,我还打电话给了气候数据)。我不是从服务器上获取栅格数据,但是这里的重点是创建一个请求链接,这对于两个应用程序都很容易。但是,如果要在此阶段选择多边形,则Leaflet很难实现。
允许用户上传excel,并将其上传到py脚本,该脚本返回一个GeoJSON,该GeoJSON在地图上创建矢量要素:
Leaflet和OpenLayers的工作大致相同。我不能说哪个更好。
允许用户创建矢量多边形,这将从WFS图层获取与之相交的要素:
我对OpenLayers的编辑能力一无所知,但是Leaflet有一个名为Leaflet Draw的插件,在完成绘制后,该插件易于使用和操纵图形(在javascript方面)。如果您要在WFS服务器上操作空间数据,Leaflet也具有WFS-T支持。我不知道,OpenLayers可能比这更好。
从GeoServer上的PostGIS数据存储中获取图层,并在地图上显示图层:
毫无疑问,OpenLayers可以更好地完成此工作,因为它更易于连接PostGIS服务器。
顺便说一句,有一个名为OpenGeo Suite的应用程序套件,其中包括OpenLayers,GeoServer和PostGIS。这将解决基于Web的GIS应用程序开发人员遇到的所有问题。