因为一些缘故,工作中了解了一下 GIS。本文算是菜鸟的学习笔记吧,如有错误,衷心希望专业的 GIS 同学指正~
本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
本文地址:https://cloud.tencent.com/developer/article/1151521
GIS 就是 Geographic Information System,地理信息系统。这算是一门地理学和计算机科学的交叉学科。在大学里面这可以是一个专门的专业,一般开在地理系下面。
维基百科上的定义是:
“GIS是一个设计用来捕获、存储、操作(manipulate)、分析、管理和展示空间或图像数据的系统。”
GIS能够将我们日常相关的信息以空间信息的形式,在地图上展示,有了这些内容之后,我们就可以做很多事情。
概念上看起来很复杂,但是简单而言,广义上,如果一个系统包含地图、与地图相关的数据、能够展示这些数据,而且能够使用这些数据,协助我们处理某些问题,那么这就算是一个GIS系统。
日常生活中最常见的可以归结为GIS系统的如下:
上面是 to C 的应用场景。To B 业务在日常生活中我们则比较少直接接触到。Esri(ArcGIS 的开发商)给的例子如下:
GIS 应用 = 基础底图 + 操作图层 + 任务
这里以 ArcGIS 的两个入门教程为例。两个入门教程分别是 Venice Acqua Alta 和 Egmont National Park。
比如下面的威尼斯地图里,系统设置的基础底图,是 ArcGIS 网站上的一张世界投影地图。
把界面缩到最小比例尺就可以看出来:
而另一个教程 Egmont 国家公园,使用的则是区域地图:
一个工程中可以有多个基础底图。上述两个地图中均包含 2D 和 3D 的地图和相应的图层。
我们回到 Venice Acqua Alta 的主界面。我们看左边的 “绘制顺序” 信息,包含了以下三个可以下拉的内容,分别可以对应三个操作图层:
下图中,把其中的一个地标信息点开了:
这里以 Venice Acqua Alta 为例,其任务就是使用其 3D 地图图层中的水位数据图层,进行威尼斯涝季城市水位分析。笔者在这里没有具体深入研究,因为不同的任务,其操作方式多种多样,这里只作为记录。
由于 ArcGIS 在行业内的龙头地位,其指定的一系列数据格式和交换协议,成为 GIS 业界的标准协议。目前制定 GIS 协议的标准化组织为开放地理空间协会(OGC),其制定的规范称为 OpenGIS(Open Geodata Interoperation Specification)。
相关的接口和协议非常多,以后再一一补齐。目前大部分 demo 系统,导入的数据格式为 shp 文件,往往是由甲方直接提供、或者是网上的公开 GIS 服务提供商可提供下载的,不需要我们自行转换数据格式。ArcGIS 可以直接识别并导入,入库后也使用标准接口协议开放服务,比如 WMS(网络地图服务)和 WFS(网络要素服务)。
ArcGIS Pro 是单机版的 ArcGIS 系统,这就纯粹用于需要在本地进行数据分析的应用场景。相比起 Web GIS,主要是少了 web 功能,便于建立 GIS 系统,适合企业内部进行快速的数据分析,但是不适合网络分享或者多地展示和部署。
学习 GIS 基本概念,可以从 ArcGIS Pro 开始,这个软件提供了 21 天的免费试用期。
ArcGIS for Server 是一个 Web GIS。
Web GIS 顾名思义,就是运行在 web 页面的 GIS。当然只是终端的数据呈现在 web 层面。对于 ArcGIS,就是 ArcGIS for Server。
Server 的部署和我们普通的服务部署非常像,大块可以分为 web server、GIS server、GIS database server 三大块。
开源 GIS 软件,从大类来分,包含服务器版和桌面版(即桌面版)。显然我们最关注的是服务器版的 GIS 软件 / 组件。
服务器版的部署架构和 ArcGIS 基本类似,也是分 web、GIS Server、database 三大模块,并且可以分开部署。
主流开源 GIS Server 可以参考 OSGeo-Live 的 “网络服务” 项:
MapServer 免费版
GeoServer
GIS 数据库相对而言没有 server 那样五花八门,主要是围绕着数据应用来划分成几类:
post-gress-Q-L
”,是一个自由的 “对象 - 关系型” DB 服务器。这里主要指的是一些开源的 Javascript API,使用这些 API 来实现地图的呈现。由于 Javascript 不是笔者擅长的内容,因此了解不多。这里只列出其中 GeoServer 自带的一个 JavaScript 库:OpenLayer,GeoServer 的管理页面中,针对每个图层,都会给出 OpenLayer 的例子,非常便于快速搭建。
桌面 GIS 从我们的应用来看并非毫无用处,主要可以用来预览、修改 GIS 数据。桌面 GIS 软件很多,这里列出几个推荐的:
QGIS | GRASS | uDig |
---|---|---|
界面友好,接近 ArcGIS | 美国军方开发 | 基于 eclipse,慢,耗内存 |
对 WMS 支持好 | 界面差,需要很多手动命令 | 操作简单,支持多种数据库 |
无缝集成 PostGIS | 分析功能弱 | |
分析功能强,照搬 GRASS 的分析功能 |
国内做 toG(to 政府) 的 Web GIS 项目的时候,经常是使用 ArcGIS + Oracle + Web server 的模式来制作,成本很高(ArcGIS 需要一笔授权费)。之所以这么做,结合一些帖子的说法,整理了一些的 “中国特色” 的原因:
当然还有一些比较通用的原因啦:
实际上,由于不少 GIS 项目功能是比较简单的,因此使用如上的开源 GIS 完全可以完成相应的内容。比较典型的搭配是:
最近中美贸易战风风火火,而 Esri 作为一家美国公司,个人猜测可能会受到 toB 和 toG 客户一定程度上的排斥。除了采用开源 GIS 之外,据我了解,还有不少 GIS 开发公司采用国产的 GIS 产品。这方面我还没了解,等以后有机会了再学习学习吧~
本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。