* re: https://github.com/Unidata/netcdf-c/pull/2278 * re: https://github.com/Unidata/netcdf-c/issues/2485 * re: https://github.com/Unidata/netcdf-c/issues/2474 This PR subsumes PR https://github.com/Unidata/netcdf-c/pull/2278. Actually is a bit an omnibus covering several issues. ## PR https://github.com/Unidata/netcdf-c/pull/2278 Add support for the Zarr string type. Zarr strings are restricted currently to be of fixed size. The primary issue to be addressed is to provide a way for user to specify the size of the fixed length strings. This is handled by providing the following new attributes special: 1. **_nczarr_default_maxstrlen** — This is an attribute of the root group. It specifies the default maximum string length for string types. If not specified, then it has the value of 64 characters. 2. **_nczarr_maxstrlen** — This is a per-variable attribute. It specifies the maximum string length for the string type associated with the variable. If not specified, then it is assigned the value of **_nczarr_default_maxstrlen**. This PR also requires some hacking to handle the existing netcdf-c NC_CHAR type, which does not exist in zarr. The goal was to choose numpy types for both the netcdf-c NC_STRING type and the netcdf-c NC_CHAR type such that if a pure zarr implementation read them, it would still work and an NC_CHAR type would be handled by zarr as a string of length 1. For writing variables and NCZarr attributes, the type mapping is as follows: * "|S1" for NC_CHAR. * ">S1" for NC_STRING && MAXSTRLEN==1 * ">Sn" for NC_STRING && MAXSTRLEN==n Note that it is a bit of a hack to use endianness, but it should be ok since for string/char, the endianness has no meaning. For reading attributes with pure zarr (i.e. with no nczarr atribute types defined), they will always be interpreted as of type NC_CHAR. ## Issue: https://github.com/Unidata/netcdf-c/issues/2474 This PR partly fixes this issue because it provided more comprehensive support for Zarr attributes that are JSON valued expressions. This PR still does not address the problem in that issue where the _ARRAY_DIMENSION attribute is incorrectly set. Than can only be fixed by the creator of the datasets. ## Issue: https://github.com/Unidata/netcdf-c/issues/2485 This PR also fixes the scalar failure shown in this issue. It generally cleans up scalar handling. It also adds a note to the documentation describing that NCZarr supports scalars while Zarr does not and also how scalar interoperability is achieved. ## Misc. Other Changes 1. Convert the nczarr special attributes and keys to be all lower case. So "_NCZARR_ATTR" now used "_nczarr_attr. Support back compatibility for the upper case names. 2. Cleanup my too-clever-by-half handling of scalars in libnczarr. |
||
---|---|---|
.github | ||
cmake | ||
conda.recipe | ||
ctest_scripts | ||
dap4_test | ||
docs | ||
examples | ||
fuzz | ||
h5_test | ||
hdf4_test | ||
include | ||
libdap2 | ||
libdap4 | ||
libdispatch | ||
libhdf4 | ||
libhdf5 | ||
liblib | ||
libncpoco | ||
libncxml | ||
libnczarr | ||
libsrc | ||
libsrc4 | ||
libsrcp | ||
nc_perf | ||
nc_test | ||
nc_test4 | ||
ncdap_test | ||
ncdump | ||
ncgen | ||
ncgen3 | ||
nctest | ||
nczarr_test | ||
NUG | ||
oc2 | ||
plugins | ||
unit_test | ||
.gitignore | ||
acinclude.m4 | ||
appveyor.yml | ||
bootstrap | ||
cmake_uninstall.cmake.in | ||
CMakeInstallation.cmake | ||
CMakeLists.txt | ||
COMPILE.cmake.txt | ||
config.h.cmake.in | ||
config.h.cmake.in.old-works | ||
configure.ac | ||
COPYRIGHT | ||
CTestConfig.cmake.in | ||
CTestCustom.cmake | ||
dods.m4 | ||
FixBundle.cmake.in | ||
INSTALL.md | ||
lib_flags.am | ||
libnetcdf.settings.in | ||
Makefile.am | ||
mclean | ||
nc-config.cmake.in | ||
nc-config.in | ||
netcdf.pc.in | ||
netCDFConfig.cmake.in | ||
PostInstall.cmake | ||
postinstall.sh.in | ||
README.md | ||
RELEASE_NOTES.md | ||
test_common.in | ||
test_prog.c | ||
test-driver-verbose | ||
wjna |
Unidata NetCDF
About
The Unidata network Common Data Form (netCDF) is an interface for scientific data access and a freely-distributed software library that provides an implementation of the interface. The netCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. The current netCDF software provides C interfaces for applications and data. Separate software distributions available from Unidata provide Java, Fortran, Python, and C++ interfaces. They have been tested on various common platforms.
Properties
NetCDF files are self-describing, network-transparent, directly
accessible, and extendible. Self-describing
means that a netCDF file
includes information about the data it contains. Network-transparent
means that a netCDF file is represented in a form that can be accessed
by computers with different ways of storing integers, characters, and
floating-point numbers. Direct-access
means that a small subset of a
large dataset may be accessed efficiently, without first reading through
all the preceding data. Extendible
means that data can be appended to
a netCDF dataset without copying it or redefining its structure.
Use
NetCDF is useful for supporting access to diverse kinds of scientific data in heterogeneous networking environments and for writing application software that does not depend on application-specific formats. For information about a variety of analysis and display packages that have been developed to analyze and display data in netCDF form, see
More information
For more information about netCDF, see
Latest releases
You can obtain a copy of the latest released version of netCDF software for various languages:
Copyright
Copyright and licensing information can be found here, as well as in the COPYRIGHT file accompanying the software
Installation
To install the netCDF-C software, please see the file INSTALL in the netCDF-C distribution, or the (usually more up-to-date) document:
Documentation
A language-independent User's Guide for netCDF, and some other language-specific user-level documents are available from:
- Language-independent User's Guide
- NetCDF-C Tutorial
- Fortran-90 User's Guide
- Fortran-77 User's Guide
- netCDF-Java/Common Data Model library
- netCDF4-python
A mailing list, netcdfgroup@unidata.ucar.edu, exists for discussion of the netCDF interface and announcements about netCDF bugs, fixes, and enhancements. For information about how to subscribe, see the URL
Feedback
We appreciate feedback from users of this package. Please send comments, suggestions, and bug reports to support-netcdf@unidata.ucar.edu.