Я пытаюсь преобразовать данные 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
Я пытаюсь записать в сеткуданные в файл ESRI Ascii с использованием rasterio и драйвера AAIGrid.
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 десятичных знаков.Это делает файлы излишне большими и замедляет программы, использующие файлы в сетке.
Заголовочный файл ESRI Ascii и первые 2 значения:
ncols 3557
nrows 3796
xllcorner 765005.500000000000
yllcorner 9430016.000000000000
cellsize 0.500000000000
NODATA_value -9999
-0.029999999329447746277 -0.029999999329447746277
Я попытался изменить тип данных на float32 и добавиларгумент "точность = 2" для rasterio.open.Это способ, которым я могу уменьшить количество десятичных дробей?