我有一个 netcdf 文件,我想使用命令行工具将其转换为图像(joed、png、gif)。
有人可以帮我提供图书馆名称,并可能提供一个链接到它是如何完成的。
问候大卫
其他人提到了使用 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)
生成此图像:
这是用于操作 NetCDF 的官方软件列表。
http://www.unidata.ucar.edu/software/netcdf/software.html
如果有任何东西,它可能就在那里。但是,如果您有兴趣,我对这个主题有一些评论。
你用的是什么平台?Linux、Windows 等?无论答案是什么,我认为答案是您将很难找到一个命令行工具,而无需自己创建它。
使用 Java 或 Python 以及一些 GDAL 库等创建东西可能相对容易。如果你有这个,我用 ArcGIS 做了类似的事情,但它不是命令行,因为这很难实现。
您将面临的部分问题是,在使用命令行时,您需要事先了解有关如何导出设置的附加信息,但这些信息不适用于非 GUI 环境。
诸如它将是灰度还是彩色的问题。If color 需要定义哪些颜色,因为这些颜色将需要定义。假设我们使用蓝色到红色的颜色渐变,那么红色是高值还是低值。如何将颜色分配给值。它是渐变的还是阶梯式的,例如值 0 - 10 对应于单一颜色,然后 10 - 20 对应于另一种颜色。
它不是命令行,但“NcView”可能对您有用。
这可以使用我的新包 ncplot(可通过 pypi 或 conda-forge 获得)来完成。它既可以作为命令行工具,也可以在 Python 中使用,并将从 NetCDF 文件生成交互式绘图。
在命令行上只需执行以下操作:
ncplot infile.nc
在 Python 中(最好在 Jupyter 笔记本中)。只需执行以下操作:
from ncplot import ncplot
ncplot("infile.nc")
这可能会有所帮助:
http://gmt.soest.hawaii.edu/gmt/html/man/grdimage.html
这里有一些例子:web.ics.purdue.edu/~ecalais/teaching/gmt/GMT_6.pdf
IDV 是一个很好的 NetCDF 可视化工具,但据我所知,没有命令行界面。
我会推荐Matlab。它具有 NetCDF 的读写功能以及广泛的绘图库......可能是最好的之一。然后,您可以编译 matlab 代码并从命令行运行它。
如果您想要一个命令行工具来生成一个简单的绘图而不需要进行任何编码,那么有
1.ncview
ncview file.nc
它可以生成带有“打印到文件”的 ps 图,但它不是很有帮助,因为不包括颜色条图例
2. 全面
第二种点击方法是使用
panoply
可在此处获得:https ://www.giss.nasa.gov/tools/panoply/
3. 首席数字官
第三种方法是从命令行使用 CDO,(但请确保您已在包含 MAGICS++ 支持的情况下对其进行编译)。
例如,您可以使用以下命令在 netcdf 文件中制作简单的 PNG 数据映射:
cdo shaded,device="png" in.nc plot
这将提供一个名为“plot_variablename.png”的文件
请参阅此处的文档:https ://code.mpimet.mpg.de/projects/cdo/wiki/Tutorial#Plotting