【开源GIS】如何高效地学习GIS开源项目?一上来就读源码你就输了!

🔥前言

都知开源好,只看源码看不懂,是俺太菜了?no no no,是方法不对而已~跟着下面的步骤,带你上手常见的GIS开源项目!


Step 1: 熟悉项目

什么是开源项目?
    项目源代码开放,使用、修改和发行需遵守开源协议。

README 文件
    这边会有关于项目的介绍,了解下该项目的使用场景和优点。
在这里插入图片描述

开源 License:
    README 旁边一般会有个License,标记这个项目的开源协议,使用的时候要遵守该协议噢,当然也不排除有些是假开源(代码开源,但是版权自有,注意区别!)
在这里插入图片描述

Leaflet
    git: https://github.com/Leaflet/Leaflet
    官方网站: https://leafletjs.com/
    License: BSD 2-Clause

Openlayers
    git: https://github.com/openlayers/openlayers
    官方网站: https://openlayers.org/
    License: BSD 2-Clause

MapboxGL
    git: https://github.com/mapbox/mapbox-gl-js
    官方网站: https://www.mapbox.com/mapbox-gljs
    License: v2.0: Mapbox TOS (不算开源); v1.13 及以下:BSD-3-Clause

Cesium
    git: https://github.com/CesiumGS/cesium
    官方网站: https://cesium.com/
    License: Apache-2.0

QGIS
    git: https://github.com/qgis/QGIS
    官方网站: https://www.qgis.org/
    License: GPL-2.0

GeoTools
    git: https://github.com/geotools/geotools
    官方网站: https://www.geotools.org/
    License: LGPL-2.1

PostgreSQL
    git: https://github.com/postgres/postgres
    官方网站: https://www.postgresql.org/
    License: PostgreSQL Global Development Group (也不算真正的开源)


Step 2: Hello world

一般官方上都会有 Getting started,告诉你怎么下载,怎么快速上手,跟着它慢慢做,一开始就成就感满满,更有动力去进行接下来的学习!

    Leaflet
    OpenLayers
    Cesium


Step 3: 深入了解和使用

一般的开源项目为了推广和方便使用,官网都有类似 Tutorials, API documentation, Examples 的版块,跟着学习并码起来吧~


Step 4: 可以看源码了!

“不要一上来就去看源码,而是要基本掌握了功能、原理、关键设计之后再去看源码,看源码的主要目的是为了学习其代码的写作方式,以及关键技术的实现。”

看源码也有技巧,先看源码目录,知道每个文件夹里放的是关于哪方面的;然后可以从一个小点入手,顺藤摸瓜,牵扯出一大堆,这样的好处是你不仅认识了这个方法,还知道了关联方法,以及具体的使用。(人脑很奇怪,记的越多,记得越牢!)

下面看一下软件的代码是由哪些部分构成的:

1、接口抽象定义。任何代码都会有很多接口或抽象定义,其描述了代码需要处理的数据结构或者业务实体,以及它们之间的关系,需要理清楚这些关系。

2、模块粘合层。代码有很多都是用来粘合的,比如中间件(middleware)、Promises 模式、回调(Callback)、代理委托、依赖注入等。这部分比较利于框架层次的学习,根据需要进行学习掌握。

3、业务流程。这是代码运行的过程。一开始,我们不要进入细节,但需要在高层搞清楚整个业务的流程是什么样的,在这个流程中,数据是怎么被传递和处理的。一般来说,我们需要画程序流程图或者时序处理图。

4、具体实现

  • 代码逻辑。代码有两种逻辑,一种是业务逻辑,这种逻辑是真正的业务处理逻辑;另一种是控制逻辑,这种逻辑只是用控制程序流转的。
  • 出错处理。这部分可忽略。
  • 数据处理。这部分也可忽略。
  • 重要的算法。这部分往往是最难也是最有技术含量的部分,需要静下心来慢慢啃。
  • 底层交互。这部分也可忽略。

5、运行时调试。在关键处用日志或debug 设置断点跟踪,让代码运行进来,然后实际看一下代码的运行过程。


Step 5: API 二次封装

“I Hear and I Forget, I See and I Remember, I Do and I Understand.”

会看会用不算什么,能改才是王道。可以在之前深入学习的基础上,修改修改参数,根据需求封装自己的API,建立自己/部门/公司的实用工具库!


Step 6: 持续关注和学习

一般项目会持续更新版本,fix之前的一些bug,增加新的内容,要持续关注学习呢!


参考:
https://time.geekbang.org/column/article/186778
https://www.cnblogs.com/makemylife/p/16537648.html
https://oschina.gitee.io/opensource-guide/guide/
https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e5%b7%a6%e8%80%b3%e5%90%ac%e9%a3%8e/098%20%20%e9%ab%98%e6%95%88%e5%ad%a6%e4%b9%a0%ef%bc%9a%e5%a6%82%e4%bd%95%e5%ad%a6%e4%b9%a0%e5%92%8c%e9%98%85%e8%af%bb%e4%bb%a3%e7%a0%81.md

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值