书籍和课程推荐

前言

本章中,会按照循序渐进的原则,推荐一些相关书单,有些书比较老了,但是一般够用,比如图解Http只讲到了Http1.1标准,但是Http2.0标准主要是性能提升,而且兼容1.1,问题不大。如果有啥问题,最好是去找找新版或者找找文档,有几本免费的书比较新,而且网络上更新,比较方便。

如果想看结论,直接跳到 小结 中。

非专业的书籍,主要是编程类的,我推荐阅读中文版,因为看起来快,咱不是计算机系的,不需要抠字眼,母语书籍看起来就是比原文快。当然如果你有时间,也可以看看原版,大部分推荐的翻译都还是可以的。

专业书籍可能有一些原版,因为有些确实没啥好的国内的版本,包括武大自己出版的一些,整体架构啥的都不是很上心,有些还不如前苏联的版本,但是俄文翻译的有些书确实太过时了,就不推荐了。你们应该也能感受到,地理信息系统那本虽然专业课上用的是武大的书,不过大部分应该是按照PPT来讲的,整个顺序架构不一样,因为书有些内容太少了,有些内容过时很久了...

推荐书籍只是参考,并不需要全看完,挑自己感兴趣的看,有些专业课上过了看看目录找自己感兴趣的看就行,有些书当工具书或者消遣看看就行,我是不建议把时间花在啃大部头上的,大部头全部弄懂就算是专家了,搞科研可以静下心来啃,想打工赚钱的,翻一下可以,当工具书查询也可以。

信息检索

把这个放第一位是因为,GIS实际上是一门依赖数据的科学,或者说技术,但是国内的课本上没有教去哪找数据,所以你们要学会自己去找数据,现在有gpt了会方便很多,不过很多还是要自己动脑子的,看一下专业作者写的搜索引擎的原理,能更好的去找到相关资源。

  1. 搜索引擎原理 :想速通的话看第一部分和最后一章就行了,大概知道搜索引擎咋工作的就行,如果不想看书,B站有视频: 搜索引擎技术——王树森

  2. 提问的智慧 :这篇文章也很有名,稍微看一下,看看如何更好的提问和定位问题。不管是做啥行业,都是记问之学,怎么问,也是门学问。

  3. 信息检索 :我知道哪怕贴出来也有好多人懒得看,所以我也总结过一版。但是最好还是认真看看上面的推荐,毕竟这算是别人的理解,不算原汁原味的东西。

编程

这里面主要介绍一些软件工程,C/C++/Ptyhon 相关的书。提及前端的内容不多,因为前端变化太快,各公司的技术栈也不尽相同,边学边干比直接看书要学的快。

软件工程

首先推荐阅读的是一些软件工程方面的书籍,这类书籍的代码都很少,主要是讲怎么干活的,比较贴近实际,大部分语言无关:

  1. 《构建之法(第三版)》 :没有任何代码,介绍软件工程的,哪怕还没学编程语言,没碰过计算机,也可以看看

  2. 《代码大全 第二版》 :适合刚学,想自己动手写点东西的时候看,看看实践中具体的需求

  3. 《程序员修炼之道(第2版)》 :适合动手后,看看这本书复盘,实际操作后才更能理解一些条条框框

  4. 《Google的软件工程》 :Google是怎么做的,主要是介绍了一个大公司的正规流程,可以更好的了解真正的项目与公司运作方式

  5. 《大话软件测试》 :这本书标题是测试,其实也算是软工,从需求分析讲起的,整个项目流程到最终测试交付都有,看完可以了解下真实的项目流程,当然,小公司可能并没有这么规范的流程,有新版,产品测试都可以看看。

编程语言学习

然后是编程语言入门,建议还是先入手 C 语言,毕竟 C 大类还是最基础的一类,很多人说 python 简单啊,现在 AI 都用 python 啊,真正干活的时候,大部分是C++,或者用js、ts,c#,Qt写界面,c++,java写处理逻辑。

c++ 标准现在大部分咱用的是部分 17 的功能,但是基本用起来还是 c with class,不会用特别高级的方案,不要怕。

Javascript 的话,自己看一下 js 入门和 es6 ,然后学习下 vue 或者 react ,找个框架,比如 element+ ,加上 leaflet/maptalkjs/openlayers 之类的地图库,自己从头搭建一个地图界面,跑一下看看,比看书要学得快,文档就是最好的老师。

GIS 并不需要特别牛逼的计算机技巧,也不是很追新,但是建议还是一步步学扎实,我推荐点书,希望大家能少走点弯路:

入门

入门是从零开始的意思,并不是说里面的内容简单,而是下面这些书从零开始,基本不需要特别多的基础知识。哪怕有基础,有些内容也可以读一下,比如 Crash Course 课程

  1. 《编码:隐匿在计算机软硬件背后的语言》 :这本从二进制开始讲,实际是个科普书,适合完全不懂的小白入门,不需要任何基础。 这本是科普书,如果时间紧,都开始找工作了,就跳过吧 ,有时间再慢慢看。这本书难度不高,但是说的还是很深入的,不算很薄,结构组织漂亮,语言通俗易懂。入门真的不错。

  2. Crash Course:Computer Science :这门计算机速成课是视频,讲的深入浅出,内容庞杂,如果真的想搞开发,可以刷一遍,产品测试之类的可以酌情看看,毕竟视频没看书费脑子。

  3. 《C语言程序设计》 :著名的K&R,薄,入门快,书很薄,如果有一些基础,比如至少会用Visual Studio,那这本书能用。这本其实不算特别好入门的,因为它真的就讲了C语言,其他编译链接什么的都没怎么讲,看完了可能还是完全不会动手,但是确实是很经典的书籍,有基础的可以看看这个,查漏补缺。

  4. 《C Primer Plus》 :这本讲的太细了,其实可以不用看的那么细,但是如果真的是啥都没接触过,可以看这本入门。还有个选择,就是找B站上

  5. C++导览 :稍微有点基础的,比如 C 语言考试及格了的,可以看这个入门 C++,如果什么基础都没有,看下面那本。

  6. 《C++程序设计(原理与实践基础篇原书第2版)》 :开始推荐的是 《c++ primer plus》,后来发现这本更适合一些,注意,不是《c++程序设计语言》! c++ 的书真的挺多的,这本很厚,不过很适合入门,至少是有不少示例的,而且没那么啰嗦。

  7. 《c++ primer plus》 :蓝白色的那本,不是红色(新的也是白的)的!我知道大部分推荐的是《c++ primer》,但是咱不是计算机系的,好些刚上大学都没碰过编程。啥都不懂的话,看这本入门,这本标准很低,c++11,确实很老,但是你得先入门,《c++ primer》 那些术语,还有书本结构,完全不适合新手看,看了基本就是21分钟从入门到放弃,先看这本,讲的细,但是先学会走才能跑。

  8. Learn X in Y Minutes :如果你只想半小时速成,那看这个好了,需要一些C的基础,这个是给一些有基础的同学看的,学过基础,想快速了解一些奇奇怪怪的语言,可以看看这个。

  9. Hello算法 :免费的算法教程,也是比较好的算法教程,整体架构清晰,学完一门语言后就可以看看这个了,大致了解一下常用的数据结构,常用的一些算法,做到心里有数就行,不一定要看算法导论那种大部头,一般人也看不完。

  10. 《Headfirst设计模式》 : 介绍设计模式的,简单易懂,比Hello算法还简单易懂,快的话一两天就看完了,很简单,设计模式用在实际工程中的时候其实需要注意的东西挺多,但是用这个入个门没啥大问题。

  11. 编程不难 :免费Python教程,我不推荐找本大部头或者报班学,因为没有目标,但是这本书定位明确,就是为了学python处理数据的,里面从环境安装说起,适合小白,而且也适合GIS中的栅格数据,如果你的目标是做学术,这本以及这一整个系列是值得看的,干活的话啥快用啥,py简单,环境配起来麻烦而且迁移难,自己做点研究的话确实挺好用。

  12. JavaScript 教程 :js的标准教程,可以看这个,也可以去 MDN 学一下,这个方便点,mdn 有时候要科学上网,感觉也没有这么系统,有些地方偏实用。

进阶

进阶的一些书其实挺杂的,有些也不一定算是很好的书,但是,至少都是当时对我有用的书籍:

  1. 《C++ API设计》 :这本是具体的实践,讲的都是些实际会碰到的问题,如何设计接口,如何具体实现,可以在干过些项目后,看看这个增长一些见识

  2. C语言接口与实现 :这本就是介绍 C 语言中各种老登写法,如何写有 C 味的程序,书有些老,写了很多数据结构实现,其中实现方式不一定是最佳的,但是代码结构和代码的写法很贴合实际,可以一读。

  3. 面向ArcGIS的Python脚本编程 :这本挺老的,但是基本还是这套玩意吧,如果觉得不够用,看看 Esri 文档。我不建议专门学 python,因为脚本都是用的,不是学的,学了后啥也干不了, arcpy 封装好了一大堆功能,开箱即用,可以学习 GIS 的矢量、栅格的处理,这本书确实挺老的,但是足够上手。

  4. OI Wiki :编程竞赛的网站,里面常见的数据结构,计算几何,图论等等算法都有,需要基础,先看hello算法,用到的时候再查查,比如凸包啊,三角剖分之类的。

  5. ES6入门教程 :现在最新是ES2023,可能我写完不知道又会刷新几个版本,但是ES6引入的东西最多,后面没有这么多,ES6是javascript的方言,所以必须学完了javascript再看看这个,不然会一脸懵逼。

  6. 现代 C++ 教程:高速上手 C++ 11/14/17/20 :看完了c++ primer plus就可以看看这本,进阶学习下,其实现在大部分标准是17,20好多没支持,别乱用。

高级

高级的意思是里面的知识比较高阶,不算是必要的知识。因此推荐的几本书可能读起来比进阶还要简单点,写的都比较通俗。

  1. 《程序是怎样跑起来的》 :这本虽然写的比较风趣,但是难度还是有的,建议至少上手过一整个项目后再看看,看看计算机怎么跑程序的,会解决你很多的疑问

  2. 《程序员的自我修养》 :编程学到最后总要学点编译原理啊什么的,这本比上本深入,不过也不难,也值得精读一下,了解下什么是链接,因为大部分时候我们用的都是IDE,至少要学会离开了IDE要咋办,这本大概看一遍就知道了

  3. 手撸解释器教程 :如何创建一门脚本语言的在线教程,对于解释器、编译器、JIT、VM 等等高阶内容都有介绍,感兴趣可以读下

数据库

这里就是普通的数据库,而非空间数据库,空间数据库在专业课里会专门写。数据库这块是基础,不管你是干啥的,这块都要打交道的,最好是理解理论,理论结合实际会让你干活更顺利。

  1. 课本:虽然有点无聊,但是够用,该讲的都讲了,有些不那么通俗,但是还是得学下理解下,因为你看其他专业书术语也差不多,视频推荐 哈工大数据库系统 战德臣 或者 数据库系统概论(王珊老师) 。数据库里一大堆概念和定义,我的建议是老老实实看书,看视频其实并没有那么有帮助。

  2. 《自己动手设计数据库》 :换了个说法的教科书,不那么无聊,但是内容差不多,但是不无聊就已经算是很优秀了,定义解释的也更通俗一些。

  3. 《数据密集型应用系统设计》非必要不用看 ,如果想专门走这条路可以看看。这玩意有点深,大部头,我没看...跟算法导论一样,是本好书,不过不是必须要看,当然,如果有时间可以看看,上学可比上班有时间多了。

网络

现在搞 GIS 最新方向基本跟网络和可视化分不开,搞不懂能用,但是搞得懂就可以用的更好。这里推荐的基本都是些简单易懂的书,我们不是 SA ,也不考啥相关的证,可以扫一眼下面相关书籍,理解即可。GIS 中用的最多的基本还是 HTTP 协议,关注最多的基本也就是应用层和传输层(OSI 七层模型或者 TCP/IP 四层都是这么叫,可以看看 一文彻底搞懂OSI七层模型和TCP/IP四层模型 )这两层的东西,建议主要关注这块东西。

  1. 网络是怎样连接的 :这本书名其实挺有欺骗性的,内容很专业,讲的也很深入,如果有时间的话,可以认真看看。咱们不是专业的,专业的啃那本《计算机网络》(不是自顶向下那本,那本主要是应用层的,其实也行,方便入门),能硬啃下来当 SA 也不是不行...

  2. 图解Http :如果不想看上面那本的话,至少要把这本稍微翻一下,因为不管是要做什么类型的开发,哪怕是产品,Http 都得懂一些,《Http权威指南》那本大部分人啃不动,看看这本,方便理解OGC的各种地图服务。

  3. 互联网是如何工作的 :MDN的专业文章,讲的比较细,图也比较多,更专业一些,如果完全不懂的话,看着会有些懵。

  4. 浏览器工作原理入门教程 :浏览器的工作原理,从联网到渲染的基础流程,这个就是网络是怎样连接的速通版本,当然,遗漏的知识点有点多,毕竟咱们是GIS,可以不计较。

GIS专业书籍

推荐一些专业书籍,可以自己找找电子书,练习一下信息检索能力。

GIS

  1. 《Introduction To Geographic-information-systems》:最新好像是第九版,可能有更新的,有这本可以把课本扔了,课本里有的这里面都有,还更详细,武大那本该有的都有,但是太粗了。这本讲的很细致,包括一部分栅格数据处理和TIN的处理,整体结构也更科学一些。如果你已经学完了专业课,也可以把这本当工具书用,基本处理这上面都有。这本书通读还是要挺久的,但是不算什么硬骨头,建议还是全部看一下。

  2. 《GIS Fundamentals: A First Text on Geographic Information Systems》:这本大部头更全面,包括坐标系,投影,地球椭球,制图,垂直参考系,RS,GNSS 之类的都讲了,基本上 3S 涉及到的知识点都有,练习也很多,代价是几乎比上一本厚了一倍,不过这本排版比较宽,也没有那么多字,其实读起来也还行。

  3. 地图投影 :我整理出来机翻的,这套东西图文并茂,公式推导虽然有,但是也挺简单的,如果课本里的上看不进去,可以看看这个。

  4. 《Map projections A working manual》:这本是正经介绍地图投影的,从概念,常用投影,投影历史,推导方式讲下去。

  5. 《Elementary Statistics For Geographers》:针对地理的基础统计,主要是讲统计方法的,讲可视化,采样,时间空间统计方式。

  6. Headfirst GDAL :我写的,gdal库简介,c++ 版本的,学 gis 搞开发必要掌握的技能之一。

  7. 《Designing Geodatabase: Case Studies in GIS Data Modeling Imagery and GIS》:这本算是练习册,有点老,能用,可看可不看

提示

其实 《Introduction To Geographic-information-systems》 《GIS Fundamentals: A First Text on Geographic Information Systems》 自选一本翻翻基本就够用了,课本内容安排有些不太够,PPT 各个学校侧重区别也有些大,毕竟也就那么点课时。地图投影得单独自己推一下,不然碰到问题解决起来还是挺麻烦的。

遥感

  1. 《遥感与图像解译》 ,其实课本也行,这本更好些,也是一样,遥感导论的课本太薄了,内容没讲透。

  2. 《数字图像处理》 :基本遥感用到的都是这里面的玩意,当工具书也行,吃透搞科研也行。

  3. NEWCOMERS EARTH OBSERVATION GUIDE:快速了解遥感数据,英文的自己翻译下就行了

备注

对,遥感这部分没啥好推荐的,权威的就这两本,课本也不是不行,可能会有些缺漏。

制图

  1. 课本,制图的课本还是挺好的,现在也没咋变,主要是制图不流行了。

  2. How To Lie With Maps:小册子,美帝写的,如果只是想了解一下的话这本很好,课本上有的这本都有,也包括一些稍微新一点的制图方法。

  3. Cartographic Relief Presentation:这本书很老了,讲的是如何制作浮雕效果,很棒的专业制图书籍

  4. Designing Better Maps: A Guide For Gis Users:这本讲的实际,而不是地图制图那种理论,包括图例设计字体选取什么的都讲到了,可以看看。全是图,也不算很厚。

  5. The Visual Display of Quantitative Information:讲符号化的,挺有用的。

  6. 视觉思维(审美直觉心理学):可视化毕竟是门艺术,如果想搞可视化,可以静下心来研究下这玩意,制图符号表达什么的,学点,反正不吃亏。

  7. Gis荟公众号:有很多公众号是卖数据的,不过这个主要教一些地图绘制,符号绘制技巧。

  8. 制图师协会论坛 :各种奇怪的制图技巧,可视化技巧交流。里面有很多古代、幻想、现代地图,可以学习各种制图知识。

  9. Cartography. The Definitive Guide to Making Maps :这本网上搞不到,淘宝好价的时候大概五百多。我买了,书确实还挺不错,全彩,但是排版有点像是CookBook,而非教程,全英文的,内容确实是很全面,虽然Esri推荐,但是不太适合学习,适合当成字典。

  10. Map Use: Reading, Analysis, Interpretation 这本可以翻翻电子版的,还好找,因为有kindle版,从读者的角度来讲解地图,而非制图者的角度,分析的角度不同看到的内容也就不同,可以跳着看下,作为课本的补充,因为这本书不算特别好,讲的特别基础,没有什么特别深入的东西,但是插图多,可以作为参照。

备注

制图其实现在主要是可视化,最重要的一个是准确,二是好看。最好是学点平面设计理论,然后回头再看看这块。

GNSS & 测绘

GNSS这块我不熟,但是用还是经常碰到,因此只从实际应用出发推荐:

  1. 《斑点牛的测绘师笔记》 :这本其实是注册测绘师的考试笔记。说实话,我没找到啥好的 GNSS 资料,但是至少测绘师笔记里的东西讲的很清楚详细,也算是能当教材用了,而且里面测绘部分比课本更注重实际运用,还能互补。

  2. GNSS算法学习系列教程 :CSDN上的有关rtk、GNSS的入门教程,微信公众号上有些付费的课,如果只是想了解基础的话免费的内容够学够用了,如果是急着学或者是刚好用到那就交点钱吧,讲的还是蛮细致的。

数学相关

  1. 计算几何:算法与应用 :邓俊辉译本,周培德那本也不是不行,图书馆借下看看,干活的时候用得上,想搞清楚原理的话可以看看。

  2. 矩阵力量 :遥感要用矩阵的,毕竟栅格就是矩阵,矩阵就是栅格,同一套的统计至简,数学要素也可以,有图的至少看起来没那么费脑子

  3. 数值分析 :有用,做学术也好做工程也好,需要拟合、插值、最优化等各种算法时,基础原理基本还是本书上的那些弯弯绕绕

  4. 微积分其实很容易 :著名教材《Calculus Made Easy》非官方中文版,一本易读的微积分入门小书,这东西总要学的。

计算机图形学

这个我们 GIS 要学的,还是最好学好的专业课,学好了路会更宽。计算机图形学其实还是计算机领域,变化挺快的,所以建议直接网上找点资料学,下面的资料算是比较新的,而且有些是纯理论,不会过时:

  1. Games 101 :这套课深入浅出,大佬讲课就是牛。三维里,计算机图形学是基础,因此尽量把这块学会。如果对游戏感兴趣,可以看看同系列的 Games 104 ,了解一下游戏引擎,里面的地形系统跟 GIS 里地形类似。

  2. learn openGL 中文版 :字面上的,学习 openGL ,包括环境搭建啥的,从基础学起。

  3. OpenGL ES教程: 详细介绍 OpenGLES,包括 glsl 语言的,虽然每家 shader 写法不一样,但是大差不差。

  4. The Book of Shaders:中文版的,OpenGL片段着色器教程,各种神奇的 shader 效果,就是从这些基础变化演化来的。

备注

这块是硬骨头,如果学不会,那就学不会吧,也不是啥硬性要求,但是学会了路更宽,不拘泥于 3S 。

地理

  1. 简化的奇幻地图设计指南 : 简单的理解一下地理就行,最快的就是这个速记版。

小结

我知道大部分人懒得看这么长,那么大致分一下类:

  • 通用: 《斑点牛的测绘师笔记》 ,几乎相当于一本通,主要注重测绘、遥感、 GIS 、 GNSS 等基础内容,其实更注重实践,通读以查漏补缺。

  • 开发: 《代码大全 第二版》 C++导览 《C++ API设计》 ,然后缺啥补啥。

  • 产品测试:《大话软件测试》《Crash Course:Computer Science》,然后缺啥补啥,比如遥感方面的,就去看《遥感与图像解译》,GIS方面就去看《Introduction To Geographic-information-systems》。

  • 制图:课本,《How To Lie With Maps》; 制图师协会论坛 ,然后多找点平面设计之类的书读一下。

  • 学术:多看论文,如果没入门,就根据专业看研究方向的入门,比如遥感,就直接看《遥感与图像解译》《数字图像处理》之类的。

看这些书重要的是查漏补缺,而不是浪费时间啃大部头做笔记啥的,学校里只要好好学了,到时候理论结合实际,用起来基本就能理解了,事教人,一遍会。