NCCSV -
ΑNetCDF-Συμβατό, UTF-8, CSV Προδιαγραφή αρχείου, Έκδοση 1.20
Μπομπ Σάιμονς και Στιβ Χάνκιν "NCCSV" από Bob Simons και Steve Hankin είναι αδειοδοτημένος απόCC με 4.0
Εισαγωγή
Αυτό το έγγραφο καθορίζει μια μορφή αρχείου κειμένου UTF-8 CSV που μπορεί να περιέχει όλες τις πληροφορίες (μεταδεδομένα και δεδομένα) που μπορεί να βρεθεί σεNetCDF .ncαρχείο που περιέχει έναν πίνακα δεδομένων τύπου αρχείου CSV. Η επέκταση αρχείου για ένα αρχείο κειμένου UTF-8 CSV που ακολουθεί αυτή την προδιαγραφή πρέπει να είναι .csv ώστε να μπορεί να διαβαστεί εύκολα και σωστά σε προγράμματα υπολογιστικών φύλλων όπως το Excel και τα Φύλλα Google. Bob Simons θα γράψει το λογισμικό για να μετατρέψει ένα αρχείο NCCSV σε έναNetCDF-3 (και ίσως επίσηςNetCDF-4) .ncαρχείο, και το αντίστροφο, χωρίς απώλεια πληροφοριών. Ο Μπομπ Σάιμονς έχει αλλάξει.ERDDAP™για την υποστήριξη ανάγνωσης και εγγραφής αυτού του τύπου αρχείου.
Η μορφή NCCSV έχει σχεδιαστεί έτσι ώστε λογισμικό υπολογιστικών φύλλων όπως το Excel και τα Φύλλα Google να μπορούν να εισάγουν ένα αρχείο NCCSV ως αρχείο csv, με όλες τις πληροφορίες στα κύτταρα του υπολογιστικού φύλλου έτοιμ α για επεξεργασία. Ή, ένα λογιστικό φύλλο μπορεί να δημιουργηθεί από το μηδέν μετά τις συμβάσεις NCCSV. Ανεξάρτητα από την πηγή του υπολογιστικού φύλλου, αν στη συνέχεια εξαχθεί ως αρχείο .csv, θα συμμορφωθεί με τις προδιαγραφές NCCSV και δεν θα χαθούν πληροφορίες. Οι μόνες διαφορές μεταξύ των αρχείων NCCSV και των αναλογικών αρχείων υπολογιστικών φύλλων που ακολουθούν αυτές τις συμβάσεις είναι:
- Τα αρχεία NCCSV έχουν τιμές σε μια γραμμή που χωρίζεται με κόμματα. Τα λογιστικά φύλλα έχουν τιμές σε μια γραμμή σε παρακείμενα κελιά.
- Οι συμβολοσειρές στα αρχεία NCCSV συχνά περιβάλλονται από διπλά εισαγωγικά. Οι συμβολοσειρές στα λογιστικά φύλλα δεν περιβάλλονται ποτέ από διπλά εισαγωγικά.
- Εσωτερικά διπλά εισαγωγικά (") Στις συμβολοσειρές στα αρχεία NCCSV εμφανίζονται ως 2 διπλά εισαγωγικά. Τα εσωτερικά διπλά εισαγωγικά σε λογιστικά φύλλα εμφανίζονται ως 1 διπλό απόσπασμα.
Δείτε τοΛογιστικό φύλλοενότητα παρακάτω για περισσότερες πληροφορίες.
Ροή
Όπως τα αρχεία CSV γε νικά, τα αρχεία NCCSV είναι διαθέσιμα. Έτσι, εάν ένα NCSV παράγεται on-the-fly από έναν εξυπηρετητή δεδομένων όπωςERDDAP™, ο διακομιστής μπορεί να αρχίσει να μεταδίδει δεδομένα στον αιτούντα πριν από τη συγκέντρωση όλων των δεδομένων. Αυτό είναι ένα χρήσιμο και επιθυμητό χαρακτηριστικό.NetCDFτα αρχεία, αντίθετα, δεν μπορούν να κυκλοφορήσουν.
ERDDAP
Αυτή η προδιαγραφή έχει σχεδιαστεί έτσι ώστε NCCSV αρχεία και το.ncαρχεία που μπορούν να δημιουργηθούν από αυτά μπορούν να χρησιμοποιηθούν από έναERDDAP™Διακομιστής δεδομένων (μέσω τηςΠίνακας EDDFromNccsvFilesκαιΠίνακας EDD από αρχείαNcΤύποι συνόλου δεδομένων) , αλλά αυτή η προδιαγραφή είναι εξωτερικήERDDAP.ERDDAP™έχει αρκετά απαιτούμενα παγκόσμια χαρακτηριστικά και πολλά συνιστώμενα παγκόσμια και μεταβλητά χαρακτηριστικά, κυρίως με βάση τα χαρακτηριστικά CF και ACDD (βλέπε /docs/server-admin/datasets#global-attributes).
Υπόλοιπο
Ο σχεδιασμός της μορφής NCCSV είναι μια ισορροπία πολλών απαιτήσεων:
- Τα αρχεία πρέπει να περιέχουν όλα τα δεδομένα και τα μεταδεδομένα που θα ήταν σε μια καρτέλαNetCDFαρχείο, συμπεριλαμβανομένων συγκεκριμένων τύπων δεδομένων.
- Τα αρχεία πρέπει να είναι σε θέση να διαβαστούν και στη συνέχεια να γράφονται από ένα λογιστικό φύλλο χωρίς απώλεια πληροφοριών.
- Τα αρχεία πρέπει να είναι εύκολο για τους ανθρώπους να δημιουργήσουν, να επεξεργαστούν, να διαβάσουν και να κατανοήσουν.
- Τα αρχεία πρέπει να είναι σε θέση να αναλυθούν σαφώς από τα προγράμματα υπολογιστών.
Εάν κάποια απαίτηση σε αυτό το έγγραφο φαίνεται περίεργη ή επιλεκτική, είναι πιθανόν να χρειαστεί να ικανοποιηθεί μία από αυτές τις απαιτήσεις.
Άλλες προδιαγραφές
Αυτή η προδιαγραφή αναφέρεται σε αρκετές άλλες προδιαγραφές και βιβλιοθήκες με τις οποίες έχει σχεδιαστεί για να λειτουργεί, αλλά αυτή η προδιαγραφή δεν αποτελεί μέρος κάποιας από αυτές τις άλλες προδιαγραφές, ούτε χρειάζεται καμία αλλαγή σε αυτές, ούτε έρχεται σε σύγκρουση με αυτές. Εάν μια λεπτομέρεια που σχετίζεται με ένα από αυτά τα πρότυπα δεν προσδιορίζεται εδώ, δείτε τις σχετικές προδιαγραφές. Αυτό περιλαμβάνει κυρίως:
- Η σύμβαση χαρακτηριστικών για την ανακάλυψη του συνόλου δεδομένων (ACDD) Πρότυπο μεταδεδομένων: https://wiki.esipfed.org/Attribute\_Convention\_for\_Data\_Discovery\_1-3 .
- Κλίμα και Πρόβλεψη (ΚΦ) Πρότυπο μεταδεδομένων: https://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html .
- ΗNetCDFΟδηγός χρήστη (NUG) : https:///docs.unidata.ucar.edu/netcdf-java/current/userguide/index.html .
- ΗNetCDFβιβλιοθήκες λογισμικού όπωςNetCDF- Ιάβα καιNetCDF-Γ: https://www.unidata.ucar.edu/software/netcdf/ . Αυτές οι βιβλιοθήκες δεν μπορούν να διαβάσουν αρχεία NCCSV, αλλά μπορούν να διαβάσουν.ncαρχεία που δημιουργήθηκαν από αρχεία NCCSV.
- ΤΖΣΟΝ: https://www.json.org/
Σημείωση
Στην παρούσα προδιαγραφή, παρενθέσεις,\[ \], δηλώνουν τα προαιρετικά στοιχεία.
Δομή αρχείου
Ένα πλήρες αρχείο NCCSV αποτελείται από δύο τμήματα: το τμήμα μεταδεδομένων, ακολουθούμενο από το τμήμα δεδομένων.
Τα αρχεία NCCSV μπορούν να περιέχουν χαρακτήρες UCS-2 (Δηλαδή, χαρακτήρες Unicode 2-byte, όπως στηνJava) κωδικοποιήθηκε μέσω UTF-8.ERDDAP™διαβάζει και γράφει αρχεία NCCSV χρησιμοποιώντας την κωδικοποίηση UTF-8.
Τα αρχεία NCCSV μπορούν να χρησιμοποιούν είτε νέα γραμμή (\n) (που είναι κοινό στους υπολογιστές Linux και Mac OS X) ή μεταφοράΕπιστροφή συν νέα γραμμή (\r\n) (που είναι κοινό στους υπολογιστές των Windows) ως δείκτες τέλους γραμμής, αλλά όχι και τα δύο.
.nccsvΜεταδεδομένα
Όταν τόσο ο δημιουργός όσο και ο αναγνώστης το περιμένουν, είναι επίσης δυνατό και μερικές φορές χρήσιμο να γίνει μια παραλλαγή ενός αρχείου NCCSV το οποίο περιέχει μόνο το τμήμα μεταδεδομένων (συμπεριλαμβανομένων των\*ΤΕΛΟΣ\_ΜΕΤΑΔΑΤΑ\*γραμμή) . Το αποτέλεσμα παρέχει πλήρη περιγραφή των χαρακτηριστικών του αρχείου, των μεταβλητών ονομάτων και των τύπων δεδομένων, εξυπηρετώντας έτσι τον ίδιο σκοπό με το .das plus .dds απαντήσεις από έναOPeNDAPΔιακομιστής.ERDDAP™θα επιστρέψει αυτή την παραλλαγή αν ζητήσετε το αρχείο Τύπος =.nccsvΜεταδεδομένα από έναERDDAP™Σύστημα δεδομένων.
Το τμήμα μεταδεδομένων
Σε ένα αρχείο NCCSV, κάθε γραμμή του τμήματος μεταδεδομένων χρησιμοποιεί τη μορφή
μεταβλητή Όνομα,χαρακτηριστικό Όνομα,τιμή1\[, αξία2\]\[, αξία3\]\[, αξία4\]\[...\]
Χώροι πριν ή μετά τα αντικείμενα δεν επιτρέπονται επειδή προκαλούν προβλήματα κατά την εισαγωγή του αρχείου σε προγράμματα υπολογιστικών φύλλων.
Συμβάσεις
Η πρώτη γραμμή ενός αρχείου NCCSV είναι η πρώτη γραμμή του τμήματος μεταδεδομένων και πρέπει να έχει ένα\ΠΑΓΚΟΣΜΙΑ\Οι συμβάσεις αποδίδουν τον κατάλογο όλων των συμβάσεων που χρησιμοποιούνται στο αρχείο ως συμβολοσειρές που περιέχουν κατάλογο CSV, για παράδειγμα: \ΠΑΓΚΟΣΜΙΑ\,συμβάσεις,"COARDS, CF-1,6, ACDD-1,3, NCCSV-1,2" Μία από τις συμβάσεις που απαριθμούνται πρέπει να είναι η NCCSV-1.2, η οποία αναφέρεται στην τρέχουσα έκδοση της παρούσας προδιαγραφής.
Τέλος μεταδεδομένων
Το τέλος του τμήματος μεταδεδομένων ενός αρχείου NCCSV πρέπει να υποδεικνύεται από μια γραμμή με μόνο \ΤΕΛΟΣ\_ΜΕΤΑΔΑΤΑ\
Συνιστάται αλλά δεν απαιτείται όλα τα χαρακτηριστικά για μια δεδομένη μεταβλητή να εμφανίζονται σε παρακείμενες γραμμές του τμήματος μεταδεδομένων. Εάν ένα αρχείο NCCSV μετατραπεί σε έναNetCDFαρχείο, η σειρά που η μεταβλητήNames πρωτοεμφανίζεται στην ενότητα μεταδεδομένων θα είναι η σειρά των μεταβλητών στηνNetCDFΑρχείο.
Προαιρετικές κενές γραμμές επιτρέπονται στην ενότητα μεταδεδομένων μετά την απαιτούμενη πρώτη γραμμή με\ΠΑΓΚΟΣΜΙΑ\ ΣυμβάσειςΠληροφορίες (Βλέπε παρακάτω) και πριν από την απαιτούμενη τελευταία γραμμή με\ΤΕΛΟΣ\_ΜΕΤΑΔΑΤΑ\.
Εάν ένα λογιστικό φύλλο δημιουργηθεί από ένα αρχείο NCCSV, το τμήμα δεδομένων μεταδεδομένων θα εμφανιστεί με μεταβλητά ονόματα στη στήλη Α, να αποδοθούν ονόματα στη στήλη Β, και τιμές στη στήλη Γ.
Εάν ένα λογιστικό φύλλο που ακολουθεί αυτές τις συμβάσεις αποθηκεύεται ως αρχείο CSV, συχνά θα υπάρχουν επιπλέον κόμματα στο τέλος των γραμμών στο τμήμα μεταδεδομένων. Το λογισμικό που μετατρέπει τα αρχεία NCCSV σε.ncαρχεία θα αγνοήσουν τα επιπλέον κόμματα.
μεταβλητή Όνομα
μεταβλητή Όνομα είναι το όνομα μιας μεταβλη τής στο αρχείο δεδομένων. Όλες οι μεταβλητές ονομασίες πρέπει να ξεκινούν με ένα γράμμα ASCII 7-bit ή υπογράμμιση και να αποτελούνται από γράμματα ASCII 7-bit, υποδείκτες και ψηφία ASCII 7-bit.
ΠΑΓΚΟΣΜΙΑ
Η ειδική μεταβλητήName\ΠΑΓΚΟΣΜΙΑ\χρησιμοποιείται για να υποδηλώσει τα παγκόσμια μεταδεδομένα.
χαρακτηριστικό Όνομα
χαρακτηριστικό Όνομα είναι το ευαίσθητο στην περίπτωση όνομα ενός χαρακτηριστικού που συνδέεται με μια μεταβλητή ή\ΠΑΓΚΟΣΜΙΑ\. Όλες οι ονομασίες χαρακτηριστικών πρέπει να αρχίζουν με ένα γράμμα ASCII 7-bit ή υπογράμμιση και να αποτελούνται από γράμματα ASCII 7-bit, υποδείκτες και ψηφία ASCII 7-bit.
ΣΚΑΛΑΡΙ
Το ειδικό χαρακτηριστικό Όνομα\*ΣΚΑΛΑΡΙ\*μπορεί να χρησιμοποιηθεί για τη δημιουργία μιας κυμαινόμενης μεταβλητής δεδομένων και τον ορισμό της τιμής της. Ο τύπος των δεδομένων\*ΣΚΑΛΑΡΙ\*ορίζει τον τύπο δεδομένων για τη μεταβλητή, οπότε μην ορίζετε ένα\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*χαρακτηριστικό για τις κλιμακωτές μεταβλητές. Σημειώστε ότι δεν πρέπει να υπάρχουν δεδομένα για τη κλιμακωτή μεταβλητή στο τμήμα δεδομένων του αρχείου NCCSV.
Για παράδειγμα, για να δημιουργήσετε μια κλιμακωτή μεταβλητή που ονομάζεται "πλοίο" με την τιμή "Okeanos Explorer" και ένα χαρακτηριστικό cf\_role, χρησιμοποιήστε: πλοίο,\ΣΚΑΛΑΡΙ\,"Οκεανός Explorer" πλοίο,cf\_role,trajectory\_id Όταν μια κλιμακωτή μεταβλητή δεδομένων διαβάζεται σεERDDAP™, η κλιμακωτή τιμή μετατρέπεται σε στήλη στον πίνακα δεδομένων με την ίδια τιμή σε κάθε γραμμή.
τιμή
τιμή είναι η τιμή του χαρακτηριστικού μεταδεδομένων και πρέπει να είναι μια σειρά με ένα ή περισσότερα είτε byte, ubyte, σύντομο, ushort, int, uint, long, ulong, float, διπλό, String, ή char. Δεν υποστηρίζονται άλλοι τύποι δεδομένων. Χαρακτηριστικά χωρίς αξία θα αγνοηθούν. Εάν υπάρχουν περισσότερες από μία υπο-τιμές, οι υπο-τιμές πρέπει να είναι όλες του ίδιου τύπου δεδομένων. Για τύπους δεδομένων πλην των συμβολοσειρών, οι τιμές ΠΡΕΠΕΙ να διαχωρίζονται με κόμματα, για παράδειγμα: sst,actual\_range,0.17στ,23.58στ Για τις συμβολοσειρές, χρησιμοποιήστε μία μόνο συμβολοσειρά με\n (νέα γραμμή) χαρακτήρες που χωρίζουν τις υποχορδώσεις.
Οι ορισμοί των τύπων στοιχείων χαρακτηριστικών γνωρίσματα είναι:
byte (αντίγραφο)
- τιμές χαρακτηριστικού byte (8-bit, υπογεγραμμένο) πρέπει να είναι γραμμένο με το επίθημα 'β', π.χ., -7β, 0β, 7β. Το εύρος των έγκυρων τιμών byte είναι -128 έως 127. Ένας αριθμός που μοιάζει με byte αλλά δεν είναι έγκυρος (π.χ. 128b) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος.
ουμπάιτ
- τιμές ιδιοτήτων ubyte (8-bit, χωρίς υπογραφή) πρέπει να γραφτεί με το επίθημα 'ub', π.χ., 0ub, 7ub, 250ub. Το εύρος των έγκυρων τιμών byte είναι 0 έως 255. Ένας αριθμός που μοιάζει με ένα ubyte αλλά είναι άκυρος (π.χ., 256ub) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος. Όταν είναι δυνατόν, χρησιμοποιήστε byte αντί για ubyte, επειδή πολλά συστήματα δεν υποστηρίζουν ανυπόγραφα bytes (π.χ. χαρακτηριστικάNetCDF-3 αρχεία) .
σύντομο
- βραχείες τιμές χαρακτηριστικού (16-bit, υπογεγραμμένο) πρέπει να είναι γραμμένο με το επίθημα 's', π.χ. -30000s, 0s, 30000s. Το εύρος των έγκυρων βραχέων τιμών είναι -32768 έως 32767. Ένας αριθμός που μοιάζει με σύντομο αλλά είναι άκυρος (π.χ., 32768s) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος.
βραχυκύκλωμα
- τιμές ιδιοτήτων ushort (16-bit, χωρίς υπογραφή) πρέπει να γράφεται με το επίθημα «εμείς», π.χ., 0us, 30000us, 60000us. Το εύρος των έγκυρων βραχέων τιμών είναι 0 έως 65535. Ένας αριθμός που μοιάζει με ταξιαρχία αλλά είναι άκυρος. (π.χ., 65536us) θα μετατραπεί σε μια ελλεί πουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος. Όταν είναι δυνατόν, χρησιμοποιήστε σύντομη αντί για μας σύντομη, επειδή πολλά συστήματα δεν υποστηρίζουν ανυπόγραφα bytes (π.χ. χαρακτηριστικάNetCDF-3 αρχεία) .
byte (αντίγραφο)
- τιμές χαρακτηριστικού int (32-bit, υπογεγραμμένο) πρέπει να γράφονται ως ints JSON χωρίς δεκαδικό ψηφίο ή εκθέτη, αλλά με το επίθημα 'i', π.χ., -12067978i, 0i, 12067978i. Το εύρος των έγκυρων τιμών int είναι -2147483648 έως 2147483647. Ένας αριθμός που μοιάζει με int αλλά είναι άκυρος (π.χ., 2147483648i) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος.
ί ας
- τιμές χαρακτηριστικού (32-bit, χωρίς υπογραφή) πρέπει να γράφονται ως ints JSON χωρίς δεκαδικό ψηφίο ή εκθέτη, αλλά με το επίθημα 'ui', π.χ., 0ui, 12067978ui, 4123456789ui. Το εύρος των έγκυρων τιμών int είναι 0 έως 4294967295. Ένας αριθμός που μοιάζει με uint αλλά είναι άκυρος (π.χ., 2147483648ui) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος. Όταν είναι δυνατόν, χρησιμοποιήστε int αντί για uint, επειδή πολλά συστήματα δεν υποστηρίζουν ανυπόγραφα bytes (π.χ. χαρακτηριστικάNetCDF-3 αρχεία) .
μακρύ
- μεγάλες τιμές ιδιοτήτων (64-bit, υπογεγραμμένο, υποστηρίζεται σήμερα από NUG καιERDDAP™αλλά δεν υποστηρίζεται ακόμη από την ΚΙ) πρέπει να γράφεται χωρίς δεκαδικό ψηφίο και με το επίθημα 'L', π.χ., -12345678787654321L, 0L, 12345678987654321L. Εάν χρησιμοποιείτε το λογισμικό μετατροπής για να μετατρέψετε ένα αρχείο NCCSV με μεγάλες τιμές σε έναNetCDF-3 αρχείο, τυχόν μεγάλες τιμές θα μετατραπεί σε διπλές τιμές. Το εύρος των έγκυρων μεγάλων τιμών είναι -9223372036854775808 έως 9223372036854775807. Ένας αριθμός που μοιάζει με μακρύ αλλά είναι άκυρος (π.χ., 9223372036854775808L) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος. Όταν είναι δυνατόν, χρησιμοποιήστε διπλά αντί για ulong, γιατί πολλά συστήματα δεν υποστηρίζουν πολύ (π.χ.,NetCDF-3 αρχεία) .
ουλόνγκ
- τιμές ουλόνγκ ιδιοτήτων (64-bit, χωρίς υπογραφή, επί του παρόντος υποστηρίζεται από NUG καιERDDAP™αλλά δεν υποστηρίζεται ακόμη από την ΚΙ) πρέπει να γράφεται χωρίς δεκαδικό ψηφίο και με το επίθημα «uL», π.χ., 0uL, 12345678987654321uL, 9007199254740992uL . Εάν χρησιμοποιείτε το λογισμικό μετατροπής για να μετατρέψετε ένα αρχείο NCCSV με μεγάλες τιμές σε έναNetCDF-3 αρχείο, τυχόν μεγάλες τιμές θα μετατραπεί σε διπλές τιμές. Το εύρος των έγκυρων μεγάλων τιμών είναι 0 έως 18446744073709551615. Ένας αριθμός που μοιάζει με ένα ulong αλλά είναι άκυρος (π.χ., 18446744073709551616uL) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος. Όταν είναι δυνατόν, χρησιμοποιήστε διπλά αντί για ulong, επειδή πολλά συστήματα δεν υποστηρίζουν υπογεγραμμένα ή ανυπόγραφα μακριά (π.χ.,NetCDF-3 αρχεία) .
πλωτήρας
- τιμές ιδιοτήτων επίπλευσης (32-bit) πρέπει να γράφεται με το επίθημα «f» και μπορεί να έχει δεκαδικό ή/και εκθέτη, π.χ., 0f, 1f, 12.34f, 1e12f, 1.23e+12f, 1.23e12f, 1.87E-7f. Χρήση NaNf για πλωτήρα NaN (λείπει) αξία. Το εύρος των πλωτήρων είναι περίπου +/- 3.40282347E+38f (~7 σημαντικά δεκαδικά ψηφία) . Ένας αριθμός που μοιάζει με άρμα αλλά δεν είναι έγκυρος (π.χ. 1,0e39f) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος.
διπλό
- διπλάσιες τιμές ιδιοτήτων (64-bit) πρέπει να γράφεται με το επίθημα 'd' και μπορεί να έχει δεκαδικό ή/και εκθέτη, π.χ., 0d, 1d, 12.34d, 1e12d, 1.23e+12d, 1.23e12d, 1.87E-7d. Χρήση του NaNd για διπλό NaN (λείπει) αξία. Το εύρος των διπλών είναι περίπου +/-1.79769313486231570E+308d (~15 σημαντικά δεκαδικά ψηφία) . Ένας αριθμός που μοιάζει με διπλό αλλά είναι άκυρος. (π.χ., 1.0e309d) θα μετατραπεί σε μια ελλείπουσα τιμή ή θα δημιουργήσει ένα μήνυμα σφάλματος.
Στρινγκ
- Οι τιμές χαρακτηριστικού συμβολοσειράς είναι μια ακολουθία χαρακτήρων UCS-2 (Δηλαδή, χαρακτήρες Unicode 2-byte, όπως στηνJava) , η οποία πρέπει να γραφτεί ως JSON-όπως χορδές.
- Διπλά εισαγωγικά (") εντός μιας τιμής συμβολοσειράς πρέπει να κωδικοποιούνται ως δύο διπλά εισαγωγικά (~) . Αυτό απαιτούν τα προγράμματα υπολογιστικών φύλλων κατά την ανάγνωση αρχείων .csv. Αυτό γράφουν τα προγράμματα υπολογιστικών φύλλων όταν αποθηκεύετε ένα υπολογιστικό φύλλο ως αρχείο .csv.
- Οι ειδικοί χαρακτήρες JSON με κωδικό backslash μέσα σε μια τιμή συμβολοσειρών πρέπει να κωδικοποιούνται όπως στο JSON (κυρίως\n(νεογραμμή), \\ ( (πίσω πλευρά), \ff (μορφή), \ t (ταμπ), \r (επιστροφή φορτίου) ή με το\ - Ναι. σύνταξη. Σε ένα λογιστικό φύλλο, μην χρησιμοποιείτε το Alt Enter για να καθορίσετε μια νέα γραμμή μέσα σε ένα κελί κειμένου.\n (2 χαρακτήρες: backslash και 'n ") για να δείξει μια νέα γραμμή.
uhhhh
- Όλοι οι άλλοι χαρακτήρε ς λιγότεροι από το χαρακτήρα #32 πρέπει να κωδικοποιηθούν με τη σύνταξη \uuu beuuuuuuuuuuuuuuuuuuuuuuuu\u\\\\\\\\\\\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu must mustuuuuuuuuuuuuuuuuuuu mustuuuuuu mustu must must must must must must must must must must must must must must must must must must must - Ναι. , όπου hhhhh είναι ο τετραψήφιος δεκαεξαδικός αριθμός του χαρακτήρα.
- Όλοι οι εκτυπώσιμοι χαρακτήρες μεγαλύτεροι από τον χαρακτήρα #126, π.χ., το σήμα Euro, μπορεί να εμφανίζονται χωρίς κωδικό, π.χ. € (ο χαρακτήρας του ευρώ) , ή κωδικοποιημένα με το\ - Ναι. σύνταξη, π.χ., \u20AC. Βλέπε τις σελίδες κωδικών που αναφέρονται στο https://en.wikipedia.org/wiki/Unicode να βρείτε τους δεκαεξαδικούς αριθμούς που σχετίζονται με συγκεκριμένους χαρακτήρες Unicode, ή να χρησιμοποιήσετε μια βιβλιοθήκη λογισμικού. Σημειώστε ότι μερικάERDDAP™Τύποι αρχείων εξόδου, π.χ. .csv, χρησιμοποιήστε το σύνολο χαρακτήρων ISO 8859-1, έτσι οι χαρακτήρες Unicode πάνω από το #255 θα χαθούν όταν αυτές οι τιμές δεδομένων γράφονται σε αυτούς τους τύπους αρχείων.
- Όλοι οι μη εκτυπώσιμοι χαρακτήρες μεγαλύτεροι από το χαρακτήρα #126, π.χ., ο χαρακτήρας #127, είναι ΣΤΡΑΤΙΩΤΙΚΑ ΑΘΛΗΤΟΙ, αλλά θα πρέπει να χρησιμοποιήσετε το - u - Ναι. σύνταξη εάν τα συμπεριλάβετε.
- Εάν η συμβολοσειρά έχει χώρο στην αρχή ή στο τέλος, ή περιλαμβάνει " (διπλή προσφορά) ή ένα κόμμα, ή περιέχει τιμές που διαφορετικά θα ερμηνευόταν ως κάποιος άλλος τύπος δεδομένων (π.χ. ένα int) , ή είναι η λέξη "null", ολόκληρη η συμβολοσειρά πρέπει να περικλείεται σε δύο εισαγωγικά; διαφορετικά, σε αντίθεση με JSON, το περικλείοντας δύο εισαγωγικά είναι προαιρετική. Σας συνιστούμε: όταν έχετε αμφιβολίες, να περικλείσετε ολόκληρο το String σε διπλά εισαγωγικά. Οι χώροι στην αρχή ή στο τέλος ενός String αποθαρρύνονται έντονα.
Χαρ
- char τιμές ιδιοτήτων είναι ένας ενιαίος χαρακτήρας UCS-2 (Δηλαδή, χαρακτήρες Unicode 2-byte, όπως στηνJava) . Εκτυπώσιμοι χαρακτήρες (εκτός από ειδικούς χαρακτήρες όπως η νέα γραμμή, ", και \) Μπορεί να γραφτεί όπως είναι. Ειδικοί χαρακτήρες (π.χ., νέα γραμμή) και άλλοι μη εκτυπώσιμοι χαρακτήρες (π.χ. #127) πρέπει να είναι γραμμένο με το\ - Ναι. σύνταξη. Οι τιμές χαρακτηριστικών Char πρέπει να περικλείονται σε μεμονωμένες εισαγωγικές τιμές (τα εσωτερικά εισαγωγικά) και διπλά εισαγωγικά (τα εξωτερικά αποσπάσματα) , π.χ., "'' """"""""""""",· (χαρακτήρας διπλής φράσης) , "'\"""""""""· (ένας μοναδικός χαρακτήρας φράσης) , "'\t"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""") (καρτέλα) , "'\u007F'" (ο χαρακτήρας διαγραφής ") , και "'' €'" (ο χαρακτήρας του ευρώ) . Αυτό το σύστημα χρήσης μονών και διπλών εισαγωγικών είναι περίεργο και δυσκίνητο, αλλά είναι ένας τρόπος να διακρίνουμε τις αξίες χαρακτήρων από τις συμβολοσειρές με τρόπο που λειτουργεί με υπολογιστικά φύλλα. Μια τιμή που μοιάζει με ένα char αλλά είναι άκυρη θα δημιουργήσει ένα μήνυμα σφάλματος. Σημειώστε ότι μερικάERDDAP™Τύποι αρχείων εξόδου, π.χ. .csv, χρησιμοποιήστε το σύνολο χαρακτήρων ISO 8859-1, έτσι οι χαρακτήρες Unicode πάνω από το #255 θα χαθούν όταν αυτές οι τιμές δεδομένων γράφονται σε αυτούς τους τύπους αρχείων.
Επίθημα
Σημειώστε ότι στο τμήμα ιδιοτήτων ενός αρχείου NCCSV, όλες οι αριθμητικές τιμές χαρακτηριστικών πρέπει να έχουν ένα γράμμα επιθήματος (π.χ., «β») για τον προσδιορισμό του αριθμητικού τύπου δεδομένων (π.χ. byte) . Αλλά στο τμήμα δεδομένων ενός αρχείου NCCSV, οι αριθμητικές τιμές δεδομένων δεν πρέπει ποτέ να έχουν αυτά τα επιθήματα γράμματα (με εξαίρεση το «L» για μακρούς ακέραιους και το «ulong integers») — ο τύπος των δεδομένων καθορίζεται από το\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*χαρακτηριστικό για τη μεταβλητή.
Τύπος δεδομένων
Ο τύπος δεδομένων για κάθε μη-φολίδεςη μεταβλητή πρέπει να προσδιορίζεται από ένα\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*χαρακτηριστικό που μπορεί να έχει τιμή byte, ubyte, σύντομο, ushort, int, uint, long, ulong, float, διπλό, String, ή char (περίπτωση αναίσθητη) . Για παράδειγμα, qc\_flag,\ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\,byte ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Προσδιορίζοντας το σωστό\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*είναι δική σου ευθύνη. Καθορισμός λανθασμένου τύπου δεδομένων (π.χ., int όταν θα έπρεπε να έχετε ορίσει πλωτήρα) δεν θα δημιουργήσει ένα μήνυμα σφάλματος και μπορεί να προκαλέσει απώλεια πληροφοριών (π.χ., οι τιμές επίπλευσης θα στρογγυλοποιούνται σε μονάδες) όταν το αρχείο NCCSV διαβάζεται απόERDDAP™ή να μετατραπεί σε αNetCDFΑρχείο.
Η Χαρ Αποθαρρυμένη
Η χρήση των τιμών δεδομένων χαρακτήρων αποθαρρύνεται επειδή δεν υποστηρίζονται ευρέως σε άλλους τύπους αρχείων. τιμές χαρακτήρων μπορούν να γραφούν στην ενότητα δεδομένων ως ενιαίοι χαρακτήρες ή ως συμβολοσειρές (Ειδικότερα, αν χρειάζεται να γράψετε έναν ιδιαίτερο χαρακτήρα) . Αν βρεθεί μια συμβολοσειρά, ο πρώτος χαρακτήρας της συμβολοσειράς θα χρησιμοποιηθεί ως τιμή του char. Μηδέν μήκος συμβολοσειρές και ελλείπουσες τιμές θα μετατραπεί σε χαρακτήρα \uFFFF. Σημειώστε ότιNetCDFαρχεία υποστηρίζουν μόνο ένα byte chars, έτσι ώστε οποιαδήποτε chars μεγαλύτερο από το # 255 char θα μετατραπεί σε '?' όταν γράφετεNetCDFαρχεία. Αν δεν χρησιμοποιηθεί ένα χαρακτηριστικό χαρακτήρων για τον προσδιορισμό ενός διαφορετικού συνόλου χαρακτήρων για μια μεταβλητή χαρακτήρων, θα χρησιμοποιηθεί το σύνολο χαρακτήρων ISO-8859-1.
Μακρύς και Αδήλωτος Αποθαρρυμένος
Οι μακροσκελείς και Ανυπόγραφοι Τύποι Αποθαρρύνονται. Αν και πολλοί τύποι αρχείων (π.χ.,NetCDF-4 και Json) καιERDDAP™υποστήριξη μακρά και χωρίς υπογραφή (ubyte, ushort, uint, ulong) τιμές, η χρήση των μακρών και ανυπόγραφων τιμών στα αρχεία NCCSV είναι προς το παρόν αποθαρρύνεται, επειδή δεν υποστηρίζονται από το Excel, CF καιNetCDF-3 αρχεία. Αν θέλετε να καθορίσετε μεγάλες ή ανυπόγραφες τιμές σε ένα αρχείο NCCSV (ή στο αντίστοιχο λογιστικό φύλλο Excel) , θα πρέπει να χρησιμοποιήσετε το επίθημα 'L' έτσι ώστε το Excel δεν αντιμετωπίζει τους αριθμούς ως αριθμούς κινητής υποδιαστολής με χαμηλότερη ακρίβεια. Επί του παρόντος, αν ένα αρχείο NCCSV μετατρέπεται σε έναNetCDF-3.ncαρχείο, τιμές μακρών και μακροσκελών δεδομένων θα μετατραπούν σε διπλές τιμές, προκαλώντας απώλεια ακρίβειας για πολύ μεγάλες τιμές (Ίσης ή ανώτερης των 2 ft και κατώτερης των 2 ft) . ΜέσαNetCDF-3.ncαρχεία, ubyte, ushort, και μεταβλητές uint εμφανίζονται ως byte, σύντομο, και int με το \_Unsigned=true χαρακτηριστικό μεταδεδομένων. ΜέσαNetCDF-3.ncαρχεία, ubyte, ushort, και uint χαρακτηριστικά εμφανίζονται ως byte, short, και int χαρακτηριστικά που περιέχουν την αντίστοιχη τιμή των δύο συμπληρωμάτων (π.χ., 255ub εμφανίζεται ως -1b) . Αυτό είναι προφανώς πρόβλημα, οπότε θα πρέπει να χρησιμοποιούνται υπογεγραμμένοι τύποι δεδομένων αντί ανυπόγραφων τύπων δεδομένων όποτε είναι δυνατόν.
CF, ACDD, καιERDDAP™Μεταδεδομένα
Δεδομένου ότι προβλέπεται ότι τα περισσότερα αρχεία NCCSV, ή.ncαρχεία που δημιουργήθηκαν από αυτούς, θα διαβαστούν στοERDDAP, συνιστάται έντονα ότι τα αρχεία NCCSV περιλαμβάνουν τα χαρακτηριστικά μεταδεδομένων που απαιτούνται ή συνιστώνται απόERDDAP™(βλέπε /docs/server-admin/datasets#global-attributes). Τα χαρακτηριστικά είναι σχεδόν όλα από τα πρότυπα μεταδεδομένων CF και ACDD και χρησιμεύουν για την ορθή περιγραφή του συνόλου δεδομένων (Ποιος, τι, πότε, πού, γιατί, πώς) σε κάποιον που διαφορετικά δεν ξέρει τίποτα για το σύνολο δεδομένων. Ιδιαίτερης σημασίας, σχεδόν όλες οι αριθμητικές μεταβλητές θα πρέπει να έχουν ένα χαρακτηριστικό μονάδων μεUDUNITS-συμβατή τιμή, π.χ., sst, μονάδες, βαθμός\_C
Είναι καλό να περιλαμβάνονται πρόσθετα χαρακτηριστικά που δεν προέρχονται από τα πρότυπα CF ή ACDD ή απόERDDAP.
Το τμήμα δεδομένων
Δομή
Η πρώτη γραμμή του τμήματος δεδομένων πρέπει να έχει έναν κατάλογο μεταβλητών ονομάτων ευαίσθητο στην περίπτωση, χωρισμένο με κόμματα. Όλες οι μεταβλητές του παρόντος καταλόγου πρέπει να περιγράφονται στο τμήμα μεταδεδομένων, και αντίστροφα (εκτός\ΠΑΓΚΟΣΜΙΑ\χαρακτηριστικά και\ΣΚΑΛΑΡΙ\μεταβλητές) .
Η δεύτερη μέσω των προτελευταίων γραμμών του τμήματος δεδομένων πρέπει να έχει έναν κατά κόμμα χωρισμένο κατάλογο τιμών. Κάθε σειρά δεδομένων πρέπει να έχει τον ίδιο αριθμό τιμών με τον κατά κόμμα χωρισμένο κατάλογο ονομάτων μεταβλητών. Οι χώροι πριν ή μετά τις τιμές δεν επιτρέπονται επειδή προκαλούν προβλήματα κατά την εισαγωγή του αρχείου σε προγράμματα υπολογιστικών φύλλων. Κάθε στήλη του παρόντος τμήματος πρέπει να περιέχει μόνο τις τιμές του\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*που καθορίζονται για τη μεταβλητή αυτή από το\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*χαρακτηριστικό για τη μεταβλητή αυτή. Σε αντίθεση με την ενότητα ιδιοτήτων, οι αριθμητικές τιμές στην ενότητα δεδομένων δεν πρέπει να έχουν γράμματα επιθήματος για να υποδηλώσουν τον τύπο δεδομένων. Σε αντίθεση με την ενότητα ιδιοτήτων, οι τιμές char στην ενότητα δεδομένων μπορεί να παραλείψουν τα περικλείοντας μονά εισαγωγικά αν δεν είναι απαραίτητα για την αποπροσανατολισμό (Συνεπώς, τα «,» και «\» πρέπει να αναφέρονται όπως φαίνεται εδώ) . Μπορεί να υπάρχει οποιοσδήποτε αριθμός αυτών των γραμμών δεδομένων σε ένα αρχείο NCCSV, αλλά προς το παρόνERDDAP™μπορεί να διαβάσει μόνο αρχεία NCCSV με έως περίπου 2 δισεκατομμύρια σειρές. Γενικά, συνιστάται να διαχωρίσετε μεγάλα σύνολα δεδομένων σε πολλαπλά αρχεία δεδομένων NCCSV με λιγότερες από 1 εκατομμύριο σειρές το καθένα.
Τέλος δεδομένων
Το τέλος του τμήματος δεδομένων πρέπει να υποδεικνύεται από γραμμή με μόνο \ΤΕΛΟΣ\_DATA\
Εάν υπάρχει πρόσθετο περιεχόμενο στο αρχείο NCCSV μετά την\*ΤΕΛΟΣ\_DATA\*γραμμή, θα αγνοηθεί όταν το αρχείο NCCSV μετατραπεί σε ένα.ncΑρχείο. Συνεπώς, το περιεχόμενο αυτό αποθαρρύνεται.
Σε ένα λογιστικό φύλλο που ακολουθεί αυτές τις συμβάσεις, οι μεταβλητές ονομασίες και τιμές δεδομένων θα είναι σε πολλαπλές στήλες. Δείτε το παράδειγμα παρακάτω.
Αγνοούμενες τιμές
Οι αριθμητικές τιμές που λείπουν μπορούν να γράφονται ως αριθμητική τιμή που προσδιορίζεται από έναmissing\_valueή \_FillValue χαρακτηριστικό για τη μεταβλητή αυτή. Για παράδειγμα, δείτε τη δεύτερη τιμή σε αυτή τη γραμμή δεδομένων: Μπελ Μ. Σιμάντα, 99,123,4 Αυτός είναι ο συνιστώμενος τρόπος χειρισμού των τιμών που λείπουν για byte, ubyte, σύντομο, ushort, int, uint, long, και ulong μεταβλ ητές.
Οι τιμές επίπλευσης ή διπλής NaN μπορούν να γράφονται ως NaN. Για παράδειγμα, δείτε τη δεύτερη τιμή σε αυτή τη γραμμή δεδομένων: Μπελ Μ. Σιμάντα, Νάν.123.4
Οι τιμές συμβολοσειράς και αριθμητικών ελλειπουσών τιμών μπορούν να υποδεικνύονται από ένα κενό πεδίο. Για παράδειγμα, δείτε τη δεύτερη τιμή σε αυτή τη γραμμή δεδομένων: Μπελ Μ. Σιμάντα, 123,4
Για τις μεταβλητές byte, ubyte, short, ushort, int, uint, long και ulong, η χρησιμότητα μετατροπέα NCCSV καιERDDAP™θα μετατρέψει ένα κενό πεδίο στη μέγιστη επιτρεπόμενη τιμή για αυτόν τον τύπο δεδομένων (π.χ., 127 για bytes) . Εάν το κάνετε αυτό, βεβαιωθείτε ότι προσθέσετε amissing\_valueή \_FillValue χαρακτηριστικό για τη μεταβλητή αυτή για τον προσδιορισμό αυτής της τιμής, π.χ. μεταβλητή Όνομα ,\_FillValue,127β Για πλωτήρες και διπλές μεταβλητές, ένα κενό πεδίο θα μετατραπεί σε NaN.
Τιμές ημερομηνίας ώρας
Τιμές ημερομηνίας (συμπεριλαμβανομένων των τιμών ημερομηνίας που δεν έχουν χρονική συνιστώσα) μπορούν να εκπροσωπούνται ως αριθμοί ή ως συμβολοσειρές σε αρχεία NCCSV. Μια δοσμένη μεταβλητή χρόνου ημερομηνίας μπορεί να έχει μόνο τιμές συμβολοσειρών ή μόνο αριθμητικές τιμές, όχι και οι δύο. Το λογισμικό NCCSV θα μετατρέψει τις τιμές του χρόνου συμβολοσειρών σε αριθμητική ημερομηνία Τιμές χρόνου κατά τη δημιουργία.ncαρχεία (όπως απαιτείται από την ΚΙ) . Οι τιμές του χρόνου συμβολοσειράς έχουν το πλεονέκτημα ότι είναι εύκολα αναγνώσιμες από τους ανθρώπους.
Οι τιμές DateTime που αντιπροσωπεύονται ως αριθμητικές τιμές πρέπει να έχουν ένα χαρακτηριστικό μονάδων που καθορίζει το " μονάδες από ημερομηνία Χρόνος " όπως απαιτείται από την ΚΙ και καθορίζεται απόUDUNITS, π.χ., Χρόνος, μονάδες, δευτερόλεπτα από 1970-01-01T00:00:00Z
Οι τιμές DateTime που αντιπροσωπεύονται ως τιμές συμβολοσειράς πρέπει να έχουν συμβολοσειρά\*ΔΕΔΟΜΕΝΑ\_ΤΥΠΟ\*χαρακτηριστικό γνώρισμα και χαρακτηριστικό μονάδων που προσδιορίζει ημερομηνία Χρονικό πρότυπο όπως καθορίζεται από τοJavaΗμερομηνίαTimeFormatter class ( https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html ) . Για παράδειγμα, Χρόνος, μονάδες,yyyy-MM-dd"T'HH:mm:ssZ" Ό λες οι τιμές χρόνου ημερομηνίας για μια δεδομένη μεταβλητή δεδομένων πρέπει να χρησιμοποιούν την ίδια μορφή. Στις περισσότερες περιπτώσεις, το μοτίβο ημερομηνίαςTime που χρειάζεστε για το χαρακτηριστικό μονάδων θα είναι μια παραλλαγή ενός από αυτούς τους τύπους:
- yyyy-MM-dd"T'HH:mm:ss. SSSZ — που είναι το ISO 8601:2004 (E) ημερομηνία Μορφή χρόνου. Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ.,yyyy-MM-dd"T'HH:mm:ssZ" (η μόνη συνιστώμενη μορφή) ήyyyy-MM-dd. Εάν αλλάζετε τη μορφή των τιμών σας dateTime, το NCCSV συνιστά έντονα την αλλαγή σε αυτή τη μορφή (Ίσως να συντομευτεί.) . Αυτή είναι η μορφή πουERDDAP™θα χρησιμοποιηθεί όταν γράφει αρχεία NCCSV.
- EYMMddHmmss.SSS — που είναι η συμπαγής έκδοση της ημερομηνίας ISO 8601:2004 Μορφή χρόνου. Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ., eYMMdd.
- M/η/εεεεε Χ:χμμ:σσ. SSS — η οποία χειρίζεται US-style ημερομηνίες και ημερομηνίες όπως "3/23/2017 16:22:03.000". Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ., M/d/yyyy.
- yyyuddDHhmmssSS — το οποίο είναι το έτος συν την ημέρα μηδενικής προσθήκης του έτους (π.χ., 001 = 1 Ιαν. 365 = 31 Δεκ. σε μη διαθέσιμο έτος· αυτό μερικές φορές λανθασμένα ονομάζεται Ιουλιανή ημερομηνία.) . Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ. yyyuddD .
Ακρίβεια
Όταν μια βιβλιοθήκη λογισμικού μετατρέπει ένα.ncαρχείο σε αρχείο NCCSV, όλη την ημερομηνία Οι τιμές χρόνου θα γραφτούν ως συμβολοσειρές με το ISO 8601:2004 (E) ημερομηνία Μορφή χρόνου, χ.χ., 1970-01-01T00:00:00Z . Μπορείτε να ελέγξετε την ακρίβεια με τοERDDAP-ειδικό χαρακτηριστικόtime\_precision. Βλέπεις; /docs/server-admin/datasets#time\_precision.
Ζώνη ώρας
Η προκαθορισμένη ζώνη ώρας για την ημερομηνία Τιμές χρόνου είναι ηZulu (ή GMT) ζώνη ώρας, η οποία δεν έχει περίοδο θερινής ώρας. Εάν μια μεταβλητή dateTime έχει τιμές dateTime από μια διαφορετική ζώνη ώρας, θα πρέπει να διευκρινίσετε αυτό με τοERDDAP-ειδικό χαρακτηριστικόtime\_zone. Αυτό είναι μια απαίτηση γιαERDDAP™(βλέπε /docs/server-admin/datasets#time\_zone).
Τιμές Βαθμού
Όπως απαιτείται από την ΚΙ, όλες οι τιμές βαθμού (π.χ. για το γεωγραφικό μήκος και το γεωγραφικό πλάτος) πρέπει να προσδιορίζονται ως διπλάσιες τιμές δεκαδικού βαθμού, όχι ως συμβολοσειρές ή ως ξεχωριστές μεταβλητές για μοίρες, λεπτά, δευτερόλεπτα. Οι σχεδιαστές κατεύθυνσης N, S, E και W δεν επιτρέπονται. Χρήση αρνητικών τιμών για τα δυτικά γεωγραφικά πλάτη και για τα νότια γεωγραφικά πλάτη.
DSG Τύποι χαρακτηριστικών
Ένα αρχείο NCCSV μπορεί να περιέχει CF Διακριτή Γεωμετρία δειγματοληψίας ( https://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html#discrete-sampling-geometries ) δεδομένα. Είναι τα χαρακτηριστικά που κάνουν αυτό το έργο:
- Όπως απαιτείται από το CF, το αρχείο NCCSV πρέπει να περιλαμβάνει μια γραμμή στο τμήμα μεταδεδομένων που προσδιορίζει το\ΠΑΓΚΟΣΜΙΑ\ featureTypeχαρακτηριστικό γνώρισμα, π.χ. \ΠΑΓΚΟΣΜΙΑ\,featureType,εκδοτική
- Για χρήση σεERDDAP™, το αρχείο NCCSV πρέπει να περιλαμβάνει μια γραμμή ή γραμμές στο τμήμα μεταδεδομένων που προσδιορίζουν τις μεταβλητές cf\_role=...\_id, π.χ., πλοίο,cf\_role,trajectory\_id Αυτό είναι προαιρετικό για την ΚΙ, αλλά απαιτείται στο NCCSV.
- Για χρήση σεERDDAP™, το αρχείο NCCSV πρέπει να περιλαμβάνει μια γραμμή ή γραμμές στο τμήμα μεταδεδομένων που προσδιορίζουν ποιες μεταβλητές συνδέονται με κάθε χρονοσειρά, τροχιά ή προφίλ, όπως απαιτείται απόERDDAP™(βλέπε /docs/server-admin/datasets#cdm\_data\_type), π.χ., \ΠΑΓΚΟΣΜΙΑ\,cdm\_trajectory\_variables,"ship" ή \ΠΑΓΚΟΣΜΙΑ\,cdm\_timeseries\_Variables,"station\_id,lat,lon"
Αρχείο δειγμάτων
Εδώ είναι ένα αρχείο δειγμάτων που δείχνει πολλά από τα χαρακτηριστικά ενός αρχείου NCCSV:
\\*GLOBAL\\*,Conventions,"COARDS, CF-1.6, ACDD-1.3, NCCSV-1.2"
\\*GLOBAL\\*,cdm\\_trajectory\\_variables,"ship"
\\*GLOBAL\\*,creator\\_email,erd.data@noaa.gov
\\*GLOBAL\\*,creator\\_name,Bob Simons
\\*GLOBAL\\*,creator\\_type,person
\\*GLOBAL\\*,creator\\_url,https://www.pfeg.noaa.gov
\\*GLOBAL\\*,featureType,trajectory
\\*GLOBAL\\*,infoUrl,https://erddap.github.io/docs/user/nccsv-1.20
\\*GLOBAL\\*,institution,"NOAA NMFS SWFSC ERD, NOAA PMEL"
\\*GLOBAL\\*,license,"""NCCSV Demonstration"" by Bob Simons and Steve Hankin is
licensed under CC BY 4.0, https://creativecommons.org/licenses/by/4.0/ ."
\\*GLOBAL\\*,keywords,"NOAA, sea, ship, sst, surface, temperature, trajectory"
\\*GLOBAL\\*,standard\\_name\\_vocabulary,CF Standard Name Table v55
\\*GLOBAL\\*,subsetVariables,"ship"
\\*GLOBAL\\*,summary,"This is a paragraph or two describing the dataset."
\\*GLOBAL\\*,title,"NCCSV Demonstration"
ship,\\*DATA\\_TYPE\\*,String
ship,cf\\_role,trajectory\\_id
time,\\*DATA\\_TYPE\\*,String
time,standard\\_name,time
time,units,"yyyy-MM-dd'T'HH:mm:ssZ"
lat,\\*DATA\\_TYPE\\*,double
lat,units,degrees\\_north
lon,\\*DATA\\_TYPE\\*,double
"lon","units","degrees\\_east"
status,\\*DATA\\_TYPE\\*,char
status,comment,"From http://some.url.gov/someProjectDocument , Table C"
testByte,\\*DATA\\_TYPE\\*,byte
testByte,units,1
testUByte,\\*DATA\\_TYPE\\*,ubyte
testUByte,units,1
testLong,\\*DATA\\_TYPE\\*,long
testLong,units,1
testULong,\\*DATA\\_TYPE\\*,ulong
testULong,units,1
sst,\\*DATA\\_TYPE\\*,float
sst,standard\\_name,sea\\_surface\\_temperature
sst,actual\\_range,0.17f,23.58f
sst,units,degree\\_C
sst,missing\\_value,99f
sst,testBytes,-128b,0b,127b
sst,testShorts,-32768s,0s,32767s
sst,testInts,-2147483648i,0i,2147483647i
sst,testLongs,-9223372036854775808L,0L,9223372036854775807L
sst,testFloats,-3.40282347e38f,0f,3.40282347E+38f
sst,testDoubles,-1.79769313486231570e308d,0d,1.79769313486231570E+308d
sst,testChars,"','","'""'","'€'"
sst,testStrings," a~,\\n'z""\\u20AC"
sst,testUBytes,0ub,127ub,255ub
sst,testUInts,0ui,2147483647ui,4294967295ui
sst,testULongs,0uL,9223372036854775807uL,18446744073709551615uL
sst,testUShorts,0us,32767us,65535us
\\*END\\_METADATA\\*
ship,time,lat,lon,status,testByte,testUByte,testLong,testULong,sst
Bell M. Shimada,2017-03-23T00:45:00Z,28.0002,-130.2576,A,-128, 0,-9223372036854775808L,0uL,10.9
Bell M. Shimada,2017-03-23T01:45:00Z,28.0003,-130.3472,\\u20AC,0,127,-9007199254740992L,9223372036854775807uL,10.0
"Bell M. Shimada","2017-03-23T02:45:00Z",28.0001,-130.4305,"'\\t'",126,254,9223372036854775806L,18446744073709551614uL,99
"Bell M. Shimada",2017-03-23T12:45:00Z,27.9998,-131.5578,"'""'",127,255,9223372036854775807L,18446744073709551615uL,NaN
Σημειώσεις:
- Αυτό το αρχείο δειγμάτων περιλαμβάνει πολλές δύσκολες περιπτώσεις (π.χ., char και μεγάλες μεταβλητές και δύσκολες τιμές συμβολοσειρών) . Τα περισσότερα αρχεία NCCSV θα είναι πολύ απλούστερα.
- Η γραμμή της άδειας είναι σπασμένη σε δύο γραμμές εδώ, αλλά είναι μόνο μια γραμμή στο αρχείο του δείγματος.
- \ u20ac είναι η\uhhhΗ κωδικοποίηση των €. \u00FC είναι η\uhhhΗ κωδικοποίηση του U. Μπορείτε επίσης να χρησιμοποιήσετε τους μη κωδικοποιημένους χαρακτήρες άμεσα.
- Πολλά Οι συμβολοσειρές στο παράδειγμα περικλείονται από διπλά εισαγωγικά παρόλο που δεν χρειάζεται να είναι, π. χ. πολλά καθολικά χαρακτηριστικά συμπεριλαμβανομένου του τίτλου, των μονάδων lon χαρακτηριστικό, και η 3η γραμμή δεδομένων.)
- Θα ήταν σαφέστερο και καλύτερο αν οι μονάδες χαρακτηριστικό για τη μεταβλητή testLong γραφόταν σε διπλά εισαγωγικά που δείχνουν ότι είναι μια τιμή συμβολοσειρών. Αλλά η τρέχουσα αναπαράσταση (1, χωρίς εισαγωγικά) θα ερμηνευθεί σωστά ως String, όχι ακέραιος, επειδή δεν υπάρχει "i" επίθημα.
- Σε αντίθεση με άλλους τύπους αριθμητικών δεδομένων, οι μεγάλες τιμές στην ενότητα δεδομένων έχουν το επίθημα ("L") που προσδιορίζει τον αριθμητικό τους τύπο δεδομένων. Αυτό απαιτείται για να αποτραπεί η ερμηνεία των υπολογιστικών φύλλων ως αριθμών κινητής υποδιαστολής και έτσι να χαθεί η ακρίβεια.
Λογιστικά φύλλα
Σε ένα λογιστικό φύλλο, όπως σε ένα αρχείο NCCSV:
- Γράψτε αριθμητικές τιμές ιδιοτήτων όπως ορίζονται για τα αρχεία NCCSV (π.χ., με επίθητο γράμμα, π.χ., «f», για τον προσδιορισμό του τύπου δεδομένων του χαρακτηριστικού) .
- Σε συμβολοσειρές, όλοι οι μη εκτυπώσιμοι και ειδικοί χαρακτήρες πρέπει να γράφονται είτε ως χαρακτήρας που μοιάζει με JSON (π.χ.,\nγια νέα γραμμή) ή ως δεκαεξαδικός αριθμός χαρακτήρων Unicode (περίπτωση αναίσθητη) με τη σύνταξη\ - Ναι. . Αξιοσημείωτα, χρήση\n (2 χαρακτήρες: backslash και 'n ") για να δείξει μια νέα γραμμή μέσα σε μια συμβολοσειρά, όχι Alt Enter. Όλοι οι εκτυπώσιμοι χαρακτήρες μπορούν να γράφονται χωρίς κωδικό ή με τη σύνταξη\ - Ναι. .
Οι μόνες διαφορές μεταξύ των αρχείων NCCSV και του αναλογικού λογιστικού φύλλου που ακολουθούν αυτές τις συμβάσεις είναι:
- Τα αρχεία NCCSV έχουν τιμές σε μια γραμμή που χωρίζεται με κόμματα. Τα λογιστικά φύλλα έχουν τιμές σε μια γραμμή σε παρακείμενα κελιά.
- Οι συμβολοσειρές στα αρχεία NCCSV συχνά περιβάλλονται από διπλά εισαγωγικά. Οι συμβολοσειρές στα λογιστικά φύλλα δεν περιβάλλονται ποτέ από διπλά εισαγωγικά.
- Εσωτερικά διπλά εισαγωγικά (") Στις συμβολοσειρές στα αρχεία NCCSV εμφανίζονται ως 2 διπλά εισαγωγικά. Τα εσωτερικά διπλά εισαγωγικά σε λογιστικά φύλλα εμφανίζονται ως 1 διπλό απόσπασμα.
Εάν ένα λογιστικό φύλλο που ακολουθεί αυτές τις συμβάσεις αποθηκεύεται ως αρχείο CSV, θα υπάρχουν συχνά επιπλέον κόμματα στο τέλος πολλών από τις γραμμές. Το λογισμικό που μετατρέπει τα αρχεία NCCSV σε.ncαρχεία θα αγνοήσουν τα επιπλέον κόμματα.
Excel
Για την εισαγωγή ενός αρχείου NCCSV στο Excel:
- Επιλογή αρχείου : Άνοιγμα .
- Αλλαγή του τύπου αρχείου σε αρχεία κειμένου (\.πρν.\.txt; \*.csv) .
- Αναζήτηση των καταλόγων και κάντε κλικ στο αρχείο NCCSV .csv.
- Κάντε κλικ στο Άνοιγμα .
Για να δημιουργήσετε ένα αρχείο NCCSV από ένα υπολογιστικό φύλλο Excel:
- Επιλογή αρχείου : Αποθήκευση ως .
- Αλλαγή της αποθήκευσης ως τύπου: να είναι CSV (Οριοθετημένα κόμματα) (\*.csv) .
- Σε απάντηση της προειδοποίησης συμβατότητας, πατήστε Ναι .
- Το αρχείο .csv που προκύπτει θα έχει επιπλέον κόμματα στο τέλος όλων των γραμμών εκτός των γραμμών CSV. Μπορείς να τους αγνοήσεις.
Στο Excel, το δείγμα NCCSV αρχείο παραπάνω εμφανίζεται ως
Φύλλα Google
Για την εισαγωγή ενός αρχείου NCCSV στα Φύλλα Google:
- Επιλογή αρχείου : Εισαγωγή .
- Επιλέξτε να φορτώσετε ένα αρχείο και κάντε κλικ στο Αποστολή ενός αρχείου από τον υπολογιστή σας . Επιλέξτε το αρχείο και κάντε κλικ στο Open .
Ή, επιλέξτε My Drive και να αλλάξετε τον τύπο αρχείου πτώση προς τα κάτω επιλογή σε όλους τους τύπους αρχείων . Επιλέξτε το αρχείο και κάντε κλικ στο Open .
Για να δημιουργήσετε ένα αρχείο NCCSV από ένα υπολογιστικό φύλλο φύλλων Google:
- Επιλογή αρχείου : Αποθήκευση ως .
- Αλλαγή της αποθήκευσης ως τύπου: να είναι CSV (Οριοθετημένα κόμματα) (\*.csv) .
- Σε απάντηση της προειδοποίησης συμβατότητας, πατήστε Ναι .
- Το αρχείο .csv που προκύπτει θα έχει επιπλέον κόμματα στο τέλος όλων των γραμμών εκτός των γραμμών CSV. Αγνόησέ τους.
Προβλήματα/Προειδοποιήσεις
- Αν δημιουργήσετε ένα αρχείο NCCSV με έναν επεξεργαστή κειμένου ή αν δημιουργήσετε ένα ανάλογο λογιστικό φύλλο σε ένα πρόγραμμα υπολογιστικού φύλλου, ο επεξεργαστής κειμένου ή το πρόγραμμα υπολογιστικού φύλλου δεν θα ελέγξει ότι ακολουθήσατε σωστά αυτές τις συμβάσεις. Εναπόκειται σε εσάς να ακολουθήσετε σωστά αυτές τις συνελεύσεις.
- Η μετατροπή ενός λογιστικού φύλλου μετά την παρούσα σύμβαση σε αρχείο csv (Συνεπώς, ένας φάκελος NCCSV) θα οδηγήσει σε επιπλέον κόμματα στο τέλος όλων των γραμμών εκτός των γραμμών δεδομένων CSV. Αγνόησέ τους. Το λογισμικό στη συνέχεια μετατρέπει τα αρχεία NCCSV σε.ncΤα αρχεία θα τα αγνοήσουν.
- Εάν ένα αρχείο NCCSV έχει περίσσεια κόμματα στο τέλος των γραμμών, μπορείτε να τα αφαιρέσετε με τη μετατροπή του αρχείου NCCSV σε έναNetCDFαρχείο και στη συνέχεια τη μετατροπή τουNetCDFαρχείο πίσω σε ένα αρχείο NCCSV.
- Όταν προσπαθείτε να μετατρέψετε ένα αρχείο NCCSV σε έναNetCDFαρχείο, κάποια λάθη θα ανιχνευθούν από το λογισμικό και θα δημιουργήσουν μηνύματα σφάλματος, προκαλώντας την αποτυχία της μετατροπής. Άλλα προβλήματα είναι δύσκολο ή αδύνατο να πιαστούν και δεν θα δημιουργήσουν μηνύματα σφάλματος ή προειδοποιήσεις. Άλλα προβλήματα (π.χ., πλεονάζοντα κόμματα στο τέλος των γραμμών) Θα αγνοηθεί. Ο μετατροπέας αρχείων θα κάνει μόνο ελάχιστο έλεγχο της ορθότητας του προκύπτοντοςNetCDFαρχείο, π.χ. όσον αφορά τη συμμόρφωση με το ΚΙ. Είναι ευθύνη του δημιουργού αρχείων και του χρήστη αρχείων να ελέγχει ότι τα αποτελέσματα της μετατροπής είναι το ίδιο επιθυμητά και σωστά. Δύο τρόποι ελέγχου είναι:
- Εκτύπωση των περιεχομένων του.ncαρχείο με ncdump ( https://linux.die.net/man/1/ncdump ) .
- Προβολή των περιεχομένων των δεδομένωνERDDAP™.
Μεταβολές
Η αρχική έκδοση ήτανNCCSV v1.00 (μέσαERDDAP™v1.76, κυκλοφόρησε 2017-05-12)
- ΜεταβολέςNCCSV v1.10 (μέσαERDDAP™v2.10, κυκλοφόρησε 2020-11-05) :
- Προστέθηκε υποστήριξη για ubyte, ushort, uint, ulong. Χάρη στην ΚΙ για την προσθήκη υποστήριξης για αυτούς τους τύπους δεδομένων στην ΚΙ.
- Μεταβολές που εισήχθησαν στο v1.20 (μέσαERDDAP™v2.23, κυκλοφόρησε 2023-02-27) :
- Εναλλαγή από κωδικοποίηση χαρακτήρων ASCII σε κωδικοποίηση UTF-8 για αρχεία NCCSV .csv.
- ERDDAP™μπορεί ακόμα να διαβάσει αρχεία από όλες τις προηγούμενες και τρέχουσες εκδόσεις του NCCSV.
- ERDDAP™τώρα γράφει πάντα NCCSV v1.20 αρχεία.
- Αν γράψατε έναν πελάτη για να διαβάσετε αρχεία NCCSV, αλλάξτε το έτσι ώστε να αντιμετωπίζει όλα τα αρχεία NCCSV ως αρχεία UTF-8. Αυτό θα λειτουργήσει με παλαιότερα αρχεία NCCSV επειδή το ASCII είναι ένα υποσύνολο της κωδικοποίησης χαρακτήρων UTF-8.
- Χάρη στην Πολίν Σοβέ, τον Νέιτ και τον Τόμας Γκάρντινερ.
- Εναλλαγή από κωδικοποίηση χαρακτήρων ASCII σε κωδικοποίηση UTF-8 για αρχεία NCCSV .csv.