NetCDF:网络通用数据格式矢量

2.1 新版功能.

司机简称

时间维

生成依赖项

伦敦银行同业拆借利率

netCDF驱动程序支持对矢量数据集的读写(从头开始创建,在某些情况下附加操作)(您可以找到 raster side

NetCDF是面向数组的数据访问接口,用于表示科学数据。

驱动程序处理“point”和“profile” feature types 《比照公约》第1.6条。对于CF-1.7及以下版本(以及非CF文件),它还支持更自定义的非点几何图形方法。

驱动程序还支持从CF-1.8约定兼容文件中进行写入和读取,这些文件中包含编码的简单几何信息。

驱动程序功能

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)

惯例和数据格式

The netCDF vector driver supports reading and writing netCDF files following the Climate and Forecast (CF) Metadata Conventions. Vector datasets can be written using the simple geometry specification of the CF-1.8 convention, or by using the CF-1.6 convention and by writing non-point geometry items as WKT.

区分这两种格式

在读取netCDF文件时,驱动程序将尝试读取全局 习俗 属性。如果它的价值是 CF-1.8 或者更高版本(按照CF约定的格式),那么驱动程序将把netCDF文件视为 CF-1.8 包含在其中的几何图形。如果 习俗 属性的值为CF-1.6,文件将按照CF-1.6惯例处理。

CF-1.8书写限制

写入CF-1.8netcdf数据集会带来一些限制。仅编写CF-1.8标准规定的特征类型(见第 Geometry 有关更多详细信息,将支持),并且仅部分支持度量的功能。其他几何图形(如非简单曲线几何图形)不以任何方式受支持。

CF-1.8数据集也不支持 追加 访问模式。

我们认为 保留变量名 对于CF-1.8数据集。驱动程序使用这些变量名来存储其元数据。在编写具有多个层的数据集时,不要将这些名称用作层名称,以避免命名冲突。

假设CF-1.8数据集中的一个层具有名称层和名称字段。那么以下的名字将被考虑 保留的

  • LAYER_node_coordinates :用于存储点信息

  • LAYER_node_count :用于存储每个形状点计数信息(如果图层具有点的几何类型,则不创建)

  • LAYER_part_node_count :用于存储每个零件的点数信息(仅当图层由多行线、多多边形或至少有一个带内环的多边形组成时创建)

  • LAYER_interior_ring :用于存储内环信息(仅当层由至少一个带内环的多边形组成时创建)

  • LAYER_field_FIELD :用于存储字段的字段信息。

这些名称是应用于CF-1.8数据集的唯一保留名称。

CF-1.6/WKT数据集不限于上述限制。

概念映射

字段类型

创建netCDF文件时,OGR字段类型和netCDF类型之间的映射如下:

OGR字段类型

netCDF类型

字符串(1)

烧焦

字符(二维),或NC4的字符串

整数

利息

整数(布尔)

字节

整数(Int16)

短的

整数64

对于NC4为int64,对于NC3为double作为回退

真实的

双重的

实数(浮点32)

浮动

日期

int(单位为“自1970年1月1日起的天数”)

DateTime

双倍(单位为“自1970-1-1 0:0:0以来的秒数”)

驱动程序还为每个OGR字段/netCDF变量写入以下属性。

  • ogr_field_name :OGR字段名(如果netCDF变量名因冲突而不同,则此选项很有用)

  • ogr_field_type :OGR字段类型(例如字符串、整数、日期、日期时间等…)

  • ogr_field_width :OGR字段宽度。仅在非零时设置,字符串除外

  • ogr_field_precision :OGR字段精度。仅在非零时设置

它们是默认的(除非 WRITE_GDAL_TAGS 数据集创建选项设置为否)。它们不是阅读所必需的,但可能有助于更好地识别领域特征

读取时,映射如下:

netCDF类型

OGR字段类型

字节

整数

ubyte(仅限NC4)

整数

字符(一维)

字符串(1)

字符(二维)

字符串(仅NC4)

短的

整数(Int16)

ushort(仅限NC4)

整数

利息

整数

int或double(单位为“自1970年1月1日起的天数”)

日期

uint(仅限NC4)

整数64

int64(仅限NC4)

整数64

uint64(仅限NC4)

真实的

浮动

实数(浮点32)

双重的

真实的

双倍(单位为“自1970-1-1 0:0:0以来的秒数”)

DateTime

在符合CF-1.8的驱动程序中,单个层对应于单个 几何体容器 在符合CF-1.8的netCDF文件中。根据CF-1.8规范,几何容器由另一个变量(可能是数据变量)通过 几何学 属性。读取符合CF-1.8的netCDF文件时,netCDF文件中的所有几何体容器都将作为单独的层显示在打开的数据集中。类似地,当写入CF-1.8数据集时,每个层都将写入一个几何体容器,其变量名是源层的变量名。特别是在写入CF-1.8数据集时,无论 MULTIPLE_LAYERS 选择权。

使用较旧版本的驱动程序(CF-1.8之前)生成的文件时,单个netCDF文件通常对应于单个OGR层,前提是它只包含由相同维度索引的一维变量(或char类型的二维变量)。对于具有多个组的netCDF v4文件,每个组可能被视为单独的OGR层。在写作上 MULTIPLE_LAYERS 数据集创建选项可用于控制是否禁用多个层,或者是否应将多个层放在单独的文件或单独的组中。

字符串

NetCDFv3格式本机不支持可变长度字符串。为了解决这个问题,OGR使用二维char变量,第一个维度是记录维度,第二个维度是字符串的最大宽度。

默认情况下,OGR在编写时实现“自动增长”模式,其中用于存储OGR字符串字段的变量的最大宽度在需要时进行扩展。

对于WKT数据集,这会导致对已写入的记录进行完全重写;尽管此过程对用户是透明的,但它会以非线性方式减慢创建过程。类似的机制用于处理具有除点以外的几何类型的图层,以存储几何图形的ISO WKT表示。

对于CF-1.8数据集,增加字符串宽度维度是一个相对便宜的过程,它不涉及记录的重新编译,而只涉及简单的整数重新分配。由于CF-1.8数据集的维度增长非常便宜,因此字符串宽度维度的自动增长始终处于打开状态。

When using a netCDF v4 output format (NC4), strings will be by default written as netCDF v4 variable length strings.

几何图形

从符合CF-1.8约定的netCDF文件中读取时支持的功能类型包括OGRPoint、OGRLineString、OGRPolygon、OGRMultiPoint、OGRMultiLineString和OGRMultiPolygon。由于在CF-1.8关于多边形与多多边形的约定中存在轻微的模糊性,在大多数情况下,驱动程序将默认为假定一个具有 geometry_type 多边形。使用多边形类型的一个例外是 part_node_count 不在该层的几何体容器中。根据惯例要求,驱动程序支持从具有X、Y和Z轴的几何图形中读取和写入。也部分支持从包含M轴的特征的源层进行写入。被测特征的X、Y和Z信息将能够被捕获到CF-1.8netcdf文件中,但测量信息将完全丢失。

使用CF-1.6/WKT数据集时,几何类型为Point或Point25D的图层将导致为投影坐标系隐式创建x、y(,z)变量,或为地理坐标系隐式创建lon、lat(,z)变量。对于其他几何类型,将创建一个变量“ogc_wkt”(用于NC3输出的二维字符,或用于NC4输出的字符串),并将几何图形存储为ISO wkt字符串。

“配置文件”功能类型

驱动器可以处理“轮廓”特征类型,即在固定水平位置沿垂直线的几个位置发生的现象。在这种表示法中,一些变量由轮廓索引,另一些则由观察值索引。

更准确地说,驱动程序支持读取和写入相应的配置文件,这些配置文件是用配置文件的“`Indexed ragged array representation<http://cf conventions.org/cf conventions/v1.6.0/cf conventions.html”“Indexed”“ragged”“array”“representation”“v1.6.0/cf conventions.html”“ragged”“array”“representation”“来组织的。

读取时,驱动程序将收集由配置文件维度索引的变量的值,并根据“parentIndex”等变量(属性“instance_dimension”指向配置文件维度)公开这些值,只要这些变量由观察维度索引。

在写作上 FEATURE_TYPE =必须设置配置文件层创建选项,并且需要指示驱动程序哪些OGR字段由配置文件或观察维度索引。配置文件索引的字段列表可以用 PROFILE_VARIABLES 图层创建选项(假设其他字段按观察维度索引)。由配置文件索引的字段是水平地理位置(隐式创建)和其他用户属性,如位置名称等。应注意选择由配置文件维度索引的变量:给定2个OGR特性(仅考虑由配置文件维度索引的变量),如果它们具有不同的这些变量的值将被视为属于不同的配置文件。

In the below example, the station_name and time variables may be indexed by the profile dimension (the geometry is assumed to be also indexed by the profile dimension), since all records that have the same value for one of those variables have same values for the other ones, whereas temperature and Z should be indexed by the default dimension.

station_name

时间

几何学

温度

Z

巴黎

2016-03-01T00:00:00Z

点(249)

25

100

温哥华

2016-04-01T12:00:00Z

点(-123 49.25)

5

100

巴黎

2016-03-01T00:00:00Z

点(249)

3

500

温哥华

2016-04-01T12:00:00Z

点(-123 49.25)

-15

500

一个整数字段,具有配置文件维度的名称(其默认名称为“profile”),可以使用 PROFILE_DIM_NAME 层创建选项),将用于存储配置文件站点的自动计算id(除非存在同名的整数OGR字段)。

对于非NC4输出格式,配置文件维度的大小默认为100,并且在附加配置文件的情况下会自动扩展(性能问题与字符串增长类似)。对于NC4输出格式,默认情况下配置文件维度的大小不受限制。

数据集创建选项

  • GEOMETRY_ENCODING =CF_1.8/WKT:选择在数据集中创建新图层时使用的几何编码。默认值为CF_1.8。

  • FORMAT =NC/NC2/NC4/NC4C:netCDF格式。NC是典型的netCDF格式(兼容NetCDFv3.X和4.X库)。NC2是大于4gb文件的NC扩展名。NC4是NetCDF4格式,使用HDF5容器,仅在NetCDF4库中提供新功能(新类型、组概念等)。NC4C是NC4格式对经典netCDF格式支持的概念的限制。默认值为NC。

  • WRITE_GDAL_TAGS =是/否:是否将GDAL特定信息写入netCDF属性。默认为“是”。

  • CONFIG_FILE =字符串。通往 XML configuration file (或其内容内联)用于精确控制输出。

只有同时指定GEOMETRY_ENCODING=WKT时,以下选项才有效:

  • MULTIPLE_LAYERS No/分隔文件/分隔文件组。默认为否,即数据集只能包含一个OGR层。分离的文件可以用来将每个OGR层的内容放在一个NETCDF文件中,在这种情况下,在DataSet创建中传递的名称被用作目录,并且层名称被用作NETCDF文件的基础名。当Frase= NC4将每个OGR层置于同一个文件中的一个单独的NETCDF组时,可以使用SeleType组。

图层创建选项

以下选项适用于两种数据集类型:

  • USE_STRING_IN_NC4 =是/否。是否对NC4格式的字符串使用NetCDF字符串类型。如果否,则使用bidimensional char变量。当FORMAT=NC4时默认为YES。

以下选项需要几何编码为WKT的数据集:

  • RECORD_DIM_NAME =字符串。索引功能的无限维度的名称。默认为“记录”。

  • STRING_DEFAULT_WIDTH =int.字符串的默认宽度(使用二维字符变量时)。自动漫游模式下默认为10,否则为80。

  • WKT_DEFAULT_WIDTH =int.WKT字符串的默认宽度(使用二维字符变量时)。在自动漫游模式下,默认值为1000,否则为10000。

  • AUTOGROW_STRINGS =是/否。当序列化为二维字符变量时,是自动增长非固定宽度的字符串字段,还是自动增长ogc wkt特殊字段。默认为“是”。当设置为“否”时,如果字符串大于其最大初始宽度(由字符串默认宽度设置),则将截断该字符串。对于几何体,它将被完全丢弃。

  • FEATURE_TYPE =自动/点/轮廓。选择CF功能类型。如果图层几何图形类型为“点”,则默认为“自动”,否则将使用涉及“ogc_wkt”字段的自定义方法。可以设置为 PROFILE 从而选择创建一个索引的不规则数组表示外形。

  • PROFILE_DIM_NAME =字符串。外形尺寸和变量的名称。默认为“配置文件”。仅在特征类型=外形时使用。

  • PROFILE_DIM_INIT_SIZE =int或string。配置文件维度的初始大小,或不受NC4文件限制。格式化时默认为100!=NC4,当FORMAT=NC4时为UNLIMITED。仅在特征类型=外形时使用。

  • PROFILE_VARIABLES =字符串。必须由配置文件维度索引的字段名的逗号分隔列表。仅在特征类型=外形时使用。

以下选项需要几何编码为CF_1.8的数据集:

  • BUFFER_SIZE =int.写入缓冲区的软限制(字节)。较大的值通常意味着更好的性能,但值应该比可用物理内存的值小,否则可能会发生抖动。默认情况下,该值设置为可用物理内存的20%(考虑到虚拟地址空间大小的限制,可用表示总物理RAM)。缓冲区内容在转换功能之间提交,但不是 在期间 转换特征,因此此限制不适用于单个特征。最小可接受尺寸为4096。如果指定的值低于此值,则将使用默认值。

  • GROUPLESS_WRITE_BACK =是/否。为了减少将数据写入目标netCDF文件所用的时间,通常将数据分组到数组中,然后一次全部写入。每个数组都与目标数据集中的一个变量相关联。一旦相关数据写入netCDF文件,数组就会被销毁,而netCDF文件又会在内存中组装变量的完整数据数组时发生。对于具有较小内存大小的计算机,这种优化可能会导致在编写具有较大层的大型数据集时出现问题。通过指定“是”启用此选项将禁用数组写入,并使数据一次写入一个数据。强烈建议关闭此选项,除非出现内存不足错误或性能问题。在一般情况下,这种技术大大提高了翻译效率。默认值为否。

XML配置文件

A XML configuration file conforming to the following schema can be used for very precise control on the output format, in particular to set all needed attributes (such as units) to conform to the NetCDF CF-1.6 convention.

它被特别设计为在涉及 MapServer OGR output .

此类文件可用于:

  • 设置数据集和图层创建选项。

  • 设置全局netCDF属性。

  • 将OGR字段名映射到netCDF变量名。

  • 设置附加到netCDF变量的netCDF属性。

当元素被定义为根<Configuration>节点的直接子节点时,效果的范围是全局的,或者当元素被定义为<layer>节点的子节点时,效果的范围是特定于给定层的。

The filename is specified with the CONFIG_FILE dataset creation option. Alternatively, the content of the file can be specified inline as the value of the option (it must then begin strictly with the "<Configuration" characters)

以下示例显示了所有可能性和优先级规则:

<Configuration>
    <DatasetCreationOption name="FORMAT" value="NC4"/>
    <DatasetCreationOption name="MULTIPLE_LAYERS" value="SEPARATE_GROUPS"/>
    <LayerCreationOption name="RECORD_DIM_NAME" value="observation"/>
<!-- applies to all layers -->
    <Attribute name="copyright" value="Copyright(C) 2016 Example"/>
    <Field name="weight">  <!-- edit user field/variable -->
        <Attribute name="units" value="kg"/>
        <Attribute name="maximum" value="10" type="double"/>
    </Field>
    <Field netcdf_name="z"> <!-- edit predefined variable -->
        <Attribute name="long_name" value="Elevation"/>
    </Field>
<!-- start of layer specific definitions -->
    <Layer name="1st_layer" netcdf_name="firstlayer"> <!-- OGR layer "1st_layer" is renamed as "firstlayer" netCDF group -->
        <LayerCreationOption name="FEATURE_TYPE" value="POINT"/>
        <Attribute name="copyright" value="Public domain"/> <!-- override global one -->
        <Attribute name="description" value="This is my first layer"/> <!-- additional attribute -->
        <Field name="1st_field" netcdf_name="firstfield"/> <!-- rename OGR field "1st_field" as the "firstfield" netCDF variable -->
        <Field name="weight"/> <!-- cancel above global customization -->
        <Field netcdf_name="lat"> <!-- edit predefined variable -->
            <Attribute name="long_name" value=""/> <!-- remove predefined attribute -->
        </Field>
    </Layer>
    <Layer name="sounding">
        <LayerCreationOption name="FEATURE_TYPE" value="PROFILE"/>
        <Field name="station_name" main_dim="profile"/> <!-- the corresponding netCDF variable will be indexed against the profile dimension, instead of the observation dimension -->
        <Field name="time" main_dim="profile"/> <!-- the corresponding netCDF variable will be indexed against the profile dimension, instead of the observation dimension -->
    </Layer>
</Configuration>

可以通过运行 ncdump公司 效用

进一步阅读

信用

netCDF的读/写向量功能的开发由 Meteorological Service of CanadaWorld Ozone and Ultraviolet Radiation Data CentreUS Geological Survey .