Извлечение конкретной информации netcdf и преобразование в GeoTIFF в Python

Я пытаюсь извлечь определенный набор данных из файла netCDF, а затем преобразовать эти данные в GeoTIFF.

Пока мне удалось извлечь данные, которые я хочу, используя netCDF4, все данные в файле хранятся в виде 1d-массивов (lat, lon, данные, которые я хочу) и назначить их 2d-массиву. Файл netcdf, с которым я работаю, относится к определенному региону. Отсюда, однако, я в растерянности.

У меня есть небольшое представление о том, как работает преобразование geotiff, из того, что я прочитал по этим ссылкам:

https://borealperspectives.wordpress.com/2014/01/16/data-type-mapping-when-using-pythongdal-to-write-numpy-arrays-to-geotiff/

http://adventuresindevelopment.blogspot.co.uk/2008/12/create-geotiff-with-python-and-gdal.html.

А вот что у меня сейчас:

import netCDF4
import numpy as np
from osgeo import gdal
from osgeo import osr

#Reading in data from files and extracting said data
ncfile = netCDF4.Dataset("data.nc", 'r') 
dataw = ncfile.variables["dataw"][:]
lat = ncfile.variables["Latitude"][:]
long = ncfile.variables["Longitude"][:]


n = len(dataw)
x = np.zeros((n,3), float)

x[:,0] = long[:]
x[:,1] = lat[:]
x[:,2] = dataw[:]

nx = len(long)
ny = len(lat)
xmin, ymin, xmax, ymax = [long.min(), lat.min(), long.max(), lat.max()]
xres = (xmax - xmin) / float(nx)
yres = (ymax - ymin) / float(ny)
geotransform = (xmin, xres, 0, ymax, 0, -yres)

#Creates 1 raster band file
dst_ds = gdal.GetDriverByName('GTiff').Create('myGeoTIFF.tif', ny, nx, 1, gdal.GDT_Float32)

dst_ds.SetGeoTransform(geotransform)    # specify coords
srs = osr.SpatialReference()            # establish encoding
srs.ImportFromEPSG(3857)                # WGS84 lat/long
dst_ds.SetProjection(srs.ExportToWkt()) # export coords to file
dst_ds.GetRasterBand(1).WriteArray(x)   # write r-band to the raster
dst_ds.FlushCache()                     # write to disk
dst_ds = None                           # save, close

Процесс создания геотифа, описанный выше, в основном я почерпнул отсюда:

Как написать / создать GeoTIFF Файл изображения RGB на Python?

Я попытался сделать это, исходя из понимания того, что массив, который я хочу записать в растр, представляет собой двумерный массив с 3 столбцами, 2 коордами и 1 данными. Мой результат, который я проверяю с помощью оснастки, - это черная страница с белой линией вдоль левой стороны.

Итак, мой вопрос таков:

Как я могу извлечь необходимые данные геотрансформации из моего файла netcdf, соответствующим образом настроить параметры геотрансформации и впоследствии использовать извлеченные массивы lat long + dataw для записи в файл geotiff?


person cd123    schedule 06.04.2017    source источник
comment
Удалось ли вам когда-нибудь это сделать? Вроде же нужно здесь.   -  person johnny    schedule 24.08.2018


Ответы (1)


Попробуйте использовать командную строку gdal_translate для преобразования в файл geotiff

gdal_translate NETCDF:"<filename.nc>":<varible name> <required_file>.tif
person Shreya Gupta    schedule 15.08.2020