光栅浮点精度

时间:2018-09-30 07:50:47

标签: python gdal rasterio

我正在尝试使用rasterio将xyz数据转换为栅格网格

我已将高程数据加载到numpy数组中,z值的精度为2个小数,并且该数组的dtype为float64。

在加载xyz数据并将高程数据放入网格之后,数组zi在数组中具有以下属性和示例值:

[in]  zi.shape 
[out] (3796, 3557)

[in]  zi.dtype
[out] dtype('float64')

[in]  zi[1000,1000]
[out] -5.27

我正在尝试使用rasterio和AAIGrid驱动程序将网格化数据写入ESRI Ascii文件。

import rasterio
from rasterio.transform import from_origin
from fiona.crs import from_epsg

transform = from_origin(xmin, ymax, 0.5, 0.5)

new_dataset = rasterio.open('test1.asc', 'w', driver='AAIGrid',
                        height = zi.shape[0], width = zi.shape[1],
                        count=1, dtype=str(zi.dtype)
                        crs=from_epsg(32750),
                        transform=transform,
                        nodata = -9999)

new_dataset.write(zi, 1)
new_dataset.close()

z网格已成功写入ESRI Ascii文件,现在值的“精度”为19位小数。这样会使文件不必要地变大,并减慢使用网格文件的程序的速度。

Header ESRI Ascii文件和前两个值:

ncols        3557
nrows        3796
xllcorner    765005.500000000000
yllcorner    9430016.000000000000
cellsize     0.500000000000
NODATA_value -9999
-0.029999999329447746277 -0.029999999329447746277

我尝试将数据类型更改为float32,并将参数“ precision = 2”添加到rasterio.open。他们是我可以减少小数位数的一种方法吗?

0 个答案:

没有答案