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 APIArcGIS ProArcGIS Engine国土测绘、政务平台、涉密系统、大型定制 GIS 项目功能全面分析编辑能力强文档案例丰富、稳定性高闭源收费部署复杂国产商用GIS超图 iClientMapGIS Web API国内政务、水利、应急、省级一体化平台适配国内行业规范与坐标系本土化服务完善闭源商用开源二维GISOpenLayers/Leaflet/GeoServer/PostGIS智慧园区、数据可视化、中小型平台、离线内网项目开源免费灵活易扩展支持离线部署Leaflet 更适配移动端开源三维GISCesium/Mapbox/Cesium Ion数字孪生、实景三维、BIMGIS、地形仿真三维渲染效果优秀开源本体可离线使用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行业现在发展挺快的技术扎实了未来的职业选择面也会更宽。