绪论

1/25/2021 WEBGIS

# WebGIS发展历史

# Web发展历史

1991年Tim Berners Lee公开介绍了他的World Wide Web(简称Web)项目,这是Web第一次被介绍给全世界,在这一年,越来越多的Web服务器联入网络,越来越多的Web网站出现,标志着Web时代的到来。

早期Web开发等同于内容开发,没有前后端开发的概念,页面由JSP、PHP等工程师在服务器端生成,浏览器负责展现。早期Web除了内容,它还支持通过超链接和表单的浏览器原生行为,实现一种以页面为最小粒度的交互模式,基于这种交互模式,出现了最早的Web应用。之后以页面级交互的需求越来越多,人们开始不能接受生成页面和处理页面的代码混写在一起,进而发展了MVC架构的服务器端框架,生成HTML的代码变成视图层。随着互联网的发展,对交互有了更多的需求,AJAX的出现极大地提高了Web的用户体验,在HTML页面上提供丰富的交互能力。随之而来的是jQuery的快速发展,jQuery对各种浏览器做好了兼容,简化了DOM操作,使开发效率大幅提升。

传统:早期Web内容开发,中期发展MVC架构,减少代码耦合,后期AJAX,JQuery出现,引出前端和后端。

移动互联网的爆发带来了Web技术的重大变革。客户端需求复杂化,大量应用流行,对用户体验的期望提高,客户端渲染成为刚需,客户端程序不得不具备完整的生命周期、分层架构和技术栈,这个阶段催生了Angular 1等一系列优秀的框架以及AMD、UMD与RequireJS等模块标准与加载工具,前端工程师也成为了专门的开发领域,拥有独立于后端的技术体系与架构模式。

现代:前端工程化初步诞生,前端工程师涌现。

近几年间,随着Web应用复杂度的提升以及用户对于页面交互友好与性能优化的需求,急需更加优秀灵活的开发框架来协助我们更好的完成前端开发。这个阶段涌现出了很多关注点相对集中、设计理念更为优秀的框架,譬如React、Vue.js、Angular 2等组件框架允许我们以声明式编程来替代以DOM操作为核心的命令式编程,加快了组件的开发速度,并且增强了组件的可复用性与可组合性。由于前端工程师要维护的代码变得极为庞大和复杂,代码维护、打包、发布等流程也变得极为繁琐,在构建工具上,涌现了以Grunt、Gulp为代表的任务管理和以Webpack为代表的项目打包工具,帮助开发者更好的搭建前端构建流程,自动化地进行预处理、异步加载等操作。

现代:前端工程化方式,包括优秀前端开发框架,优秀前端代码维护,打包和发布框架。

具体,可参考前端传送门

现代Web开发的特点:

  • 以客户端为主体:服务器端部分很薄,大量成熟业务逻辑、数据能力、运维能力和基础设置被API化、云服务化(由第三方服务商和团队内的专业开发者提供)
  • 不只有客户端:服务端渲染+API Gateway+部分面向应用的微服务
  • 不只有浏览器:超级app平台、各种基于Web Runtime/JS Runtime的Hybrid技术

# Web+GIS发展历史

WebGIS简单理解为现代Web技术在GIS中的应用。传统的GIS大多数都为独立的单机结构,空间数据采用集中式处理;而WebGIS采用结合Web技术,形成BS体系结构,各类型空间数据可以分别存储和发布在不同地点的Server上,每个GIS用户作为Client,通过浏览器与服务端交换信息,实现GIS互联网共享模式。

WebGIS应用特点:

  • 空间数据发布:能够以图形方式显示控件数据,使得空间数据可视化更为方便。

  • 空格查询检索:综合空间数据库能力,进行图像及属性的查询检索

  • 空间模型服务:在服务端提供各种空间模型的实现方法,客户端只需要通过浏览器输入模型参数后,获得计算结果,并可视化,形成各类型空间模型服务。

  • Web资源的组织

    充分利用Web上的具有空间信息的资源,例如共享单车位置数据,出租车的轨迹数据和人流量流动数据等,一方面可以结合地图对这些信息进行组织和管理,另一方面也可以提供相应空间服务,实现WebGIS的应用。

# 体系结构

现代WebGIS的体系结构与其他现代Web项目的体系结构没有太多本质上的区别,唯一不同的是WebGIS需要提供一些地图方面的功能服务,即:GIS服务资源。

img

WebGIS体系结构由三层组成,从上到下分别是客户端,中间层(服务端),数据层。

# 数据层

WebGIS的底层是数据层,提供空间数据和业务数据等基础数据的支持。其中常用数据库有:

  • 业务型数据库

    monogoDB,redis,mysql,Oracle和PostgerSQL

  • 空间数据库

    Oracle Spatial,Sql Server,PostGIS(基于PosterSQL),MyGIS(基于MySQL)

# 中间层

中间层一般包括提供基础GIS服务的GIS服务器和提供业务服务的业务逻辑服务器。

其中GIS服务器有专业GIS服务器和开源GIS服务器。其代表分别为ArcServer,SuperMap iServer和GeoServer,MapServer等。也开源是简单的大众化应用地图服务器,主要为应用层提供地图数据服务和功能服务资源。

业务逻辑服务器,主要负责日常业务需求,例如用户管理,资源管理,权限管理等。通常由Java或者.NET负责,与常规后端开发是一致的。

# 客户端

客户端主要是前端的内容,其包括基础的HTML5,CSS3和ES6等;进阶的React,AngularJS和Vue等前端框架;再结合各类WebGIS API,主要有开源地图库,以Leaflet,OpenLayers和MapBox GL为主,专业地图库,以ArcGIS API for JavaScript为主;

# 个人的理解和思考

通过对体系结构了解,可以看到WebGIS是一个全栈式网络地理信息系统开发。一方面需要掌握一定前端技术,另一方面需要掌握相关的后端技术和数据库技术,同时还要具备地理信息综合知识。这是一个相当庞大知识网络体系,建立于地理信息科学基础上,通过互联网技术得以表现。

综上来看,WebGIS的前置知识课程,就包括互联网技术和地理信息知识。

  • 互联网技术:前端Web开发技术,后端服务开发技术,计算机网络原理和应用和数据库原理和应用等。
  • 地理信息知识:地理信息导论,网络地理信息和空间数据库等

# 综合应用

一方面可以从相关论文中探索,也可以从当前所接触的项目了解。另一方面,可以从各类GIS开发大赛中学习,一般大赛包括Esri杯大赛,超图杯大赛,中地数码大赛等。

Last Updated: 8/6/2023, 3:51:38 PM