GISer如何突破二次开发瓶颈
年初时写的《一个GISer的使命》那篇文章中,提出了GISer的技术提升路径可以分为四个大的阶段:
- 阶段一,能使用商业GIS软件去解决问题。
- 阶段二,能使用开源GIS软件去解决问题。
- 阶段三,有能力去解决开源GIS中的问题。
- 阶段四,有能力去解决GIS行业前沿问题。
在阶段一、阶段二中,我们属于GIS二次开发人员,在阶段三、阶段四中我们开始慢慢转向GIS底层开发人员。
这种转变不是天天做项目就会自然的实现的,天天做项目会让我们成为一名GIS二次开发老司机,但永远不会成为GIS底层开发的赛车手,他们之间差的是对某些底层专业知识技能的”刻意练习“。
我们今天就来讨论一下,如何从一个GIS二次开发人员转变为GIS底层开发人员。
被忽视的GIS底层原理
前段时间学了一个大神的计算机图形学课程。课程开篇就说:我们不会去讲OpenGL API,我们只会讲计算机图形学的原理和算法,原理和算法学会了再去看API什么的,那都太简单了,甚至你自己都可以写一套渲染引擎出来。
学完那个课程后我最大的体会就是:原来计算机里的所有东西,背后都是数学。也看到了在计算机领域,只有能深入讲到数学层面的东西才是真正的实现原理。
记得之前所在的公司下任务让员工申请专利,有个同事写了个GIS的专利,结果被打了回来,理由是实现方法太依赖于ArcGIS软件。
这可能从侧面反映出了GIS开发普遍存在的问题,就是更关注如何使用各种的GIS软件和GIS开发框架,却忽视了GIS底层原理的重要性。
这同样也是国内开设GIS专业的高校普遍存在的问题,高校里都在讲GIS理论、GIS软件使用、GIS二次开发,但很少讲GIS底层的实现原理。
GIS开发需要逆势而上
吴军在《硅谷来信》一书中提到过一个高势能专业的概念。所谓高势能的专业,就是指那些相对难学,而又相对是其他专业的基础的专业。比如数学专业相对计算机专业就是高势能的,计算机专业相对GIS专业是高势能的,从高势能转到低势能的专业相对好转,但反过来会比较困难。
GIS开发除了要掌握GIS的原理外,还要夯实计算机基础,因为计算机是GIS的实现手段,计算机基础不扎实是做不好GIS的。
GIS底层开发要掌握的技能
下面是我认为GISer需要进一步加强的底层技能
1、GIS基础知识
- WebGIS实现原理
- GIS常用空间分析算法实现原理
2、计算机基础知识
- 数据结构、算法。
- 精通一门开发语言。这里的精通不仅包括熟练度,还包括开发语言的实现原理。
套用知乎上一位答主的话说就是:GISer要有不低于计算机专业人员对计算机的理解能力。简单点说就是要达到计算机专业科班出身的水平。
3、数学基础知识
我的原则是急用现学。数学这个东西确实比较枯燥,当你不知道这个东西有什么用时,内心会很抗拒,学起来就很费劲;当你发现要学的新技术中使用到它并且死活绕不开时,内心就不再抗拒,甚至有了浓厚的兴趣,再学起来会容易很多。
总结
- GIS二次开发走的是全栈开发路线,啥都会一些,啥都不精通,路越走越窄,工作5年后薪资上会慢慢遇到瓶颈。
- 要突破这种瓶颈需要逆势而上把计算机的专业知识吃透,把GIS底层原理吃透,让自己达到计算机专业开发水平,同时又精通GIS底层实现原理。
- 这两项突破后,你就具备了GIS底层的开发能力,会成为HR口中天天嚷着不好招的那种GIS稀缺人才。
最后
种一棵树最好的时间是十年前,其次是现在!
原文地址:http://gisarmory.xyz/blog/index.html?blog=GISerRacer
欢迎关注《GIS兵器库》

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接: http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
GISer如何突破二次开发瓶颈的更多相关文章
- 突破,Objective-C开发速学手册
<突破,Objective-C开发速学手册> 基本信息 作者: 傅志辉 出版社:电子工业出版社 ISBN:9787121207426 上架时间:2013-7-12 出版日期:2013 年8 ...
- Navisworks API 简单二次开发 (自定义工具条)
在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用
目 录 第十二章 二次开发及应用... 2 12.1 项目配制... 3 12.2 引用相关组件... 4 12.3 构建主程序... 5 ...
- OBS-Studio二次开发记录
OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ...
- 小猪cms微信二次开发之怎样分页
$db=D('Classify'); $zid=$db->where(array('id'=>$this->_GET('fid'),'token'=>$this->tok ...
- 承接 AutoCAD 二次开发 项目
本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】三.二次开发流程
1.1 二次开发流程图 1.2 引用相关组件 找到“开发包”,引用里边的相关组件.如下图: 1.3 开发设备驱动模块 1.3.1 开发发送协议驱动 继承SuperIO.Devi ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
随机推荐
- ASP.NET WEBAPI 跨域请求 405错误
浏览器报错 本来没有报这个错,当我在ajax中添加了请求头信息时报错 405的报错大概就是后端程序没有允许此次请求,要解决这个问题,就是在后端程序中允许请求通过.具体操作就是修改web.config配 ...
- HDC2021:HMS Core分析服务,数智化营销闭环方案帮助开发者实现精益增长
10.22-10.24华为开发者大会2021(Together)在东莞如期举行.本次大会上,HMS Core华为分析服务作为多平台.跨设备的一站式数据分析平台以数据驱动业务智能决策为理念,带来了数智化 ...
- 什么是操作系统fork()进程
1.fork()是创建进程函数. 2.c程序一开始,就会产生 一个进程,当这个进程执行到fork()的时候,会创建一个子进程. 3.此时父进程和子进程是共存的,它们俩会一起向下执行c程序的代码. 4. ...
- lvs 四层负载相关
都打开 /etc/sysctl.conf 中的 net.ip4.ip_forward=1.开启路由转发功能. 分发器 : eth0:192.168.1.66 (VIP) eth1:192.168.2. ...
- 阿里云ECI如何6秒扩容3000容器实例?
引言 根据最新CNCF报告,有超过90%的用户在生产环境使用容器,并且有超过80%的用户通过Kubernetes管理容器.是不是我们的生产环境上了K8s就完美解决了应用部署的问题?IT界有句俗语,没有 ...
- Haar小波的理解
1. 首先理解L^2(R)的概念 L^2(R) 是一个内积空间的概念,表示两个无限长的向量做内积,张成的空间问题.也就是两个函数分别作为一个向量,这两个函数要是平方可积的.L^2(a,b)=<f ...
- mysql流程控制结构case when
一.case 使用场景 简单函数 CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement ...
- PTA列出叶结点 (25分)
[程序思路] 按从上到下.从左到右的顺序输出,则是层序遍历的顺序,这里需要用到队列.首先需要根据输入找出根节点,将输入利用静态链表的方式保存,没有被指向的编号就是根节点.然后再根据层序遍历遍历树,若该 ...
- 用户登录成功后重新获取新的Session
HttpSession session = request.getSession(); // 用来存储原sessionde的值 ConcurrentHash ...
- dart系列之:dart类中的构造函数
目录 简介 传统的构造函数 命名构造函数 构造函数的执行顺序 重定向构造函数 Constant构造函数 工厂构造函数 总结 简介 dart作为一种面向对象的语言,class是必不可少的.dart中所有 ...