GIS专业需要对编程有多熟练才算合格?

很多学GIS的同学,入行做开发之后,都会遇到一个现实的问题——

在学校觉得自己学得差不多了,真进了公司,拿到项目需求,打开开发工具,一下子懵了:这跟我学的好像不是一回事啊?

尤其是想转开发方向的GIS从业者,心里普遍会打鼓:编程到底要学到什么程度,才算“够用”?

说实话,这个问题没标准答案。

不同的岗位、不同的项目、不同的团队,对开发能力的要求差别很大。

今天这篇文章,就想带大家看一看,真实的GIS开发岗位到底长啥样,工作流程是怎么走的。对照一下,看看自己现在学到哪个阶段了。


确定需求和硬件环境

正式动手写代码之前,得先把业务功能需求理清楚。这决定了你用什么样的技术路线,也决定了项目架构是B/S(浏览器 / 服务器)还是C/S(客户端 / 服务器)。

简单说,B/S架构一般都是浏览器打开网页,侧重地图展示、数据可视化、在线交互这些;C/S架构则是客户端软件,常用于复杂数据编辑、离线作业这类场景。

硬件和网络环境也很关键,直接关系到底图怎么选。如果项目部署在不能连外网的内网环境,那就必须提前准备好离线地图方案;如果能正常上网,那直接用在线图源就完事了。

确定开发技术

1. 地图引擎

地图引擎可以理解成GIS开发的核心工具箱,它是一套SDK或者JavaScript库,负责解析地理数据、渲染地图,还提供地图加载、交互、分析等各种接口,是整个系统的基础。

2. 底图选择

根据网络环境、项目需求和技术框架,选合适的底图图源。常用的分两类:

一类是在线图源,比如百度地图、高德地图、天地图、腾讯地图、谷歌地图、OpenStreetMap、ArcGIS在线地图、Bing地图等;

另一类是本地地理数据文件,常见的有SHP、TAB、GeoJSON这些格式。不同的地图引擎能加载不同格式的数据,最终在地图上把点、线、面这些矢量要素渲染出来。

主流GIS开发技术路线

下面这张表,基本覆盖了目前WebGIS开发的主要技术路线:

技术类型

核心框架 / 工具

典型应用场景

优势特点

商用GIS软件

ArcGIS JS API

ArcGIS Pro

ArcGIS Engine

国土测绘、政务平台、涉密系统、大型定制 GIS 项目

功能全面,分析编辑能力强,文档案例丰富、稳定性高;闭源收费,部署复杂

国产商用GIS

超图 iClient

MapGIS Web API

国内政务、水利、应急、省级一体化平台

适配国内行业规范与坐标系,本土化服务完善;闭源商用

开源二维GIS

OpenLayers/Leaflet/GeoServer/PostGIS

智慧园区、数据可视化、中小型平台、离线内网项目

开源免费,灵活易扩展,支持离线部署;Leaflet 更适配移动端

开源三维GIS

Cesium/Mapbox/Cesium Ion

数字孪生、实景三维、BIM+GIS、地形仿真

三维渲染效果优秀,开源本体可离线使用;Ion 提供云端数据服务,免费版有额度限制

互联网地图API

百度地图 API

高德地图 API

天地图 API

位置服务、轨迹监控、便民查询、通用底图

接入简单,自带定位、路径规划等功能;仅支持在线,专业分析能力弱,坐标系加密

商用GIS套件路线

商用GIS套件路线(以ArcGIS为例)

ArcGIS这套产品,分工很明确:

  • ArcGIS Desktop(也就是ArcMap和ArcGIS Pro)负责数据处理、配图、空间分析;

  • ArcGIS Server(现在叫ArcGIS Enterprise)用来发布标准地图服务和要素服务;

  • ArcGIS JavaScript API支撑Web端二三维地图开发;

  • ArcGIS Engine面向桌面C/S端开发;

  • 还有配套的Android、iOS移动端SDK。

国内很多GIS软件,比如中地、超图,走的也是类似路线。

优势是功能全、官方文档和示例丰富、覆盖各种业务场景;缺点也很明显:架构复杂、部署配置麻烦、接口太多入门门槛高,而且是闭源商用,得花钱。

另外要提一嘴,因为ArcGIS是美国软件,涉密的国企、军工单位一般都会用国产GIS,比如中地、超图这些。

ArcGIS框架本身可以通过自定义瓦片图层,加载高德、百度、天地图等在线底图作为背景,但要注意:各框架功能是相互独立的。

ArcGIS内部的矢量标绘、空间分析、三维展示、要素编辑这些能力,没法跟百度、高德的原生交互组件、POI检索、路线规划等功能混着用。

开源开发路线

开源框架是目前用得最广的GIS开发类型,免费、选择多,二三维都能做,很受各类企业欢迎。

1)开源二维GIS路线

OpenLayers、Leaflet是GitHub上的开源轻量级二维地图JS库,社区生态成熟,拥有大量第三方插件,,可以扩展地图工具、空间分析、国内图源适配等功能。

整套技术栈免费开源,支持私有化部署和离线场景,是互联网和中小型项目的主流选择。

常用组合是:OpenLayers/Leaflet + GeoServer + PostGIS + 天地图/OpenStreetMap。

补充一下:GeoServer是开源的地图服务发布工具,PostGIS是基于PostgreSQL的空间数据库,它俩搭配起来,能很好地支撑离线项目的数据存储和服务发布。

2)开源三维GIS路线

Cesium、Mapbox主打三维地图场景,Mapbox同时兼顾二维和三维能力,源码开源可以免费使用。只有调用官方云端付费资源(Cesium Ion)时才可能产生费用。

这里要区分两个概念:原生Cesium是纯前端JS渲染库,只负责网页端三维场景渲染、视角交互、要素操作;Cesium Ion是官方配套的云端平台,主要负责三维模型、倾斜摄影、点云、地形数据的格式转换、云端托管和资源分发,不参与前端渲染。Ion免费版有存储和流量限额,大规模商用需要付费订阅。

这套技术栈基于WebGL,三维渲染性能很高,支持三维模型加载和实景展示。目前原生开源框架可以通过本地部署实现离线使用。

常用组合是:Cesium/Mapbox + 天地图/高德地图/OpenStreetMap。

互联网地图API路线

这类是互联网厂商提供的闭源地图API,包括百度地图、高德地图、天地图。受国内测绘规范影响,百度和高德的底图都用了GCJ02加密坐标系,必须用官方原生API才能正常加载定位,没法脱离框架单独调用瓦片。

1)百度地图API和高德地图API

主打位置服务、POI检索、路径规划等民用场景,接口固定不能二次修改。基础底图调用免费,高频调用增值接口要付费,而且不支持纯离线部署。技术组合就是JavaScript加上对应的地图API。

2)天地图

这是国内官方标准地理信息公共服务平台,行业内更多是把它当作标准底图来用,实际项目中很少直接基于它的原生API做全业务开发。技术组合是JavaScript + 天地图API,同样不支持离线部署。

业务落地与项目实施

项目真正落地,还得走完下面几步:

1)业务数据处理入库

所有GIS业务数据必须包含经纬度等空间坐标信息,这是地图定位的基础。要把业务数据、矢量/栅格数据导入空间数据库,再通过ArcGIS Server、GeoServer等服务工具发布成标准地图服务。

2)业务逻辑设计

根据具体行业需求,设计页面交互规则、数据展示逻辑和功能操作流程。不同行业的GIS系统,业务逻辑差异挺大的。

3)功能开发

按照选定的技术路线和业务逻辑,完成前端页面、地图功能、后端接口的开发和联调。

4)项目部署

分两块,一块是项目程序本身的部署,另一块是地理服务的部署。如果用了ArcGIS Server、GeoServer、PostGIS这些中间件,需要单独完成软件安装、数据导入和服务发布。离线地图有两种实现方式:一种是通过GeoServer、ArcGIS Server在局域网内发布地图服务;另一种是用专用工具下载在线瓦片数据,在前端本地直接加载。

二次开发流程

主流GIS平台的二次开发流程基本都差不多,主要分四个环节:

1)需求分析

把整体项目需求拆解开,区分哪些是GIS专属功能,哪些是通用业务功能,明确数据类型、数据格式、终端形态(桌面端、Web端、移动端还是多端融合),然后制定技术实现方案。

2)数据处理

梳理二维和三维的全部数据。二维包括CAD、SHP等矢量数据,还有卫星影像、栅格图片等;三维包括BIM模型、倾斜摄影模型、激光点云等。提前做好数据清洗、格式转换、坐标系校正,能省去开发阶段很多麻烦。

3)产品开发

依托平台提供的桌面端、Web端、移动端SDK,分终端完成功能开发、联调和测试。

4)项目交付

完成整体测试、部署和文档编写,正式交项目。

看完这些技术路线,相信你对WebGIS开发已经有了比较清晰的认识。

建议你结合自己想去的就业方向,先重点深耕对应的框架,理论结合实操,坚持练下去,慢慢积累项目经验。GIS行业现在发展挺快的,技术扎实了,未来的职业选择面也会更宽。