
当我们在说GIS研发的时候在说什么
当下大部分认为GIS这个专业除了转CS之外最好的出路就是GIS研发,今天我就结合自己的体验简单来说下关于GIS研发以及想做研发需要从哪里入手(以下言论非常主观,不接受杠,杠就你对)。
GIS研发区别于IT研发的因素就是基于地图做文章,不管是百度高德地图还是原生地图。抛开具体的应用场景,一种比较通用的解决方案就是地图可视化+数据管理。基于这个方案,我将整个GIS研发体系分为1套逻辑+3个方向+一个批处理。
1套逻辑
以esri为首的行业大佬提供的相关API来看,无论是用什么开发,本质上都是基于做图-出图同一套理论体现,基于不同的载体从而进行不同的技术表达而已。这套逻辑从GIS原理中提炼出地图发布、地图显示、地图编辑、数据查询、空间分析、符号化、制图出图几部分。
地图发布
地图发布是说将你所需要的地图发布成服务,有些时候可以让数据部的同事去做,但作为一个GISer我觉得还是有必要知道的。在发布服务里需要注意的有几点:
- 是否切片
- 坐标系用什么
- 单图层发布还是整个地图发布
是否切片主要在数据量大或者是影像图区域过大时能否保持流畅浏览。在开发过程中,根据你的实际情况去确认要不要切片,至于切片方法我就不科普的,下次有机会再说。
坐标系主要是在于当前影像图与矢量图的坐标系是否一致,否则可能导致调用时不在同一个屏幕里的问题。
关于图层这个,我们都知道一个地图至少有一个图层,而这些图层可能在别的地图场景也需要使用到,所以这时候需要考虑一个图层架构的问题,是将所有图层单一分布,用代码组合成专题图还是发布整个地图发布在单独发布所需图层,理论上来说这两种方案都可行,但是当图层多了之后第一不易管理,第二服务器容易崩。因此一定要灵活选择,没有什么绝对的情况。
地图显示
地图显示是指通过代码把你的地图服务加载到屏幕上进行展示,这个功能要注意两个方面,一个是投影、坐标系是否一致;一个是可视范围的确定及比例尺大小的问题。具体的实现方法看各家API就行了。
地图编辑
地图编辑是指在地图上画点、线、面等操作,通常用于辅助操作,要注意区分这里的要素点、线、面是纯几何属性,是没有属性信息的,独立于图层之外,产生的图形在地图的最上层。
数据查询
数据查询也是一个基础到必要的功能。我们都知道GIS中的数据查询有两种,图查属&属查图。说简单点就是在地图上画个范围,查询该范围下覆盖图层的属性信息和通过查询数据库将结果通过图形属性反应到地图上。无论用哪种方法,在执行查询操作的时候要注意选择的图层是否有属性信息。另外要注意数据量特别大时查询的等待时间问题,通常选择异步或者大数据方法去实现。
空间分析
空间分析这个模块可以讲的东西就太多了。在这块没有特定分析需求,通常要根据具体的业务功能去串联基础分析从而使其解决实际问题。常用的几个分析功能包括缓冲区分析,叠加分析等,掌握这一块的方法是从具体的原理出发而不是拘泥于某一种语言的实现形式。我下次可以专门说下这块。
符号化
接触过地图制图学的这块肯定一点都不陌生,符号化类似于P照片的一个过程。没有什么特别需要强调的地方。
制图出图
主要指各种专题图的渲染方法,要注意的是客户端渲染还是什么,注意大数据量情况下渲染效率问题。
3个方向
3个方向主要是从载体方面来说的,分别来说是桌面端、网页端、移动端。有的人也把小程序囊括下去。就目前市场情况来说,涉及地图的应用大多以桌面端和网页端为主,移动端较少,小程序端就更少,市面上岗位需求网页端>桌面端>移动端>小程序端。
桌面端
桌面端是指我们在我们的电脑上安装一个应用程序的形式来运行的,目前主要用于某些项目的入库软件及一些操作调查类软件,在互联网已经跑到了移动互联网的今天,得益于实际研发中很多需求因为用户体验和技术限制的原因,桌面端得以幸存,并且待遇还相对来说不错。这一块中大部分公司用的是C#语言,.NET MVC框架,因为相对稀缺,所以自然市场价值高。
网页端
网页端就是我们常说的Web端,以一个网址来启动的。这一块目前比较热,市场需求也多,技术门槛要求不高,所以很多人追捧。随着技术的发展也是一个趋势,不过随着3D的热门,单纯的二维开发可能会逐渐淡出视野,想要从这个方向入门的朋友除了基础的前端知识还要掌握WebGL的知识。关于三维GIS有机会我详说。
移动端&小程序端
这个目前市面上的产品还相对较少,虽然有一些技术文档,但因为很多不可预知的问题开发起来困难重重。主要是地图数据通常庞大,而且过往一般不要求联网,这个对移动设备来说简直是考验,做还是可以做的,我之前甚至在微信小程序中嵌入了自家地图,虽然成功了,不过我还是想吐槽实在是鸡肋。不建议走这个方向。
1个批处理
GIS研发还有一个方向就是批处理方向,通过脚本去处理大量的数据运算,这个语言有很多,ESri主要用的语言是python,针对GIS这个领域,有较多成熟的材料去参考。
最后唠两句
总体来说,GIS研发不算一个门槛特别高但需要长期探索的职业,除了基本的IT基础知识,某种语言,以及对GIS理论的熟练掌握就能胜任大部分的开发工作,但因为这个圈子小,问题多样,有很多坑还是要自己去踩,建议最好建立自己的错误数据库。
以上我只是结合自己的体验和见闻简单说了下要做一个GIS研发需要掌握或者注意的地方,我没有写代码也没有写方法论来例证,是我觉得网上已经有很多了,大家时间都挺宝贵的就不占各位视野了。我个人从桌面端到移动端都做过,做研发最重要的是理解语言只是一个工具,正如GIS和互联网都只是一个工具一样道理,弄清背后的逻辑才是最重要。不然为什么市场上有很多10年研发经验一问写了9年增删改查是怎么来的(狗头)。
本文深入探讨GIS研发领域的核心技能与发展方向,包括地图发布、显示、编辑等关键技术环节,以及桌面端、网页端和移动端的研发特点。

被折叠的 条评论
为什么被折叠?



