Конвертировать netcdf в изображение - PullRequest
3 голосов
/ 14 января 2012

У меня есть файл netcdf, который я хотел бы преобразовать в изображение (joed, png, gif) с помощью инструмента командной строки.

Может кто-нибудь помочь мне с именем библиотеки и, возможно, ссылкой на то, как это делается.

С уважением David

Ответы [ 5 ]

11 голосов
/ 08 февраля 2013

Другие упоминали коммерческие решения с ArcGIS, IDL и Matlab, но вот один из способов сделать это с помощью Python, используя модуль netCDF4 для чтения файла netcdf и matplotlib для создания образа. Модуль netCDF4 будет считывать как файлы NetCDF3, так и файлы NetCDF4, а также считывать удаленные файлы NetCDF (или другие файлы), обслуживаемые через службу OPeNDAP. Ниже я читаю данные топографии, используя сервис OPeNDAP, поэтому вы сможете запускать программу без изменений. Модуль netCDF4 может быть немного сложен для сборки, но он включен в дистрибутивы Python (x, y), Enthought Canopy и Continuum Anaconda.

import matplotlib.pyplot as plt
import netCDF4

# open a local NetCDF file or remote OPeNDAP URL
url = 'http://www.ngdc.noaa.gov/thredds/dodsC/relief/ETOPO1/thredds/ETOPO1_Bed_g_gmt4.nc'
nc = netCDF4.Dataset(url)

# examine the variables
print nc.variables.keys()
print nc.variables['z']

# sample every 10th point of the 'z' variable
topo = nc.variables['z'][::10,::10]

# make image
plt.figure(figsize=(10,10))
plt.imshow(topo,origin='lower') 
plt.title(nc.title)
plt.savefig('image.png', bbox_inches=0)

, который производит это изображение: enter image description here

2 голосов
/ 20 января 2012

Вот официальный список программ для манипулирования NetCDF.

http://www.unidata.ucar.edu/software/netcdf/software.html

Если есть что-то, то оно, вероятно, есть. Но у меня есть пара комментариев на эту тему, если вам интересно.

Какую платформу вы используете? Linux, Windows и т. Д.? Какой бы ответ я ни думал, вы будете изо всех сил пытаться найти инструмент командной строки, не создавая его самостоятельно.

Вероятно, относительно легко создать что-либо, используя Java или Python и некоторые библиотеки GDAL или тому подобное. Я сделал что-то похожее, используя ArcGIS, если у вас это есть, но это не командная строка, потому что этого довольно трудно достичь.

Часть проблемы, с которой вы столкнетесь, заключается в том, что при использовании командной строки вам понадобится дополнительная информация о том, как она экспортируется, перед установкой, но эта информация не подходит для среды без графического интерфейса.

Такие вопросы, как это будет серая шкала или цвет. Если цвет, какие цвета, потому что они должны быть определены. Скажем, мы используем синий цвет для красного цвета, а красный - это высокое или низкое значение. Как цвет будет назначен значениям? Будет ли это постепенным или будет ступенчатым, например значения 0 - 10 соответствуют одному цвету, а 10 - 20 другому цвету.

Это не командная строка, но «NcView» может работать для вас.

http://meteora.ucsd.edu/~pierce/ncview_home_page.html

0 голосов
/ 23 мая 2012

GDAL может сделать это, и вы можете управлять выходными цветовыми палитрами различными способами, а пакет rgdal предоставляет интерфейс R для некоторых из них.

R поддерживает чтение файлов NetCDF и запись в файлы изображений с помощью ряда пакетов, а именно ncdf, RNetCDF и ncdf4.

0 голосов
/ 17 апреля 2012

это может помочь:

http://gmt.soest.hawaii.edu/gmt/html/man/grdimage.html

вот несколько примеров: web.ics.purdue.edu/~ecalais/teaching/gmt/GMT_6.pdf

0 голосов
/ 28 февраля 2012

IDV - хороший инструмент визуализации для NetCDF, но, насколько мне известно, интерфейса командной строки нет.

Я бы порекомендовал Matlab. Он имеет функции чтения и записи для NetCDF, а также обширную библиотеку графиков ... вероятно, одну из лучших. Затем вы можете скомпилировать код Matlab и запустить его из командной строки.

...