rasterio变换和仿射

时间:2016-08-17 16:46:18

标签: python rasterio

我试图做一些基本的图像过滤。我已经从rasterio cookbook中逐字逐句摘录(我从中值滤波器输出中删除了.astype())。问题是我的输入和输出栅格应该具有相同的范围,但不是。输入和输出的变换和仿射是不同的。这是预期的行为吗?我是否需要对仿射进行某些操作并进行转换以使输出与输入相同?

Python 2.7.11 | Anaconda 4.0.0(64位)| (默认,2016年2月16日,09:58:36)[MSC v.1500 64位(AMD64)]在win32上

rasterio == 0.36.0

import rasterio
from scipy.signal import medfilt

path = "map.tif"
output = "map2.tif"

with rasterio.open(path) as src:
    array = src.read()
    profile = src.profile

# apply a 5x5 median filter to each band
filtered = medfilt(array, (1, 5, 5))

# Write to tif, using the same profile as the source
with rasterio.open(output, 'w', **profile) as dst:
    dst.write(filtered)

    print profile
    print dst.profile

>>> {'count': 1, 'crs': CRS({'init': u'epsg:3857'}), 'interleave': 'band', 'dtype': 'float64', 'affine': Affine(100.0, 0.0, -13250000.0, 0.0, 100.0, 3980000.0), 'driver': u'GTiff', 'transform': (-13250000.0, 100.0, 0.0, 3980000.0, 0.0, 100.0), 'height': 1700, 'width': 1700, 'tiled': False, 'nodata': None}
>>> {'count': 1, 'crs': CRS({'init': u'epsg:3857'}), u'interleave': 'band', 'dtype': 'float64', 'affine': Affine(-13250000.0, 100.0, 0.0, 3980000.0, 0.0, 100.0), 'driver': u'GTiff', 'transform': (0.0, -13250000.0, 100.0, 100.0, 3980000.0, 0.0), 'height': 1700, 'width': 1700, u'tiled': False, 'nodata': None}

1 个答案:

答案 0 :(得分:1)

rasterio文档包含您可能会觉得有用的history affine/transform usage。我曾经有过如下几行来处理这个问题:

ol.style.Circle#setRadius

我认为这就是必要的。