文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.前言

我相信大家对百度地图,谷歌地图等相关应用已经是非常熟悉了。通过这些应用,我们可以浏览地图、定位我们自己的位置、查找我们想知道的兴趣点、搜索交通路线等等。而其实,这些功能便是WebGIS的一些最基本的功能。

那么什么是WebGIS呢,说到这里,我还是首先给大家讲讲什么是GIS。

2.GIS简介

2.1 GIS的名词解释

GIS的全名是Geographic Information System,中文全名是地理信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。

2.2 什么是GIS学科

撇开这些晦涩的文字,我争取用更形象的方法来给大家介绍下GIS这个学科。

我们人类在很久之前就已经开始使用羊皮或者纸质的地图了,他的用途主要便是给人们的行军、航海等做向导,而这同样也是现代GIS学科里GIS最基本的功能之一。到19世纪时,现代GIS学科开始慢慢萌芽。这里有一个很有名的例子。1854年伦敦发生霍乱,10天就死了500人。居民大多怀疑瘟疫是由于地下的墓穴引起的,引起了极大的社会恐慌。当时有个有名的医生叫Snow博士,他不信这个原因,为了查出真正的霍乱源头,他首先绘出了伦敦地图,然后将所有霍乱病人的所在地标出来,然后他发现了一个有趣的现象,在伦敦的一个居民饮水井附近出现的霍乱病人最多,并且最开始出现的霍乱病人也是在那里发现的。最后Snow博士对那口井进行检查,确定了霍乱发生的源头。从这个例子中我们可以看出,地图的应用已经不再局限于导航了,而开始慢慢利用其得天独厚的时间空间优势与其他学科开始进行结合。

到了20世纪电脑的出现,人造卫星的升天等技术的突破,GIS这个学科也相应的开始走向成熟以及开始普及。20世纪60年代,加拿大科学家首先提出了GIS这个学科。到了20世纪末,一大批优秀的GIS软件已经出现,比如Esri公司的ArcGIS系列,MapInfo公司的MapInfo。国内的GIS从上世纪80年代才开始起步,不过到上世纪末时,也出现了自己的GIS公司,比较有名的有GeoStar、MapGIS等。

而此时的GIS已不再是局限纸上的地图了,它已经成为了一个计算机技术和多种学科相交叉的新型学科了。它涉及到测量学——地理信息的采集和地图的制作等,计算机科学——电子地图的制作和展现以及各种GIS功能的实现,物理学——对传感器的研究以及光谱和影像的研究,气象学——大气层等对卫星影像的影响等,生物学、医学、犯罪学等——研究地理等各时间空间因素对这些学科的影响。

GIS是什么呢,说的最通熟易懂的就是,GIS是利用测绘生成纸制地图或者航拍以及卫星等生成影像后,将这些数据存储在计算机中,以地图或图片的形式表现出来,然后根据实际生产生活以及科研中的各种需求,进而提供具体的经过处理后的数据。

3.WebGIS简介

3.1什么是WebGIS

顾名思义,WebGIS就是展现于网络上的GIS。在上世纪八十年开始,出现的大量GIS软件,基本上都是C/S架构的,也就是首先需要在本机上装有专业的GIS软件,然后用户根据需求使用这些GIS软件。当然这种桌面端的GIS软件有其天然的优势,比如开发相对简单,不需要Internet支持,以及可以做更多的复杂功能、响应相对迅速等优势。但是同时,其缺点更是不容忽视。首当其冲的便是不便于推广,而不便于推广的原因在于C/S系统其本身的天然的劣势:不便于更新,不便于跨平台,不便于用户在不安装指定客户端的情况下使用。

从本世纪开始,internet进入了爆发式增长阶段,网络的铺设以及网速的提升都有了大幅度增加,这为WebGIS的发展提供了坚实的大环境。于是,基于B/S的GIS系统越来越多的开始提供服务,并且在RIA(富客户端)技术、AJAX(动态网页)技术的涌现和成熟,WebGIS也基本能展现出与C/S一样的效果和功能。而WebGIS的大发展,更是用户的需求,google地图和百度地图等服务提供商的大规模扩张便是最好的证明。

什么是WebGIS,就是将GIS这门学科所能提供的功能,以B/S技术展现给用户,使用户只需要在浏览器上便能使用这些GIS功能的一个应用方向。

3.2对国内WebGIS行业的理解

目前使用WebGIS技术的公司可以大致分为两个方向:一个是互联网方向,一个是行业应用方向。

国内的互联网方向里基本可以说已经被百度地图,搜搜地图,高德地图,三个巨头垄断。所以对于想从事互联网方向的WebGIS开发人员,其实可以选择的大公司并不多。但是,如果你是一个技术足够好,且技术不局限于一般的关系数据库,对大数据和分布式系统感兴趣的WebGIS开发人员,强烈建议你去这些互联网公司,在那里你能接触到最新的IT技术以及感受到强大的头脑风暴。也便是,对新技术,对前沿方向有更多追求的人,去互联网公司是很好的选择。

但是我们不得不承认另外一个现实,这些互联网公司基本集中在北上广深,并且对GIS研发人员在技术上的需求是,计算机技术的比重要远大于对GIS学科本身的理论所占的比重。于是,更多的GIS学科出身的人,最后选择的是行业应用公司。而投身于这样的公司,就没有前途吗?答案是否定的。

Esri公司作为全球最成功的GIS软件公司,很好的给出了这个答案。目前Esri的AO库号称世界上第二大的库,除了微软的Framework,就是它了。它同时也是一个年盈利在8亿美元的公司。Esri公司与美国和加拿大政府的合作堪称行业公司的典范,它为这两个国家的数字化城市的建设立下了汗马功劳,做出了很多优秀的作品。说这个例子,只是为了表明,在我们的数字化城市的需求越来越深入,政府的需求越来越实际,整个国家的市场建设越来越合理以及公平公正透明,WebGIS在行业上的应用也将越来越广泛,并且越来越能够服务政府、企业和人民,并且更能做出有真实价值的产品。并且,从事行业应用的研发人员,随着对所从事行业理解的深入,这些理解给未来所带来的收获可能比技术单纯的提高所带来的收获要大得多。要知道,项目需求分析靠的基本是行业理解,当然,对技术的了解也给项目可行性分析提供了保障。两者相辅相成。

每个人追求不一样,根据自己的需求,根据自己的现状,做出选择,坚持下去,不说梦想是否能实现,起码你不会是一个自己都认为自己活该如此平庸的人。

4.WebGIS的框架

前面说了太多的非技术类的话,这里我们开始提一个技术类话题——WebGIS的框架。其实WebGIS的框架跟其他Web项目的框架没有很多本质上的区别。可能唯一的不同是WebGIS需要提供一些地图方面的功能服务。这里我先把这个框架给出,同时每个层面需要的技术我也在其中大致画出。

4.1前端

如所有的Web项目一样,前端由HTML、CSS、JS、Flex等语言组成。根据需求和语言的特性,选择合适的语言进行开发是至关重要的。没有最好的语言,只有最合适的语言。

4.2 后台程序

4.2.1 中间件

开发时,我们要选择适合自己的中间件。不同的中间件有其特性,如果是一般项目,tomcat等是很合适的,其使用方便,相关技术支持和资料也很好查找。但是如果是大型的集群项目,Weblogic和WebShpere可能是更好的选择,但是这两个中间件首先配置就是有难度的,同时不同的版本,可能对某些jar包的支持存在问题。如果项目必须使用国产的中间件,TongWeb和Apusics是不错的选择。

4.2.2 地图服务器

在WebGIS中,与其他一般的Web工程有明显区别的就体现在地图服务器上面。一般的地图服务器都由已有的软件商提供了解决方案,比较流行的有AGS、Geoserver、MapServer、SuperServer等。利用这些地图服务器我们能很好的实现地图的发布以及对一些空间查询和空间操作的支持。

4.2.3 业务服务器

业务服务器是Web项目里不可获取的一环。不管是利用哪些已有框架编写,比如Spring、Struts、Hibernate等,我们一般还是会将业务服务器的实现分为三个层次,即有名的MVC模式。而不同的框架里这三个层次的实现各有差别。

4.3 数据

WebGIS的数据大致可以分为三种,一种是地图、影像数据,一种是空间属性数据、一种是业务数据。地图、影像数据一般是一些png或者其他格式的数据组成。

在GIS中有个很重要的概念,即影像金字塔。这个概念主要是为了加速地图在前端的显示。而我们准备地图、影像数据时,也一般会首先对这些数据进行切图。

空间属性数据,是通过一些工具将已经整理好的数据进行入库。对于AGS,只有连接的是入库数据的mxd,才能发布成FeatureServer服务,以供数据的编辑。当然,空间数据入库后还可以支持业务逻辑的使用。

第三种数据,业务逻辑数据,是每个Web项目必须有的,它根据不同的业务需求将业务所需的数据进行采集和入库。

5.从WebGIS的原理谈起

目前很多公司都提供了自己的二次开发包,在前端的有OpenLayers、AGS API for JS/Flex等。在后台的也有geoTools、AO等。用这些开发包,我们可以很快的实现出图以及很多GIS功能,基本上不用写太多的编码。

但是,同样,由于封装的太好,很多WebGIS的原理我们也便忽略而不做了解了。

这里,我希望利用我薄弱的知识,能和大家一起,探讨一些WebGIS中常用的原理知识。希望大家支持。

6.感想

由于我薄弱的理论和技术基础,也谈不上对WebGIS的明天有很大的预言。我只希望我们每个人都争取做一个完美主义者,同时也是一个有圣徒情怀的人,从而作践自己实现目标。与大家一起进步。希望我也能保持自己的写作动力,积累经验和知识。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                                          

(一)开篇—杂谈WebGIS的更多相关文章

  1. IT人的自我导向型学习:开篇杂谈

    报考大学时,家人让我报的是计算机系,那个时候,普遍都认为读计算机专业的人将来不用愁找不到工作.为何得出这样的结论不得而知,但是在过去三十年中,的确有很多响当当赚了大钱的IT人在影响着我们. 顺利的考取 ...

  2. 微软TTS尝试系列之开篇杂谈(仅思路)

    第一次写博客,不知道如何下手,思路也乱,就先聊聊怎么进的园子吧,但愿不会浪费大家太多的宝贵时间>_<. 与博客园结缘应该是大三刚开始的时候.当时学校教务处想开发一个教务安排系统,为了省钱就 ...

  3. 从底层谈,WebGIS 原理、设计、实现

    留待备用! http://www.cnblogs.com/naaoveGIS/category/600559.html 介绍与WebGIS相关的各种原理知识,以及基于原理知识上的程序设计和实现. (一 ...

  4. WebGIS博客文本分析(词频分析)手动扒取 去除格式 词语分割 统计分析

    1.      [置顶](一)开篇—杂谈WebGIS 摘要: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 ...

  5. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

  6. 敏捷个人-认识自我,管理自我 v0.8.pdf 下载

    2009年我在blog上写了个人管理系列的一些blog,其中一些文章深受大家的喜欢.想到写这个系列是源于在实施敏捷Scrum方法时,对方法实施是否对人的水平需要高要求的一些思考.自组织团队是建立在敏捷 ...

  7. 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

    本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...

  8. 从底层谈WebGIS 原理设计与实现(一):开篇

    从底层谈WebGIS 原理设计与实现(一):开篇 作者:naaoveGI…    文章来源:http://www.cnblogs.com/naaoveGIS/    点击数:4773    更新时间: ...

  9. WPF 杂谈——开篇简言。

    这俩年多来笔者一直在从事关于WPF的开发.虽然不能说是专家级别的.但是对于WPF的应用还是有一定的了解.论他的灵活性决对不在WinForm之下.WPF的出现更是引发一段热议.他的何去何从更是让很多人感 ...

随机推荐

  1. [APUE]进程控制(上)

    一.进程标识 进程ID 0是调度进程,常常被称为交换进程(swapper).该进程并不执行任何磁盘上的程序--它是内核的一部分,因此也被称为系统进程.进程ID 1是init进程,在自举(bootstr ...

  2. 在PowerShell中使用curl(Invoke-WebRequest)

    前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...

  3. premere cs4绿色版 安装 并且 视频导出 讲解

    最近室友,开始在玩视频剪辑,用的是 premere cs4 绿色版.让他遇到的最大问题也是我之前遇到的最大问题,就是视频导出. 所以我在这里上传一套自己的一点点经验吧. 接下来,我就总结一下 我是怎么 ...

  4. ExtJS 4.2 业务开发(三)数据添加和修改

    接上面的船舶管理业务,这里介绍添加和修改操作. 目录 1. 添加操作 2. 修改操作 3. 在线演示 1. 添加操作 1.1 创建AddShipWindow.js 在业务中的view目录下创建一个Ad ...

  5. Bringing Whoops Back to Laravel 5

    You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how ...

  6. 参考bootstrap中的popover.js的css画消息弹框

    前段时间小颖的大学同学给小颖发了一张截图,图片类似下面这张图: 小颖当时大概的给她说了下,其实小颖也不知道上面那个三角形怎么画嘻嘻,给她说了DOM结构,具体的css让她自己百度,今天小颖自己参考boo ...

  7. 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter

    中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...

  8. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  9. Android之Dedug--Circular dependencies cannot exist in AnimatorSet

    今日,在学习AnimatorSet时,使用play.with.after.before时,代码书写如下: ObjectAnimator animator1 = ObjectAnimator.ofFlo ...

  10. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...