文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处: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. CoreCLR源码探索(一) Object是什么

    .Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...

  2. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  3. Android消息传递之基于RxJava实现一个EventBus - RxBus

    前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...

  4. EC笔记:第4部分:21、必须返回对象时,别返回引用

    使用应用可以大幅减少构造函数与析构函数的调用次数,但是引用不可以滥用. 如下: struct St { int a; }; St &func(){ St t; return t; } 在返回t ...

  5. 免费道路 bzoj 3624

    免费道路(1s 128MB)roads [输入样例] 5 7 21 3 04 5 13 2 05 3 14 3 01 2 14 2 1 [输出样例] 3 2 04 3 05 3 11 2 1 题解: ...

  6. 【干货分享】流程DEMO-请休假

    流程名: 请假申请  流程相关文件: 流程包.xml WebService业务服务.xml WebService.asmx WebService.cs  流程说明: 流程中集成了webservice服 ...

  7. kali linux下的arp攻击

    这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...

  8. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  9. postgresql 基本语法

    postgresql数据库创建/修改/删除等写入类代码语法总结: 1,创建库 2,创建/删除表 2.1 创建表 create table myTableName 2.2 如果表不存在则创建表 crea ...

  10. bzoj1531: [POI2005]Bank notes

    Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我 ...