贡献¶
欢迎来到栅格项目。这就是我们的工作方式。
行为守则¶
首先:栅格项目有一个行为准则。请阅读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包含全局变量。
数据集对象¶
我们对允许对栅格数据进行读写访问的对象的术语是 数据集对象 . 数据集对象可能是 DatasetReader 或 DatasetWriter . 创建数据集对象的规范方法是使用 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