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二次开 ...
随机推荐
- 攻防世界 web4.cookie
题有几种解法,我有点懒,懒的打开burp,所以可以直接在浏览器拿flag, 首先访问ip/cookie.php,提示:See the http response 接着F12查看响应头 给你cyberp ...
- 从零开始的DIY智能家居 - 基于 ESP32 的智能光照传感器
前言 上周出差有点急,结果家里灯没关,开了整整一周的时间(T▽T),整个人都裂开了,准备做一个能够远程控制灯的东西,让我以后出差能远程把家里灯关了. 第一步就是做这期的主题 - 智能光照传感器,因为我 ...
- wpa_supplicant启动出错rfkill: Cannot open RFKILL control device
在板子是调试网络,千辛万苦把wpa_supplicant及其依赖都移植编译进来了,在板子上调试启动的时候启动报错了 D/wpa_supplicant( 1152): wpa_supplicant v2 ...
- shell 脚本静默安装oracle11g
以下脚本的手动安装连接: https://www.cnblogs.com/leihongnu/p/12698593.html [ #/bin/bash#安装日志touch /root/message ...
- Linux部署Apollo+.Net Core简单使用
Apollo官方网站非常详细,以下只是本人学习过程的整理 一.概念 Apollo(阿波罗)是一款可靠的分布式配置管理中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并 ...
- JMeter源码导入到Intellij IDEA (八)
亲测:jmeter源码导入Intellij IDEA,导入,编译,运行! 一.环境:windows10操作系统,jdk1.8,Intellij IDEA 2018.3,jmeter5.0 下载jmet ...
- jenkins 生成HTML报表,邮件推送
1.登录jenkins,系统管理=>插件管理 =>可选插件安装 安装成功: 2.打开任务,进入配置 3.添加构建后操作 4.配置页面 5.构建后report输出配置完成后点击立即构建,构建 ...
- Jenkins file一行代码部署.NET程序到K8S
什么是Jenkins共享库 随着微服务的增多,每个项目的都需要pipline文件,这样的话Pipeline代码冗余度高,并且pipeline的功能越来越复杂. jenkins可以使用Shared Li ...
- 如何系统学习C 语言(中)之 结构体篇
1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...
- opa gatekeeper笔记:AdmissionReview input.request请求对象结构
官方:https://v1-17.docs.kubernetes.io/zh/docs/reference/access-authn-authz/extensible-admission-contro ...