WebGIS入门实战(11):如何进行完整的WebGIS系统开发(全栈篇) (持续更新中)

您所在的位置:网站首页 gis软件app WebGIS入门实战(11):如何进行完整的WebGIS系统开发(全栈篇) (持续更新中)

WebGIS入门实战(11):如何进行完整的WebGIS系统开发(全栈篇) (持续更新中)

2024-07-16 12:58| 来源: 网络整理| 查看: 265

全栈篇主要介绍一些工作或开发流程技巧,通过这些技巧来找编程思路或者搞清楚工作内容,让自己知道如何去做东西,该怎么着手去开发一个网站(系统)。经常有人说,自己想开发一个 WebGIS 系统,但不知道怎么做的情况,在这篇章节,你就可以找到你想要的答案,希望能对你有帮助。

怎样才算一个完整的系统

一个系统,要多复杂就可以有多复杂,要多少功能就可以有多少功能,主要在于产品设计和技术实现上。完整的系统应该分为两个部分:前端+后端。前端可能是PC端软件、Web浏览器端、手机端H5、App、小程序、快应用等,是一个有界面可人机交互的终端。后端则是接口服务,跑在服务器上的,提供数据接口,计算分析等。

但一个最简单的完整系统可以分为:

·后端:简单增删查改表数据

·前端:有页面(界面),前端接口调用增删查改接口展示数据和交互

简单 WebGIS 系统技术实现方案

为什么编程语言那么多,框架那么多,技术栈选择那么多,都是因为某些领域或是业务场景的解决方案不是最好的,才会有人去研究和探讨更好的解决方案。有些技术栈是适合做企业级的复杂系统,有些技术栈可以用来快速开发简单的系统。这里列举一下可以用来实现WebGIS系统的技术栈:

(1)后端

Java

Java 无可争议,可做简单的网站,更能做复杂的企业级系统。数据库的话选择有三种 MySQL/Oracle/PostgreSQL,MySQL 开源免费好用,是很多公司的选择。Oracle 的话和ArcGIS Server搭配比较好,官方也有很大解决方案。PostgreSQL的话看个人喜好了,也是免费的。个人认为如果不选择ArcGIS Server的话,建议选择MySQL,对新手来说,也比较易学。有很多开源免费的简单快速开发的框架,比如JFinal,很小很轻量,可以快速用来搭建简单的系统。

.NET

这个不多介绍,熟悉的话可以选择,不熟悉的话建议选择Java路线是趋势

Node.js

使用JavaScript来开发后端,如果选择了Node.js,那就是JavaScript全栈搞定了,对那种学不好Java的同学来说(学Java的难度和时间等代价非常高),推荐走Node.js路线。Node.js现在也有成熟的框架选择,比如eggjs、nestjs,开发框架的话有express、koa。 数据库方面,node.js 因为是JavaScript开发,所以天生和 MongoDB 这种

NoSQL数据库搭配较好,对应也有 MongoGIS 来处理地理数据。不过解决空间矢量数据的方案不如 MySQL 和 Oracle 多。

曾经用 Node.js + MongoDB + LayUI 一天开发完成并上线过一个网站,网站功能有:登录注册、注册用户审核、前台商品列表展示、商品详情页面、后台商品增删查改(商品有富文本编辑框)、后台商品列表查询、前台用户留言反馈、后台用户留言反馈列表管理。说这个目的为了说明,简单的网站,Node.js快速开发的效率很高。

(2)地图服务器

除了超图和中地数码的产品外,用的最多的是 ArcGIS Server 或者 GeoServer,区别就是 ArcGIS Server 商业收费且成套比较贵(但很强大好用),GeoServer开源免费,基本

满足一般的要求。选择ArcGIS Server 的话一般都配套 ArcGIS API for JavaScript,选择GeoServer更多的搭配OpenLayers 和 Leaflet。

(3)前端

前端就是Web网页端的技术栈了,地图JS库的选择很多,如ArcGIS API for JavaScript、OpenLayers 、 Leaflet、Mapbox、百度地图API、高德地图API、腾讯地图API等。专业的

WebGIS 系统开发更多的选择是前三者(这里不包括超图和中地的产品)。在第三章中,也介绍了常用的几种地图JS库的特点区别,这里不再列举了。

网页端实现的话编程语言必然是 JavaScript、HTML/CSS 的天下,前端框架选择的话有 Angular、React、Vue.js三种,如果未来兼容低版本浏览器,建议原生js和

jquery来开发前端。有了各种限制要求,选择就不多且比较明确了。如果需要开发三维球展示的话,不使用其他公司的现场产品,可以了解尝试一下开源免费的

CesiumJS,基于WebGL实现的三维地球,也有丰富的API。缺点就是不过低版本浏览器不兼容。

(4)综上总结

·后端(mysql/Oracle/PostgreSQL + java 或 mongodb + nodejs 或 mysql + php等)

·前端(原生js、jquery或者三大框架/库:React、Angular、Vue.js,地图JS库:OpenLayers、Leaflet、ArcGIS for JavaScript等)

·地图服务(在线地图:百度、高德、天地图 或 切片地图服务发布:ArcGIS或GeoServer等)

初学者选择的话,优先看自己熟悉后端编程语言的类型,如果是Java,那就建议选择:Java + Mysql + 在线地图/或选择自己发布地图服务。如果不懂后端,只懂前端,可以学习一下Node.js,然后选择:Node.js + Mongodb + 在线地图 的技术方案。这样就可以开发一个简单的完整的 WebGIS 系统了。地图JS库见第三节介绍,选择自己喜欢的就可以。

如果你不懂后端,也不想学后端,只能模拟后端接口请求或者是写死数据,类似前面章节介绍开发的台风路径和地图相册Demo一样。也可以用第4节中介绍的json-server来模拟假后端,但是没有真正系统的效果。

说说我个人的可选方案:我算是个全栈开发工程师了,擅长前端开发、可独立开发后端、移动端APP(技术栈React Native、Ionic)、微信小程序、微信公众号开发等。

可以选择的后端编程语言有Java、Node.js,Java我不是很熟练,不过对于做简单网站系统,应用难度不高的东西是够用的。数据库选择有Oracle、MySQL、MongoDB,都用得相对熟悉。前端的话技术栈通吃,随意选择。所以我一般这么考虑:搞清楚系统级别多大,需要满足多大的用户要求,功能特点是什么,WebGIS系统的话有没有矢量数据的读写存储要求,没什么限制优先选择 Node.js + MongoDB ,有限制就 Java + MySQL 。

开发一个完整系统需要准备什么

正常软件开发流程保护但不局限于:需求分析、原型设计、UI设计、需求评审、测试用例编写、开发阶段(前端后端并行)、接口测试/功能测试、回归测试、交付上线。

大公司和小公司的流程差别可能比较大,一个严格的流程是为了把控质量和进度。这里只是简单提一下,但不细说这些流程,目的只是让新人了解这些而已。

如果你想一个人开发一个完整的系统,至少有几个步骤需要去做的。

(1)、弄清楚需求

就是需求分析,搞清楚要做什么,这个系统(产品)有什么功能,这些功能为了解决什么问题。如果是别人找你做网站,一般要求对方给个需求文档,需要做什么东西都有说明,或者和对方口头沟通清楚每个需求,自己列出需求清单出来。

(2)、功能设计

这里可以是原型设计和UI设计,功能点细节明确。作为个人开发来说,如果你不是一个真正的全栈开发工程师,可能你搞不来这些东西。可以根据个人的实际能力来做这个步骤,如果你懂得原型设计软件,可以自己画原型,不然就用笔简单画轮廓图也可以;懂得UI设计就自己设计,不然就网上找别人的作为参考,只要功能明确要做成什么样,UI图的样子都是找到类似的去参考的。如果都不行,就找一些网站模板去参考,模仿着修改。因为这个步骤,最大的好处是能帮助你思考怎么设计和开发,整个网站的功能清单就很熟悉,改怎么做都决定好了,后期代码编写就不需要花时间思考那么多。

网站模板网上也有很多可以参考,直接搜即可,UI图资源有几个网站可以推荐参考:

·https://www.easyicon.net/

·https://www.iconfont.cn/

·https://dribbble.com/

·https://www.vcg.com/

(3)、技术选型

需求和功能、设计都清楚了,那就到技术选型了,什么样的技术,实现这些功能点最方便就选什么样的技术,前后端各选择什么技术。当然,这可能对开发人员的经验和能力有要求,如果开发人员会的技术种类不多,那就只能选择自己懂的技术去实现了。时间允许的话,知道有更好的实现技术方案,就选择新方案,边学习边开发。技术选型自己拿不定主意可以找人问,或者网上参考借鉴别人的经验分享。对于 WebGIS 系统的技术方案,前面已经列举了几种前后端和数据库的选择搭配,第三章节也有介绍各种地图JS库的特点,这里就不详细说了,根据自己的情况去做技术选型。

(4)、编码和测试

前面三个步骤都确定了,自然的就可以去编码实现功能了,边开发边测试,做前端功能时,更重要的还有一点是用户体验。

(5)、部署上线

编码完成后,测试没问题了,就可以部署上线了。一般都是部署到云服务器。不同的编程语言和不同的服务器系统,都有不同的部署方式。

总之,如果一个人找你做系统,你解决不了前三个步骤的问题,那就只能答复做不了。当然,解决问题的时候可以找合作伙伴,就是团队,每个人负责不同的方向,做自己擅长的,最终的目的是交付一个功能完整可用的系统就行了。对于一个合格的全栈开发工程师来说,以上都不是问题吧。

如何评估系统开发周期

不管是在公司,或是答应给别人做网站,肯定是要做工作量评估的,也只有做好工作量评估才能给对方一个相对准确的交付日期。不然随便说,就会存在完不成的风险。

一般来说,经验越丰富的开发人员就会越能把握这个节奏。但是不管经验多丰富的人,有时候也是无法评估出精确的工作量,特别是团队协作的情况下,多人协作的效率情况,开发人员能力不一致,每个模块或领域边缘联调缺失等情况,都是存在工作量评估不精确的风险。保险起见,一般都会预留一下bug修复的时间。软件工作量评估方法是个大学问,更细节的东西可以参考这篇文章

工作分解结构 WBS

WMS(工作分解结构)是把项目按阶段可交付成果将项目工作分解成较小的,更易于管理的组成部分的过程。工作上,不管我们接受的是一个新系统开发,还是一个新需求开发而已,都建议把需求拆分为小需求,把系统功能拆分为小功能,并按阶段可交付的成果来评估工作量。一般建议是一个功能点,工作量不要超过2天,如果工作量超 过了两天,就再将该功能细分一下,使得工作量评估更准确。比如一个系统功能为仓库管理,仓库管理 是个一级菜单,菜单下有两个二级菜单分别为 入库单 和 出库单,然后入库单 和 出库单 下还有细分的小功能,都一一分解出来,然后再单独评估每个小功能点开发完成需要多少工作量,开发工作量也是根据开发人员能力和检验的不同而不同的,根据自己的实际情况进行评估即可。

功能WBS拆分

本章小结

本章主要介绍进行一个完整的系统开发需要的步骤和注意点,新手或者对一个人开发完整的系统没有能力的话可以参考文章中介绍的内容,其实,项目经理对整个流程会更加熟悉,尽管项目经理不是一个全栈开发工程师,他也要能把握住每个环节的问题,这样才能做好管理,对于开发人员来说,清楚每个步骤每个环节,也是学习成长的过程,如果想往全栈开发方向发展,这些也都是必须懂的了。文章中对全栈开发工程师介绍的不多,全栈开发不单单只文章中的内容,会涉及更多的领域或者技能,所以也不能认为自己能做一个完整的系统了,就是一个全栈开发了,只是往全栈更接近而已,如果想对全栈发展学习了解更多,可以参考主页置顶文章。

全栈篇主要介绍一些工作或开发流程技巧,通过这些技巧来找编程思路或者搞清楚工作内容,让自己知道如何去做东西,该怎么着手去开发一个网站(系统)。经常有人和我说,自己想开发一个 WebGIS 系统,但不知道怎么做的情况,在这篇章节,你就可以找到你想要的答案,希望能对你有帮助。

深入学习:gis616(添加备注Webgis学习)

(持续更新中.....)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3