迁移到Rasterio 1.0¶
affine.affine()与gdal样式的地理转换¶
在Rasterio 1.0的发展道路上,API最大的变化之一是对gdal风格的geotransforms的全面贬低,而支持 affine 类库。作为参考, affine.Affine()
看起来像:
affine.Affine(a, b, c,
d, e, f)
一个gdal地质转换看起来像:
(c, a, b, f, d, e)
从根本上讲,这两个结构提供了相同的信息,但是 Affine()
对象更有用。
以下是此功能的历史记录:
最初,函数
transform
参数需要gdal geotransform。介绍 affine 库涉及创建临时
affine
的参数rasterio.open()
和Asrc.affine
属性。用户可以通过Affine()
到affine
或transform
,但传递给transform
将发出折旧警告。src.transform
仍然是gdal geotransform,但发出了警告。用户被指向src.affine
在过渡阶段。由于上述更改,已将多个函数添加到接受
transform
参数。而不是添加affine
每个人的论点transform
参数可以是Affine()
对象或gdal geotransform,后者发出相同的拒绝警告。
最初的计划是移除 affine
argument + property, and assume that the object passed to transform
is an Affine()
. However, after further discussion 后来决定 Affine()
gdal geotransforms都是6个元素元组,用户可能会遇到无法解释的错误和输出,因此会引发异常以更好地突出显示错误。
1.0b1之前:
rasterio.open()
仍将接受affine
和transform
但是前者现在发出了一个反预测警告,后者如果没有收到Affine()
.如果
rasterio.open()
同时接收affine
和transform
发出警告并transform
使用。src.affine
仍然存在,但会发出一个折旧警告。src.transform
返回一个Affine()
.所有其他栅格功能
transform
参数现在在接收到gdal geotransform时引发异常。
售票处¶
#86 -宣布从gdal geotransforms向
Affine()
.#763 -迁移的实施和一些进一步的讨论。
从1.0b1开始:
在
rasterio.open
“affine”将不再是transform关键字参数的别名。数据集对象将不再具有仿射属性。
transform关键字参数和属性始终是
Affine
班级。
I/O操作¶
与读取带区数据和数据集掩码相关的方法在1.0中发生了更改。
从1.0b1版开始,不再有 read_mask
方法,仅 read_masks
. 当数据集的格式允许时,可以在读写“w+”模式下打开数据集;当从“w”模式下打开的数据集读取带区数据或掩码时,将发出警告。
从1.0.0开始,“w”模式将变为只写模式,禁止从“w”中打开的数据集读取数据或屏蔽。
已弃用: rasterio.drivers()
¶
以前,用户可以注册gdal的驱动程序,并打开数据源:
import rasterio
with rasterio.drivers():
with rasterio.open('tests/data/RGB.byte.tif') as src:
pass
但是Rasterio1.0包含了更多与gdal环境的交互,所以 rasterio.drivers()
已替换为:
import rasterio
import rasterio.env
with rasterio.Env():
with rasterio.open('tests/data/RGB.byte.tif') as src:
pass
售票处¶
#665 -折旧
rasterio.drivers()
以及介绍rasterio.Env()
.
远离的: src.read_band()
¶
这个 read_band()
方法已被替换为 read()
,允许更快的I/O,并将多个频段读取为一个频段 numpy.ndarray()
.
例如:
import numpy as np
import rasterio
with rasterio.open('tests/data/RGB.byte.tif') as src:
data = np.array(map(src.read_band, (1, 2, 3)))
band1 = src.read_band(1)
现在是:
import rasterio
with rasterio.open('tests/data/RGB.byte.tif') as src:
data = src.read((1, 2, 3))
band1 = src.read(1)
已移动:用于处理数据集窗口的函数¶
顶层的几个功能 rasterio
用于处理数据集窗口的命名空间已移动到 rasterio.windows.*
:
rasterio.get_data_window()
rasterio.window_union()
rasterio.window_intersection()
rasterio.windows_intersect()
感动: rasterio.tool
¶
此模块已完全删除,其内容已移动到几个不同的位置:
rasterio.tool.show() -> rasterio.plot.show()
rasterio.tool.show_hist() -> rasterio.plot.show_hist()
rasterio.tool.stats() -> rasterio.rio.insp.stats()
rasterio.tool.main() -> rasterio.rio.insp.main()
感动: rasterio.tools
¶
此模块已完全删除,其内容已移动到几个不同的位置:
rasterio.tools.mask.mask() -> rasterio.mask.mask()
rasterio.tools.merge.merge() -> rasterio.merge.merge()
远离的: rasterio.warp.RESAMPLING
¶
此枚举已被替换为 rasterio.warp.Resampling
.
已删除:数据集的 ul()
方法¶
此方法已被替换为 xy()
方法。
签名更改¶
对于两者 rasterio.features.sieve()
和 rasterio.features.rasterize()
这个 output
参数已替换为 out
. 以前的使用 output
发出了折旧警告。
数据集属性集的取消预测_ * and get_* 方法¶
方法get_crs、set_crs、set_nodatavals、set_descriptions、set_units和set_gcps已弃用,将在1.0版中删除。它们已被完全可设置的数据集属性替换 crs , nodatavals , descriptions , units 和 gcps .
在单位和描述的情况下,设置“波段”单位和“设置波段”描述方法仍然支持rio edit info命令。
创建选项¶
Rasterio不再将数据集创建选项保存到已创建数据集的元数据中,并将忽略从1.0版开始的此类元数据。用户可以通过在其环境中设置rio_ignore_creation_kwds=true来选择此选项。