迁移到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来选择此选项。