Simon,
After taking a look at your zos_*.nc file, I believe the problem is that the
bounds variables (specifically lon_vertices and lat_vertices) are incorrect and
causing malformed cells. The proper format for these variables according to
the CF convention is documented here –
http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/ch07.html#cell-boundaries
– under "Bounds for 2-D coordinate variables with 4-sided cells". These
variables are referred to as lonbnd and latbnd in the CF documentation, but
otherwise the name is inconsequential.
These bounds variables are supposed to contain a 4-tuple for each cell in the
grid. The 4 values in each tuple specify the longitude or latitude coordinates
in counterclockwise order starting with the "lower left" value. Adjacent cells
should have duplicate longitude and latitude coordinates where appropriate.
So, assuming that the bounds of the first cell (which I am extrapolating from
other coordinate variables in the zos file) is –280 to –279 in the longitude
direction and –82 to –81 in the latitude direction, then the first 4-tuple in
lon_vertices should be [–280, –279, –279, –280] and the first tuple in
lat_vertices should be [–82, –82, –81, –81]. The next entries in the
lon_vertices and lat_vertices arrays are for the adjacent cell in the
horizontal direction and should be [–279, –278, –278, –279] and [–82, –82, –81,
–81], respectively.
In this regard, the values stored in zon*.nc's lon_vertices and lat_vertices
are nonsensical. ncdump shows the first two entries of each as:
lon_vertices =
-280, -279, -278, -277,
-276, -275, -274, -273,
lat_vertices =
-82, -82, -82, -82,
-82, -82, -82, -82,
As you can see, these bounds do not form proper quadrilaterals. They are all
degenerate polygons on the –82 latitude coordinate. My guess is that whatever
wrote out this file mistook the format for boundary variables for coordinate
variables.
-Ken
**** Kenneth Moreland
*** Sandia National Laboratories
***********
*** *** *** email: [email protected]
** *** ** phone: (505) 844-8919
*** web: http://www.cs.unm.edu/~kmorel
From: Simon Su <[email protected]<mailto:[email protected]>>
Date: Tue, 22 Mar 2011 11:40:46 -0400
To: Kenneth Moreland <[email protected]<mailto:[email protected]>>
Cc: Andy Bauer <[email protected]<mailto:[email protected]>>,
"[email protected]<mailto:[email protected]>"
<[email protected]<mailto:[email protected]>>
Subject: Re: [Paraview] loading nc formatted data
Hi Ken,
Thank you again for your help.
Is there another wiki page that also describe all the xml used syntax in the
http://www.vtk.org/Wiki/ParaView/Plugin_HowTo ? It may help for me to have an
overall picture of the xml syntax used? thanks. And is there a complete example
out there that show the whole process on how one can create a custom data
loader plugin into ParaView? Not sure if I am saying this correctly but
something like, say I have this data file in my own format that has grid
information and a scalar variable. How do I write a data loader plugin so that
I can use ParaView to visualize the data. Then if I have to guess, first you
write this xml file to describe the data loader plugin to ParaView and then use
use sort of utility to generate the plugin standard code, and then implement
the function in the code to load and create your vtk data structure (grid data
type and scalar variable data type) and then pass it to ParaView. something
like that? thanks...
yes. it make sense that it is a part of VTK. ParaView is to expose VTK
functionality after all.
good thing is, I think we settle on a single large nc file that has all the
information needed to plot the visualization, including tripolar grid
information. Hopefully that will simplify things for me.
I am sorry that the ftp site is not behaving. I have placed the files at
http://www.cs.uh.edu/~ssu/4ParaView together with the nc file I used to
generate the image 4.png (what looks like a double grid to me) and 5.png
(coloring by the variable zos which I don't thin it should look like that )
Hopefully vtkNetCDFCFReader will do the job for me.
thanks
-simon
On Mon, Mar 21, 2011 at 7:12 PM, Moreland, Kenneth
<[email protected]<mailto:[email protected]>> wrote:
It looks like the documentation for a reader plugin is slightly messed up.
I'll leave it to Andy (or anyone who is not me) to fix. The example in the
ParaView source does not list a file in SERVER_MANAGER_SOURCES because it uses
a source (vtkPNGReader.cxx) that is already compiled as part of VTK. The Wiki
is trying to capture the fact that usually you are building a plugin with your
own reader, and you will have to list your source code for the reader there.
vtkMyPNGReader.cxx is just a stand in for some reader that you wrote. It
probably does not really exist. I noticed, however, that the Wiki
documentation is also wrong in that the XML file is pointing to the
vtkPNGReader class when the CMake configuration is implying that it should be
pointing to the (imaginary) vtkMyPNGReader class.
The vtkNetCDFCFReader.cxx file is located in
ParaView/VTK/IO/vtkNetCDFCFReader.cxx. Don't get too wrapped up around the
complexity of the NetCDF reader definition in readers.xml. It's complicated
because it supports defining a time series as a collection of files
(http://www.vtk.org/Wiki/Animating_legacy_VTK_file_series#Making_custom_readers_work_with_file_series).
If you collect all times in a single netCDF file (or don't have time steps),
you can skip all that and just define a new object much like that of
netCDFReaderCore in reader.xml (in the sources ProxyGroup of course).
That said, I think this should all be unnecessary since the CF convention (and
ParaView reader) already contains a means of defining cells that bridge across
these seems. I suspect it has nothing to do with the CF convention version.
It is probably that your data files with openings at the seems are not defining
a bounds attribute, which is optional in CF. If you could post some example
data (or even the listing of the file header from ncdump) I might be able to
verify that.
I'm not sure what is going on with the new data set (4.png). I can't comment
on it much because your ftp server seems to be broken for me and I don't
remember the image too well. At any rate, I would probably say something like
I couldn't tell you what was going on without seeing the nc file.
-Ken
**** Kenneth Moreland
*** Sandia National Laboratories
***********
*** *** *** email: [email protected]<http://[email protected]>
** *** ** phone: (505) 844-8919<tel:%28505%29%20844-8919>
*** web:
http://www.cs.unm.edu/~kmorel<http://www.cs.unm.edu/%7Ekmorel>
From: Simon Su <[email protected]<mailto:[email protected]>>
Date: Mon, 21 Mar 2011 15:19:24 -0400
To: Kenneth Moreland <[email protected]<mailto:[email protected]>>
Cc: Andy Bauer <[email protected]<mailto:[email protected]>>,
"[email protected]<mailto:[email protected]>"
<[email protected]<mailto:[email protected]>>
Subject: Re: [Paraview] loading nc formatted data
Hi Ken,
Thank you for explaining.
The reader that is being used is vtkNetCDFCFReader. It is defined in
ParaView/Servers/ServerManager/Resources/readers.xml, although it is not
obvious.
Can you (or Andy) point me to documentation more documentation beside
http://www.vtk.org/Wiki/ParaView/Plugin_HowTo ? Andy also metioned readers.xml
file you mentioned. But after going through ParaView/Servers/
ServerManager/Resources/readers.xml, I am still fuzzy about where the file
vtkNetCDFCFReader.cxx ( if any - I would like to know how it is implemented
and maybe start by modifying it in my learning process). The plugin wiki page
on "Adding a Reader" section mentioned CMakeList.txt file
FIND_PACKAGE(ParaView REQUIRED)
INCLUDE(${PARAVIEW_USE_FILE})
ADD_PARAVIEW_PLUGIN(MyReader "1.0"
SERVER_MANAGER_XML MyPNGReader.xml
SERVER_MANAGER_SOURCES vtkMyPNGReader.cxx
GUI_RESOURCE_FILES MyReaderGUI.xml)
but the one on my source tree
ParaView-3.10.0/Examples/Plugins/Reader/CMakeList.txt looks like
ADD_PARAVIEW_PLUGIN(MyPNGReader "1.0"
SERVER_MANAGER_XML readers.xml
GUI_RESOURCE_FILES pqReader.xml
)
note no vtkMyPNGReader.cxx file mention and the file is also not in the
directory. I also did a search on source tree for vtkNetCDFCFReader.cxx file
but can't find it. I think I am missing a big piece of something since I am
not getting the point that I should be getting after looking at readers.xml. In
fact, I can't find any of the netcdf file readers (other than CF reader). It is
also not listed under my Plugin Manager GUI on the ParaView that I compiled but
it is loading the CF convention nc file. Are they (the *.cxx files) generated
on the fly during compile time?
Another thing, besides http://www.paraview.org/Wiki/VisIt_Database_Bridge , is
there a place that I can find how to use that VisIt bridge in ParaView. Maybe
an example of how to load silo file? I actually have a plugin of my own in
VisIt that can load the climate modeling data that I have. I would like to see
if I can use my VisIt plugin in ParaView and not write another plugin for
ParaView? :)
As the name implies, this reader reads netCDF files using the CF convention.
(As the default netCDF reader, it also gracefully handles files that do not
follow this convention.) With this assumption, I will try to explain what it
does. It reads arrays as regular 1, 2, or 3D arrays, possibly with time. The
CF convention also provides a means to assign coordinates to each grid point
and to identify the coordinates as longitude or latitude.
The published nc files we have do adhere to CF convention we also use CMOR in
one of the pipeline. I noticed Data_tos_O1_2001-2002.nc is at CF-1.0 and since
I am new at CF Convention, I can only speculate that what I see at
ftp://ftp.gfdl.noaa.gov/pub/sms/4ParaView/4.png with what looks like double
grid is due to difference between CF-1.0 and CF-1.4? Will vtkNetCDFCFReader
handle CF-1.4 data?
Even though coordinates are defined as longitude and latitude, the topology of
the grid itself is still a grid. Thus, the grid gets wrapped around, but still
has these seems that you see because topologically the one end of the regular
grid is not attached to the other. I can't think of any filter that will
identify and close these seems. In fact, it's not straightforward to do at
all. If you look at your topology, it is not lain out on a simple spherical
grid.
The "right" way to solve your problem, which may or may not be in your control,
is to create netCDF files that specify cell boundaries for a closed topology.
Your netCDF file must be following at least some parts of the CF convention;
your data would not show up as a sphere if it were not. The CF convention
provides a way of defining cells that are not constrained by a regular grid
topology. It is done through a "bounds" attribute on the dimension descriptor
variables. You need either 1D or 2D bounds. They are described in this
section of the CF convention documentation:
http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries.
Agreed. The hack we have in VisIt loader (replace the last grid value with the
1st grid value to create a "closed topology" ) is not "generalizable" and will
blow up in my face if I hand it to the user.
thanks
-simon
The VTK test data has examples of both 1D bounds (tos_O1_2001-2002.nc) and 2D
bounds (sampleCurveGrid4.nc). You can get the VTK test data from git
(http://vtk.org/VTKData.git), or download them directly from the gitourious
server:
http://vtk.org/gitweb?p=VTKData.git;a=blob;f=Data/tos_O1_2001-2002.nc;h=30aa4a9b5e08b9bdf64540f2b144d83b279cca6c;hb=HEAD
http://vtk.org/gitweb?p=VTKData.git;a=blob;f=Data/sampleCurveGrid4.nc;h=0ab89c27a25f92c047b58dca8b3057ca8d4df017;hb=HEAD
-Ken
**** Kenneth Moreland
*** Sandia National Laboratories
***********
*** *** *** email: [email protected]<http://[email protected]>
** *** ** phone: (505) 844-8919<tel:%28505%29%20844-8919>
*** web:
http://www.cs.unm.edu/~kmorel<http://www.cs.unm.edu/%7Ekmorel>
From: Simon Su <[email protected]<mailto:[email protected]>>
Date: Fri, 18 Mar 2011 16:43:42 -0400
To: Andy Bauer <[email protected]<mailto:[email protected]>>
Cc: <[email protected]<mailto:[email protected]>>
Subject: Re: [Paraview] loading nc formatted data
Hi Andy,
python trace gave me
zos_Omon_GFDLESM2M_historical_r1i1p1_186101188012_nc = NetCDFReader(
FileName=['/work/sms/data/cmor-20110128/mon/ocean/zos/r1i1p1/zos_Omon_GFDL-ESM2M_historical_r1i1p1_186101-188012.nc']
)
and there are tons of netcdf reader in ParaView and it is not in the plugin
directory
sms:/local/home/build/paraview/ParaView-3.10.0/Plugins> pwd
/local/home/build/paraview/ParaView-3.10.0/Plugins
sms:/local/home/build/paraview/ParaView-3.10.0/Plugins> ll
total 84
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 AdiosReader/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 AnalyzeNIfTIReaderWriter/
-rw-r--r-- 1 sms t 3261 Mar 9 13:31 CMakeLists.txt
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 CoProcessingScriptGenerator/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 CosmoFilters/
drwxr-xr-x 4 sms t 4096 Mar 10 12:37 EyeDomeLighting/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 ForceTime/
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 H5PartReader/
drwxr-xr-x 4 sms t 4096 Mar 10 12:37 Manta/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 Moments/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 NetDMFReader/
drwxr-xr-x 6 sms t 4096 Mar 10 12:37 PointSprite/
drwxr-xr-x 4 sms t 4096 Mar 10 12:37 PrismPlugins/
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 pvblot/
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 SierraPlotTools/
drwxr-xr-x 3 sms t 4096 Mar 10 12:37 SLACTools/
drwxr-xr-x 4 sms t 4096 Mar 10 12:37 StreamingView/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 SurfaceLIC/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 Vapor/
drwxr-xr-x 2 sms t 4096 Mar 10 12:37 VRPN/
drwxr-xr-x 2 sms t 4096 Mar 9 13:31 VRUI/
sms:/local/home/build/paraview/ParaView-3.10.0/Plugins>
Can you help describe how Netcdf files plugins are done in ParaView. Do they
have a super class of Netcdf that they all derive from to write the different
flavors of netcdf readers? If so, where can the code be found?
thanks
-simon
On Fri, Mar 18, 2011 at 10:30 AM, Andy Bauer
<[email protected]<mailto:[email protected]>> wrote:
Hi Simon,
Replies below...
On Thu, Mar 17, 2011 at 12:41 PM, Simon Su
<[email protected]<mailto:[email protected]>> wrote:
Hi All,
ftp://ftp.gfdl.noaa.gov/pub/sms/4ParaView/1.png
ftp://ftp.gfdl.noaa.gov/pub/sms/4ParaView/2.png
ftp://ftp.gfdl.noaa.gov/pub/sms/4ParaView/3.png
the above are screen shot from older version of *.nc files that I have that I
loaded up with Paraview 3.10.0 64-bit which I compiled myself. As you can see,
the grid is correctly loaded. But in the data, there is a crack. Is there a
filter that can fix this in ParaView? :)
I'm not aware of any filter that will fix this automatically. Can you
describe the grid a bit more? It kind of looks like a multiblock of structured
grids.
ftp://ftp.gfdl.noaa.gov/pub/sms/4ParaView/4.png is the latest nc file that I
have of similar simulation preprocessed output. When I loaded it up, it is
clearly doing making assumption on the grid that is not correct and hence, the
double looking grid.
The questions now are:
1. ParaView has lots of *.nc file loader. How do I know which loader is
ParaView using to load the data? If I pick a type for the Files of type option
in the open File window, will that gurantees that ParaView will be using that
particular file loader?
If there is an ambiguity for which file loader to use (i.e. multiple readers
assume the same extension), then the GUI should pop up a dialog for you to
specify which one to use. You can use the python trace to figure out exactly
what reader is being used to load the file.
2. If I know which loader is used, I would like to see if I can modify the
existing loader to create a new type of *.nc file loader to fix the grid of my
data. Where is the code in the source tree of ParaView is the loader plugin
placed?
Based on the name of the name of the reader from the python script, you can
look up the actual class name in the
ParaView/Servers/ServerManager/Resources/readers.xml file.
or if there is an easier solution to fix my grid problem that doesn't involve
developing a new data loader plugin that would be better.... :) please let me
know...
thanks
-simon
_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaView
Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview
_______________________________________________ Powered by
www.kitware.com<http://www.kitware.com> Visit other Kitware open-source
projects at http://www.kitware.com/opensource/opensource.html Please keep
messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaView
Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview