20

因为一些缘故,工作中了解了一下 GIS。本文算是菜鸟的学习笔记吧,如有错误,衷心希望专业的 GIS 同学指正~

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原文最早发布于:https://cloud.tencent.com/developer/article/1151521,同为本人的专栏。


Reference


什么是 GIS

GIS 就是 Geographic Information System,地理信息系统。这算是一门地理学和计算机科学的交叉学科。在大学里面这可以是一个专门的专业,一般开在地理系下面。

维基百科上的定义是:

“_GIS是一个设计用来捕获、存储、操作(manipulate)、分析、管理和展示空间或图像数据的系统。_”

GIS能够将我们日常相关的信息以空间信息的形式,在地图上展示,有了这些内容之后,我们就可以做很多事情。

概念上看起来很复杂,但是简单而言,广义上,如果一个系统包含地图、与地图相关的数据、能够展示这些数据,而且能够使用这些数据,协助我们处理某些问题,那么这就算是一个GIS系统。

日常生活中最常见的可以归结为GIS系统的如下:

  • 导航系统(纯粹的电子地图不算):导航系统包含地图、地图上面的各个定位点信息,并且我们用来完成一个目标:规划一条最优路线,从一个地方到达另一个地方
  • 类似于美团之类的消费推荐系统:系统包含了地图,地图上包含了各个商家的地理位置、评价、菜谱等信息。我们使用这个系统获得商家的信息和推荐,协助我们决定如何消费。

上面是 to C 的应用场景。To B 业务在日常生活中我们则比较少直接接触到。Esri(ArcGIS 的开发商)给的例子如下:

  • 政府部门利用在线地图对台风、洪水或传染病等灾害进行预警和应急指挥
  • 公共事业服务部门通过在线和移动地图迅速找到管道爆裂的位置,并准确的指挥现场工作人员该关闭哪个阀门和在什么位置进行挖掘维修
  • 商业公司利用在线地图和空间上的商业分析,找到最好的分店位置,分析客户的消费习惯,并能有针对性的发送促销信息

GIS 中的相关概念

GIS 应用 = 基础底图 + 操作图层 + 任务

  • 基础底图:可以简单地理解为就是地图,并且要求是一个不会频繁改变的地图。
  • 操作图层:用户使用的主要图层,承载主要的待编辑、展示和分析的信息数据。
  • 任务:如导航、地址编码等计算量比较大的分析任务。

这里以 ArcGIS 的两个入门教程为例。两个入门教程分别是 Venice Acqua Alta 和 Egmont National Park。

基础底图

比如下面的威尼斯地图里,系统设置的基础底图,是 ArcGIS 网站上的一张世界投影地图。

把界面缩到最小比例尺就可以看出来:

而另一个教程 Egmont 国家公园,使用的则是区域地图:

一个工程中可以有多个基础底图。上述两个地图中均包含 2D 和 3D 的地图和相应的图层。

操作图层

我们回到 Venice Acqua Alta 的主界面。我们看左边的 “绘制顺序” 信息,包含了以下三个可以下拉的内容,分别可以对应三个操作图层

  1. Landmarks:地标——在工程中这里包含了威尼斯几个热门旅行点的信息,可以点开看到描述信息。系统中以原点表示
  2. Canals:运河——在系统中,以红色线段表示
  3. Structures:建筑——在系统中,以青色多边形表示。

下图中,把其中的一个地标信息点开了:

任务

这里以 Venice Acqua Alta 为例,其任务就是使用其 3D 地图图层中的水位数据图层,进行威尼斯涝季城市水位分析。笔者在这里没有具体深入研究,因为不同的任务,其操作方式多种多样,这里只作为记录。


GIS 数据和协议

由于 ArcGIS 在行业内的龙头地位,其指定的一系列数据格式和交换协议,成为 GIS 业界的标准协议。目前制定 GIS 协议的标准化组织为开放地理空间协会(OGC),其制定的规范称为 OpenGIS(Open Geodata Interoperation Specification)。

相关的接口和协议非常多,以后再一一补齐。目前大部分 demo 系统,导入的数据格式为 shp 文件,往往是由甲方直接提供、或者是网上的公开 GIS 服务提供商可提供下载的,不需要我们自行转换数据格式。ArcGIS 可以直接识别并导入,入库后也使用标准接口协议开放服务,比如 WMS(网络地图服务)和 WFS(网络要素服务)。


ArcGIS 软件

ArcGIS Pro

ArcGIS Pro 是单机版的 ArcGIS 系统,这就纯粹用于需要在本地进行数据分析的应用场景。相比起 Web GIS,主要是少了 web 功能,便于建立 GIS 系统,适合企业内部进行快速的数据分析,但是不适合网络分享或者多地展示和部署。

学习 GIS 基本概念,可以从 ArcGIS Pro 开始,这个软件提供了 21 天的免费试用期。

ArcGIS for Server

ArcGIS for Server 是一个 Web GIS。

Web GIS 顾名思义,就是运行在 web 页面的 GIS。当然只是终端的数据呈现在 web 层面。对于 ArcGIS,就是 ArcGIS for Server

Server 的部署和我们普通的服务部署非常像,大块可以分为 web server、GIS server、GIS database server 三大块。


免费开源 GIS 软件

开源 GIS 软件,从大类来分,包含服务器版和桌面版(即桌面版)。显然我们最关注的是服务器版的 GIS 软件 / 组件。

服务器版的部署架构和 ArcGIS 基本类似,也是分 web、GIS Server、database 三大模块,并且可以分开部署。

开源 GIS Server

主流开源 GIS Server 可以参考 OSGeo-Live 的 “网络服务” 项:

  1. MapServer 免费版
  2. 明尼苏达大学开发
  3. 纯 C,效率高
  4. 跨系统支持:Windows、Linux、macOS
  5. 支持绝大部分 GIS
  6. 没有内置 ajax 支持
  7. GeoServer
  8. 基于 JDK,效率较低
  9. 跨系统支持:Windows、Linux、macOS
  10. Orracle 发布地理数据时经常使用,原因未知
  11. 也有帖子提到 GeoServer 的功能最全,不过并没有专门看到相关的资料说明

开源 GIS Database Server

GIS 数据库相对而言没有 server 那样五花八门,主要是围绕着数据应用来划分成几类:

  1. PostgreSQL:读作 “post-gress-Q-L”,是一个自由的 “对象 - 关系型” DB 服务器。
  2. PostGIS:这是为 PostgreSQL 设计的扩展,用于支持存储、查询和修改空间关系的能力。为 GIS 向量和关系数据量身定做。
  3. PostGIS Raster:正在开发中,为 PostGIS 支持栅格数据——貌似已经开发完成了,但是网上资料还不多。
  4. SpatiaLite:具有空间数据功能的 SQLite 数据库系统。优势:比较接近 SQL;SpatiaLite-GUI 提供有好的 GUI;但是劣势是:资料少
  5. Rasdaman:多维栅格数据库。目前是开源项目中支持栅格数据的直接方案
  6. pgRouting:主要用于路径规划

开源 Web 组件

这里主要指的是一些开源的 Javascript API,使用这些 API 来实现地图的呈现。由于 Javascript 不是笔者擅长的内容,因此了解不多。这里只列出其中 GeoServer 自带的一个 JavaScript 库:OpenLayer,GeoServer 的管理页面中,针对每个图层,都会给出 OpenLayer 的例子,非常便于快速搭建。

桌面 GIS

桌面 GIS 从我们的应用来看并非毫无用处,主要可以用来预览、修改 GIS 数据。桌面 GIS 软件很多,这里列出几个推荐的:

QGIS GRASS uDig
界面友好,接近 ArcGIS 美国军方开发 基于 eclipse,慢,耗内存
对 WMS 支持好 界面差,需要很多手动命令 操作简单,支持多种数据库
无缝集成 PostGIS 分析功能弱
分析功能强,照搬 GRASS 的分析功能

开源 GIS 部署建议

国内做 toG(to 政府) 的 Web GIS 项目的时候,经常是使用 ArcGIS + Oracle + Web server 的模式来制作,成本很高(ArcGIS 需要一笔授权费)。之所以这么做,结合一些帖子的说法,整理了一些的 “中国特色” 的原因:

  1. 项目交期短,要求尽快出成果
  2. 与政府打交道的不少公司,研发能力和项目管控能力较弱(相对主流 IT 公司而言),使用 ArcGIS 不用太多研发投入,很快就可以出效果
  3. 政府网站很少被黑(违法成本高、信息价值低)、流量也低,不用花太多精力去维护和容灾,因此只需要一份 ArcGIS 授权
  4. 政府项目资金一般不会太缺,足以购买和外包 ArcGIS 解决方案

当然还有一些比较通用的原因啦:

  1. ArcGIS 是商业 GIS 的领头人,用得多很正常
  2. Esri 是业界冠楚,GIS 研发能力强,既提供 PaaS 服务也提供 SaaS 服务,售前售后团队一流
  3. 不论国内外,Esri 都早早进入大学,为大学科研提供大量免费的软件和技术服务支持。这样一来,大学生走出校园后,基本上只会用 ArcGIS,并且还用得非常熟——不得不说这是非常高明的商业做法

实际上,由于不少 GIS 项目功能是比较简单的,因此使用如上的开源 GIS 完全可以完成相应的内容。比较典型的搭配是:

  • GIS Server:GeoServer / MapServer
  • DB Server:PostgreSQL (PostGIS)
  • Web Server:Tomcat
  • 反向代理:nginx,特别是对于 GeoServer 和 Tomcat 部署在同一台机器的情况而言,使用 nginx 进行反向代理是非常舒服的

国产 GIS

最近中美贸易战风风火火,而 Esri 作为一家美国公司,个人猜测可能会受到 toB 和 toG 客户一定程度上的排斥。除了采用开源 GIS 之外,据我了解,还有不少 GIS 开发公司采用国产的 GIS 产品。这方面我还没了解,等以后有机会了再学习学习吧~


本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原文最早发布于:https://cloud.tencent.com/developer/article/1151521,同为本人的专栏。


amc
927 声望228 粉丝

电子和互联网深耕多年,拥有丰富的嵌入式和服务器开发经验。现负责腾讯心悦俱乐部后台开发


引用和评论

0 条评论