广大普通学校GIS专业学生,如果继续在GIS方向发展,而且走开发路线,结合我这几年面试以及带应届毕业生的经验,学习路线我有这几个方面的建议,仅供参考:
1.大一的时候要学好高数、线性代数和概率论,这是基础学科,不要以为很难很枯燥,学好后对你以后学习其他工程学科有很大帮助,因为很多工程学科,如地理信息系统,图形学等,很多公式、原理都来源于它们。就举个例子,图形学的矩阵变换,和线性代数相关性相当大;比如FFT(快速傅利叶变换),就是高数里面傅利叶变换的变形,没有这些基础,对于以后开发会遇到很大困难。
2.数据结构、数据库等,前面的高数、线性代数、概率论毕竟属于基础学科,和编程关系不大,数据结构和编程关系很大,老师一般会采用C语音来进行教学,对于初学计算机的同学,入门难度的确大了点。但是要清楚的是,编程毕竟只是工具,对于工具,古人有云:无它,唯手熟尔。这放在编程上也适合,大量的编程,自己头脑中就慢慢形成了编程思维,很多同学觉得编程多没意思,黑乎乎的界面,黑乎乎的运行结果框,没有游戏画面来的刺激。在编程上投入的时间多寡,编程差距慢慢就体现出来了。数据结构和C/C++语言是编程的基础,学好了C/C++语言,学JS、Java等都相对容易。
3.GIS专业课,很多同学觉得GIS专业课很枯燥,各种的公式推算,以及ArcGIS等软件的操作,这些在工作中用到的的确不多,但是学好后,在遇到关键性难点Bug的时候,优势就体现出来了,这也是你学习的价值体现。比如淹没分析算法,非专业和专业同学在算法的实现上,计算结果和误差精度上是有差距的,这是对算法理解上的差距。
4.打基础到一定阶段后,就可以自学上层的应用,可以扩展JavaScript、Java、C++等编程语言,自学很多都要自己一个人做,遇到了问题很多时候都要自己琢磨,耗费时间和精力,远远没有玩游戏来的爽啊,但是遇到问题,解决问题的过程,就是你积累经验的过程,你拿一本经验书看完了就看完了,没有实践,你也不会感同身受,过阵子就忘了,你实践后,获得的才是自己的。我可以拿举个例子,后台写个数据转换发布服务,将一个3857投影的shp数据转成4326坐标系的geojson文件并进行发布,前端使用Cesium接入这个发布的数据进行显示,并设置这个geojson的线色、线宽等风格。这里面涉及到了Java后台服务开发,前端开发,也涉及到了大量的GIS专业知识点,如果花半个学期把这个系统能正常调试通,你会收获很多。
5.打通了上层应用流程后,下一步,你需要做的是大量的去做不同方向的应用,这其实是你应用所学知识进行编程开发,并积累开发经验的一个过程。我这里给出几个方向,比如数据管理发布,再结合前端做预览,这个偏向于后台开发,涉及到Java框架使用、数据库的使用等;比如数据处理,将一副影像切成瓦片,发布成标准的OGC服务,前端接入显示,将一副DEM数据切成地形瓦片并发布成OGC服务,前端接入地形并结合影像进行地形可视化展示。大量的做应用DEMO一方面熟悉各种GIS相关的框架,比如Cesium,OpenLayer,MapBox,GDAL,ThreeJS,后端的SpringBoot等框架,,另一方面,掌握了大量工具软件的使用,知道哪种工具做这件事情最快,很多同学只熟悉ArcGIS操作,觉得ArcGIS无所不能最厉害了,殊不知Global Mapper等软件在数据支持、界面操作和处理效率上更胜一筹。比如Tomcat和Nginx,知道使用后你就进行静态代理发布的时候,你的前端网页,静态数据,都能使用工具进行发布,具体哪个好用,只有用过后才知道,这对你以后提高开发效率好处很大。
其实还有很多想说的,在这里不再展开,等以后再开一篇进行叙述。我觉得马克思主义理论中的部分观点很适用工程学科:实践是检验真理的唯一标准。理论是实践的基础,反过来实践对理论具有指导作用,同学们可以在学习马克思主义的时候,结合自己所学的专业学科方向进行思考,并进行各个方向的编程探索,就会深深认同马克思主义的理论。