NCCSV -
ANetCDF- 兼容的 ASCII CSV 檔案规格, 1.00版本
鮑勃·西蒙斯和史蒂夫·漢金 "NCCSV"由鮑勃·西蒙斯和史蒂夫·漢金授權依據創用CC授權使用
引言
此文件指定了 ASCII CSV 文字檔案格式, 可以包含所有資訊 (中繼資料與資料) 可以在NetCDF .nc包含類似 CSV 文件的資料表格的檔案。 ASCII CSV 文字檔案的延伸檔名必須是 . csv , 才能輕易地正确讀取到 Excel 和 Google 工作表 等电子表 格程序 。 Bob Simons會寫入軟體, 將 NCCSV 檔案轉換成NetCDF-3 (也可能是NetCDF-4) .nc檔案,反之亦然。 鮑勃·西蒙斯修改了ERDDAP™以支援讀取與寫入此檔案。
NCCSV格式的設計使得Excel和Google Sheets等电子表格軟體可以將NCCSV檔案匯入為csv檔案,所有資訊都在电子表格的儲存格中可以進行編輯. 或者, 可以在 NCCSV 常规之後從零開始建立工作表 。 不管电子表格的來源如何, 如果它被匯出為 . csv 檔案, 它會符合 NCCSV 的规格, 不會丟失任何資訊 。 NCCSV 檔案和遵循這些約定的相似的电子表格檔的唯一不同是:
- NCCSV 檔案在以逗號分隔的行上有值 。 電子表格在相邻单元格的行上有值 。
- NCCSV 檔案中的字串常被雙引號包圍 。 工作表中的字串從來不用雙引號包圍 。
- 內部雙引號 (") 在 NCCSV 檔案中的字串中, 以 2 雙引號顯示 。 內部雙引數在电子表格中以 1 雙引數出現 。
看电子表格更多信息。
可流性
和一般的 CSV 文件一樣, NCCSV 文件是可流的 。 因此,如果NCSV是由數據伺服器如:ERDDAP™,伺服器可以在所有資料被收集之前開始將資料流到要求者。 這是有益和可取的特征。NetCDF相形之下,檔案不能流動 。
ERDDAP™
此规格的設計使 NCCSV 文件與.nc可以從它們中產 生的檔案可以用ERDDAP™資料伺服器 (通過Nccsv 檔案中的 IDD 表格和NcFiles 的 EDD 表格數據集類型) ,但此规格是外部的ERDDAP.ERDDAP™有一些需要的全局屬性以及很多建議的全局和變數屬性,大多以 CF 和 ACDD 屬性為基礎(參見 /docs/server-admin/datasets# 全球屬性).
平衡
NCCSV格式的設計平衡了几种要求:
- 文件必須包含表格中的所有資料和中繼資料NetCDF檔案,包括特定的資料類型。
- 檔案必須能被讀入並從工作表中寫出, 且不失去資訊 。
- 檔案必須方便人類建立、編輯、讀取和理解。
- 檔案必須能用電腦程式清晰解析 。
如果此文件的某些要求似乎奇怪或挑剔,可能需要满足其中之一。
其他规格
這項规格是指它所設計的另外几项规格和文庫, 但這項规格並非其他规格的一部分, 若在此未指定與其中一個標準相關的細節, 請參考相關的說明 。 主要是:
- 數據集探索的屬性常规 (ACDD) 元数据標準 : https://wiki.esipfed.org/Attribute\_Convention\_for\_Data\_Discovery\_1-3 .
- 气候与預測 (CF) 元数据標準 : https://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html .
- 其NetCDF使用者指南 (努格) : https://docs.unidata.ucar.edu/netcdf-java/current/userguide/index.html .
- 其NetCDF軟體文庫類型NetCDF- 賈瓦和NetCDF-c: https://www.unidata.ucar.edu/software/netcdf/ . 這些文庫無法讀取 NCCSV 檔案, 但可以讀取.nc從 NCCSV 檔案建立檔案 。
- 杰森: https://www.json.org/
标记
括弧\[ \],表示可選項。
文件结构
完整的 NCCSV 檔案包含兩個區段: 元数据區段, 其後是數據區段 。
NCCSV 檔案必須只包含 7 位 ASCII 字元 。 因此,用于寫入和讀取檔案的字符集或編碼可能是任何與7位 ASCII 字符集兼容的字符集或編碼,例如ISO-8859-1.ERDDAP™使用 ISO- 8859-1 字元集讀寫 NCCSV 檔案 。
NCCSV 檔案可能使用新線 (\n) (在 Linux 和 Mac OS X 電腦上常见的) 或馬車 返回加新線 (\r\n) (在 Windows 電腦上常用的) 作為線末的標記,但不是兩者兼有。
.nccsv中繼資料
當創作人和讀者都期待它時, 也有可能, 有時會有用, (包括\*安德曼達塔\*行) . 結果可以完整描述檔案的屬性、變數名稱和數據類型,因此和.das加.dds的回應具有相同的目的。OPeNDAP伺服器。ERDDAP™如果您要求檔案, 會傳回此變更 類型=.nccsv從 a 中繼資料ERDDAP™數據集。
元数据科
在 NCCSV 檔案中, 元数据段的每行都使用格式
變數 姓名,屬性 姓名,值1\[值2\]\[值 3\]\[值 4\]\[...\]
項目之前或之後的空間不被允許, 因為它們在將檔案匯入电子表格程式時會造成問題 。
公约
NCCSV 文件的第一行是元数据段的第一行,必須有\全球\例如: \全球\"公约"COARDS, CF-1.6, ACDD- 1. 3, NCCSV- 1. 列出的約定之一必须是NCCSV-1.0,它指的是目前版本的此规格。
末端(_M)
NCCSV 檔案的元数据區段的尾端必須用只有一行表示 \安德曼達塔\
建議但不要求指定變數的所有屬性都出現在元件區域的相邻線上 。 如果 NCCSV 文件被轉換成NetCDF檔案中,變數名稱最早出现在元件區域的顺序是NetCDF文件。
選取的空白行可以在元数据區域中, 在需要的第一行之后與\全球\ 公约信息 (见下文) 在要求的最后一行之前\安德曼達塔\.
如果從 NCCSV 檔案建立电子表格, 元数据段會以變數名稱出現在 A 列, 屬性名稱出現在 B 列, 值出現在 C 列 。
如果這些傳統之後的电子表格被儲存為 CSV 檔案, 在元数据區域的行尾會經常有额外的逗號 。 將 NCCSV 檔案轉換成.nc檔案會忽略额外的逗號 。
變數 姓名
變數 姓名 是數據檔中變數的大小寫名稱。 所有可變名稱必須從 7 位 ASCII 字母或下划線開始, 由 7 位 ASCII 字母、 下划線和 7 位 ASCII 數字組成 。
全球
特殊變數Name\全球\用于表示全局元数据。
屬性 姓名
屬性 姓名 是與變數或\全球\. 所有屬性名稱必須從 7 位 ASCII 字母或下划線開始, 由 7 位 ASCII 字母、 下划線 和 7 位 ASCII 數字組成 。
星座
特殊屬性 姓名\*星座\*可以用來建立 scalar 資料變數并定義其值。 數據型態\*星座\*定義變數的資料類型, 所以不要指定\*数据类型\*刻度變數的屬性。 注意 NCCSV 檔的資料區中必須有 scalar 變數的資料 。
例如, 要建立一個命名為"船" 的 scalar 變數, 其值為「 Okeanos Explorer 」 , 以及 cf\_role 屬性, 使用 : 船,\*星座\*奧基亞諾斯探險家 船,cf\role, 傳射\ 當刻度數據變數被讀入ERDDAP™中,平面值會轉換成每行數值相同的資料表中的列。
值
值 是中繼屬性的數值, 必須是一個有一個或多個字節、 短、 單位、 長、 浮、 雙倍、 字符串、 或 字符串的陣列 。 不支援其他資料類型 。 沒有值的屬性會被忽略 。 如果有不止一個子數值,子數值都必須是同樣的資料類型,並用逗號分隔,例如: sst,actual\_range0.17f,23.58f 如果有多重字符串值, 請使用一個字符串\n (新行) 字符分隔子串。
屬性數據類型的定義有:
位元組
- 位元屬性值 (8 位, 簽署) 必須用后缀'b'來寫,例如 -7b, 0b, 7b 。 有效的位元數範圍為 -128 到 127 。 看起來像位元組但無效的數字 (例如,128b) 會產生錯誤訊息。
短
- 短屬性值 (16 位, 簽署) 必須用後缀's'來寫, 例如 - 3000s, 0s, 3000s 。 有效短數值的範圍為 -32768 到 32767. 看起來很短但無效的數字 (例如,32768s) 會產生錯誤訊息。
英寸
- 英特屬性值 (32 位, 簽署) 必須以 JSON ints 寫入, 沒有小數點或 expresent , 但有後缀 'i' , 例如 -12067978i, 0i, 12067978i 。 有效的內值為 -2147483648 至 2147483647。 看起來像 int 的數字不合法 (例如,2147483648i) 會產生錯誤訊息。
長
- 長屬性值 (64 位, 簽署, 目前由 NUG 支援ERDDAP™CF 尚未支援) 必須不使用小數點寫入,並使用后缀“ L”,例如: -12345678987654321L, 0L, 12345678987654321L。 如果您使用轉換軟體將有長數值的 NCSV 文件轉換成NetCDF-3 檔案, 任何長數值都會轉換成雙數值 。 有效長值的範圍是 -922337203685475808 至 92237203685475807. 看起來很長但無效的數字 (例如,922337203685475808L) 會產生錯誤訊息。
浮
- 浮點數值 (32 位元) 必須用后缀'f'來寫,可能會有小數點和/或引數,例如 0f, 1f, 12.34f, 1e12f, 1.23e+12f, 1.23e12f, 1.87E-7f。 用 NaNf 表示浮動的 NaN (缺少) 值。 浮力範圍约为+/-3.40282347E+38f (~7 重要的小數位數) . 看起來像浮點數但無效的數字 (例如,1.0e39f) 會產生錯誤訊息。
雙倍
- 雙倍屬性值 (64 位元) 必須用后缀'd'來寫,可能會有小數點和(或)引數,例如 0d, 1d, 12.34d, 1e12d, 1.23e+12d, 1.23e12d, 1.87E-7d。 用 NaNd 做雙份 NaN (缺少) 值。 雙胞胎的 範圍约为+/-1.79769313486231570E+308d (~15 位小數) . 看起來是雙倍但無效的數字 (例如,1.0e309d) 會產生錯誤訊息。
字符串
- 字符串屬性值是 UCS-2 字符序列 (例如, 2字节的Unicode 字符, 如Java) ,它必須被寫成 7 位 ASCII, JSON 類的字符串才能指定非 ASCII 字元 。
- 雙引號 (") 必須編碼為兩個雙引號 ("") . 电子表格程式在讀取 .csv 檔案時需要這個 這就是电子表格程式在儲存电子表格為.csv檔案時所寫的.
- 特殊 JSON 反斜編碼的字元必須像 JSON 一樣編碼( 特别是)\n(新行),但也有(背斜),\f(格式),\ t(tab),\r(返回)或与\u 啊 語法。 在工作表中,不要使用 Alt Enter 在文字格內指定新行;而是使用\n (2 個字元:反斜和n ' ') 表示新行。
\uhhhh
- 所有字元小于32或大于字元 #126, 而不是其它編碼, 必須用語法\\u編碼 啊 ,其中hhh是字符的四位數十六進位數字,例如歐洲標籤是\u20AC。 參考 https://en.wikipedia.org/wiki/Unicode 查找與特定 Unicode 字元相關的十六進制數字, 或者使用軟體文庫 。
- 如果字串在起始或末端有空格,或包括 " (雙引號) 或 逗號,或包含會被解釋成其他資料類型的數值 (例如,) , 或者是「 null 」 一词, 整個字串必須用雙引號來包圍; 否則, 和 JSON 不同的是, 附加的雙引號是可選擇的 。 我們建議:當懷疑的時候,你應當把整條弦帶入兩句。 字串起始或末端的空格很不方便 。
- 目前, NCCSV支持他們.ERDDAP™在內部支援他們。 一些輸出檔案類型支援它們 (例如,.json和.nccsv) . 但很多輸出檔案型態不支援它們. 例如,NetCDF-3份文件不支持此字元, 因為NetCDF檔案使用 1字节字元, CF 目前沒有指定 Unicode 字元如何編碼的系統NetCDF字串 (例如UTF-8) . 這可能會隨時改善
字符
- 字元屬性值是單一個 UCS-2 字元 (例如, 2字节的Unicode 字符, 如Java) ,它必須被寫成 7 位 ASCII, JSON 類型的字符才能指定其他字符 (參觀上面對特殊字元編碼的字串定義, 加上單句編碼為\ ' ') . 字元屬性值必須用單引號封存 (內部引言) 雙倍引號 (外部引文) ,例如:"'a',"''" (雙引號字元) ,"''" (單一引號字符) ,"'\" (分頁) ,"'\u20AC'" (a 歐元字元) . 使用單引數和雙引數的系統是奇特而繁琐的, 但是它是用工作表格來区分字符串和字符串的方法 。 看起來像字元但無效的值會產生錯誤訊息 。 和 Strings 一樣,目前不鼓励使用大于 # 255 的字符 。
后缀
注意, 在 NCCSV 檔案的屬性區域中, 所有數字屬性值必須有後缀字母 (例如,“b”) 以表示數據型態 (例如,字节) . 但在 NCCSV 檔案的資料區域中,數值絕對不能有這些後缀字母 (長整數的 L 除外) ─數據型態由\*数据类型\*變數的屬性。