贡献

欢迎来到栅格项目。这就是我们的工作方式。

行为守则

首先:栅格项目有一个行为准则。请阅读u conduct.txt文件的代码,这对我们所有人都很重要。

权利

BSD许可证(见license.txt)适用于所有捐款。

发行惯例

栅格问题跟踪器用于可操作的问题。

有关安装、分发和使用的问题应提交给项目的 general discussion group . 属于这三类问题之一的开放性问题可能被敷衍性地关闭。

关于发展栅格、头脑风暴、征求意见和尚未付诸行动的建议的问题,欢迎在项目的 developers discussion group . 在Rasterio的Github回购协议中,尚未在那里进行社会化的问题可能被敷衍性地关闭。

栅格是一个相对较新的项目,非常活跃。我们有已知和未知的错误。

在创建新问题之前,请搜索已打开和已关闭的现有问题。

Rasterio使用C扩展模块,因此错误报告通常取决于以下细节:

  • 操作系统类型和版本(Windows?Ubuntu 12.04?14.04?)

  • 栅格的版本和来源(pypi,水蟒,或其他地方?)

  • gdal的版本和来源(Ubuntugis?自制?)

请提供这些细节以及追溯和相关日志。当使用 $ rio 可以使用启用CLI日志记录 $ rio -v 而冗长可以随着 -vvv . 演示这个问题的简短脚本和数据集特别有用!

设计原则

Rasterio的API与GDAL的API不同,这是有意的。

  • Rasterio是一个用于读取和写入栅格数据集的库。Rasterio使用gdal,但不是“gdal的python绑定”。

  • 与gdal的数据模型中的概念相比,Rasterio总是更喜欢python的内置协议和类型或numpy协议和类型。

  • Rasterio使I/O与其他操作分离。 rasterio.open() 是唯一对文件名和URI进行操作的库函数。 dataset.read()dataset.write() 和它们对应的掩码是执行I/O的方法。

  • 栅格的方法和功能应该没有副作用和隐藏的输入。这在实践中具有挑战性,因为gdal包含全局变量。

数据集对象

我们对允许对栅格数据进行读写访问的对象的术语是 数据集对象 . 数据集对象可能是 DatasetReaderDatasetWriter . 创建数据集对象的规范方法是使用 rasterio.open() 功能。

这类似于python对 file object .

Git惯例

我们使用集中工作流的变体,如 Git Book . 我们还没有Rasterio的1.0版本,我们正在从主分支进行标记和发布。我们的Post-1.0工作流程有待决定。

在mapbox/rasterio repo的新分支或分叉上的分支中处理功能。创建 GitHub pull request 当变更准备好审查时。我们建议尽早创建一个请求,给其他开发人员一个提示,并为有价值的早期反馈提供一个机会。

代码约定

这个 rasterio namespace contains both Python and C extension modules. All C extension modules are written using Cython . 赛通语是 Python 的超集。Cython文件以结尾 .pyx.pxd 我们把所有调用gdal的c函数的代码都保存在这里。

Rasterio在同一代码库中支持python 2和python 3,这有一个名为 compat.py. It functions similarly to the more widely known six 但是我们只使用了一小部分特性,因此它消除了依赖性。

我们强烈希望代码遵守 PEP8 .

新功能必须进行测试。我们使用 pytest .

我们希望对python模块进行100%的覆盖,但是对cython代码的覆盖是未来的目标 (#515 ②)

开发环境

开发Rasterio需要python 2.7或3.4之后(包括3.4)的任何最终版本。我们更喜欢使用最新版本的Python进行开发,但认识到这并非所有贡献者都能做到。还需要使用C编译器 existing protocols 用C或C++扩展Python。请参阅中的Windows安装说明 readme 有关在Windows上生成的详细信息。

初始设置

首先,克隆栅格 git 回购协议:

$ git clone https://github.com/mapbox/rasterio

开发应该发生在 virtual environment 更好地将开发工作与定制环境隔离开来。

在某些情况下,在虚拟环境中安装带有附带可执行文件的库会导致shell最初在环境外部查找可执行文件。如果发生这种情况,请尝试停用和重新激活环境。

安装GDAL

构建栅格需要gdal库及其头文件。我们目前没有针对Linux和OS X以外的任何平台的指导。

在Linux上,gdal及其头文件应该可以通过发行版的包管理器获得。对于Ubuntu,命令是:

$ sudo add-apt-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install gdal-bin libgdal-dev

在OS X上,自制是获得GDAL的可靠方法。

$ brew install gdal

python构建要求

使用Rasterio的构建需求提供virtualenv。罗塞里奥的 setup.py 除非安装了cython和numpy,否则脚本将不会运行,因此首先从rasterio repo目录执行此操作。

Linux用户可能需要安装一些额外的numpy依赖项:

$ sudo apt-get install libatlas-dev libatlas-base-dev gfortran

然后:

$ pip install -U pip
$ pip install -r requirements-dev.txt

安装栅格

Rasterio、其Cython扩展、普通依赖项和dev依赖项可以安装在 $ pip . 在开发时以可编辑模式安装栅格非常方便,但只影响python文件。指定 [test] 下面命令中的额外内容 $ pip 还要安装Rasterio的dev依赖项。

$ pip install -e .[test]

任何时候赛马 (.pyx.pxd )文件被编辑扩展模块需要重新编译,这是最容易实现的:

$ pip install -e .

在Python版本之间切换时,必须重新编译扩展模块,这可以用 $ touch rasterio/*.pyx 然后用上面的命令重新安装。如果不这样做,则表示对象 has the wrong size, try recompiling 提高了。

构建文档所需的依赖项可以安装为:

$ pip install -e .[docs]

运行测试

Rasterio的测试 tests <tests/> 一般与主包装布局相匹配。

要运行整个套件和代码覆盖率报告,请执行以下操作:

$ py.test --cov rasterio --cov-report term-missing

单个测试文件:

$ py.test tests/test_band.py

单个测试:

$ py.test tests/test_band.py::test_band