将netcdf转换为图像

时间:2012-01-14 19:03:12

标签: python netcdf

我有一个netcdf文件,我想使用命令行工具将其转换为图像(joed,png,gif)。

是否有人可以帮助我使用图书馆名称,并可能链接到它如何完成。

此致 大卫

7 个答案:

答案 0 :(得分:11)

其他人已经提到了ArcGIS,IDL和Matlab的商业解决方案,但是这里有一种方法可以使用Python,使用netCDF4模块读取netcdf文件,使用matplotlib来创建图像。 netCDF4模块将读取NetCDF3,NetCDF4文件,还读取通过OPeNDAP服务提供的远程NetCDF(或其他文件)。下面我使用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

答案 1 :(得分:2)

以下是操作NetCDF的官方软件列表。

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

如果有任何东西可能存在。但如果你有兴趣,我会就这个问题发表一些评论。

您使用的是什么平台? Linux,Windows等?无论答案是什么,我认为答案是你将努力寻找一个命令行工具而不用自己创建它。

使用Java或Python以及一些GDAL库等创建内容可能相对容易。我已经使用ArcGIS做了类似的事情,但是它不是命令行,因为这很难实现。

您将面临的部分问题是,在使用命令行时,您需要获得有关如何手动导出设置的其他信息,但此信息不适合非GUI环境。

诸如灰度或颜色之类的问题。如果颜色因为这些颜色需要定义。假设我们使用蓝色到红色渐变然后是红色高值或低值。如何将颜色分配给值。它是渐进的还是会逐步的,例如值0 - 10对应单色,然后10 - 20对应另一种颜色。

这不是命令行,但'NcView'可能适合你。

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

答案 2 :(得分:1)

可以使用我的新软件包ncplot(可通过pypi或c​​onda-forge获得)来完成此操作。它既可以用作命令行工具,也可以在Python中使用,并将从NetCDF文件生成交互式绘图。

在命令行上执行以下操作:

ncplot infile.nc

在Python中(最好在Jupyter笔记本中)。只需执行以下操作:

from ncplot import ncplot
ncplot("infile.nc")

答案 3 :(得分:0)

IDV是NetCDF的一个很好的可视化工具,但据我所知,没有命令行界面。

我会推荐Matlab。它具有NetCDF的读写功能以及广泛的绘图库......可能是最好的之一。然后,您可以编译matlab代码并从命令行运行它。

答案 4 :(得分:0)

这可能有所帮助:

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

这里有一些例子: web.ics.purdue.edu/~ecalais/teaching/gmt/GMT_6.pdf

答案 5 :(得分:0)

GDAL可以执行此操作,您可以通过多种方式控制输出调色板,rgdal包为其中一些提供R接口。

R支持读取NetCDF文件并通过许多提供的包写入图像文件,即ncdfRNetCDFncdf4

答案 6 :(得分:0)

如果您希望使用命令行工具来生成简单图而无需进行任何编码,则可以使用

1。 ncview

ncview file.nc 

它可以生成带有“打印到文件”的ps图,但是由于不包括颜色条图例,它并不是很有用

2。全景

第二种点击方法是使用

panoply 

可在此处使用:https://www.giss.nasa.gov/tools/panoply/

3。 CDO

第三种方法是从命令行使用CDO(但请确保已使用MAGICS ++支持对其进行了编译)。

例如,您可以使用以下命令在netcdf文件中制作简单的PNG数据映射:

cdo shaded,device="png" in.nc plot

它将提供一个名为“ plot_variablename.png”的文件

在此处查看文档:{​​{3}}