นี่คือคำสั่ง ncgen3 ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
ncgen3 - จากไฟล์ CDL ให้สร้าง netCDF classic หรือ classicfile 64 บิต โปรแกรม C หรือ
โปรแกรม Fortran
เรื่องย่อ
ncgen3 [-b] [-c] [-f] [-k kind_of_file] [-x] [-n] [-o netcdf_ชื่อไฟล์] อินพุต_ไฟล์
DESCRIPTION
ncgen3 สร้างไฟล์ netCDF หรือซอร์สโค้ด C หรือ Fortran เพื่อสร้าง netCDF
ไฟล์. อินพุตไปยัง ncgen3 เป็นคำอธิบายของไฟล์ netCDF ในภาษาขนาดเล็กที่เรียกว่า
CDL (ภาษาแบบฟอร์ม Common Data ของเครือข่าย) อธิบายไว้ด้านล่าง หากไม่มีการระบุตัวเลือกใน
กล่าวอ้าง ncgen3มันเพียงตรวจสอบไวยากรณ์ของไฟล์ CDL อินพุตทำให้เกิดข้อผิดพลาด
ข้อความสำหรับการละเมิดไวยากรณ์ CDL สามารถใช้ตัวเลือกอื่นเพื่อสร้าง
ไฟล์ netCDF ที่เกี่ยวข้องเพื่อสร้างโปรแกรม C ที่ใช้อินเทอร์เฟซ netCDF C ถึง
สร้างไฟล์ netCDF หรือเพื่อสร้างโปรแกรม Fortran ที่ใช้ netCDF Fortran
อินเทอร์เฟซเพื่อสร้างไฟล์ netCDF เดียวกัน
ncgen3 สามารถใช้กับโปรแกรมคู่หูได้ เอ็นซีดัมพ์ เพื่อดำเนินการอย่างง่าย ๆ บน
ไฟล์ netCDF ตัวอย่างเช่น หากต้องการเปลี่ยนชื่อมิติในไฟล์ netCDF ให้ใช้ เอ็นซีดัมพ์ ที่จะได้รับ
ไฟล์ netCDF เวอร์ชัน CDL แก้ไขไฟล์ CDL เพื่อเปลี่ยนชื่อมิติ
และการใช้งาน ncgen3 เพื่อสร้างไฟล์ netCDF ที่เกี่ยวข้องจากไฟล์ CDL ที่แก้ไข
OPTIONS
-b สร้างไฟล์ netCDF (ไบนารี) ถ้า -o ไม่มีตัวเลือกชื่อไฟล์เริ่มต้น
จะถูกสร้างขึ้นจากชื่อ netCDF (ระบุหลังจาก netcdf คำสำคัญใน
อินพุต) โดยต่อท้ายส่วนขยาย `.nc' หากไฟล์มีอยู่แล้วกับ
ชื่อที่ระบุจะถูกเขียนทับ
-c ผลิต C ซอร์สโค้ดที่จะสร้างไฟล์ netCDF ที่ตรงกับ netCDF
ข้อกำหนด ซอร์สโค้ด C ถูกเขียนไปยังเอาต์พุตมาตรฐาน
-f ผลิต ฟอร์แทรน ซอร์สโค้ดที่จะสร้างไฟล์ netCDF ที่ตรงกับ netCDF
ข้อกำหนด ซอร์สโค้ด Fortran ถูกเขียนไปยังเอาต์พุตมาตรฐาน
-o netcdf_file
ชื่อไฟล์ไบนารี netCDF ที่สร้าง หากระบุตัวเลือกนี้ แสดงว่า
"-b" ตัวเลือก (ตัวเลือกนี้จำเป็นเพราะไฟล์ netCDF ไม่สามารถเขียนได้
ไปยังเอาต์พุตมาตรฐานโดยตรง เนื่องจากไม่สามารถค้นหาเอาต์พุตมาตรฐานได้)
-k kind_of_file
การใช้ -k2 หรือ -k "64-bit offset" ระบุว่าไฟล์ (หรือโปรแกรม) ที่สร้างควร
ใช้รูปแบบเวอร์ชัน 2 ที่ใช้การชดเชยไฟล์ 64 บิต ค่าเริ่มต้นคือการใช้
รูปแบบเวอร์ชัน 1 ("คลาสสิก") พร้อมออฟเซ็ตไฟล์ 32 บิต แม้ว่าจะจำกัดไฟล์
ขนาดของไฟล์ netCDF ตัวแปร และบันทึกเป็นขนาดที่ . รองรับ
รูปแบบคลาสสิก (NetCDF-4 จะรองรับไฟล์ netCDF ชนิดอื่นๆ
"netCDF-4" และ "netCDF-4 classic model".) หมายเหตุ: -v ยังหมายถึง
เช่นเดียวกับ -k สำหรับความเข้ากันได้แบบย้อนหลัง แต่ควรใช้ -k เพื่อให้ตรงกับ
ตัวเลือก ncdump ที่เกี่ยวข้อง
-x อย่าเริ่มต้นข้อมูลด้วยค่าการเติม สิ่งนี้สามารถเร่งการสร้าง netCDF . ขนาดใหญ่
ไฟล์อย่างมาก แต่ภายหลังพยายามที่จะอ่านข้อมูลที่ไม่ได้เขียนจากไฟล์ที่สร้างขึ้น
จะไม่สามารถตรวจพบได้ง่าย
ตัวอย่าง
ตรวจสอบไวยากรณ์ของไฟล์ CDL `fo.cdl':
ncgen3 fo.cdl
จากไฟล์ CDL `fo.cdl' สร้างไฟล์ netCDF ไบนารีที่เทียบเท่าชื่อ `x.nc':
ncgen3 -o x.nc foo.cdl
จากไฟล์ CDL `fo.cdl' สร้างโปรแกรม C ที่มีฟังก์ชัน netCDF
การเรียกใช้ที่จำเป็นในการสร้างไฟล์ netCDF ไบนารีที่เทียบเท่าชื่อ `x.nc':
ncgen3 -c -o x.nc foo.cdl
การใช้
CDL วากยสัมพันธ์ สรุป
ด้านล่างนี้เป็นตัวอย่างของไวยากรณ์ CDL ที่อธิบายไฟล์ netCDF ที่มีชื่อหลายมิติ
(lat, lon และเวลา), ตัวแปร (Z, t, p, rh, lat, lon, เวลา), แอตทริบิวต์ของตัวแปร (หน่วย,
long_name, valid_range, _FillValue) และข้อมูลบางส่วน คีย์เวิร์ด CDL เป็นตัวหนา (นี้
ตัวอย่างมีจุดมุ่งหมายเพื่อแสดงรูปแบบไวยากรณ์ ไฟล์ CDL จริงจะมีความสมบูรณ์มากกว่า
ชุดของแอตทริบิวต์เพื่อให้ข้อมูลสามารถอธิบายตนเองได้อย่างสมบูรณ์ยิ่งขึ้น)
netcdf foo { // ตัวอย่างข้อกำหนด netCDF ใน CDL
มิติ:
lat = 10, lon = 5, เวลา = ไม่ จำกัด ;
ตัวแปร:
ยาว lat(lat), lon(lon), เวลา(เวลา);
ลอย Z(เวลา, lat, lon), t(เวลา, lat, lon);
สอง p(เวลา, lat, lon);
ยาว rh(เวลา, lat, lon);
// คุณสมบัติตัวแปร
lat:long_name = "ละติจูด";
lat:units = "degrees_north";
lon:long_name = "ลองจิจูด";
lon:units = "degrees_east";
time:units = "วินาทีตั้งแต่ 1992-1-1 00:00:00";
Z:units = "เมตร geopotential";
Z:valid_range = 0, 5000.;
p:_FillValue = -9999.;
rh:_FillValue = -1;
ข้อมูล:
ละติจูด = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
ลอน = -140, -118, -96, -84, -52;
}
คำสั่ง CDL ทั้งหมดสิ้นสุดด้วยเครื่องหมายอัฒภาค สามารถใช้ช่องว่าง แท็บ และขึ้นบรรทัดใหม่ได้
ได้อย่างอิสระเพื่อให้อ่านง่าย ความคิดเห็นอาจเป็นไปตามอักขระ `//' ในบรรทัดใดก็ได้
คำอธิบาย CDL ประกอบด้วยส่วนที่เป็นทางเลือกสามส่วน: มิติ, ตัวแปรและ ข้อมูล,
ขึ้นต้นด้วยคีย์เวิร์ด ขนาด:, ตัวแปรและ ข้อมูลตามลำดับ ตัวแปร
ส่วนหนึ่งอาจมี ตัวแปร ประกาศ และ คุณลักษณะ ที่ได้รับมอบหมาย.
netCDF มิติ ใช้เพื่อกำหนดรูปร่างของหลายมิติหนึ่งหรือหลายมิติ
ตัวแปรที่มีอยู่ในไฟล์ netCDF มิติ netCDF มีชื่อและขนาด ที่
ส่วนใหญ่หนึ่งมิติในไฟล์ netCDF สามารถมี ไม่ จำกัด ขนาดซึ่งหมายถึงตัวแปร
การใช้มิติข้อมูลนี้สามารถขยายความยาวได้ (เช่น หมายเลขบันทึกในไฟล์)
A ตัวแปร แสดงถึงอาร์เรย์หลายมิติของค่าประเภทเดียวกัน ตัวแปรมี
ชื่อ ชนิดข้อมูล และรูปร่างที่อธิบายโดยรายการมิติข้อมูล ตัวแปรแต่ละตัวอาจ
มีความเกี่ยวข้องด้วย แอตทริบิวต์ (ดูด้านล่าง) รวมทั้งค่าข้อมูล ชื่อ ชนิดข้อมูล
และรูปร่างของตัวแปรถูกกำหนดโดยการประกาศใน ตัวแปร ส่วนของ CDL
คำอธิบาย. ตัวแปรอาจมีชื่อเหมือนกับมิติ โดยอนุสัญญาดังกล่าว a
ตัวแปรเป็นแบบมิติเดียวและมีพิกัดของมิติที่ชื่อนั้น
มิติไม่จำเป็นต้องมีตัวแปรที่สอดคล้องกัน
netCDF คุณลักษณะ มีข้อมูลเกี่ยวกับตัวแปร netCDF หรือเกี่ยวกับ netCDF . ทั้งหมด
ชุดข้อมูล แอตทริบิวต์ใช้เพื่อระบุคุณสมบัติต่างๆ เช่น หน่วย ค่าพิเศษ ค่าสูงสุด
และค่าที่ถูกต้องขั้นต่ำ ปัจจัยมาตราส่วน ออฟเซ็ต และพารามิเตอร์ ข้อมูลคุณสมบัติ
ถูกแทนด้วยค่าเดี่ยวหรืออาร์เรย์ของค่า ตัวอย่างเช่น "หน่วย" เป็นแอตทริบิวต์
แทนด้วยอาร์เรย์อักขระเช่น "เซลเซียส" แอตทริบิวต์มีความเกี่ยวข้อง
ตัวแปร ชื่อ ชนิดข้อมูล ความยาว และค่า ตรงกันข้ามกับตัวแปรที่
มีไว้สำหรับข้อมูล คุณลักษณะมีไว้สำหรับข้อมูลเมตา (ข้อมูลเกี่ยวกับข้อมูล)
ใน CDL แอตทริบิวต์ถูกกำหนดโดยตัวแปรและชื่อแอตทริบิวต์ โดยคั่นด้วย `:' มัน
สามารถมอบหมายได้ ทั่วโลก คุณลักษณะที่ไม่เกี่ยวข้องกับตัวแปรใด ๆ ใน netCDF as
ทั้งหมดโดยใช้ `:' ก่อนชื่อแอตทริบิวต์ ชนิดข้อมูลของแอตทริบิวต์ใน CDL คือ
มาจากประเภทของค่าที่กำหนดให้กับมัน ความยาวของแอตทริบิวต์คือ
จำนวนค่าข้อมูลที่กำหนดให้หรือจำนวนอักขระในสตริงอักขระ
มอบหมายให้กับมัน ค่าหลายค่าถูกกำหนดให้กับแอตทริบิวต์ที่ไม่ใช่อักขระโดยแยก
ค่าด้วยเครื่องหมายจุลภาค ค่าทั้งหมดที่กำหนดให้กับแอตทริบิวต์ต้องเป็นประเภทเดียวกัน
ชื่อสำหรับมิติ CDL ตัวแปร และแอตทริบิวต์ต้องขึ้นต้นด้วยตัวอักษร
อักขระหรือ `_' และอักขระที่ตามมาอาจเป็นตัวอักษรและตัวเลขหรือ `_' หรือ `-'
ตัวเลือก ข้อมูล ส่วนของข้อกำหนด CDL คือที่ที่ตัวแปร netCDF อาจเป็น
เริ่มต้น ไวยากรณ์ของการเริ่มต้นนั้นง่าย: ชื่อตัวแปร เครื่องหมายเท่ากับ
และรายการค่าคงที่ที่คั่นด้วยเครื่องหมายจุลภาค (อาจคั่นด้วยช่องว่าง แท็บ และการขึ้นบรรทัดใหม่)
ลงท้ายด้วยเครื่องหมายอัฒภาค สำหรับอาร์เรย์หลายมิติ มิติสุดท้ายจะแตกต่างกันไป
เร็วที่สุด ดังนั้นการเรียงลำดับแถวแทนที่จะเป็นลำดับคอลัมน์จึงถูกใช้สำหรับเมทริกซ์ หากมีค่าน้อยกว่า
ให้มามากกว่าที่จำเป็นในการเติมตัวแปร มันถูกขยายด้วย type-dependent
`เติมค่า' ซึ่งสามารถแทนที่ได้โดยการระบุค่าสำหรับตัวแปรที่แตกต่าง
แอตทริบิวต์ชื่อ `_FillValue' ประเภทของค่าคงที่ไม่จำเป็นต้องตรงกับประเภทที่ประกาศไว้สำหรับ
ตัวแปร; มีการบังคับใช้เพื่อแปลงจำนวนเต็มเป็นจุดลอยตัวเป็นต้น NS
ค่าคงที่ `_' สามารถใช้เพื่อกำหนดค่าการเติมสำหรับตัวแปรได้
ดั้งเดิม ข้อมูล ประเภท
ถัง อักขระ
ไบต์ ข้อมูล 8-bit
Short จำนวนเต็มที่ลงนาม 16 บิต
ยาว จำนวนเต็มที่ลงนาม 32 บิต
int (มีความหมายเหมือนกันกับ ยาว)
ลอย จุดลอยตัวความแม่นยำเดียวของ IEEE (32 บิต)
จริง (มีความหมายเหมือนกันกับ ลอย)
สอง จุดลอยตัวความแม่นยำสองเท่าของ IEEE (64 บิต)
ยกเว้นการเพิ่ม data-type ไบต์ และขาด ไม่ได้ลงนาม, CDL รองรับเหมือนกัน
ชนิดข้อมูลพื้นฐานเช่น C. ชื่อของชนิดข้อมูลดั้งเดิมเป็นคำสงวนใน
CDL ดังนั้นชื่อของตัวแปร มิติข้อมูล และแอตทริบิวต์จะต้องไม่เป็นชื่อประเภท ใน
ประกาศ ชื่อประเภทอาจระบุเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กก็ได้
ไบต์แตกต่างจากอักขระที่มีจุดประสงค์เพื่อเก็บข้อมูลแปดบิตเต็ม
และไบต์ศูนย์ไม่มีความสำคัญเป็นพิเศษ เช่นเดียวกับข้อมูลอักขระ ncgen3
แปลง ไบต์ ประกาศถึง ถัง ประกาศในรหัสเอาต์พุต C และไปยัง
ไม่เป็นมาตรฐาน BYTE ประกาศในเอาต์พุตรหัส Fortran
Shorts สามารถเก็บค่าได้ระหว่าง -32768 ถึง 32767 ncgen3 แปลง Short ประกาศถึง
Short ประกาศในรหัสเอาต์พุต C และที่ไม่เป็นมาตรฐาน จำนวนเต็ม*2 ประกาศใน
เอาต์พุตรหัส Fortran
Longs สามารถเก็บค่าได้ระหว่าง -2147483648 ถึง 2147483647 ncgen3 แปลง ยาว
ประกาศถึง ยาว ประกาศในรหัสเอาต์พุต C และto จำนวนเต็ม ประกาศใน
เอาต์พุตรหัส Fortran int และ จำนวนเต็ม ได้รับการยอมรับเป็นคำพ้องความหมายสำหรับ ยาว ใน CDL
ประกาศ ตอนนี้มีแพลตฟอร์มที่มีการแสดงแบบ 64 บิตสำหรับ C longs แล้ว
อาจจะดีกว่าที่จะใช้ int คำพ้องความหมายเพื่อหลีกเลี่ยงความสับสน
ทุ่นลอยสามารถเก็บค่าได้ระหว่าง -3.4+38 ถึง 3.4+38 ตัวแทนภายนอกของพวกเขาคือ
เป็นตัวเลขทศนิยมความแม่นยำเดียวแบบ 32 บิต IEEE ที่ทำให้เป็นมาตรฐาน ncgen3 แปลง ลอย
ประกาศถึง ลอย ประกาศในรหัสเอาต์พุต C และto REAL ประกาศในการส่งออก
รหัสฟอร์ทราน จริง ได้รับการยอมรับว่าเป็นคำพ้องความหมายสำหรับ ลอย ในการประกาศ CDL
ประเภทคู่สามารถเก็บค่าได้ระหว่าง -1.7+308 ถึง 1.7+308 ตัวแทนภายนอกของพวกเขา
เป็นเลขทศนิยมแบบ double-precision แบบมาตรฐาน IEEE 64 บิต ncgen3
แปลง สอง ประกาศถึง สอง ประกาศในรหัสเอาต์พุต C และto ซ้อน
PRECISION ประกาศในเอาต์พุตรหัส Fortran
CDL ค่าคงที่
ค่าคงที่ที่กำหนดให้กับแอตทริบิวต์หรือตัวแปรอาจเป็นประเภท netCDF พื้นฐานใดๆ
ไวยากรณ์สำหรับค่าคงที่คล้ายกับไวยากรณ์ C ยกเว้นคำต่อท้ายประเภทนั้นต้องเป็น
ต่อท้ายกางเกงขาสั้นและลอยเพื่อแยกความแตกต่างจากแบบยาวและแบบคู่
A ไบต์ ค่าคงที่แสดงด้วยอักขระตัวเดียวหรือลำดับหลีกอักขระหลายตัว
อยู่ในเครื่องหมายคำพูดเดียว ตัวอย่างเช่น,
'a' // ASCII 'a'
'\0' // ไบต์ศูนย์
'\n' // อักขระขึ้นบรรทัดใหม่ ASCII
'\33' // อักขระหลีก ASCII (33 ฐานแปด)
'\x2b' // ASCII plus (2b hex)
'\377' // 377 ฐานแปด = 255 ทศนิยม ไม่ใช่ ASCII
ค่าคงที่อักขระอยู่ในเครื่องหมายคำพูดคู่ อาร์เรย์อักขระอาจถูกแสดง
เป็นสตริงที่อยู่ในเครื่องหมายคำพูดคู่ ธรรมเนียมการหลีกเลี่ยงสตริง C ตามปกตินั้นถือว่ามีเกียรติ
ตัวอย่างเช่น
"a" // ASCII `a'
"สอง\nlines\n" // สตริงอักขระ 10 ตัวที่มีการขึ้นบรรทัดใหม่สองตัว
"a bell:\007" // สตริงที่มี ASCII bell
โปรดทราบว่าอาร์เรย์อักขระ netCDF "a" จะพอดีกับตัวแปรหนึ่งองค์ประกอบ เนื่องจาก no
ถือว่าสิ้นสุดอักขระ NULL อย่างไรก็ตาม ศูนย์ไบต์ในอาร์เรย์อักขระคือ
ตีความว่าเป็นจุดสิ้นสุดของตัวอักษรสำคัญโดย เอ็นซีดัมพ์ โปรแกรมตาม
การประชุมค. ดังนั้น ไบต์ NULL ไม่ควรฝังในสตริงอักขระเว้นแต่
ในตอนท้าย: ใช้ ไบต์ ชนิดข้อมูลแทนอาร์เรย์ไบต์ที่มีศูนย์ไบต์
NetCDF และ CDL ไม่มีประเภทสตริง แต่มีอาร์เรย์อักขระที่มีความยาวคงที่เท่านั้น ซึ่งอาจ
หลายมิติ
Short ค่าคงที่จำนวนเต็มมีไว้สำหรับแสดงปริมาณที่มีเครื่องหมาย 16 บิต แบบฟอร์ม
ของ Short ค่าคงที่คือค่าคงที่จำนวนเต็มที่มี `s' หรือ `S' ต่อท้าย ถ้า Short
ค่าคงที่เริ่มต้นด้วย `0' จะถูกตีความว่าเป็นเลขฐานแปด ยกเว้นว่าถ้ามันขึ้นต้นด้วย `0x'
มันถูกตีความว่าเป็นค่าคงที่ฐานสิบหก ตัวอย่างเช่น:
-2s // สั้น -2
0123s // ฐานแปด
0x7ffs //เลขฐานสิบหก
นาน ค่าคงที่จำนวนเต็มมีไว้สำหรับแสดงปริมาณที่มีเครื่องหมาย 32 บิต แบบฟอร์ม
ของ ยาว ค่าคงที่เป็นค่าคงที่จำนวนเต็มธรรมดา แม้ว่าจะสามารถผนวก an . ได้
ตัวเลือก `l' หรือ 'L' ถ้า ยาว ค่าคงที่เริ่มต้นด้วย `0' มันถูกตีความว่าเป็นเลขฐานแปด
ยกเว้นว่าถ้ามันขึ้นต้นด้วย `0x' มันจะถูกตีความว่าเป็นค่าคงที่เลขฐานสิบหก ตัวอย่าง
ของที่ถูกต้อง ยาว ค่าคงที่ ได้แก่
-2
1234567890L
0123 // ฐานแปด
0x7ff // เลขฐานสิบหก
ค่าคงที่จุดลอยตัวของประเภท ลอย เหมาะสมกับการแสดงจุดลอยตัว
ข้อมูลที่มีความแม่นยำประมาณเจ็ดหลัก รูปแบบของ ลอย ค่าคงที่
เหมือนกับค่าคงที่จุดลอยตัว C โดยมี `f' หรือ `F' ต่อท้าย ตัวอย่างเช่น
ต่อไปนี้เป็นที่ยอมรับทั้งหมด ลอย ค่าคงที่:
-2.0ฉ
3.14159265358979f // จะถูกตัดทอนให้มีความแม่นยำน้อยลง
1. ฉ
ค่าคงที่จุดลอยตัวของประเภท สอง เหมาะสมกับการแสดงจุดลอยตัว
ข้อมูลที่มีความแม่นยำประมาณสิบหกหลักที่สำคัญ รูปแบบของ สอง ค่าคงที่
เหมือนกับค่าคงที่จุดลอยตัว C อาจมีการเติม `d' หรือ `D' เสริม สำหรับ
ตัวอย่างต่อไปนี้เป็นที่ยอมรับทั้งหมด สอง ค่าคงที่:
-2.0
3.141592653589793
1.0st-20
1 d
ใช้ ncgen3 ออนไลน์โดยใช้บริการ onworks.net