Συνεργασία με το datasets.xml Αρχείο
\[ Αυτή η ιστοσελίδα θα ενδιαφέρει μόνο ERDDAP™ διαχειριστές. \]
Αφού ακολουθήσετε το ERDDAP™ οδηγίες εγκατάστασης , θα πρέπει να επεξεργαστείτε το datasets.xml αρχείο in τομκάτ /content/erddap/ για την περιγραφή των συνόλων δεδομένων που έχετε ERDDAP™ εγκατάσταση θα εξυπηρετήσει.
Μπορείτε να δείτε ένα παράδειγμα datasets.xml στο GitHub .
-
- Ναι.
Εισαγωγή
Απαιτείται κάποια συναρμολόγηση
Setting συνόλου δεδομένων ERDDAP™ δεν είναι απλά ένα θέμα που δείχνει τον κατάλογο ή το URL του συνόλου δεδομένων. Πρέπει να γράψεις ένα κομμάτι XML για datasets.xml που περιγράφει το σύνολο δεδομένων.
- Για δέσμες δεδομένων με πλέγμα, προκειμένου να καταστεί το σύνολο δεδομένων σύμφωνο με ERDDAP 's δομή δεδομένων για τα πλέγματα δεδομένων, θα πρέπει να προσδιορίσει ένα υποσύνολο των μεταβλητών του συνόλου δεδομένων που μοιράζονται τις ίδιες διαστάσεις. ( Γιατί; Πώς; )
- Τα τρέχοντα μεταδεδομένα του συνόλου δεδομένων εισάγονται αυτόματα. Αλλά αν θέλετε να τροποποιήσετε αυτά τα μεταδεδομένα ή να προσθέσετε άλλα μεταδεδομένα, πρέπει να το καθορίσετε στο datasets.xml . Και... ERDDAP™ χρειάζεται άλλα μεταδεδομένα, συμπεριλαμβανομένων καθολικά χαρακτηριστικά (όπως infoUrl , θεσμικό όργανο, sourceUrl , περίληψη και τίτλος) και μεταβλητά χαρακτηριστικά (όπως long\_name και μονάδες) . Όπως ακριβώς τα μεταδεδομένα που βρίσκονται στο σύνολο δεδομένων προσθέτει περιγραφικές πληροφορίες στο σύνολο δεδομένων, τα μεταδεδομένα που ζητούνται από ERDDAP™ προσθέτει περιγραφικές πληροφορίες στο σύνολο δεδομένων. Τα πρόσθετα μεταδεδομένα είναι μια καλή προσθήκη στο σύνολο δεδομένων σας και βοηθά ERDDAP™ κάνει μια καλύτερη δουλειά της παρουσίασης των δεδομένων σας σε χρήστες που δεν είναι εξοικειωμένοι με αυτό.
- ERDDAP™ χρειάζεται να κάνετε ειδικά πράγματα με το γεωγραφικό μήκος, γεωγραφικό πλάτος, υψόμετρο (ή βάθος) , και χρονικές μεταβλητές .
Αν αγοράσετε σε αυτές τις ιδέες και να δαπανήσουν την προσπάθεια να δημιουργήσετε το XML για datasets.xml , παίρνετε όλα τα πλεονεκτήματα της ERDDAP™ , συμπεριλαμβανομένων:
- Πλήρης αναζήτηση κειμένου για σύνολα δεδομένων
- Αναζήτηση συνόλων δεδομένων ανά κατηγορία
- Έντυπα πρόσβασης δεδομένων ( * datasetID * .html) έτσι μπορείτε να ζητήσετε ένα υποσύνολο δεδομένων σε πολλές διαφορετικές μορφές αρχείων
- Μορφές για την αίτηση γραφημάτων και χαρτών ( * datasetID * . γράφημα)
- Υπηρεσία Web Map ( WMS ) για τα πλέγματα σύνολα δεδομένων
- RESTful πρόσβαση στα δεδομένα σας
Κάνοντας το datasets.xml χρειάζεται σημαντική προσπάθεια για τα πρώτα σύνολα δεδομένων, αλλά γίνεται πιο εύκολο. . Μετά το πρώτο σύνολο δεδομένων, μπορείτε συχνά να επαναχρησιμοποιήσετε πολλά από τα έργα σας για το επόμενο σύνολο δεδομένων. Ευτυχώς, ERDDAP™ έρχεται με δύο Εργαλεία για να σας βοηθήσει να δημιουργήσετε το XML για κάθε σύνολο δεδομένων στο datasets.xml . Αν κολλήσεις, δες μας. τμήμα για τη λήψη πρόσθετης υποστήριξης .
Μεταβλητές datasets.xml
Από την ERDDAP™ έκδοση 2.29.0, datasets.xml είναι τώρα (προαιρετικά) επεξεργασία από ένα Υποκαταστάτης συμβολοσειρών . Αυτό έχει πολλές χρήσεις, συμπεριλαμβανομένου του καθορισμού ιδιωτικών αξιών (όπως οι κωδικοί πρόσβασης) χρήση μεταβλητών περιβάλλοντος. Αυτό μπορεί να απενεργοποιηθεί με τη ρύθμιση ενεργοποίησηςEnvParsing στο false in setup.xml.
Παροχέας δεδομένων Μορφή
Όταν ένας πάροχος δεδομένων έρχεται σε σας ελπίζοντας να προσθέσετε κάποια δεδομένα σε σας ERDDAP , μπορεί να είναι δύσκολο και χρονοβόρο να συλλέξει όλα τα μεταδεδομένα (πληροφορίες σχετικά με το σύνολο δεδομένων) χρειάζεται να προσθέσετε το σύνολο δεδομένων στο ERDDAP . Πολλές πηγές δεδομένων (για παράδειγμα, αρχεία .csv, Αρχεία Excel, βάσεις δεδομένων) δεν έχουν εσωτερικά μεταδεδομένα, έτσι ERDDAP™ διαθέτει έντυπο παροχής δεδομένων το οποίο συγκεντρώνει μεταδεδομένα από τον πάροχο δεδομένων και παρέχει στον πάροχο δεδομένων κάποια άλλη καθοδήγηση, συμπεριλαμβανομένης εκτεταμένης καθοδήγησης για Δεδομένα σε βάσεις δεδομένων . Οι πληροφορίες που υποβλήθηκαν μετατρέπονται σε datasets.xml μορφή και στη συνέχεια e-mail στο ERDDAP™ διαχειριστής (Εσύ) και γραμμένο (Προσαρτημένο) προς bigParentΚατάλογος /logs/dataProviderForm.log . Έτσι, η μορφή ημι-αυτόματη τη διαδικασία να πάρει ένα σύνολο δεδομένων ERDDAP , αλλά η ERDDAP™ Ο διαχειριστής πρέπει ακόμη να ολοκληρώσει το datasets.xml κομμάτι και να ασχοληθεί με την απόκτηση του αρχείου δεδομένων (α) από τον πάροχο ή τη σύνδεση με τη βάση δεδομένων.
Η υποβολή πραγματικών αρχείων δεδομένων από εξωτερικές πηγές είναι ένας τεράστιος κίνδυνος ασφάλειας, έτσι ERDDAP™ δεν ασχολείται με αυτό. Πρέπει να βρείτε μια λύση που να λειτουργεί για εσάς και τον πάροχο δεδομένων, για παράδειγμα, email (για μικρά αρχεία) , τραβήξτε από το σύννεφο (για παράδειγμα, DropBox ή Google Drive) , ένα σημείο sftp (με κωδικούς πρόσβασης) , ή sneaker Καθαρό (USB ή εξωτερικός σκληρός δίσκος) . Μάλλον πρέπει να δεχτείς αρχεία μόνο από ανθρώπους που ξέρεις. Θα πρέπει να σαρώσετε τα αρχεία για ιούς και να πάρετε άλλες προφυλάξεις ασφαλείας.
Δεν υπάρχει σύνδεσμος. ERDDAP™ στο έντυπο Παρόχου Δεδομένων (για παράδειγμα, ERDDAP™ Αρχική σελίδα) . Αντ 'αυτού, όταν κάποιος σας λέει ότι θέλουν να έχουν τα δεδομένα τους εξυπηρετούνται από σας ERDDAP , μπορείτε να τους στείλετε ένα email λέγοντας κάτι σαν: Ναι, μπορούμε να βάλουμε τα δεδομένα σας σε ERDDAP . Για να ξεκινήσετε, παρακαλούμε συμπληρώστε το έντυπο στοhttps://yourUrl/erddap/dataProviderForm.html (ή http:// εάν https:// δεν είναι ενεργοποιημένο) . Μόλις τελειώσεις, θα επικοινωνήσω μαζί σου για να δω τις τελευταίες λεπτομέρειες. Αν θέλετε απλά να δείτε τη φόρμα (χωρίς να το συμπληρώσετε) , μπορείτε να δείτε το έντυπο στο ERD Σ ERDDAP : Εισαγωγή , Μέρος 1 , Μέρος 2 , Μέρος 3 , και Μέρος 4 . Αυτές οι συνδέσεις ERD ERDDAP™ να στείλετε πληροφορίες σε μένα, όχι σε σας, οπότε μην υποβάλετε πληροφορίες μαζί τους εκτός αν πραγματικά θέλετε να προσθέσετε δεδομένα στο ERD ERDDAP .
Αν θέλετε να αφαιρέσετε τη φόρμα του Παρόχου Δεδομένων από τη φόρμα σας ERDDAP™ , να πω
<dataProviderFormActive>false</dataProviderFormActive>
στο setup.xml αρχείο σας.
Η ώθηση για αυτό ήταν NOAA 2014 Πρόσβαση του κοινού στα Ερευνητικά Αποτελέσματα (ΠΑΡR) Οδηγία , η οποία απαιτεί ότι όλα NOAA τα περιβαλλοντικά δεδομένα που χρηματοδοτούνται μέσω δολαρίων φορολογουμένων διατίθενται μέσω υπηρεσίας δεδομένων (όχι μόνο αρχεία) μέσα σε 12 μήνες από τη δημιουργία. Έτσι, υπάρχει αυξημένο ενδιαφέρον στη χρήση ERDDAP™ να καθιστούν τα σύνολα δεδομένων διαθέσιμα μέσω μιας υπηρεσίας το συντομότερο δυνατόν. Χρειαζόμασταν έναν πιο αποτελεσματικό τρόπο για να αντιμετωπίσουμε έναν μεγάλο αριθμό παρόχων δεδομένων.
Ανατροφοδότηση/Προτάσεις; Αυτή η φόρμα είναι νέα, οπότε παρακαλώ στείλτε email erd dot data at noaa dot gov εάν έχετε οποιαδήποτε ανατροφοδότηση ή προτάσεις για τη βελτίωση αυτού.
Εργαλεία
ERDDAP™ έρχεται με δύο προγράμματα γραμμής εντολών που είναι εργαλεία για να σας βοηθήσει να δημιουργήσετε το XML για κάθε σύνολο δεδομένων που θέλετε ERDDAP™ να υπηρετήσω. Μόλις στήσετε ERDDAP™ και να το τρέξεις (τουλάχιστον μία φορά) , μπορείτε να βρείτε και να χρησιμοποιήσετε αυτά τα προγράμματα στο τομκάτ /webapps/erddap/WEB-INF directory. Υπάρχουν σενάρια κελύφους Linux/Unix (με την επέκταση .sh) και σενάρια Windows (με την επέκταση . bat) για κάθε πρόγραμμα. \[ Στο Linux, εκτελέστε αυτά τα εργαλεία με τον ίδιο χρήστη (Τομκατ;) που θα τρέξει Tomcat. \] Όταν τρέχετε κάθε πρόγραμμα, θα σας κάνει ερωτήσεις. Για κάθε ερώτηση, πληκτρολογήστε μια απάντηση, στη συνέχεια, πιέστε Enter. Ή πατήστε ^C για να βγείτε από ένα πρόγραμμα ανά πάσα στιγμή.
Το πρόγραμμα δεν θα τρέξει;
- Αν πάρετε ένα άγνωστο πρόγραμμα (ή παρόμοια) μήνυμα σφάλματος, το πρόβλημα είναι ότι το λειτουργικό σύστημα δεν μπόρεσε να βρει Java . Πρέπει να βρεις πού. Java είναι στον υπολογιστή σας, στη συνέχεια, επεξεργαστείτε την αναφορά java στο αρχείο .bat ή .sh που προσπαθείτε να χρησιμοποιήσετε.
- Αν ένα αρχείο βάζου δεν βρέθηκε ή η κλάση δεν βρέθηκε μήνυμα σφάλματος, τότε Java Δεν μπόρεσε να βρει ένα από τα μαθήματα που αναφέρονται στο .bat ή .sh αρχείο που προσπαθείτε να χρησιμοποιήσετε. Η λύση είναι να μάθετε πού είναι αυτό το αρχείο .jar, και να επεξεργαστείτε την αναφορά java σε αυτό στο αρχείο .bat ή .sh.
- Εάν χρησιμοποιείτε μια έκδοση του Java Αυτό είναι πολύ παλιό για ένα πρόγραμμα, το πρόγραμμα δεν θα τρέξει και θα δείτε ένα μήνυμα λάθους όπως
Εξαίρεση στο νήμα "κύριο" java.lang.Un supportedClassVersionError:
κάποια/κατηγορία/όνομα : Μη υποστηριζόμενη έκδοση major.minor αριθμός
Η λύση είναι να ενημερώσετε την πιο πρόσφατη έκδοση του Java και βεβαιωθείτε ότι το αρχείο .sh ή .bat για το πρόγραμμα το χρησιμοποιεί.
Τα εργαλεία εκτυπώνουν διάφορα διαγνωστικά μηνύματα:
- Η λέξη "ERROR" χρησιμοποιείται όταν κάτι πήγε τόσο στραβά που η διαδικασία απέτυχε να ολοκληρωθεί. Αν και είναι ενοχλητικό να πάρει ένα λάθος, το σφάλμα σας αναγκάζει να ασχοληθεί με το πρόβλημα.
- Η λέξη " προειδοποίηση" χρησιμοποιείται όταν κάτι πήγε στραβά, αλλά η διαδικασία ήταν σε θέση να ολοκληρωθεί. Αυτά είναι αρκετά σπάνια.
- Οτιδήποτε άλλο είναι απλά ένα ενημερωτικό μήνυμα. Μπορείτε να προσθέσετε \ verbose στο Δημιουργία συνόλων δεδομένωνXml ή ΔΑΠ γραμμή εντολών για να πάρει επιπλέον ενημερωτικά μηνύματα, η οποία μερικές φορές βοηθά στην επίλυση προβλημάτων.
Τα δύο εργαλεία είναι μεγάλη βοήθεια, αλλά και πάλι πρέπει να διαβάσετε όλες αυτές τις οδηγίες σε αυτή τη σελίδα προσεκτικά και να πάρετε σημαντικές αποφάσεις μόνοι σας.
Δημιουργία συνόλων δεδομένωνXml
- Δημιουργία συνόλων δεδομένωνXml είναι ένα πρόγραμμα γραμμής εντολών που μπορεί να δημιουργήσει ένα πρόχειρο προσχέδιο του συνόλου δεδομένων XML για σχεδόν οποιονδήποτε τύπο συνόλου δεδομένων.
Σας συνιστούμε να χρησιμοποιήσετε το GenerateDatasets Xml αντί για τη δημιουργία κομματιών datasets.xml με το χέρι επειδή:
- Δημιουργία συνόλων δεδομένων Το Xml λειτουργεί σε δευτερόλεπτα. Το να το κάνεις με το χέρι είναι δουλειά τουλάχιστον μιας ώρας, ακόμα και όταν ξέρεις τι κάνεις.
- Δημιουργία συνόλων δεδομένων Xml κάνει καλύτερη δουλειά. Αυτό με το χέρι απαιτεί εκτεταμένη γνώση του πώς ERDDAP™ Δουλεύει. Είναι απίθανο να κάνετε καλύτερη δουλειά με το χέρι. (Ο Bob Simons χρησιμοποιεί πάντα GenerateDatasets Xml για το πρώτο προσχέδιο, και έγραψε ERDDAP .)
- Δημιουργία συνόλων δεδομένων Xml δημιουργεί πάντα ένα έγκυρο κομμάτι του datasets.xml . Κάθε κομμάτι του datasets.xml ότι θα γράψετε πιθανώς θα έχουν τουλάχιστον μερικά λάθη που εμποδίζουν ERDDAP™ από τη φόρτωση του συνόλου δεδομένων. Συχνά χρειάζονται ώρες για να διαγνωσθούν αυτά τα προβλήματα. Μην σπαταλάς τον χρόνο σου. Αφήστε τη δημιουργία Σύνολα δεδομένων Xml κάνει τη σκληρή δουλειά. Στη συνέχεια, μπορείτε να βελτιώσετε το .xml με το χέρι, αν θέλετε.
Όταν χρησιμοποιείτε το GenerateDatasets Πρόγραμμα Xml:
- Στα Windows, την πρώτη φορά που τρέχετε GenerateDatasetsXml, θα πρέπει να επεξεργαστείτε το αρχείο GenerateDatasetsXml.bat με έναν επεξεργαστή κειμένου για να αλλάξετε τη διαδρομή προς το java. exe αρχείο έτσι ώστε τα Windows να μπορούν να βρουν Java .
- Δημιουργία συνόλων δεδομένων Το Xml πρώτα σας ζητά να καθορίσετε τον τύπο EDD (Σύνολο δεδομένων Erd Dap Τύπος) του συνόλου δεδομένων. Δείτε το Κατάλογος τύπων συνόλου δεδομένων (στο παρόν έγγραφο) για να καταλάβω ποιος τύπος είναι κατάλληλος για το σύνολο δεδομένων πάνω στο οποίο εργάζεστε. Εκτός από τα κανονικά EDDTypes, υπάρχουν και μερικά Ειδικοί τύποι συνόλου δεδομένων/Pseudo (Π.χ., ένα που σέρνεται ένας κατάλογος THREDDS για να δημιουργήσει ένα κομμάτι του datasets.xml για καθένα από τα σύνολα δεδομένων του καταλόγου) .
- Δημιουργία συνόλων δεδομένων Xml τότε σας κάνει μια σειρά από ερωτήσεις συγκεκριμένες σε αυτό το EDDType. Οι ερωτήσεις συγκεντρώνουν τις πληροφορίες που απαιτούνται για ERDDAP™ για πρόσβαση στην πηγή του συνόλου δεδομένων. Για να καταλάβω τι ERDDAP™ ζητά, δείτε την τεκμηρίωση για το EDDType που ορίσατε κάνοντας κλικ στον ίδιο τύπο συνόλου δεδομένων στο Κατάλογος τύπων συνόλου δεδομένων .
Αν χρειάζεται να εισάγετε μια συμβολοσειρά με ειδικούς χαρακτήρες (π.χ. χαρακτήρες λευκού χώρου στην αρχή ή στο τέλος, χαρακτήρες μη ASCII) , εισάγεται α συμβολοσειρά τύπου JSON (με ειδικούς χαρακτήρες δραπέτευσαν με χαρακτήρες \) . Για παράδειγμα, για να εισάγετε μόνο ένα χαρακτήρα καρτέλα, εισάγετε "\t" (με τα γύρω διπλά εισαγωγικά, που λένε ERDDAP™ ότι αυτό είναι μια χορδή τύπου JSON.
- Συχνά, μία από τις απαντήσεις σας δεν θα είναι αυτό που χρειάζεται η GenerateDatasetsXml. Στη συνέχεια, μπορείτε να δοκιμάσετε ξανά, με αναθεωρημένες απαντήσεις στις ερωτήσεις, μέχρι GenerateDatasets Το Xml μπορεί με επιτυχία να βρει και να κατανοήσει τα δεδομένα πηγής.
- Αν απαντήσετε στις ερωτήσεις σωστά (ή αρκετά σωστά) , Δημιουργία συνόλων δεδομένων Το Xml θα συνδεθεί στην πηγή του συνόλου δεδομένων και θα συγκεντρώσει βασικές πληροφορίες (για παράδειγμα, ονόματα μεταβλητών και μεταδεδομένα) . Για σύνολα δεδομένων που προέρχονται από τοπικά NetCDF .nc και σχετικά αρχεία, GenerateDatasets Το Xml θα εκτυπώσει συχνά τη δομή που μοιάζει με το ncdump του αρχείου μετά την πρώτη ανάγνωση του αρχείου. Αυτό μπορεί να σας δώσει πληροφορίες για να απαντήσετε καλύτερα στις ερωτήσεις σε έναν επόμενο βρόχο μέσω GenerateDatasetsXml.
- Δημιουργία συνόλων δεδομένων Το Xml θα δημιουργήσει στη συνέχεια ένα πρόχειρο προσχέδιο του συνόλου δεδομένων XML για αυτό το σύνολο δεδομένων.
- Οι διαγνωστικές πληροφορίες και το πρόχειρο προσχέδιο του συνόλου δεδομένων XML θα γραφτούν στο bigParentΚατάλογος /logs/GenerateDatasetsXml.log .
- Το πρόχειρο σχέδιο του συνόλου δεδομένων XML θα γραφτεί στο bigParentΚατάλογος /logs/GenerateDatasetsXml.out .
"0 αρχεία" Μήνυμα σφάλματος
Αν τρέξετε δημιουργήστε σύνολα δεδομένων Xml ή ΔΑΠ , ή αν προσπαθήσετε να φορτώσετε EDDGrid Από...Αρχεία ή EDDTableFrom... Σύνολο δεδομένων αρχείων ERDDAP™ , και μπορείτε να πάρετε ένα "0 αρχεία" μήνυμα σφάλματος που δείχνει ότι ERDDAP™ βρέθηκε 0 ταίριασμα αρχείων στον κατάλογο (όταν νομίζετε ότι υπάρχουν αρχεία που ταιριάζουν σε αυτόν τον κατάλογο) :
-
Ελέγξτε ότι έχετε καθορίσει το πλήρες όνομα του καταλόγου. Και αν ορίσατε το όνομα του αρχείου δείγματος, βεβαιωθείτε ότι ορίσατε το πλήρες όνομα του αρχείου, συμπεριλαμβανομένου του πλήρους ονόματος καταλόγου.
-
Ελέγξτε ότι τα αρχεία είναι πραγματικά σε αυτόν τον κατάλογο.
-
Ελέγξτε την ορθογραφία του ονόματος καταλόγου.
-
Ελέγξτε το αρχείοNameRegex. Είναι πολύ εύκολο να κάνεις λάθη με τους Ρέγκες. Για δοκιμαστικούς σκοπούς, δοκιμάστε το regex .\* το οποίο θα πρέπει να ταιριάζει με όλα τα ονόματα αρχείων. (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
-
Ελέγξτε ότι ο χρήστης που τρέχει το πρόγραμμα (π.χ., user=tomcat (♪ ♪) για το Tomcat/ ERDDAP ) έχει "διαβάστε" άδεια για αυτά τα αρχεία.
-
Σε ορισμένα λειτουργικά συστήματα (για παράδειγμα, SELinux) και ανάλογα με τις ρυθμίσεις του συστήματος, ο χρήστης που έτρεξε το πρόγραμμα πρέπει να έχει «διαβασμένη» άδεια για όλη την αλυσίδα καταλόγων που οδηγεί στον κατάλογο που έχει τα αρχεία.
-
Αν έχεις προβλήματα που δεν μπορείς να λύσεις, αίτηση υποστήριξης με όσο το δυνατόν περισσότερες πληροφορίες. Ομοίως, αν φαίνεται ότι ο κατάλληλος τύπος EDDType για ένα δεδομένο σύνολο δεδομένων δεν λειτουργεί με αυτό το σύνολο δεδομένων, ή αν δεν υπάρχει κατάλληλο EDDType, παρακαλούμε να υποβάλετε ένα θέμα για το GitHub με τις λεπτομέρειες (και ένα αρχείο δείγματος, κατά περίπτωση) .
Πρέπει να επεξεργαστείτε την έξοδο από το GenerateDatasets Xml για να το κάνει καλύτερο.
-
Εντάξει. Ο ΤΣΟΥΝΚ ΤΗΣ datasets.xml ΕΓΚΑΤΑΣΤΑΣΗ Δημιουργία συνόλων δεδομένων Xml δεν είναι τέλεια. Πρέπει να διαβάσεις και να εκδόσεις το XML πριν το χρησιμοποιήσεις σε ένα κοινό. ERDDAP . Δημιουργία συνόλων δεδομένων Το Xml δεν είναι πάντα σωστό. Είστε υπεύθυνοι για την εξασφάλιση της ορθότητας του XML που προσθέτετε ERDDAP Σ datasets.xml ΦΙΛ.
(Δεν φωνάζω. Για ιστορικούς νομικούς λόγους, οι αποκηρύξεις πρέπει να γράφονται σε όλα τα κεφαλαία.)
Η παραγωγή του GenerateDatasetsXml είναι ένα πρόχειρο σχέδιο. Θα πρέπει σχεδόν πάντα να το επεξεργαστείτε. Έχουμε κάνει και συνεχίζουμε να κάνουμε μια τεράστια προσπάθεια να κάνουμε την παραγωγή όσο πιο έτοιμη γίνεται, αλλά υπάρχουν όρια. Συχνά, οι απαραίτητες πληροφορίες απλά δεν είναι διαθέσιμες από τα μεταδεδομένα πηγής.
Ένα θεμελιώδες πρόβλημα είναι ότι ζητάμε ένα πρόγραμμα υπολογιστών. (Δημιουργία συνόλων δεδομένωνXml) να κάνεις μια εργασία όπου, αν έδινες την ίδια εργασία σε 100 άτομα, θα είχες 100 διαφορετικά αποτελέσματα. Δεν υπάρχει ενιαία "δεξιά" απάντηση. Προφανώς, το πρόγραμμα πλησιάζει στο να διαβάσει το μυαλό του Μπομπ. (Όχι δική σου.) Αλλά ακόμα κι έτσι, δεν είναι ένα καταπληκτικό πρόγραμμα τεχνητής νοημοσύνης, απλά ένα μάτσο εφοριακοί λιθοβολούσαν μαζί για να κάνουν μια εργασία σαν τεχνητή νοημοσύνη. (Μπορεί να έρθει εκείνη η μέρα ενός προγράμματος τεχνητής νοημοσύνης, αλλά όχι ακόμα. Αν το κάνει, εμείς οι άνθρωποι μπορεί να έχουμε μεγαλύτερα προβλήματα. Πρόσεχε τι εύχεσαι.)
-
Για ενημερωτικούς σκοπούς, η έξοδος εμφανίζει την παγκόσμια πηγή Χαρακτηριστικά και μεταβλητή πηγή Χαρακτηριστικά ως σχόλια. ERDDAP™ συνδυάζει τα χαρακτηριστικά πηγής και addAttributes (που έχουν προτεραιότητα) για να κάνει το συνδυασμένο Χαρακτηριστικά που εμφανίζονται στο χρήστη. (Και άλλα χαρακτηριστικά προστίθενται αυτόματα στο γεωγραφικό μήκος, γεωγραφικό πλάτος, υψόμετρο, βάθος και χρονικές μεταβλητές όταν ERDDAP™ πραγματικά κάνει το σύνολο δεδομένων) .
-
Αν δεν σας αρέσει μια πηγήAttribute, την αντικατάσταση με την προσθήκη ενός addAttribute με το ίδιο όνομα αλλά μια διαφορετική τιμή (ή καμία αξία, αν θέλετε να την αφαιρέσετε) .
-
Όλα addAttributes είναι προτάσεις που δημιουργούνται από υπολογιστή. Επεξεργαστείτε τους! Αν δεν σου αρέσει ένα πρόσθετο χαρακτηριστικό, άλλαξε το.
-
Αν θέλετε να προσθέσετε άλλο addAttributes , πρόσθεσέ τα.
-
Εάν θέλετε να αλλάξετε ένα destinationName 'λλαξε το. Αλλά μην αλλάξεις. sourceName Σ.
-
Μπορείτε να αλλάξετε τη σειρά του dataVariable ιπ ή αφαιρέστε οποιοδήποτε από αυτά.
- Μπορείτε να χρησιμοποιήσετε ΔΑΠ (Βλέπε παρακάτω) να ελέγξει επανειλημμένα το XML για το σύνολο δεδομένων ώστε να εξασφαλιστεί ότι το σύνολο δεδομένων που προκύπτει εμφανίζεται όπως θέλετε να στο ERDDAP .
- Μη διστάσετε να κάνετε μικρές αλλαγές στο datasets.xml κομμάτι που δημιουργήθηκε, για παράδειγμα, παρέχει μια καλύτερη infoUrl , περίληψη ή τίτλος.
μη προσθήκη προτύπωνNames
Αν συμπεριλαμβάνετε \- DoNotAddStandardNames ως παράμετρο γραμμής εντολών όταν τρέχετε δημιουργήστε Σύνολα δεδομένων Xml, δημιουργία Σύνολα δεδομένων Το Xml δεν θα προσθέσει standard\_name στο addAttributes για οποιεσδήποτε μεταβλητές εκτός των μεταβλητών με την ονομασία γεωγραφικό πλάτος, γεωγραφικό μήκος, υψόμετρο, βάθος ή χρόνος (που έχουν προφανή standard\_name α) . Αυτό μπορεί να είναι χρήσιμο αν χρησιμοποιείτε την έξοδο από τη δημιουργία Σύνολα δεδομένων Xml απευθείας σε ERDDAP™ χωρίς επεξεργασία της εξόδου, επειδή παράγουν Σύνολα δεδομένων Xml συχνά μαντεύει standard\_name λάθος. (Σημειώστε ότι σας συνιστούμε πάντα να επεξεργαστείτε την έξοδο πριν τη χρήση της ERDDAP .) Χρησιμοποιώντας αυτή την παράμετρο θα έχουν άλλα ελάσσονα συναφή αποτελέσματα, επειδή η εικαζόμενη standard\_name χρησιμοποιείται συχνά για άλλους σκοπούς, π.χ. για τη δημιουργία ενός νέου long\_name , και να δημιουργήσετε τις ρυθμίσεις της μπάρας χρώματος.
Σενάριο
Ως εναλλακτική λύση για την απάντηση των ερωτήσεων διαδραστικά στο πληκτρολόγιο και βρόχο για τη δημιουργία πρόσθετων συνόλων δεδομένων, μπορείτε να παράσχετε επιχειρήματα γραμμής εντολών για να απαντήσετε σε όλες τις ερωτήσεις για τη δημιουργία ενός συνόλου δεδομένων. Δημιουργία συνόλων δεδομένων Το Xml θα επεξεργαστεί αυτές τις παραμέτρους, θα γράψει την έξοδο στο αρχείο εξόδου και θα βγει από το πρόγραμμα.
Για να το ρυθμίσετε αυτό, χρησιμοποιήστε πρώτα το πρόγραμμα σε διαδραστική λειτουργία και γράψτε τις απαντήσεις σας. Να ένα μερικό παράδειγμα: Ας πούμε ότι τρέχετε το σενάριο: ./GenerateDatasetsXml.sh Στη συνέχεια, εισάγετε: EDDTableFromAsciiFiles Στη συνέχεια εισάγετε: /u00/data/ Στη συνέχεια, εισάγετε: . . . . . . asc Στη συνέχεια εισάγετε: /u00/data/sampleFile.asc Στη συνέχεια εισάγετε: ISO-8859-1
Για να εκτελέσετε αυτό με μη διαδραστικό τρόπο, χρησιμοποιήστε αυτή τη γραμμή εντολών: ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles /u00/data/ .*\....cccc /u00/data/sampleFile.asc ISO-8859-1 Βασικά, απαριθμείς όλες τις απαντήσεις στη γραμμή εντολών. Αυτό θα πρέπει να είναι χρήσιμο για σύνολα δεδομένων που αλλάζουν συχνά με τρόπο που απαιτεί την επανάληψη της λειτουργίας GenerateDatasets Xml (κυρίως EDDGrid Από ThreddsCatalog) .
Λεπτομέρειες:
- Εάν μια παράμετρος περιέχει ένα χώρο ή κάποιο ιδιαίτερο χαρακτήρα, τότε κωδικοποιήστε την παράμετρο ως συμβολοσειρά τύπου JSON , π.χ., "η παράμετρος μου με κενά και δύο \n γραμμές".
- Αν θέλετε να καθορίσετε μια κενή συμβολοσειρά ως παράμετρο, χρησιμοποιήστε: τίποτα
- Αν θέλετε να καθορίσετε την προκαθορισμένη τιμή μιας παράμετρου, χρησιμοποιήστε:
- Δημιουργία συνόλων δεδομένων Xml υποστηρίζει a -i σύνολα δεδομένων XmlName # ετικέταName παράμετρος γραμμής εντολών που εισάγει την έξοδο στην καθορισμένη datasets.xml αρχείο (το προκαθορισμένο είναι τομκάτ /περιεχόμενο/μερίδιο/ datasets.xml ) . Δημιουργία συνόλων δεδομένων Xml ψάχνει για δύο γραμμές σε σύνολα δεδομένων XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
και
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
και αντικαθιστά τα πάντα μεταξύ αυτών των γραμμών με το νέο περιεχόμενο, και αλλάζει το someDatetime.
- Ο διακόπτης -i είναι μόνο επεξεργασμένος (και αλλαγές σε datasets.xml γίνονται μόνο) αν εκτελέσετε το GenerateDatasets Xml με τις παραμέτρους γραμμής εντολών που καθορίζουν όλες τις απαντήσεις σε όλες τις ερωτήσεις για ένα βρόχο του προγράμματος. (Βλέπε 'Scripting' παραπάνω.) (Η σκέψη είναι: Αυτή η παράμετρος είναι για χρήση με σενάρια. Εάν χρησιμοποιείτε το πρόγραμμα σε διαδραστική λειτουργία (πληκτρολογώντας πληροφορίες στο πληκτρολόγιο) , είναι πιθανό να δημιουργήσετε κάποια λανθασμένα κομμάτια XML πριν δημιουργήσετε αυτό που θέλετε.)
- Αν δεν βρεθούν οι γραμμές έναρξης και λήξης, τότε οι γραμμές και το νέο περιεχόμενο εισάγονται ακριβώς πριν</erddapDatasets>.
- Υπάρχει επίσης ένα -I (Κεφάλαιο i) διακόπτης για σκοπούς δοκιμής που λειτουργεί το ίδιο με -i, αλλά δημιουργεί ένα αρχείο που ονομάζεται datasets.xml Ώρα ημερομηνίας και δεν κάνει αλλαγές σε datasets.xml .
- Μην τρέχετε GenerateDatasets Xml με -i σε δύο διαδικασίες ταυτόχρονα. Υπάρχει πιθανότητα να διατηρηθεί μόνο ένα σύνολο αλλαγών. Μπορεί να υπάρξουν σοβαρά προβλήματα. (για παράδειγμα, αλλοιωμένα αρχεία) .
Εάν χρησιμοποιείτε "GenerateDatasetsXml -verbose", θα εκτυπώσει περισσότερα διαγνωστικά μηνύματα από το συνηθισμένο.
Ειδικοί τύποι συνόλου δεδομένων/Pseudo
Γενικά, οι επιλογές EDDType στα σύνολα GenerateDatasets Ταίριασμα Xml των τύπων EDD που περιγράφονται σε αυτό το έγγραφο (Δείτε το Κατάλογος τύπων συνόλου δεδομένων ) και παράγουν ένα datasets.xml κομμάτι για να δημιουργήσετε ένα σύνολο δεδομένων από μια συγκεκριμένη πηγή δεδομένων. Υπάρχουν μερικές εξαιρέσεις και ειδικές περιπτώσεις:
EDDGrid Από τοErddap
Αυτός ο τύπος EDD παράγει όλα τα datasets.xml κομμάτια που απαιτούνται για την κατασκευή EDDGrid Από τοErddap σύνολα δεδομένων από όλα τα EDDGrid σύνολα δεδομένων σε τηλεχειριστήριο ERDDAP . Θα έχετε τη δυνατότητα να κρατήσετε το αρχικό datasetID α (η οποία μπορεί να αναπαράγει κάποια datasetID ήδη στο ERDDAP ) ή δημιουργία νέων ονομάτων που θα είναι μοναδικές (Αλλά συνήθως δεν είναι τόσο αναγνώσιμα.) .
EDD TableFromErddap
Αυτός ο τύπος EDD παράγει όλα τα datasets.xml κομμάτια που απαιτούνται για την κατασκευή EDD TableFromErddap σύνολα δεδομένων από όλα τα σύνολα δεδομένων EDDTable σε ένα απομακρυσμένο ERDDAP . Θα έχετε τη δυνατότητα να κρατήσετε το αρχικό datasetID α (η οποία μπορεί να αναπαράγει κάποια datasetID ήδη στο ERDDAP ) ή δημιουργία νέων ονομάτων που θα είναι μοναδικές (Αλλά συνήθως δεν είναι τόσο αναγνώσιμα.) .
EDDGrid Από ThreddsCatalog
Αυτός ο τύπος EDD παράγει όλα τα datasets.xml κομμάτια που απαιτούνται για όλα τα EDDGrid Από το Νταπ σύνολα δεδομένων που μπορεί να βρει έρποντας αναδρομικά μέσω ενός thresedds (ΥΠΟ) Κατάλογος. Υπάρχουν πολλές μορφές των URL καταλόγου THREDDS. Αυτή η επιλογή απαιτεί ένα URL ΤΡΕΙΣ .xml με /catalog/ σε αυτό, για παράδειγμα,
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xmlή
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(ένας σχετικός κατάλογος .html είναι σε
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html, η οποία δεν είναι αποδεκτή για EDDGrid Από ThreddsCatalog).
Εάν έχετε προβλήματα με EDDGrid Από Thredds Κατάλογος:
- Βεβαιωθείτε ότι το URL που χρησιμοποιείτε είναι έγκυρο, περιλαμβάνει /catalog /, και τελειώνει με /catalog.xml .
- Εάν είναι δυνατόν, χρησιμοποιήστε μια δημόσια διεύθυνση IP (για παράδειγμα,https://oceanwatch.pfeg.noaa.gov) στο URL, όχι μια τοπική αριθμητική διεύθυνση IP (για παράδειγμα,https://12.34.56.78) . Εάν το THREDDS είναι προσβάσιμο μόνο μέσω της τοπικής αριθμητικής διεύθυνσης IP, μπορείτε να χρησιμοποιήσετε [<μετατροπή σε PublicSourceUrl>] (#μετατροπή σε δημόσια πηγή) Οπότε... ERDDAP™ οι χρήστες βλέπουν τη δημόσια διεύθυνση, παρόλο που ERDDAP™ παίρνει δεδομένα από την τοπική αριθμητική διεύθυνση.
- Αν έχεις προβλήματα που δεν μπορείς να λύσεις, ελέγξτε τις συμβουλές αντιμετώπισης προβλημάτων .
- Ο κώδικας χαμηλού επιπέδου για αυτό χρησιμοποιεί τώρα Unidata κωδικός καταλόγου netcdf-java (Τριάντα. Κατηγορίες καταλόγου) Έτσι ώστε να μπορεί να χειριστεί όλους τους καταλόγους THREDDS (που μπορεί να είναι εκπληκτικά περίπλοκο) Χάρη στην Unidata για τον κώδικα.
EDDGrid LonPM180Από το ErddapCatalog
Αυτός ο τύπος EDD παράγει το datasets.xml να κάνει EDDGrid LonPM180 σύνολα δεδομένων από όλα τα EDDGrid σύνολα δεδομένων ERDDAP που έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180.
- Εάν είναι δυνατόν, χρησιμοποιήστε μια δημόσια διεύθυνση IP (για παράδειγμα,https://oceanwatch.pfeg.noaa.gov) στο URL, όχι μια τοπική αριθμητική διεύθυνση IP (για παράδειγμα,https://12.34.56.78) . Εάν η ERDDAP™ είναι προσβάσιμο μόνο μέσω της τοπικής αριθμητικής διεύθυνσης IP, μπορείτε να χρησιμοποιήσετε [<μετατροπή σε PublicSourceUrl>] (#μετατροπή σε δημόσια πηγή) Οπότε... ERDDAP™ οι χρήστες βλέπουν τη δημόσια διεύθυνση, παρόλο που ERDDAP™ παίρνει δεδομένα από την τοπική αριθμητική διεύθυνση.
EDDGrid Lon0360Από το ErddapCatalog
Αυτός ο τύπος EDD παράγει το datasets.xml να κάνει EDDGrid Λον0360 σύνολα δεδομένων από όλα τα EDDGrid σύνολα δεδομένων ERDDAP που έχουν τιμές γεωγραφικού μήκους μικρότερες του 0.
- Εάν είναι δυνατόν, χρησιμοποιήστε μια δημόσια διεύθυνση IP (για παράδειγμα,https://oceanwatch.pfeg.noaa.gov) στο URL, όχι μια τοπική αριθμητική διεύθυνση IP (για παράδειγμα,https://12.34.56.78) . Εάν η ERDDAP™ είναι προσβάσιμο μόνο μέσω της τοπικής αριθμητικής διεύθυνσης IP, μπορείτε να χρησιμοποιήσετε [<μετατροπή σε PublicSourceUrl>] (#μετατροπή σε δημόσια πηγή) Οπότε... ERDDAP™ οι χρήστες βλέπουν τη δημόσια διεύθυνση, παρόλο που ERDDAP™ παίρνει δεδομένα από την τοπική αριθμητική διεύθυνση.
EDDs από αρχεία
Με δεδομένο έναν κατάλογο εκκίνησης, αυτό διασχίζει τον κατάλογο και όλους τους υποκαταλόγους και προσπαθεί να δημιουργήσει ένα σύνολο δεδομένων για κάθε ομάδα αρχείων δεδομένων που βρίσκει.
- Αυτό προϋποθέτει ότι όταν βρεθεί ένα σύνολο δεδομένων, το σύνολο δεδομένων περιλαμβάνει όλους τους υποκαταλόγους.
- Εάν βρεθεί ένα σύνολο δεδομένων, παρόμοιοι κατάλογοι αδελφών θα αντιμετωπίζονται ως ξεχωριστά σύνολα δεδομένων (Για παράδειγμα, οι κατάλογοι της δεκαετίας του 1990, της δεκαετίας του 2000, της δεκαετίας του 2010, θα δημιουργήσουν ξεχωριστά σύνολα δεδομένων) . Θα πρέπει να είναι εύκολο να συνδυαστούν με το χέρι -- απλά αλλάξτε το πρώτο σύνολο δεδομένων<αρχείοDir> στον μητρικό κατάλογο και να διαγράψετε όλα τα επόμενα σύνολα δεδομένων αδελφών.
- Αυτό θα προσπαθήσει μόνο να δημιουργήσει ένα κομμάτι του datasets.xml για τον πιο κοινό τύπο επέκτασης αρχείου σε έναν κατάλογο (χωρίς μέτρηση .md5, η οποία αγνοείται) . Έτσι, δίνεται ένας κατάλογος με 10 .nc αρχεία και 5 .txt αρχεία, ένα σύνολο δεδομένων θα δημιουργηθεί για το .nc Μόνο αρχεία.
- Αυτό υποθέτει ότι όλα τα αρχεία σε έναν κατάλογο με την ίδια επέκταση ανήκουν στο ίδιο σύνολο δεδομένων. Αν ένας κατάλογος έχει κάποια .nc αρχεία με δεδομένα SST και μερικά .nc αρχεία με δεδομένα χλωροφύλλης, μόνο ένα δείγμα .nc Το αρχείο θα διαβαστεί (ΣΣΤ; χλωροφύλλη;) και μόνο ένα σύνολο δεδομένων θα δημιουργηθεί για αυτόν τον τύπο αρχείου. Αυτό το σύνολο δεδομένων πιθανότατα θα αποτύχει να φορτώσει λόγω επιπλοκών από την προσπάθεια φόρτωσης δύο τύπων αρχείων στο ίδιο σύνολο δεδομένων.
- Αν υπάρχουν λιγότερα από 4 αρχεία με την πιο κοινή επέκταση σε έναν κατάλογο, αυτό υποθέτει ότι δεν είναι αρχεία δεδομένων και απλά παραλείπει τον κατάλογο.
- Αν υπάρχουν 4 ή περισσότερα αρχεία σε έναν κατάλογο, αλλά αυτό δεν μπορεί να δημιουργήσει με επιτυχία ένα κομμάτι του datasets.xml για τα αρχεία (για παράδειγμα, ένας μη υποστηριζόμενος τύπος αρχείου) , αυτό θα δημιουργήσει Πίνακας EDD από αρχείοNames σύνολο δεδομένων για τα αρχεία.
- Στο τέλος των διαγνωστικών ότι αυτό γράφει στο αρχείο καταγραφής, λίγο πριν από την datasets.xml κομμάτια, αυτό θα εκτυπώσει ένα πίνακα με μια περίληψη των πληροφοριών που συλλέγονται διασχίζοντας όλα τα υποκαταστήματα. Ο πίνακας θα απαριθμήσει κάθε υποκατάλογο και θα αναφέρει τον πιο κοινό τύπο επέκτασης αρχείου, τον συνολικό αριθμό αρχείων, και ποιος τύπος συνόλου δεδομένων δημιουργήθηκε για αυτά τα αρχεία (εάν υπάρχουν) . Εάν αντιμετωπίζετε μια πολύπλοκη, βαθιά φωλιασμένη δομή αρχείων, σκεφτείτε να εκτελέσετε GenerateDatasets Xml με EDDType=EDDsFromFiles απλά για να δημιουργήσετε αυτές τις πληροφορίες,
- Αυτή η επιλογή μπορεί να μην κάνει μια μεγάλη δουλειά μαντεύοντας το καλύτερο EDDType για μια δεδομένη ομάδα αρχείων δεδομένων, αλλά είναι γρήγορη, εύκολη, και αξίζει μια δοκιμή. Εάν τα αρχεία πηγαίου κώδικα είναι κατάλληλα, λειτουργεί καλά και είναι ένα καλό πρώτο βήμα για τη δημιουργία του datasets.xml για ένα σύστημα αρχείων με πολλά υποκαταστήματα, το καθένα με αρχεία δεδομένων από διαφορετικά σύνολα δεδομένων.
Πίνακας EDDFromEML και πίνακας EDDFromEMLBatch
Αυτά τα ειδικά EDDType παράγει το datasets.xml για να κάνει ένα Πίνακας EDD από αρχεία Ascii σύνολο δεδομένων από κάθε πίνακα που περιγράφεται σε ένα Οικολογικά μεταδεδομένα Γλώσσα Αρχείο XML. Η "Batch" παραλλαγή λειτουργεί σε όλα τα αρχεία EML σε έναν τοπικό ή απομακρυσμένο κατάλογο. Παρακαλώ δείτε το ξεχωριστό τεκμηρίωση για τον πίνακα EDDFromEML .
Πίνακας EDD από τη θύρα
Αυτό το ειδικό EDDType παράγει το datasets.xml για να κάνει ένα Πίνακας EDD από αρχεία Ascii σύνολο δεδομένων από τις πληροφορίες σε Inport- xml Αρχείο. Αν μπορείτε να αποκτήσετε πρόσβαση στο πηγαίο αρχείο δεδομένων (το αρχείο inport-xml θα πρέπει να έχει στοιχεία για το πού να το βρείτε) , μπορείτε να κάνετε ένα σύνολο δεδομένων εργασίας σε ERDDAP .
Τα ακόλουθα βήματα περιγράφουν πώς να χρησιμοποιήσετε το GenerateDatasets Xml με ένα αρχείο inport-xml για να πάρετε ένα σύνολο δεδομένων εργασίας ERDDAP .
- Μόλις έχετε πρόσβαση στο αρχείο inport-xml (είτε ως URL είτε ως τοπικό αρχείο) : εκτελέστε GenerateDatasets Xml, προσδιορίστε EDDType=EDDTableFromInPort, προσδιορίστε το URL inport-xml ή το πλήρες όνομα αρχείου, προσδιορίστε ποια Child=0, και προσδιορίστε τις άλλες ζητούμενες πληροφορίες (εάν είναι γνωστό) . (Σε αυτό το σημείο, δεν χρειάζεται να έχετε το αρχείο πηγαίων δεδομένων ή να καθορίσετε το όνομά του.) Η ρύθμιση child=0 λέει GenerateDatasets Xml για να γράψετε τις πληροφορίες για όλα της<οντότητα-απόδοση-πληροφορίες><οντότητα> είναι στο αρχείο inport-xml (εάν υπάρχουν) . Επίσης, εκτυπώνει μια σύνοψη πληροφοριών ιστορικού, συμπεριλαμβανομένων όλων των download-url που αναφέρονται στο αρχείο inport-xml.
- Κοίτα όλες αυτές τις πληροφορίες. (συμπεριλαμβανομένων των πληροφοριών ιστορικού που δημιουργούν σύνολα δεδομένων Εκτύπωση Xml) και να επισκεφθείτε το download-url (α) προκειμένου να προσπαθήσουμε να βρούμε το αρχείο πηγαίων δεδομένων (α) . Αν μπορείς να το βρεις (τους) , κατέβασέ το (τους) σε έναν κατάλογο που είναι προσβάσιμος σε ERDDAP . (Αν δεν μπορείτε να βρείτε αρχεία πηγαίων δεδομένων, δεν υπάρχει λόγος να προχωρήσουμε.)
- Εκτέλεση δημιουργίας Σύνολα δεδομένων Xml και πάλι. Εάν το αρχείο πηγαίων δεδομένων αντιστοιχεί σε ένα από τα αρχεία inport-xml<οντότητα-απόδοση-πληροφορίες><οντότητα>, προσδιορίστε ποιο παιδί= ότι ο αριθμός Entity (π.χ. 1, 2, 3, ...) . ERDDAP™ θα προσπαθήσει να ταιριάξει τα ονόματα στήλης στο αρχείο πηγαίων δεδομένων με τα ονόματα στις πληροφορίες της οντότητας, και να προτρέψει να αποδεχθεί / απορρίψει / διορθώσει τυχόν αποκλίσεις. Ή, αν το αρχείο inport-xml δεν έχει καμία<οντότητα-απόδοση-πληροφορίες><οντότητα>, προσδιορίστε ποιο παιδί=0.
- Στο κομμάτι του datasets.xml που έγινε από το GenerateDatasets Xml, αναθεώρηση της [παγκόσμια< addAttributes >] (#Παγκόσμια χαρακτηριστικά) όπως απαιτείται/επιθυμείται.
- Στο κομμάτι του datasets.xml που έγινε από GenerateDatasetsXml, add/ revise το [< dataVariable >] (#μεταβλητή δεδομένων) πληροφορίες που απαιτούνται/επιθυμούν να περιγράψουν καθεμία από τις μεταβλητές. Βεβαιωθείτε ότι αναγνωρίζετε σωστά κάθε μεταβλητή [< sourceName >] (#όνομα πηγής) (όπως εμφανίζεται στην πηγή) , [< destinationName >] (#Όνομα προορισμού) (που έχει περισσότερους περιορισμούς στους επιτρεπόμενους χαρακτήρες από sourceName ) , [<μονάδες>] (#μονάδες) (ιδιαίτερα εάν πρόκειται για μεταβλητή χρόνου ή χρονοσφραγίδας όπου οι μονάδες πρέπει να προσδιορίσουν το μορφότυπο) , και [< missing\value >] (#λείπει αξία) ,
- Όταν είστε κοντά στο φινίρισμα, χρησιμοποιήστε επανειλημμένα το ΔΑΠ εργαλείο για να δείτε γρήγορα αν η περιγραφή συνόλου δεδομένων είναι έγκυρη και αν το σύνολο δεδομένων θα εμφανιστεί στο ERDDAP™ Όπως θέλεις.
Θα ήταν υπέροχο αν ομάδες που χρησιμοποιούν το InPort για να τεκμηριώσουν τα σύνολα δεδομένων τους θα χρησιμοποιούσαν επίσης ERDDAP™ να καταστούν διαθέσιμα τα πραγματικά δεδομένα:
- ERDDAP™ είναι μια λύση που μπορεί να χρησιμοποιηθεί αυτή τη στιγμή ώστε να μπορείτε να εκπληρώσετε NOAA Σ Πρόσβαση του κοινού στα Ερευνητικά Αποτελέσματα (ΠΑΡR) Απαιτήσεις Αυτή τη στιγμή, όχι σε κάποια ασαφή στιγμή στο μέλλον.
- ERDDAP™ καθιστά τα πραγματικά δεδομένα διαθέσιμα στους χρήστες, όχι μόνο τα μεταδεδομένα. (Τι καλό έχουν τα μεταδεδομένα χωρίς δεδομένα;)
- ERDDAP™ υποστηρίζει μεταδεδομένα (Ειδικότερα, οι μονάδες μεταβλητών) , σε αντίθεση με κάποιο άλλο λογισμικό διακομιστή δεδομένων που εξετάζεται. (Τι καλό έχουν τα δεδομένα χωρίς μεταδεδομένα;) Για να χρησιμοποιήσετε λογισμικό που δεν υποστηρίζει μεταδεδομένα είναι να καλέσει τα δεδομένα να παρεξηγηθεί και να γίνει κατάχρηση.
- ERDDAP™ είναι ελεύθερο και λογισμικό ανοιχτού κώδικα σε αντίθεση με κάποιο άλλο λογισμικό που εξετάζεται. Συνεχής ανάπτυξη ERDDAP™ έχει ήδη πληρωθεί. Υποστήριξη ERDDAP™ οι χρήστες είναι ελεύθεροι.
- ERDDAP Η εμφάνιση του μπορεί να προσαρμοστεί εύκολα ώστε να αντανακλά και να τονίζει την ομάδα σας (όχι ERD ή ERDDAP ) .
- ERDDAP™ προσφέρει έναν συνεπή τρόπο πρόσβασης σε όλα τα σύνολα δεδομένων.
- ERDDAP™ μπορεί να διαβάσει δεδομένα από πολλούς τύπους αρχείων δεδομένων και από σχετικές βάσεις δεδομένων.
- ERDDAP™ μπορεί να ασχοληθεί με μεγάλα σύνολα δεδομένων, συμπεριλαμβανομένων των συνόλων δεδομένων όπου τα δεδομένα πηγής είναι σε πολλά αρχεία δεδομένων.
- ERDDAP™ μπορεί να γράψει δεδομένα σε πολλούς τύπους αρχείων δεδομένων, κατόπιν αιτήματος του χρήστη, συμπεριλαμβανομένων των τύπων αρχείων επιστημονικών δεδομένων όπως netCDF, ESRI .csv, και ODV .txt .
- ERDDAP™ μπορεί να κάνει προσαρμοσμένα γραφήματα και χάρτες των υποσυνόλων των δεδομένων, με βάση τις προδιαγραφές του χρήστη.
- ERDDAP™ μπορεί να ασχοληθεί με μη δεδομένα σύνολα δεδομένων, όπως συλλογές εικόνας, βίντεο, ή αρχεία ήχου.
- ERDDAP™ έχει εγκατασταθεί και χρησιμοποιηθεί στο περισσότερα από 60 ιδρύματα σε όλο τον κόσμο .
- ERDDAP™ εμφανίζεται ως ένας από τους εξυπηρετητές δεδομένων που συνιστάται για χρήση εντός NOAA στο NOAA Διαδικαστική οδηγία για την πρόσβαση στα δεδομένα , σε αντίθεση με κάποιο άλλο λογισμικό που εξετάζεται.
- ERDDAP™ είναι ένα προϊόν NMFS / NOAA , οπότε χρησιμοποιώντας το μέσα NMFS και NOAA θα πρέπει να είναι ένα σημείο υπερηφάνειας για NMFS και NOAA .
Παρακαλώ δώστε ERDDAP™ Μια προσπάθεια. Εάν χρειάζεστε βοήθεια, παρακαλούμε να δημοσιεύσετε ένα μήνυμα στο ERDDAP™ Ομάδα Google.
addFillValue Χαρακτηριστικά
Αυτή η ειδική επιλογή EDDType δεν είναι ένας τύπος συνόλου δεδομένων. Είναι ένα εργαλείο που μπορεί να προσθέσει \_FillValue χαρακτηριστικά σε ορισμένες μεταβλητές σε ορισμένα σύνολα δεδομένων. Βλέπεις; addFillValue Χαρακτηριστικά .
ανεύρεσηDuplicate Χρόνος
Αυτή η ειδική επιλογή EDDType δεν είναι ένας τύπος συνόλου δεδομένων. Αντίθετα, λέει GenerateDatasets Xml για αναζήτηση μέσω μιας συλλογής από πλέγμα .nc (και σχετικά) αρχεία για να βρείτε και να εκτυπώσετε μια λίστα αρχείων με διπλές τιμές χρόνου. Όταν κοιτάζει τις τιμές του χρόνου, τις μετατρέπει από τις αρχικές μονάδες σε "seconds since 1970-01-01" σε περίπτωση που διαφορετικά αρχεία χρησιμοποιούν διαφορετικές χορδές μονάδων. Πρέπει να παράσχετε τον αρχικό κατάλογο (με ή χωρίς το ίχνο) , το όνομα αρχείου κανονική έκφραση (π.χ., .\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ .nc ) , και το όνομα της χρονικής μεταβλητής στα αρχεία.
ncdump
Αυτή η ειδική επιλογή EDDType δεν είναι ένας τύπος συνόλου δεδομένων. Αντίθετα, λέει GenerateDatasets Xml για εκτύπωση ncdump \-όπως εκτύπωση ενός .nc , .nc ml, ή .hdf Αρχείο. Χρησιμοποιεί το netcdf-java του NCdump , το οποίο είναι ένα πιο περιορισμένο εργαλείο από την έκδοση C του NCdump. Αν χρησιμοποιήσετε αυτή την επιλογή, GenerateDatasetsXml θα σας ζητήσει να χρησιμοποιήσετε μια από τις επιλογές: "-h" (Κεφαλίδα) , "-γ" (Συντονισμός vars) , "-βαλ. (προκαθορισμένο) , "-v var1, var2", "v var1 (0,0:10,0:20) ". Αυτό είναι χρήσιμο γιατί, χωρίς ncdump είναι δύσκολο να γνωρίζουμε τι είναι σε .nc , .nc ml, ή .hdf αρχείο και συνεπώς ποιο EDDType θα πρέπει να ορίσετε για GenerateDatasets Xml (στα Αγγλικά). Για ένα .nc Αρχείο ml, αυτό θα εκτυπώσει την έξοδο ncdump για το αποτέλεσμα της .nc Μεταβολές αρχείων ml που εφαρμόζονται στο υποκείμενο .nc ή .hdf Αρχείο.
ΔΑΠ
- ΔΑΠ είναι ένα πρόγραμμα γραμμής εντολών που μπορείτε να χρησιμοποιήσετε αφού έχετε δημιουργήσει μια πρώτη προσπάθεια στο XML για ένα νέο σύνολο δεδομένων στο datasets.xml . Με DasDds, μπορείτε επανειλημμένα να ελέγξετε και να βελτιώσετε το XML. Όταν χρησιμοποιείτε το πρόγραμμα DasDds:
- Στα Windows, την πρώτη φορά που τρέχετε DasDds, θα πρέπει να επεξεργαστείτε τα DasDds. αρχείο νυχτερίδας με επεξεργαστή κειμένου για να αλλάξετε τη διαδρομή προς το java. exe αρχείο έτσι ώστε τα Windows να μπορούν να βρουν Java .
- DasDds σας ζητάει για το datasetID για το σύνολο δεδομένων που εργάζεστε.
- Το DasDds προσπαθεί να δημιουργήσει το σύνολο δεδομένων με αυτό datasetID .
- DasDds πάντα εκτυπώνει πολλά διαγνωστικά μηνύματα. Εάν χρησιμοποιείτε "DasDds -verbose", DasDds θα εκτυπώσει περισσότερα διαγνωστικά μηνύματα από το συνηθισμένο.
- Για ασφάλεια, το DasDds διαγράφει πάντα όλες τις πληροφορίες του συνόλου δεδομένων cached (αρχεία) για το σύνολο δεδομένων πριν από την προσπάθεια δημιουργίας του συνόλου δεδομένων. Αυτό είναι το ισοδύναμο του καθορισμού σκληρή σημαία Έτσι για τα συγκεντρωτικά σύνολα δεδομένων, ίσως θέλετε να ρυθμίσετε το αρχείοNameRegex προσωρινά για να περιορίσετε τον αριθμό των αρχείων που βρίσκει ο κατασκευαστής δεδομένων.
- Εάν το σύνολο δεδομένων αποτύχει να φορτώσει (για οποιονδήποτε λόγο) , DasDds θα σταματήσει και να σας δείξει το μήνυμα σφάλματος για το πρώτο σφάλμα που βρίσκει.
Μην προσπαθήσεις να μαντέψεις ποιο είναι το πρόβλημα. Διαβάστε προσεκτικά το μήνυμα ΣΦΑΛΜΑ.
Αν είναι απαραίτητο, διαβάστε τα προηγούμενα διαγνωστικά μηνύματα για να βρείτε περισσότερες ενδείξεις και πληροφορίες, επίσης. - Κάντε μια αλλαγή στο XML του συνόλου δεδομένων για να προσπαθήσετε να λύσετε αυτό το πρόβλημα
και αφήστε το DasDds να προσπαθήσει να δημιουργήσει το σύνολο δεδομένων και πάλι. - Αν λύνετε επανειλημμένα κάθε πρόβλημα, θα λύσετε τελικά όλα τα προβλήματα.
και το σύνολο δεδομένων θα φορτώσει.
- Όλες οι έξοδος DasDds (διαγνωστικά και αποτελέσματα) γράφονται στην οθόνη και bigParentΚατάλογος /logs/DasDds.log .
- Αν τα DasDds μπορούν να δημιουργήσουν το σύνολο δεδομένων, τα DasDds θα σας δείξουν το .das (Δομή χαρακτηριστικών συνόλου δεδομένων) , .dds (Περιγραφέας συνόλου δεδομένων Δομή) , και . χρόνοςGaps (Χρονικά κενά) πληροφορίες για το σύνολο δεδομένων στην οθόνη σας και να τα γράψετε bigParentΚατάλογος /logs/DasDds.out .
- Συχνά, θα θέλετε να κάνετε κάποια μικρή αλλαγή στο XML του συνόλου δεδομένων για να καθαρίσετε τα μεταδεδομένα του συνόλου δεδομένων και να επανεκκινήσετε τα DasDds.
Μπόνους Εργαλείο τρίτου μέρους: ERDDAP -Λιντ.
ERDDAP -lint είναι ένα πρόγραμμα από Rob Fuller και Adam Leadbetter της Ιρλανδίας Marine Institute που μπορείτε να χρησιμοποιήσετε για τη βελτίωση των μεταδεδομένων σας ERDDAP™ σύνολα δεδομένων. ERDDAP -lint "περιέχει τους κανόνες και μια απλή στατική εφαρμογή web για την εκτέλεση ορισμένων ελέγχων κατά σας ERDDAP™ Διακομιστής. Όλες οι δοκιμές εκτελούνται στο πρόγραμμα περιήγησης ιστού. Όπως το Εργαλείο χνούδι Unix/Linux, μπορείτε να επεξεργαστείτε τους υπάρχοντες κανόνες ή να προσθέσετε νέους κανόνες. Βλέπεις; ERDDAP -Λιντ. για περισσότερες πληροφορίες.
Αυτό το εργαλείο είναι ιδιαίτερα χρήσιμο για σύνολα δεδομένων που δημιουργήσατε πριν από λίγο καιρό και τώρα θέλετε να ενημερώσετε τις τρέχουσες προτιμήσεις μεταδεδομένων σας. Για παράδειγμα, πρώιμες εκδόσεις του GenerateDatasets Το Xml δεν κατέβαλε καμία προσπάθεια για να δημιουργήσει παγκόσμια creator\_name , creator\_email , δημιουργός\_τύπος, ή creator\_url μεταδεδομένα. Θα μπορούσατε να χρησιμοποιήσετε ERDDAP -Θέλετε να αναγνωρίσετε τα σύνολα δεδομένων που στερούνται αυτά τα χαρακτηριστικά μεταδεδομένων.
Χάρη στον Rob και τον Adam για τη δημιουργία αυτού του εργαλείου και τη διάθεση στο ERDDAP™ κοινότητα.
Η βασική δομή της datasets.xml Αρχείο
Οι απαιτούμενες και προαιρετικές ετικέτες επιτρέπονται σε ένα datasets.xml αρχείο (και τον αριθμό των φορές που μπορεί να εμφανιστούν) παρουσιάζονται παρακάτω. Στην πράξη, σας datasets.xml θα έχουν πολλά<dataset> και χρησιμοποιείστε μόνο τις άλλες ετικέτες μέσα<erddapDatasets> όπως απαιτείται.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<erddapDatasets>
<angularDegreeUnits>...</angularDegreeUnits> <!-- 0 or 1 -->
<angularDegreeTrueUnits>...</angularDegreeTrueUnits> <!-- 0 or 1 -->
<cacheMinutes>...</cacheMinutes> <!-- 0 or 1 -->
<commonStandardNames>...</commonStandardNames> <!-- 0 or 1 -->
<convertInterpolateRequestCSVExample /> <!-- 0 or more -->
<convertInterpolateDatasetIDVariableList /> <!-- 0 or more -->
<convertToPublicSourceUrl /> <!-- 0 or more -->
<decompressedCacheMaxGB>...</decompressedCacheMaxGB> <!-- 0 or 1 -->
<decompressedCacheMaxMinutesOld>...</decompressedCacheMaxMinutesOld> <!-- 0 or 1 -->
<drawLandMask>...</drawLandMask> <!-- 0 or 1 -->
<emailDiagnosticsToErdData>...</emailDiagnosticsToErdData> <!-- 0 or 1 -->
<graphBackgroundColor>...</graphBackgroundColor> <!-- 0 or 1 -->
<ipAddressMaxRequests>...</ipAddressMaxRequests> <!-- 0 or 1 -->
<ipAddressMaxRequestsActive>...<ipAddressMaxRequestsActive> <!-- 0 or 1 -->
<ipAddressUnlimited>...<ipAddressUnlimited> <!-- 0 or 1 -->
<loadDatasetsMinMinutes>...</loadDatasetsMinMinutes> <!-- 0 or 1 -->
<loadDatasetsMaxMinutes>...</loadDatasetsMaxMinutes> <!-- 0 or 1 -->
<logLevel>...</logLevel> <!-- 0 or 1 -->
<nGridThreads>...</nGridThreads> <!-- 0 or 1 -->
<nTableThreads>...</nTableThreads> <!-- 0 or 1 -->
<palettes>...</palettes> <!-- 0 or 1 -->
<partialRequestMaxBytes>...</partialRequestMaxBytes> <!-- 0 or 1 -->
<partialRequestMaxCells>...</partialRequestMaxCells> <!-- 0 or 1 -->
<requestBlacklist>...</requestBlacklist> <!-- 0 or 1 -->
<slowDownTroubleMillis>...</slowDownTroubleMillis> <!-- 0 or 1 -->
<subscriptionEmailBlacklist>...</subscriptionEmailBlacklist> <!-- 0 or 1 -->
<unusualActivity>...</unusualActivity> <!-- 0 or 1 -->
<updateMaxEvents>...</updateMaxEvents> <!-- 0 or 1 --><standardLicense>...</standardLicense> <!-- 0 or 1 -->
<standardContact>...</standardContact> <!-- 0 or 1 -->
<standardDataLicenses>...</standardDataLicenses> <!-- 0 or 1 -->
<standardDisclaimerOfEndorsement>...</standardDisclaimerOfEndorsement> <!-- 0 or 1 -->
<standardDisclaimerOfExternalLinks>...</standardDisclaimerOfExternalLinks> <!-- 0 or 1 -->
<standardGeneralDisclaimer>...</standardGeneralDisclaimer> <!-- 0 or 1 -->
<standardPrivacyPolicy>...</standardPrivacyPolicy> <!-- 0 or 1 -->
<startHeadHtml5>...</startHeadHtml5> <!-- 0 or 1 -->
<startBodyHtml5>...</startBodyHtml5> <!-- 0 or 1 -->
<theShortDescriptionHtml>...</theShortDescriptionHtml> <!-- 0 or 1 -->
<endBodyHtml5>...</endBodyHtml5> <!-- 0 or 1 --><user username="..." password="..." roles="..." /> <!-- 0 or more -->
<dataset>...</dataset> <!-- 1 or more -->
</erddapDatasets>
Είναι πιθανό να επιτρέπονται και άλλες κωδικοποιήσεις στο μέλλον, αλλά προς το παρόν, συνιστάται μόνο το ISO-8859-1.
Συμπερίληψη X
Νέα στην έκδοση 2.25 είναι η υποστήριξη για XInclude. Αυτό απαιτεί τη χρήση του αναλυτή SAX<χρήσηSaxParser> true</useSaxParser> στην εγκατάσταση σας.xml. Αυτό μπορεί να σας επιτρέψει να γράψετε κάθε σύνολο δεδομένων στο δικό του αρχείο, στη συνέχεια να τα συμπεριλάβετε όλα στο κύριο datasets.xml , μέρη των ορισμών συνόλου δεδομένων, ή και τα δύο. Αν θέλετε να δείτε ένα παράδειγμα, EDDTestDataset.java sets XInclude για επαναχρησιμοποίηση μεταβλητών ορισμών.
-
- Ναι.
Σημειώσεις
Συνεργασία με το datasets.xml Το αρχείο είναι ένα μη-τριβικό έργο. Παρακαλώ διαβάστε όλες αυτές τις σημειώσεις προσεκτικά. Αφού διαλέξεις ένα Τύπος συνόλου δεδομένων , παρακαλώ διαβάστε τη λεπτομερή περιγραφή του προσεκτικά.
Επιλογή του τύπου συνόλου δεδομένων
Στις περισσότερες περιπτώσεις, υπάρχει μόνο ένα ERDDAP™ τύπος συνόλου δεδομένων που είναι κατάλληλος για μια δεδομένη πηγή δεδομένων. Σε μερικές περιπτώσεις (π.χ., .nc αρχεία) , υπάρχουν μερικές πιθανότητες, αλλά συνήθως μία από αυτές είναι σίγουρα καλύτερη. Η πρώτη και μεγαλύτερη απόφαση που πρέπει να πάρετε είναι: είναι σκόπιμο να αντιμετωπίσετε το σύνολο δεδομένων ως μια ομάδα πολυδιάστατων συστοιχιών (αν το δείτε, EDDGrid Τύποι συνόλου δεδομένων ) ή ως πίνακας δεδομένων (αν το δείτε, Τύποι συνόλου δεδομένων EDDTable ) .
Υπηρετώντας τα Δεδομένα Όπως Είναι
Συνήθως, δεν υπάρχει ανάγκη τροποποίησης της πηγής δεδομένων (π.χ., μετατροπή των αρχείων σε κάποιο άλλο τύπο αρχείου) Έτσι ώστε ERDDAP™ Μπορεί να σερβιριστεί. Μια από τις υποθέσεις ERDDAP™ είναι ότι η πηγή δεδομένων θα χρησιμοποιηθεί όπως είναι. Συνήθως αυτό λειτουργεί μια χαρά. Ορισμένες εξαιρέσεις είναι:
- Σχετικές βάσεις δεδομένων και Κασσάνδρα -- ERDDAP™ μπορούν να εξυπηρετήσουν τα δεδομένα απευθείας από τις σχετικές βάσεις δεδομένων και Κασσάνδρα. Αλλά για την ασφάλεια, την εξισορρόπηση φορτίου, και τα ζητήματα απόδοσης, μπορείτε να επιλέξετε να δημιουργήσετε μια άλλη βάση δεδομένων με τα ίδια δεδομένα ή να αποθηκεύσετε τα δεδομένα για NetCDF v3 .nc αρχεία και έχουν ERDDAP™ εξυπηρετούν τα δεδομένα από τη νέα πηγή δεδομένων. Βλέπεις; Πίνακας EDD από τη βάση δεδομένων και Πίνακας EDD από την Κασάνδρα .
- Μη υποστηριζόμενες πηγές δεδομένων -- ERDDAP™ μπορεί να υποστηρίξει ένα μεγάλο αριθμό των τύπων των πηγών δεδομένων, αλλά ο κόσμος είναι γεμάτος με 1000 του (Εκατομμύρια;) διαφόρων πηγών δεδομένων (Ειδικότερα, δομές αρχείων δεδομένων) . Εάν ERDDAP™ δεν υποστηρίζει την πηγή δεδομένων σας:
- Εάν η πηγή δεδομένων είναι NetCDF .nc αρχεία, μπορείτε να χρησιμοποιήσετε NcML για την τροποποίηση των αρχείων δεδομένων κατά την πτήση ή τη χρήση NCO να τροποποιεί μόνιμα τα αρχεία δεδομένων.
- Μπορείτε να γράψετε τα δεδομένα σε έναν τύπο πηγής δεδομένων που ERDDAP™ υποστήριξη. NetCDF -3 .nc αρχεία είναι μια καλή, γενική σύσταση επειδή είναι δυαδικά αρχεία που ERDDAP™ μπορεί να διαβάσει πολύ γρήγορα. Για τα δεδομένα πίνακα, εξετάστε την αποθήκευση των δεδομένων σε μια συλλογή .nc αρχεία που χρησιμοποιούν το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Contigoul Ragged δομές δεδομένων Array και έτσι μπορεί να αντιμετωπιστεί με ERDDAP Σ Πίνακας EDDFromNcCFΑρχεία ). Αν είναι λογικά οργανωμένοι (το καθένα με δεδομένα για ένα κομμάτι χώρου και χρόνου) , ERDDAP™ μπορεί να εξάγει δεδομένα από αυτά πολύ γρήγορα.
- Μπορείτε να ζητήσετε την υποστήριξη για την εν λόγω πηγή δεδομένων να προστεθεί σε ERDDAP™ στέλνοντας email στον Κρις. Τζον στο Νόαγκοβ.
- Μπορείτε να προσθέσετε υποστήριξη για αυτή την πηγή δεδομένων γράφοντας τον κώδικα για να το χειριστείτε μόνοι σας. Βλέπεις; το ERDDAP™ Οδηγός προγραμματιστή
- Ταχύτητα... ERDDAP™ μπορεί να διαβάσει δεδομένα από ορισμένες πηγές δεδομένων πολύ πιο γρήγορα από άλλες. Για παράδειγμα, ανάγνωση NetCDF v3 .nc τα αρχεία είναι γρήγορα και η ανάγνωση αρχείων ASCII είναι πιο αργή. Και αν υπάρχει ένα μεγάλο (> 1000) ή τεράστια (> 10.000) αριθμός αρχείων δεδομένων πηγής, ERDDAP™ θα ανταποκριθεί σε κάποια αιτήματα δεδομένων αργά. Συνήθως, η διαφορά δεν είναι αισθητή στους ανθρώπους. Ωστόσο, αν νομίζετε ότι ERDDAP™ είναι αργή για ένα δεδομένο σύνολο δεδομένων, μπορείτε να επιλέξετε να λύσετε το πρόβλημα γράφοντας τα δεδομένα σε μια πιο αποτελεσματική ρύθμιση (συνήθως: μερικά, καλά δομημένα, NetCDF v3 .nc αρχεία) . Για δεδομένα πίνακα, βλέπε αυτή τη συμβουλή .
Υπόδειξη
Συχνά είναι ευκολότερο να δημιουργηθεί το XML για ένα σύνολο δεδομένων κάνοντας ένα αντίγραφο μιας περιγραφής συνόλου δεδομένων εργασίας στο dataset.xml και στη συνέχεια τροποποιώντας το.
Κωδικοποίηση ειδικών χαρακτήρων
Από datasets.xml είναι ένα αρχείο XML, ΠΡΕΠΕΙ & Κωδικός "&", "<", και ">" σε οποιοδήποτε περιεχόμενο όπως " & amp;",<" και ">· Λάθος:<τίτλος> Χρόνος & Δεσμοί</τίτλος> Δεξιά:<τίτλος> Χρόνος & amp; Tides</τίτλος>
Το XML δεν ανέχεται τα συντακτικά λάθη
Αφού επεξεργαστείτε το αρχείο dataset.xml, είναι μια καλή ιδέα να επαληθεύσετε ότι το αποτέλεσμα είναι καλά διαμορφωμένο XML επικολλώντας το κείμενο XML σε έναν έλεγχο XML όπως Επικύρωση xml .
Συμβουλές αντιμετώπισης προβλημάτων
- Άλλοι τρόποι για τη διάγνωση προβλημάτων με τα σύνολα δεδομένων
Εκτός από τα δύο κύρια Εργαλεία , - log.txt είναι ένα αρχείο καταγραφής με όλα τα ERDDAP Διαγνωστικά μηνύματα.
- Η Ημερήσια έκθεση έχει περισσότερες πληροφορίες από τη σελίδα κατάστασης, συμπεριλαμβανομένης μιας λίστας συνόλων δεδομένων που δεν φορτώθηκαν και τις εξαιρέσεις (σφάλματα) Παρήγαγαν.
- Η Σελίδα κατάστασης είναι ένας γρήγορος τρόπος για να ελέγξετε ERDDAP Κατάσταση από οποιοδήποτε πρόγραμμα περιήγησης ιστού. Περιλαμβάνει μια λίστα συνόλων δεδομένων που δεν φορτώθηκαν (αν και όχι οι σχετικές εξαιρέσεις) και την εργασία (δείχνει την πρόοδο της EDDGrid Αντιγραφή και EDDTableCopy σύνολα δεδομένων και τυχόν EDDGrid Από αρχεία ή Πίνακας EDD από αρχεία σύνολα δεδομένων που χρησιμοποιούν λανθάνουσα μνήμηFromUrl (αλλά όχι cache Μέγεθος GB) ) .
- Αν κολλήσεις, δες μας. τμήμα για τη λήψη πρόσθετης υποστήριξης .
Ειδικές μεταβλητές
- ** Το γεωγραφικό μήκος, το γεωγραφικό πλάτος, το υψόμετρο, το βάθος, η πίεση και ο χρόνος (ΛΑΤ) μεταβλητή destinationName Τα s είναι ξεχωριστά.**
- Γενικά:
- Οι μεταβλητές LLAT γίνονται γνωστές ERDDAP™ εάν η μεταβλητή άξονα (για EDDGrid σύνολα δεδομένων) ή μεταβλητές δεδομένων (για σύνολα δεδομένων EDDTable) destinationName είναι το μήκος", " το πλάτος", " το ύψος", " το βάθος", ή "time" .
- Σας ενθαρρύνουμε να χρησιμοποιείτε αυτά τα τυποποιημένα ονόματα για αυτές τις μεταβλητές όποτε είναι δυνατόν. Κανένα από αυτά δεν απαιτείται. Αν δεν χρησιμοποιήσετε αυτά τα ειδικά μεταβλητά ονόματα, ERDDAP™ Δεν θα αναγνωρίσουν τη σημασία τους. Για παράδειγμα, οι μεταβλητές LLAT αντιμετωπίζονται ειδικά από το Make A Graph ( * datasetID * . γράφημα) : εάν η μεταβλητή X Άξονας είναι " Γεωγραφικό μήκος" και η μεταβλητή Y Άξονας είναι " Πλάτος", θα πάρετε ένα χάρτη (χρήση τυποποιημένης προβολής, με μάσκα εδάφους, πολιτικά όρια κ.λπ.) αντί για ένα γράφημα.
- ERDDAP™ θα προσθέσει αυτόματα πολλά μεταδεδομένα στις μεταβλητές LLAT (για παράδειγμα, " ioos\_category ~, ~ μονάδες ", και πολλά χαρακτηριστικά που σχετίζονται με τα πρότυπα, όπως το συντεταγμένοAxisType) .
- ERDDAP™ αυτόματα, on-the-fly, θα προσθέσετε πολλά παγκόσμια μεταδεδομένα που σχετίζονται με τις τιμές LLAT του επιλεγμένου υποσύνολο δεδομένων (Για παράδειγμα, "geospatial\_lon\_min") .
- Πελάτες που υποστηρίζουν αυτά τα πρότυπα μεταδεδομένων θα είναι σε θέση να επωφεληθούν από τα πρόσθετα μεταδεδομένα για να τοποθετήσουν τα δεδομένα στο χρόνο και στο χώρο.
- Οι πελάτες θα το βρουν ευκολότερο να δημιουργήσουν ερωτήματα που περιλαμβάνουν μεταβλητές LLAT επειδή τα ονόματα της μεταβλητής είναι τα ίδια σε όλα τα σχετικά σύνολα δεδομένων.
- Για τη μεταβλητή «μακρύ μήκος» και τη μεταβλητή «γεωγραφικό πλάτος»:
- Χρήση του destinationName s " Γεωγραφικό μήκος" και " Πλάτος" μόνο εάν το μονάδες είναι μοίρες\_ανατολικά και μοίρες\_βόρεια, αντίστοιχα. Εάν τα δεδομένα σας δεν ταιριάζουν με αυτές τις απαιτήσεις, χρησιμοποιήστε διαφορετικά μεταβλητά ονόματα (Για παράδειγμα, x, y, lonRadians, latRadians) .
- Εάν έχετε δεδομένα γεωγραφικού μήκους και γεωγραφικού πλάτους εκφρασμένα σε διαφορετικές μονάδες και επομένως με διαφορετικές destinationName S, για παράδειγμα, lonRadians και latRadians, Κάντε μια γραφική παράσταση ( * datasetID * . γράφημα) θα κάνει γραφήματα (για παράδειγμα, χρονοσειρές) αντί για χάρτες.
- Για τη μεταβλητή "ύψος", "διαβάστε", ή " βάθος":
- Χρήση του destinationName " υψόμετρο" για τον προσδιορισμό της απόστασης των δεδομένων πάνω από την επιφάνεια της θάλασσας (Θετικές τιμές =" πάνω") . Προαιρετικά, μπορείτε να χρησιμοποιήσετε "υψόμετρο" για αποστάσεις κάτω από το επίπεδο της θάλασσας εάν οι τιμές είναι αρνητικές κάτω από τη θάλασσα (ή αν χρησιμοποιείτε, για παράδειγμα, [<att name=" scale\factor " τύπος ="int">- 1</att>] (#κλίμακας συντελεστής) να μετατρέπουν τις τιμές βάθους σε τιμές υψομέτρου.
- Χρήση του destinationName " βάθος" προσδιορισμός της απόστασης των δεδομένων κάτω από την επιφάνεια της θάλασσας (Θετικές τιμές =" κατώτερες τιμές) .
- Εναλλακτικά, για τις αυξήσεις που καθορίζονται από τα επίπεδα πίεσης του αέρα (όπως ισοβαρείς ) , θα πρέπει να ορίσετε το destinationName to πίεση". Αυτό υποστηρίζει μονάδες σε "hPa",PaPa", και "mbar"" (Θετικές τιμές =" κατώτερες τιμές) .
- Ένα σύνολο δεδομένων μπορεί να έχει μόνο ένα "ύψος", " πίεση", ή " βάθος" μεταβλητή.
- Για αυτές τις μεταβλητές "υψόμετρο" και "βάθος" το μονάδες πρέπει να είναι "m", "metermeter ή "metersmetersmetersmetersmeters". Εάν οι μονάδες διαφέρουν (για παράδειγμα, οργιές) , μπορείτε να χρησιμοποιήσετε [<att name=" scale\factor "> μερικά Τιμή </att>] (#κλίμακας συντελεστής) και [<att name="μονάδες">μέτρα</att>] (#μονάδες) για να μετατρέψει τις μονάδες σε μέτρα.
- Εάν τα δεδομένα σας δεν ταιριάζουν με αυτές τις απαιτήσεις, χρησιμοποιήστε ένα διαφορετικό destinationName (για παράδειγμα, πάνω από το Ground, απόσταση ToBottom) .
- Εάν γνωρίζετε το κάθετο CRS παρακαλώ προσδιορίστε το στα μεταδεδομένα, π.χ., "EPSG:5829" (στιγμιαίο ύψος πάνω από την επιφάνεια της θάλασσας) , "EPSG:5831" (στιγμιαίο βάθος κάτω από την επιφάνεια της θάλασσας) , ή "EPSG:5703" (Ύψος NAVD88) .
- Για την "time" μεταβλητή:
- Χρήση του destinationName "time" μόνο για μεταβλητές που περιλαμβάνουν ολόκληρη την ημερομηνία+ώρα (ή ημερομηνία, εάν αυτό είναι το μόνο που υπάρχει) . Εάν, για παράδειγμα, υπάρχουν ξεχωριστές στήλες για την ημερομηνία και την ώραOfDay, μην χρησιμοποιήσετε το μεταβλητό όνομα "time" .
- Βλέπεις; μονάδες για περισσότερες πληροφορίες σχετικά με τις μονάδες χαρακτηριστικό για το χρόνο και το χρόνοStamp μεταβλητές.
- Η χρονική μεταβλητή και συναφής χρόνος Μεταβλητές γραμματοσήμων είναι μοναδικοί στο ότι μετατρέπουν πάντα τις τιμές δεδομένων από τη μορφή του χρόνου της πηγής (Ό,τι κι αν είναι.) σε αριθμητική τιμή (δευτερόλεπτα από το 1970-01-01T00:00:00Z) ή τιμή συμβολοσειράς (ISO 8601:2004 (E) μορφή) , ανάλογα με την κατάσταση.
- Όταν ένας χρήστης ζητά δεδομένα χρόνου, μπορούν να το ζητήσουν προσδιορίζοντας το χρόνο ως αριθμητική τιμή (δευτερόλεπτα από το 1970-01-01T00:00:00Z) ή τιμή συμβολοσειράς (ISO 8601:2004 (E) μορφή) .
- ERDDAP™ έχει ένα βοηθητικό Μετατροπή ενός αριθμητικού Χρόνος έως/από ώρα συμβολοσειράς .
- Βλέπεις; Πώς ERDDAP Αντιμετωπίζει το Χρόνο .
Γιατί μόνο δύο βασικές δομές δεδομένων;
- Δεδομένου ότι είναι δύσκολο για τους ανθρώπινους πελάτες και τους πελάτες υπολογιστών να αντιμετωπίσουν ένα σύνθετο σύνολο πιθανών δομών σύνολο δεδομένων, ERDDAP™ χρησιμοποιεί μόνο δύο βασικές δομές δεδομένων:
- α δομή δεδομένων με πλέγμα (για παράδειγμα, για δορυφορικά δεδομένα και μοντέλα δεδομένων) και
- α δομή δεδομένων πίνακα (π.χ. για εσωτερικά δεδομένα σημαδούρας, σταθμού και τροχιάς) .
- Ασφαλώς, δεν μπορούν να εκφραστούν όλα τα δεδομένα σε αυτές τις δομές, αλλά πολλά από αυτά μπορούν. Ειδικότερα, οι πίνακες είναι πολύ ευέλικτες δομές δεδομένων (δείτε την επιτυχία των προγραμμάτων σχεσιακή βάση δεδομένων) .
- Αυτό κάνει τα ερωτήματα των δεδομένων ευκολότερα στην κατασκευή.
- Αυτό καθιστά τις απαντήσεις δεδομένων έχουν μια απλή δομή, η οποία καθιστά ευκολότερη την εξυπηρέτηση των δεδομένων σε μια ευρύτερη ποικιλία τυποποιημένων τύπων αρχείων (που συχνά υποστηρίζουν απλές δομές δεδομένων) . Αυτός είναι ο κύριος λόγος που δημιουργήσαμε ERDDAP™ Από εδώ.
- Αυτό, με τη σειρά του, καθιστά πολύ εύκολο για εμάς (ή οποιονδήποτε) για να γράψετε το λογισμικό πελάτη που λειτουργεί με όλα ERDDAP™ σύνολα δεδομένων.
- Αυτό καθιστά ευκολότερη τη σύγκριση δεδομένων από διαφορετικές πηγές.
- Γνωρίζουμε πολύ καλά ότι αν έχετε συνηθίσει να εργάζεστε με δεδομένα σε άλλες δομές δεδομένων μπορεί αρχικά να νομίζετε ότι αυτή η προσέγγιση είναι απλοϊκή ή ανεπαρκής. Αλλά όλες οι δομές δεδομένων έχουν ανταλλαγές. Κανένα δεν είναι τέλειο. Ακόμα και οι δομές do-it-all έχουν τα μειονεκτήματά τους: η συνεργασία μαζί τους είναι περίπλοκη και τα αρχεία μπορούν να γραφτούν ή να διαβαστούν μόνο με ειδικές βιβλιοθήκες λογισμικού. Εάν δεχτείτε ERDDAP Η προσέγγιση του αρκετά για να προσπαθήσουμε να συνεργαστούμε με αυτό, μπορεί να διαπιστώσουμε ότι έχει τα πλεονεκτήματά του (Ειδικότερα η υποστήριξη πολλαπλών τύπων αρχείων που μπορούν να κρατήσουν τις απαντήσεις δεδομένων) . Η ERDDAP™ προβολή σλάιντ (ιδιαίτερα το Σλάιντ δομών δεδομένων ) μιλάει πολύ για αυτά τα θέματα.
- Ακόμα κι αν αυτή η προσέγγιση σου ακούγεται παράξενη, οι περισσότεροι ERDDAP™ Οι πελάτες δεν θα παρατηρήσουν ποτέ -- απλά θα δουν ότι όλα τα σύνολα δεδομένων έχουν μια ωραία απλή δομή και θα είναι ευγνώμονες που μπορούν να πάρουν δεδομένα από μια μεγάλη ποικιλία πηγών που επιστρέφονται σε μια μεγάλη ποικιλία μορφών αρχείων.
Διαστάσεις
-
Κι αν οι μεταβλητές καννάβου στο σύνολο δεδομένων πηγής δεν μοιράζονται τις ίδιες μεταβλητές άξονα;
Μέσα EDDGrid σύνολα δεδομένων, όλες οι μεταβλητές δεδομένων ΠΡΕΠΕΙ να χρησιμοποιούν (μετοχή) όλες τις μεταβλητές του άξονα. Έτσι, αν ένα σύνολο δεδομένων πηγής έχει κάποιες μεταβλητές με ένα σύνολο διαστάσεων, και άλλες μεταβλητές με ένα διαφορετικό σύνολο διαστάσεων, θα πρέπει να κάνετε δύο σύνολα δεδομένων σε ERDDAP . Για παράδειγμα, θα μπορούσατε να κάνετε ένα ERDDAP™ σύνολο δεδομένων με τίτλο "Κάποιος τίτλος (στην επιφάνεια) " να κρατήσει μεταβλητές που χρησιμοποιούν μόνο \[ χρόνος \] \[ γεωγραφικό πλάτος \] \[ γεωγραφικό μήκος \] διαστάσεις και να κάνει ένα άλλο ERDDAP™ σύνολο δεδομένων με τίτλο "Κάποιος τίτλος (σε βάθη) " να συγκρατούν τις μεταβλητές που χρησιμοποιούν \[ χρόνος \] \[ υψόμετρο \] \[ γεωγραφικό πλάτος \] \[ γεωγραφικό μήκος \] . Ή ίσως μπορείτε να αλλάξετε την πηγή δεδομένων για να προσθέσετε μια διάσταση με μια μόνο τιμή (για παράδειγμα, υψόμετρο=0) να κάνουν τις μεταβλητές συνεπείς.ERDDAP™ δεν χειρίζεται πιο περίπλοκα σύνολα δεδομένων (για παράδειγμα, μοντέλα που χρησιμοποιούν πλέγμα τριγώνων) Λοιπόν. Μπορείτε να εξυπηρετήσετε αυτά τα σύνολα δεδομένων ERDDAP™ με τη δημιουργία δύο ή περισσότερων συνόλων δεδομένων ERDDAP™ (ώστε όλες οι μεταβλητές δεδομένων σε κάθε νέο σύνολο δεδομένων να μοιράζονται το ίδιο σύνολο μεταβλητών άξονα) , αλλά δεν είναι αυτό που θέλουν οι χρήστες. Για ορισμένα σύνολα δεδομένων, μπορείτε να σκεφτείτε να κάνετε μια κανονική έκδοση του συνόλου δεδομένων και να προσφέρει ότι εκτός από τα αρχικά δεδομένα. Κάποιο λογισμικό πελάτη μπορεί να ασχοληθεί μόνο με ένα κανονικό δίκτυο, έτσι, κάνοντας αυτό, μπορείτε να φτάσετε επιπλέον πελάτες.
Προβλεπόμενα ρυθμισμένα δεδομένα
Ορισμένα δεδομένα με πλέγμα έχουν πολύπλοκη δομή. Για παράδειγμα, επίπεδο δορυφόρου 2 ("μακριά διαδρομή") Τα δεδομένα δεν χρησιμοποιούν απλή προβολή. Μοντελοποιητές (και άλλοι) συχνά εργάζονται με τα δεδομένα πλέγμα σε διάφορες μη κυλινδρικές προβολές (για παράδειγμα, κωνική, πολική στερεογραφική, τριπολική) ή σε μη δομημένα πλέγματα (πιο σύνθετη δομή δεδομένων) . Μερικοί τελικοί χρήστες θέλουν αυτά τα δεδομένα όπως είναι, έτσι δεν υπάρχει απώλεια πληροφοριών. Για αυτούς τους πελάτες, ERDDAP™ μπορεί να εξυπηρετήσει τα δεδομένα, όπως είναι, μόνο εάν ERDDAP™ Ο διαχειριστής διασπά το αρχικό σύνολο δεδομένων σε μερικά σύνολα δεδομένων, με κάθε μέρος να περιλαμβάνει μεταβλητές που μοιράζονται τις ίδιες μεταβλητές άξονα. Ναι, αυτό φαίνεται παράξενο σε ανθρώπους που εμπλέκονται και είναι διαφορετικό από τους περισσότερους OPeNDAP Διακομιστές. Αλλά... ERDDAP™ τονίζει καθιστώντας τα δεδομένα διαθέσιμα σε πολλές μορφές. Αυτό είναι δυνατό επειδή ERDDAP™ χρησιμοποιεί/απαιτεί μια πιο ομοιόμορφη δομή δεδομένων. Αν και είναι λίγο περίεργο. (δηλαδή, διαφορετικό από το αναμενόμενο) , ERDDAP™ μπορεί να διανείμει τα προβλεπόμενα δεδομένα.
\[ Ναι. ERDDAP™ θα μπορούσαν να έχουν πιο χαλαρές απαιτήσεις για τη δομή των δεδομένων, αλλά να διατηρούν τις απαιτήσεις για τις μορφές εξόδου. Αλλά αυτό θα οδηγούσε σε σύγχυση μεταξύ πολλών χρηστών, ιδιαίτερα newbies, δεδομένου ότι πολλά φαινομενικά έγκυρα αιτήματα για δεδομένα με διαφορετικές δομές θα ήταν άκυρα επειδή τα δεδομένα δεν θα χωρούσαν στον τύπο αρχείου. Συνεχίζουμε να επιστρέφουμε στο σχεδιασμό του τρέχοντος συστήματος. \]
Μερικοί τελικοί χρήστες θέλουν δεδομένα σε ένα lat lon κυλινδρική προβολή όπως Equirectangular / πλάκα carrée ή Mercator) για ευκολία χρήσης σε διαφορετικές καταστάσεις. Για αυτές τις καταστάσεις, ενθαρρύνουμε ERDDAP™ διαχειριστής για να χρησιμοποιήσει κάποιο άλλο λογισμικό ( NCO ♪ ♪ Matlab ♪ ♪ Ρ; Αναγνώριση; ...;) για την επαναπροβολή των δεδομένων σε γεωγραφικό πεδίο (Equirectangular προβολή / πλάκα carrée) ή άλλη κυλινδρική προβολή και εξυπηρετούν τη μορφή αυτή των δεδομένων ERDDAP™ ως διαφορετικό σύνολο δεδομένων. Αυτό είναι παρόμοιο με αυτό που κάνουν οι άνθρωποι όταν μετατρέπουν δεδομένα δορυφορικού επιπέδου 2 σε δεδομένα επιπέδου 3. Ένα τέτοιο εργαλείο είναι NCO η οποία προσφέρει επιλογές επέκτασης για την επαναδιατύπωση δεδομένων.
Δεδομένα GIS και αναπροβολής
Δεδομένου ότι ο κόσμος GIS είναι συχνά προσανατολισμένος στον χάρτη, τα προγράμματα GIS συνήθως προσφέρουν υποστήριξη για την αναπροβολή των δεδομένων, δηλαδή, σχεδιάζοντας τα δεδομένα σε έναν χάρτη με διαφορετική προβολή.
Αυτή τη στιγμή, ERDDAP™ δεν διαθέτει εργαλεία για την επαναπροβολή δεδομένων. Αντίθετα, σας συνιστούμε να χρησιμοποιήσετε ένα εξωτερικό εργαλείο για να κάνετε μια παραλλαγή του συνόλου δεδομένων, όπου τα δεδομένα έχουν αναπροβληθεί από την αρχική του μορφή σε ένα ορθογώνιο (γεωγραφικό πλάτος) διάταξη κατάλληλη για ERDDAP .
Κατά τη γνώμη μας, το CF/ DAP Ο κόσμος είναι λίγο διαφορετικός από τον κόσμο του GIS και λειτουργεί σε ελαφρώς χαμηλότερο επίπεδο. ERDDAP™ Το αντανακλά αυτό. Γενικά, ERDDAP™ έχει σχεδιαστεί για να λειτουργεί κυρίως με δεδομένα (όχι χάρτες) και δεν θέλει να αλλάξει (π.χ., επαναπρόγραμμα) Αυτά τα δεδομένα. Για ERDDAP™ , τα δεδομένα με πλέγμα συχνά/συνήθως/κατά προτίμηση σχετίζονται με τιμές lat lon και μια κυλινδρική προβολή, και όχι με τιμές x, y κάποια προβολή. Σε κάθε περίπτωση, ERDDAP™ δεν κάνει τίποτα με την προβολή των δεδομένων; απλά περνά τα δεδομένα μέσα, όπως είναι, με την τρέχουσα προβολή του, στη θεωρία ότι μια αναπροβολή είναι μια σημαντική αλλαγή στα δεδομένα και ERDDAP™ Δεν θέλει να εμπλακεί με σημαντικές αλλαγές. Επίσης, οι μεταγενέστεροι χρήστες μπορεί αφελώς να επαναπροβάλλουν τα δεδομένα και πάλι, τα οποία δεν θα ήταν τόσο καλά όσο να κάνουν απλώς μια αναπροβολή. (Έτσι, αν το ERDDAP™ Ο διαχειριστής θέλει να προσφέρει τα δεδομένα σε μια διαφορετική προβολή, πρόστιμο? απλά ανασχεδίασε τα δεδομένα offline και να προσφέρει ότι ως ένα διαφορετικό σύνολο δεδομένων σε ERDDAP . Πολλά δορυφορικά σύνολα δεδομένων προσφέρονται ως αυτό που η NASA αποκαλεί Επίπεδο 2 (οβθ) και ως επίπεδο 3 (Ισορροπημένη προβολή) εκδόσεις.) Πότε ERDDAP™ κάνει χάρτες (απευθείας ή μέσω WMS ή KML) , ERDDAP™ Αυτή τη στιγμή προσφέρει μόνο για να κάνει χάρτες με την Equirectangular / πλάκα carrée προβολή η οποία, ευτυχώς, είναι αποδεκτή από τα περισσότερα προγράμματα χαρτογράφησης.
Ενθαρρύνουμε ERDDAP™ διαχειριστές για να χρησιμοποιήσουν κάποιο άλλο λογισμικό ( NCO ♪ ♪ Matlab ♪ ♪ Ρ; Αναγνώριση; ...;) για την επαναπροβολή των δεδομένων σε γεωγραφικό πεδίο (Equirectangular προβολή / πλάκα carrée) ή άλλη κυλινδρική προβολή και εξυπηρετούν τη μορφή αυτή των δεδομένων ERDDAP™ ως διαφορετικό σύνολο δεδομένων. Αυτό είναι παρόμοιο με αυτό που κάνουν οι άνθρωποι όταν μετατρέπουν δεδομένα δορυφορικού επιπέδου 2 σε δεδομένα επιπέδου 3. Ένα τέτοιο εργαλείο είναι NCO η οποία προσφέρει επιλογές επέκτασης για την επαναδιατύπωση δεδομένων.
Ελπίζουμε ότι ERDDAP™ θα έχουν ενσωματωμένα εργαλεία για να προσφέρουν χάρτες με άλλες προβολές στο μέλλον. Ελπίζουμε επίσης να έχουμε καλύτερες συνδέσεις με τον κόσμο των GIS στο μέλλον (εκτός του ρεύματος WMS υπηρεσία) . Είναι τρομερό ότι σε αυτόν τον "μοντέρνο" κόσμο, οι δεσμοί μεταξύ της ΚΙ/ DAP Ο κόσμος και το GIS είναι ακόμα τόσο αδύναμοι. Και τα δύο είναι στη λίστα. (Αν θέλετε να βοηθήσετε, ιδιαίτερα με τη σύνδεση ERDDAP™ στο MapServer, παρακαλώ στείλτε email στον Chris. Ο Τζον στο Νόαγκοβ.)
Τύποι δεδομένων
ERDDAP™ υποστηρίζει τους ακόλουθους τύπους δεδομένων (τα ονόματα είναι ευαίσθητα στην περίπτωση· 'u' το πρόθεμα αντιπροσωπεύει "χωρίς υπογραφή"· ο αριθμός πολλών από τα ονόματα σε άλλα συστήματα είναι ο αριθμός των bits) :
byte (αντίγραφο)
- byte (αντίγραφο) έχει υπογράψει ακέραιες τιμές με εύρος -128 έως 127. Σε άλλα συστήματα, αυτό ονομάζεται μερικές φορές int8. Αυτό ονομάζεται "tinyint" από τον SQL και την Κασσάνδρα. ERDDAP™ μετατρέπει βουλεάνη από ορισμένες πηγές (π.χ. SQL και Κασσάνδρα) σε bytes in ERDDAP™ με τιμή 0=ψευδής, 1=αληθινό, και 127= missing\_value .
ουμπάιτ
- ουμπάιτ έχει ανυπόγραφες ακέραιες τιμές με εύρος από 0 έως 255. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται uint8.
σύντομο
- σύντομο έχει υπογράψει ακέραιες τιμές με εύρος -32768 έως 32767. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται int16. Αυτό ονομάζεται "μικρότητα" από τον SQL και την Κασσάνδρα.
βραχυκύκλωμα
- βραχυκύκλωμα έχει ανυπόγραφες ακέραιες τιμές με εύρος από 0 έως 65535. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται uint16.
int
- int έχει υπογράψει ακέραιες τιμές με εύρος -2147483648 έως 2147483647. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται int32. Αυτό ονομάζεται " ακέραιος | αριθμητικό (♪ ♪) " by SQL and "int" by Κασσάνδρα.
ί ας
- ί ας έχει ανυπόγραφες ακέραιες τιμές με εύρος από 0 έως 4294967295. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται uint32.
μακρύ
- μακρύ έχει υπογράψει ακέραιες τιμές με εύρος -9223372036854775808 έως 9223372036854775807. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται int64. Αυτό ονομάζεται "bigint | αριθμητικό (♪ ♪) " από την SQL και "Bigint" από την Κασσάνδρα. Επειδή πολλοί τύποι αρχείων δεν υποστηρίζουν μεγάλα δεδομένα, η χρήση τους αποθαρρύνεται. Όταν είναι δυνατόν, χρησιμοποιήστε διπλά αντί (Βλέπε παρακάτω) .
ουλόνγκ
- ουλόνγκ έχει ανυπόγραφες ακέραιες τιμές με εύρος 0 έως 18446744073709551615 Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται uint64. Επειδή πολλοί τύποι αρχείων δεν υποστηρίζουν τα δεδομένα ulong, η χρήση τους αποθαρρύνεται. Όταν είναι δυνατόν, χρησιμοποιήστε διπλά αντί (Βλέπε παρακάτω) .
πλωτήρας
- πλωτήρας είναι άρμα IEEE 754 με εύρος περίπου +/- 3.4028234666e+38. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται float32. Αυτό ονομάζεται "πραγματικό | πλωτήρας (♪ ♪) | δεκαδικό (♪ ♪) | αριθμητικό (♪ ♪) " από τον SQL και "flofloflofloflo"" από την Κασσάνδρα. Η ειδική τιμή NaN σημαίνει όχι-a-αριθμό. ERDDAP™ μετατρέπει θετικές και αρνητικές τιμές του άπειρου σε NaN.
διπλό
- διπλό είναι ένα διπλό IEEE 754 με εύρος περίπου +/- 1.7976931348623157E+308. Σε άλλα συστήματα, αυτό μερικές φορές ονομάζεται float64. Αυτό ονομάζεται "διπλή ακρίβεια | πλωτήρας (♪ ♪) | δεκαδικό (♪ ♪) | αριθμητικό (♪ ♪) " από την SQL και "διπλό" από την Κασσάνδρα. Η ειδική τιμή NaN σημαίνει όχι-a-αριθμό. ERDDAP™ μετατρέπει θετικές και αρνητικές τιμές του άπειρου σε NaN.
Χαρ
- Χαρ είναι ένα ενιαίο, 2-byte (16-bit) χαρακτήρας Unicode UCS-2 κυμαίνονται από \u0000 (#0) μέσω \uffff (#65535) . \uffff Ο ορισμός του δεν είναι ένας Χαρακτήρας, ανάλογος με μια διπλή τιμή του NaN. Η χρήση του char αποθαρρύνεται επειδή πολλοί τύποι αρχείων είτε δεν υποστηρίζουν chars είτε μόνο υποστηρίζουν chars 1-byte (Βλέπε παρακάτω) . Σκεφτείτε τη χρήση String αντ 'αυτού. Οι χρήστες μπορούν να χρησιμοποιήσουν μεταβλητές χαρακτήρων για να κάνουν γραφήματα. ERDDAP™ θα μετατρέψει τους χαρακτήρες στον κωδικό αριθμό σημείου Unicode τους, ο οποίος μπορεί να χρησιμοποιηθεί ως αριθμητικά δεδομένα.
Στρινγκ
- Στρινγκ είναι ακολουθία 0 ή μεγαλύτερη, 2-byte (16-bit) χαρακτήρες UCS-2 Unicode . ERDDAP™ χρησιμοποιεί/ερμηνεύει μια συμβολοσειρά μήκους 0 ως ελλείπουσα τιμή. ERDDAP™ δεν υποστηρίζει μια πραγματική άκυρη συμβολοσειρά. Το θεωρητικό μέγιστο μήκος εγχόρδων είναι 2147483647 χαρακτήρες, αλλά πιθανότατα υπάρχουν διάφορα προβλήματα σε διάφορα μέρη ακόμα και με κάπως μικρότερους συμβολοσειρές. Χρήση ERDDAP συμβολοσειρά για το χαρακτήρα του SQL, varchar, χαρακτήρα που ποικίλλει, δυαδικό, varbinary, διάστημα, συστοιχία, multiset, xml, και κάθε άλλο τύπο δεδομένων που δεν ταιριάζει καθαρά με οποιοδήποτε άλλο ERDDAP™ τύπος δεδομένων. Χρήση ERDDAP 's String για το "κείμενο της Κασσάνδρας" και κάθε άλλο τύπο δεδομένων Κασσάνδρα που δεν ταιριάζει καθαρά με οποιοδήποτε άλλο ERDDAP™ τύπος δεδομένων.
Πριν ERDDAP™ v2.10, ERDDAP™ δεν υποστήριξε ανυπόγραφους ακέραιους τύπους εσωτερικά και προσέφερε περιορισμένη υποστήριξη στους αναγνώστες και συγγραφείς δεδομένων της.
Περιορισμοί τύπου δεδομένων
Μπορείτε να σκεφτείτε ERDDAP™ ως σύστημα που διαθέτει εικονικά σύνολα δεδομένων και λειτουργεί διαβάζοντας δεδομένα από την πηγή ενός συνόλου δεδομένων σε ένα εσωτερικό μοντέλο δεδομένων και γράφοντας δεδομένα σε διάφορες υπηρεσίες (π.χ.,(OPeN)DAP, WMS ) και τους τύπους αρχείων που ανταποκρίνονται στα αιτήματα των χρηστών.
- Κάθε αναγνώστης εισόδου υποστηρίζει ένα υποσύνολο των τύπων δεδομένων που ERDDAP™ υποστήριξη. Έτσι ανάγνωση δεδομένων ERDDAP Οι εσωτερικές δομές δεδομένων δεν είναι πρόβλημα.
- Κάθε συγγραφέας εξόδου υποστηρίζει επίσης ένα υποσύνολο τύπων δεδομένων. Αυτό είναι πρόβλημα γιατί... ERDDAP πρέπει να συμπιέσει, για παράδειγμα, μακρά δεδομένα σε τύπους αρχείων που δεν υποστηρίζουν μακρά δεδομένα.
Παρακάτω δίνονται εξηγήσεις για τους περιορισμούς (ή κανένα) από διάφορους συγγραφείς εξόδου και πώς ERDDAP™ ασχολείται με τα προβλήματα. Τέτοιες επιπλοκές είναι ένα εγγενές μέρος της ERDDAP Στόχος του να κάνει διαλειτουργικά συστήματα.
ASCII
- ASCII (ΚΣΒ, .tsv , κ.λπ.) αρχεία κειμένου -
- Όλα τα αριθμητικά δεδομένα γράφονται μέσω της αναπαράστασης συμβολοσειρών (με ελλείπουσες τιμές δεδομένων που εμφανίζονται ως συμβολοσειρές μήκους 0) .
- Αν και ERDDAP™ γράφει τις μεγάλες και τις πολύχρωμες τιμές σωστά στα αρχεία κειμένου ASCII, πολλοί αναγνώστες (π.χ. προγράμματα υπολογιστικών φύλλων) δεν μπορεί να ασχοληθεί σωστά με μακριές και μακριές τιμές και αντίθετα να τις μετατρέψει σε διπλάσιες τιμές (με απώλεια ακρίβειας σε ορισμένες περιπτώσεις) .
- Τα δεδομένα Char και String γράφονται μέσω του JSON Strings, το οποίο χειρίζεται όλους τους χαρακτήρες Unicode (Ειδικότερα, οι "ασυνήθεις" χαρακτήρες πέραν του ASCII #127, π.χ., ο χαρακτήρας του ευρώ εμφανίζεται ως "\u20ac") .
JSON
- JSON ( .json , .jsonlCSV , κ.λπ.) αρχεία κειμένου -
- Όλα τα αριθμητικά δεδομένα γράφονται μέσω της αναπαράστασης συμβολοσειρών.
- Τα δεδομένα Char και String γράφονται ως συμβολοσειρές JSON, οι οποίες χειρίζονται όλους τους χαρακτήρες Unicode (Ειδικότερα, οι "ασυνήθεις" χαρακτήρες πέραν του ASCII #127, π.χ., ο χαρακτήρας του ευρώ εμφανίζεται ως "\u20ac") .
- Οι τιμές που λείπουν για όλους τους τύπους αριθμητικών δεδομένων εμφανίζονται ως μηδενικές.
.nc 3 αρχεία
- .nc 3 αρχεία δεν υποστηρίζουν εγγενώς κανέναν ανώνυμο ακέραιο τύπο δεδομένων. Πριν από το CF v1.9, η CF δεν υποστήριζε ανυπόγραφους ακέραιους τύπους. Για να ασχοληθεί με αυτό, ERDDAP™ 2.10+ ακολουθεί το πρότυπο NUG και προσθέτει πάντα ένα "\_Unsigned" χαρακτηριστικό με τιμή " true" ή "false" για να δείξει αν τα δεδομένα είναι από μια ανυπόγραφη ή υπογεγραμμένη μεταβλητή. Όλα τα ακέραια χαρακτηριστικά γράφονται ως υπογεγραμμένα χαρακτηριστικά (π.χ. byte) με υπογεγραμμένες τιμές (π.χ. ubyte) actual\_range χαρακτηριστικό με τιμές 0 έως 255, εμφανίζεται ως χαρακτηριστικό byte με τιμές 0 έως -1 (το αντίστροφο της τιμής συμπληρώματος των δύο της τιμής εκτός εμβέλειας). Δεν υπάρχει εύκολος τρόπος να γνωρίζουμε ποια (υπογεγραμμένα) ακέραια χαρακτηριστικά πρέπει να διαβάζονται ως ανυπόγραφα χαρακτηριστικά. ERDDAP™ υποστηρίζει το "\_Ανυπόγραφο" χαρακτηριστικό όταν διαβάζει .nc 3 αρχεία.
- .nc 3 αρχεία δεν υποστηρίζουν τους τύπους δεδομένων μακρά ή ulong. ERDDAP™ ασχολείται με αυτό με την προσωρινή μετατροπή τους σε διπλές μεταβλητές. Τα διπλά μπορεί να αντιπροσωπεύουν ακριβώς όλες τις τιμές μέχρι +/- 9,07,199,254,740,992 που είναι 2^53. Αυτή είναι μια ατελής λύση. Unidata αρνείται να κάνει μια μικρή αναβάθμιση σε .nc 3 να αντιμετωπίσει αυτό και τα συναφή προβλήματα, επικαλούμενη .nc 4 (μια σημαντική αλλαγή) ως λύση.
- Προδιαγραφές ΚΙ (πριν από v1.9) είπε ότι υποστηρίζει έναν τύπο char δεδομένων, αλλά είναι ασαφές αν char προορίζεται μόνο ως τα δομικά στοιχεία των συστοιχιών char, τα οποία είναι αποτελεσματικά Strings. Οι ερωτήσεις στη λίστα αλληλογραφίας τους απέδωσαν μόνο συγκεχυμένες απαντήσεις. Λόγω αυτών των επιπλοκών, είναι καλύτερο να αποφευχθεί char μεταβλητές ERDDAP™ και να χρησιμοποιείτε μεταβλητές συμβολοσειρών όποτε είναι δυνατόν.
- Παραδοσιακά, .nc 3 αρχεία που υποστηρίζονται μόνο συμβολοσειρές με κωδικοποίηση ASCII (7-bit, #0 - #127) χαρακτήρες. NUG (και ERDDAP ) να επεκτείνει ότι (έναρξη ~2017) συμπεριλαμβανομένου του χαρακτηριστικού "\_Encoding" με τιμή "ISO-8859-1" (επέκταση του ASCII που ορίζει όλες τις 256 τιμές κάθε 8-bit χαρακτήρα) ή "UTF-8" για να δείξει πώς κωδικοποιούνται τα δεδομένα συμβολοσειρών. Άλλες κωδικοποιήσεις μπορεί να είναι νόμιμες αλλά αποθαρρύνονται.
.nc 4 αρχεία
- .nc 4 αρχεία υποστηρίζουν όλα ERDDAP Είναι τύποι δεδομένων.
Αρχεία NCCSV
Τα αρχεία NCCSV 1.0 δεν υποστηρίζουν μη υπογεγραμμένους ακέραιους τύπους δεδομένων. Αρχεία NCCSV 1.1+ υποστηρίζουν όλους τους ανώνυμους τύπους ακεραίων δεδομένων.
DAP
- (OPeN)DAP (.das, .dds, .asc αρχεία ASCII, και .dods δυαδικά αρχεία) - Ναι.
- (OPeN)DAPχειρίζεται κοντές, βραχείες, int, uint, πλωτήρα και διπλές τιμές σωστά.
- (OPeN)DAPέχει ένα "byte" τύπος δεδομένων που ορίζει ως ανυπόγραφη, ενώ ιστορικά, thresedds και ERDDAP™ έχουν υποστεί επεξεργασία "byte" όπως έχουν υπογράψει(OPeN)DAPυπηρεσίες. Για να το αντιμετωπίσουμε καλύτερα, ERDDAP™ 2.10+ ακολουθεί το πρότυπο NUG και προσθέτει πάντα ένα "\_Unsigned" χαρακτηριστικό με τιμή " true" ή "false" για να δείξει αν τα δεδομένα είναι αυτό που ERDDAP™ καλεί byte ή ubyte. Όλα τα χαρακτηριστικά byte και ubyte γράφονται ως χαρακτηριστικά "byte" με υπογεγραμμένες τιμές (π.χ., ένα ubyte) actual\_range χαρακτηριστικό με τιμές 0 έως 255, εμφανίζεται ως χαρακτηριστικό byte με τιμές 0 έως -1 (το αντίστροφο της τιμής συμπληρώματος των δύο της τιμής εκτός εμβέλειας). Δεν υπάρχει εύκολος τρόπος να γνωρίζουμε ποια χαρακτηριστικά "byte" θα πρέπει να διαβάζονται ως χαρακτηριστικά ubyte.
- (OPeN)DAPδεν υποστηρίζει υπογεγραμμένα ή ανυπόγραφα επιμήκη ποσά. ERDDAP™ ασχολείται με αυτό μετατρέποντάς τους προσωρινά σε διπλές μεταβλητές και χαρακτηριστικά. Τα διπλά μπορεί να αντιπροσωπεύουν ακριβώς όλες τις τιμές έως και 9,07,199,254,740,992 που είναι 2^53. Αυτή είναι μια ατελής λύση. OPeNDAP (την οργάνωση) αρνείται να κάνει μια μικρή αναβάθμιση σε DAP 2.0 να ασχοληθεί με αυτό και τα συναφή προβλήματα, επικαλούμενη DAP 4 (μια σημαντική αλλαγή) ως λύση.
- Γιατί;(OPeN)DAPδεν έχει ξεχωριστό τύπο δεδομένων χαρακτήρων και τεχνικά υποστηρίζει μόνο χαρακτήρες ASCII 1 byte (#0 - #127) Στις συμβολοσειρές, οι μεταβλητές δεδομένων χαρακτήρων θα εμφανίζονται ως συμβολοσειρές μήκους 1 χαρακτήρων σε(OPeN)DAP.das, .dds, και .dods απαντήσεις.
- Τεχνικά, η(OPeN)DAPΗ προδιαγραφή υποστηρίζει μόνο συμβολοσειρές με κωδικοποιημένους χαρακτήρες ASCII (#0 - #127) . NUG (και ERDDAP ) να επεκτείνει ότι (έναρξη ~2017) συμπεριλαμβανομένου του χαρακτηριστικού "\_Encoding" με τιμή "ISO-8859-1" (επέκταση του ASCII που ορίζει όλες τις 256 τιμές κάθε 8-bit χαρακτήρα) ή "UTF-8" για να δείξει πώς κωδικοποιούνται τα δεδομένα συμβολοσειρών. Άλλες κωδικοποιήσεις μπορεί να είναι νόμιμες αλλά αποθαρρύνονται.
Σχόλια τύπου δεδομένων
- Λόγω της κακής υποστήριξης για μακρά, ulong, και char δεδομένα σε πολλούς τύπους αρχείων, αποθαρρύνουμε τη χρήση αυτών των τύπων δεδομένων σε ERDDAP . Όταν είναι δυνατόν, χρησιμοποιήστε διπλό αντί για μακρύ και ulong, και χρησιμοποιήστε String αντί για char.
- Μεταδεδομένα - Επειδή(OPeN)DAPΟι απαντήσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (και αντ 'αυτού να τους δείξει ως διπλά) , μπορεί να θέλετε να χρησιμοποιήσετε ERDDAP Πίνακας αναπαράστασης μεταδεδομένων όπως φαίνεται στο http .../εφαρμογή/ Πληροφορίες / * datasetID * Ιστοσελίδα .html (για παράδειγμα, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (το οποίο μπορείτε επίσης να πάρετε σε άλλους τύπους αρχείων, π.χ., .csv, .htmlTable , .itx , .json , .jsonlCSV1 , .jsonlCSV , .jsonlKVP , .mat , .nc , .nccsv , .tsv , .xhtml ) ή το .nccsv Ανταπόκριση μεταδεδομένων (για παράδειγμα, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata Αν και .nccsv Τα μεταδεδομένα είναι διαθέσιμα μόνο για σύνολα δεδομένων πίνακα) , και οι δύο υποστηρίζουν όλους τους τύπους δεδομένων (κυρίως, μακρύ, ulong, και char) .
Αρχεία πολυμέσων
Δεν είναι όλα τα δεδομένα σειρές αριθμών ή κειμένου. Μερικά σύνολα δεδομένων αποτελούνται από ή περιλαμβάνουν αρχεία πολυμέσων, όπως αρχεία εικόνας, ήχου και βίντεο. ERDDAP™ έχει κάποια ειδικά χαρακτηριστικά για να διευκολύνει τους χρήστες να αποκτήσουν πρόσβαση σε αρχεία πολυμέσων. Είναι διαδικασία δύο βημάτων:
- Κάντε κάθε αρχείο προσβάσιμο μέσω της δικής του διεύθυνσης URL, μέσω ενός συστήματος που υποστηρίζει τα αιτήματα εύρους byte. Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να βάλετε τα αρχεία σε έναν κατάλογο που ERDDAP™ έχει πρόσβαση σε. (Εάν βρίσκονται σε ένα δοχείο όπως ένα .zip αρχείο, unzip τους, αν και μπορεί να θέλετε να προσφέρετε το .zip αρχείο και στους χρήστες.) Τότε, κάνε ένα Πίνακας EDD από αρχείοNames σύνολο δεδομένων για την πρόσβαση αυτών των αρχείων μέσω ERDDAP™ , ιδίως μέσω ERDDAP Σ "files" σύστημα .
Όλα τα αρχεία που γίνονται προσβάσιμα μέσω του EDDTableFromFileNames και ERDDAP Σ "files" υποστήριξη συστήματος αιτήματα εύρους byte . Κανονικά, όταν ένας πελάτης (π.χ. περιηγητής) κάνει μια αίτηση σε ένα URL, παίρνει ολόκληρο το αρχείο ως απάντηση. Αλλά με μια αίτηση εύρους byte, η αίτηση καθορίζει μια σειρά bytes από το αρχείο, και ο διακομιστής επιστρέφει μόνο αυτά τα bytes. Αυτό είναι σχετικό εδώ επειδή οι συσκευές αναπαραγωγής ήχου και βίντεο σε προγράμματα περιήγησης λειτουργούν μόνο αν το αρχείο μπορεί να προσπελαστεί μέσω των αιτημάτων εμβέλειας byte.
Προαιρετικό: Εάν έχετε περισσότερα από ένα σύνολα δεδομένων με συσχετιζόμενα αρχεία πολυμέσων, μπορείτε να φτιάξετε μόνο ένα EDDTableFromFileNames που έχει έναν υποφάκελο για κάθε ομάδα αρχείων. Το πλεονέκτημα είναι ότι όταν θέλετε να προσθέσετε νέα αρχεία πολυμέσων για ένα νέο σύνολο δεδομένων, το μόνο που έχετε να κάνετε είναι να δημιουργήσετε ένα νέο φάκελο και να βάλετε τα αρχεία σε αυτό το φάκελο. Ο φάκελος και τα αρχεία θα προστεθούν αυτόματα στο σύνολο δεδομένων EDDTableFromFileNames.
- Προαιρετικό: Εάν έχετε ένα σύνολο δεδομένων που περιλαμβάνει αναφορές σε αρχεία πολυμέσων, προσθέστε το στο ERDDAP . Για παράδειγμα, μπορεί να έχετε ένα αρχείο .csv με μια σειρά για κάθε φορά που κάποιος είδε μια φάλαινα και μια στήλη που περιλαμβάνει το όνομα ενός αρχείου εικόνας που σχετίζονται με αυτή την παρατήρηση. Εάν το όνομα του αρχείου εικόνας είναι μόνο το όνομα αρχείου, π.χ., Img20141024T192403Z, όχι ένα πλήρες URL, τότε θα πρέπει να προσθέσετε Βάση πρόσβασης αρχείων Url ή/και αρχείο AccessSuffix χαρακτηριστικά στα μεταδεδομένα για αυτό dataVariable το οποίο προσδιορίζει το βασικό αρχείο και το επίθεμα για τα εν λόγω ονόματα αρχείων. Αν κάνατε τα αρχεία προσβάσιμα μέσω του EDDTableFromFileNames, το URL θα είναι στη μορφή ΒάσηUrl /erddap/αρχεία/ * datasetID * / Για παράδειγμα,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Εάν υπάρχει .zip ή άλλο αρχείο εμπορευματοκιβωτίων με όλα τα αρχεία πολυμέσων που σχετίζονται με μια μεταβλητή δεδομένων, σας συνιστούμε να κάνετε επίσης αυτό το αρχείο προσβάσιμο στους χρήστες (βλέπε βήμα 1 ανωτέρω) και στη συνέχεια να ταυτιστεί με ένα Αρχείο AccessArchive Ουρλ χαρακτηριστικό γνώρισμα.
\[ Έναρξη ERDDAP™ v1.82 \] Αν κάνεις το πρώτο βήμα πάνω (ή και τα δύο στάδια) , στη συνέχεια, όταν ένας χρήστης βλέπει το ERDDAP™ "files" σύστημα για το εν λόγω σύνολο δεδομένων (ή ζητά να δει ένα υποσύνολο του συνόλου δεδομένων μέσω ενός .htmlTable αίτηση, εάν κάνατε το δεύτερο βήμα) , ERDDAP™ θα δείξει ένα '?' εικονίδιο στα αριστερά του ονόματος αρχείου. Εάν ο χρήστης αιωρείται πάνω από αυτό το εικονίδιο, θα δουν ένα αναδυόμενο εικονίδιο που δείχνει την εικόνα, ή ένα audio player, ή ένα video player. Περιηγητές υποστηρίζουν μόνο έναν περιορισμένο αριθμό τύπων
- εικόνα (Συνήθως .gif, .jpg, και .png) ,
- ήχου (Συνήθως .mp3, .ogg, και .wav) , και
- αρχεία βίντεο (Συνήθως .mp4, .ogv, και . Webm) .
Η υποστήριξη ποικίλλει με διαφορετικές εκδόσεις διαφορετικών φυλλομετρητών σε διαφορετικά λειτουργικά συστήματα. Έτσι, αν έχετε μια επιλογή του ποιος τύπος αρχείου να προσφέρει, είναι λογικό να προσφέρει αυτούς τους τύπους.
Ή, αν ένας χρήστης κάνει κλικ στο όνομα αρχείου που εμφανίζεται σε ένα ERDDAP™ ιστοσελίδα, ο περιηγητής τους θα δείξει την εικόνα, τον ήχο ή το αρχείο βίντεο ως ξεχωριστή ιστοσελίδα. Αυτό είναι ως επί το πλείστον χρήσιμο να δείτε μια πολύ μεγάλη εικόνα ή βίντεο κλιμακώνονται σε πλήρη οθόνη, αντί σε ένα αναδυόμενο.
Εργασία με αρχεία AWS S3
Διαδικτυακή Υπηρεσία Amazon (AWS) είναι ένας πωλητής υπολογιστικό σύννεφο υπηρεσίες. S3 είναι ένα σύστημα αποθήκευσης αντικειμένων που προσφέρεται από το AWS. Αντί του ιεραρχικού συστήματος καταλόγων και αρχείων ενός παραδοσιακού συστήματος αρχείων (σαν ένα σκληρό δίσκο στον υπολογιστή σας) , S3 προσφέρει just "buckets" που κατέχουν "αντικείμενα" (Θα τους τηλεφωνήσουμε. "files" ) .
Για αρχεία ASCII (π.χ., .csv.) , ERDDAP™ μπορεί να λειτουργήσει με τα αρχεία στους κουβάδες άμεσα. Το μόνο πράγμα που πρέπει να κάνετε είναι να καθορίσετε το<αρχείοDir> για το σύνολο δεδομένων χρησιμοποιώντας μια συγκεκριμένη μορφή για τον κουβά AWS, π.χ.https://bucketName.s3.aws-region.amazonaws.com/subdirectory/. Δεν πρέπει να χρησιμοποιήσετε<cacheFromUrl> . Δείτε παρακάτω για λεπτομέρειες.
Αλλά για δυαδικά αρχεία (π.χ., .nc , .grib, .bufr, και .hdf αρχεία) , θα πρέπει να χρησιμοποιήσετε το<σύστημα cacheFromUrl> που περιγράφεται παρακάτω. ERDDAP , netcdf-java (το οποίο ERDDAP™ χρήση για την ανάγνωση δεδομένων από αυτά τα αρχεία) , και άλλα επιστημονικά λογισμικό δεδομένων έχουν σχεδιαστεί για να εργαστούν με αρχεία σε ένα παραδοσιακό σύστημα αρχείων που προσφέρει επίπεδο μπλοκ πρόσβαση σε αρχεία (που επιτρέπει την ανάγνωση κομματιών ενός αρχείου) , αλλά S3 προσφέρει μόνο επίπεδο αρχείου (αντικείμενο) πρόσβαση σε αρχεία (που επιτρέπει μόνο την ανάγνωση ολόκληρου του αρχείου) . Το AWS προσφέρει εναλλακτική λύση έναντι του S3, Ελαστικό κατάστημα μπλοκ (EBS) ), η οποία υποστηρίζει την πρόσβαση στο επίπεδο μπλοκ σε αρχεία, αλλά είναι ακριβότερη από S3, έτσι σπάνια χρησιμοποιείται για τη μαζική αποθήκευση μεγάλων ποσοτήτων αρχείων δεδομένων. (Έτσι, όταν οι άνθρωποι λένε αποθήκευση δεδομένων στο σύννεφο (S3) είναι φθηνό, είναι συνήθως ένα μήλο με πορτοκάλια σύγκριση.)
S3 Κουμπιά
Το περιεχόμενο ενός κουβά. Κλειδιά. Αντικείμενα.
Τεχνικά, οι κουβάδες S3 δεν είναι οργανωμένοι σε μια ιεραρχική δομή αρχείων όπως ένα σύστημα αρχείων σε έναν υπολογιστή. Αντίθετα, οι κουβάδες περιέχουν μόνο " αντικείμενα" (αρχεία) , καθένα από τα οποία έχει ένα κλειδί (όνομα) . Ένα παράδειγμα ενός κλειδιού στον κουβά Noaa-goes17 είναι
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
Το αντίστοιχο URl για το αντικείμενο αυτό είναι
Το AWS υποστηρίζει μια μικρή παραλλαγή του τρόπου κατασκευής του URL, αλλά ERDDAP™ απαιτεί αυτή τη συγκεκριμένη μορφή: https://bucketName.s3.region.amazonaws.com/key
Από την ERDDAP v2.29, μπορείτε τώρα να χρησιμοποιήσετε το s3:// Μορφή URI αντί του URL κουβά. Αυτή είναι η μορφή που χρησιμοποιείται από το AWS s3 cli .
s3:// κουβάςName / κλειδί
Η περιφέρεια για το S3 URI μπορεί να προσδιοριστεί με έναν από τους τρεις τρόπους:
- Η περιφέρεια στο χρήστη Tomcat
~/.aws/συσκευήπροφίλ - Η
AWS_DEFAULT_REGIONμεταβλητή περιβάλλοντος - Η
aws.region περιφέρειαΜεταβλητή JVM (στο setenv.sh για Tomcat)
Είναι κοινή πρακτική, όπως και με αυτό το παράδειγμα, να κάνει τα ονόματα κλειδιών να μοιάζουν με ιεραρχική διαδρομή συν ένα όνομα αρχείου, αλλά τεχνικά δεν είναι. Δεδομένου ότι είναι κοινό και χρήσιμο, ERDDAP™ αντιμετωπίζει τα πλήκτρα με /'s σαν να είναι μια ιεραρχική διαδρομή συν το όνομα αρχείου, και αυτή η τεκμηρίωση θα αναφέρεται σε αυτά ως τέτοια. Αν τα κλειδιά ενός κουβά δεν χρησιμοποιούν /'s (π.χ., ένα κλειδί όπως ABI-Lib.2018.052.22.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575), στη συνέχεια ERDDAP™ Απλά θα αντιμετωπίσει ολόκληρο το κλειδί ως ένα μακρύ όνομα αρχείου.
Ιδιωτικό εναντίον δημόσιων αγκίστρων -- Ο διαχειριστής του κάδου S3 μπορεί να κάνει τον κουβά και το περιεχόμενό του δημόσιο ή ιδιωτικό. Αν το κοινό, οποιοδήποτε αρχείο στον κουβά μπορεί να μεταφορτωθεί από οποιονδήποτε χρησιμοποιεί το URL για το αρχείο. Η Amazon έχει ένα Άνοιγμα δεδομένων πρόγραμμα που φιλοξενεί σύνολα δημόσιων δεδομένων (συμπεριλαμβανομένων των δεδομένων από NOAA , NASA και USGS) δωρεάν και δεν χρεώνει για κανέναν να κατεβάσει τα αρχεία από αυτούς τους κουβάδες. Εάν ένας κουβάς είναι ιδιωτικός, τα αρχεία στον κουβά είναι προσβάσιμα μόνο σε εξουσιοδοτημένους χρήστες και AWS χρεώνει ένα τέλος (συνήθως πληρώνεται από τον ιδιοκτήτη του κουβά) για τη λήψη αρχείων σε μη AWS S3 υπολογιστή. ERDDAP™ μπορεί να λειτουργήσει με δεδομένα σε δημόσιους και ιδιωτικούς κουβάδες.
ΠΛΗΡΟΦΟΡΗΣΗ
Για να το κάνω έτσι ERDDAP™ μπορεί να διαβάσει το περιεχόμενο των ιδιωτικών κουβάδες, χρειάζεστε AWS διαπιστευτήρια και θα πρέπει να αποθηκεύσετε ένα αρχείο διαπιστευτηρίων στο πρότυπο μέρος έτσι ERDDAP™ μπορεί να βρει τις πληροφορίες. Δείτε το AWS SDK για Java 2.x τεκμηρίωση: Ορισμός προκαθορισμένων διαπιστευτηρίων . (Η επιλογή αποθήκευσης των τιμών ως Java παράμετροι γραμμής εντολών \[ τομκάτ \] /bin/setenv.sh μπορεί να είναι μια καλή επιλογή.)
AWS /αρχεία/
- /αρχεία/ σύστημα -- Η ERDDAP™ /Αρχεία/ σύστημα επιτρέπει στους χρήστες να κατεβάζουν τα πηγαία αρχεία για ένα σύνολο δεδομένων. Σας συνιστούμε να ενεργοποιήσετε αυτό για όλα τα σύνολα δεδομένων με τα αρχεία πηγαίου κώδικα, επειδή πολλοί χρήστες θέλουν να κατεβάσετε τα αρχικά αρχεία πηγής.
- Εάν τα αρχεία είναι σε έναν ιδιωτικό κουβά S3, το αίτημα του χρήστη για να κατεβάσετε ένα αρχείο θα χειριστεί από ERDDAP™ , η οποία θα διαβάσει τα δεδομένα από το αρχείο και στη συνέχεια να τα διαβιβάσει στο χρήστη, αυξάνοντας έτσι το φορτίο για σας ERDDAP™ , χρησιμοποιώντας εισερχόμενο και εξερχόμενο εύρος ζώνης, και να σας κάνει (το ERDDAP™ διαχειριστής) να καταβάλει το τέλος εξόδου δεδομένων στην AWS.
- Εάν τα αρχεία είναι σε ένα δημόσιο S3 κουβά, το αίτημα του χρήστη να κατεβάσετε ένα αρχείο θα ανακατευθύνεται στο AWS S3 URL για αυτό το αρχείο, έτσι ώστε τα δεδομένα δεν θα ρέει μέσω ERDDAP™ , μειώνοντας έτσι το φορτίο ERDDAP . Και αν τα αρχεία είναι σε ένα Amazon Open Data (δωρεάν) Ο δημόσιος κουβάς, τότε εσύ (το ERDDAP™ διαχειριστής) Δεν θα χρειαστεί να πληρώσει καμία αμοιβή εξόδου δεδομένων στο AWS. Έτσι, υπάρχει ένα μεγάλο πλεονέκτημα που εξυπηρετεί τα δεδομένα από το κοινό (όχι ιδιωτικά) S3 κουβάδες, και ένα τεράστιο πλεονέκτημα για την εξυπηρέτηση δεδομένων από την Amazon Open Data (δωρεάν) κουβάδες.
ERDDAP επίσης υποστηρίζει ανώνυμα διαπιστευτήρια για δημόσιους κουβάδες. Για να χρησιμοποιήσετε ανώνυμα διαπιστευτήρια, προσθέστε <useAwsAnonymous> αλήθεια </useAwsAnonymous> στην εγκατάσταση σας.xml.
Προσαρμοσμένα τελικά σημεία S3
Για S3 αποθήκευσης συμβατών αντικειμένων δεν φιλοξενείται από την Amazon, θα πρέπει να ρυθμίσετε το τελικό σημείο_ url μαζί με το specifing κουβά / κλειδί σας χρησιμοποιώντας ένα s3:// URI (στα Αγγλικά).
Η τελικό σημείο_ url μπορεί να προσδιοριστεί με έναν από τους τρεις τρόπους:
- Η τελικό σημείο_ url στο χρήστη Tomcat
~/.aws/συσκευήπροφίλ - Η
ΤΕΛΟΣ ΠΟΙΟΤΗΤΑΣμεταβλητή περιβάλλοντος - Η
aws.end point (τελικό σημείο) ΟυρλΜεταβλητή JVM (στο setenv.sh για Tomcat)
Για πλήρη κατάλογο μεταβλητών διαμόρφωσης S3, Βλέπε τα έγγραφα του Amazon .
Πιστοποιητικά υπό υπογραφή
Για self-hosted S3 κουβάδες, θα έχετε συχνά αυτο-υπογραφεί SSL πιστοποιητικά. Για ERDDAP για να διαβάσετε από αυτούς τους κουβάδες, θα πρέπει να προσθέσετε την αλυσίδα πιστοποιητικού σας στο κατάστημα εμπιστοσύνης JVM στο $JAVA_HOME/jre/lib/ασφάλεια/κεφάλαια . Επιπλέον, ERDDAP χρησιμοποιεί το AWS Κοινή Ώρα Εκτέλεσης να έχει πρόσβαση στον κουβά ασύγχρονα. Αυτό ενισχύει την απόδοση, αλλά απαιτεί επίσης τα αυτο-υπογεγραμμένα πιστοποιητικά σας να προστεθούν στο ειδικό κατάστημα OS σας. Αν θέλετε να αποφύγετε να το κάνετε αυτό, μπορείτε να απενεργοποιήσετε AWS CRT με <useAwsCrt> ψευδές </useAwsCrt> στην εγκατάσταση σας.xml.
ERDDAP™ και AWS S3 Μπάκετς
** ERDDAP™ και AWS S3 Μπάκετς**
Ευτυχώς, μετά από πολλή προσπάθεια, ERDDAP™ έχει μια σειρά από χαρακτηριστικά που της επιτρέπουν να αντιμετωπίσει τα εγγενή προβλήματα της συνεργασίας με το επίπεδο μπλοκ S3 πρόσβαση σε αρχεία με ευλόγως αποτελεσματικό τρόπο:
- \[ Αποποίηση ευθύνης: Το να δουλεύεις με κουβάδες AWS S3 είναι πολύ επιπλέον δουλειά. Το AWS είναι ένα τεράστιο οικοσύστημα υπηρεσιών και χαρακτηριστικών. Υπάρχουν πολλά να μάθεις. Χρειάζεται χρόνος και προσπάθεια, αλλά είναι εφικτό. Κάνε υπομονή και θα τα καταφέρεις. Αναζήτηση/ζήτηση βοήθειας
( Τεκμηρίωση AWS , ιστοσελίδες όπως Στοίβα υπερχείλισης , και ο τακτικός
ERDDAP™ επιλογές υποστήριξης Αν/όταν κολλήσεις. \]
- Μπορεί να είναι δύσκολο να μάθετε ακόμη και τη δομή καταλόγου και τα ονόματα αρχείων των αρχείων σε έναν κουβά S3. ERDDAP™ έχει μια λύση για αυτό το πρόβλημα: EDDTableFromFileNames έχει μια ειδική \\\*από το OnTheFly επιλογή που σας επιτρέπει να φτιάξετε ένα EDDTableFromFileNames dataset που επιτρέπει στους χρήστες να περιηγηθούν στα περιεχόμενα ενός κάδου S3 (και λήψη αρχείων) μέσω του συνόλου δεδομένων "files" Επιλογή. Υπάρχει ένα παράδειγμα αυτού παρακάτω .
- ERDDAP™ μπορεί να διαβάσει τα δεδομένα από εξωτερικά συμπιεσμένα αρχεία δεδομένων , έτσι είναι εντάξει αν τα αρχεία για S3 αποθηκεύονται ως .gz , .gzip , .bz2 , .Z, ή άλλους τύπους εξωτερικών συμπιεσμένων αρχείων δεδομένων, η οποία μπορεί να δραματικά (2 - 20X) μείωση του κόστους αποθήκευσης αρχείων. Συχνά δεν υπάρχει ποινή χρόνου για τη χρήση εξωτερικών συμπιεσμένων αρχείων, δεδομένου ότι ο χρόνος που αποθηκεύεται με τη μεταφορά ενός μικρότερου αρχείου από S3 σε ERDDAP περίπου ισορροπεί τον επιπλέον χρόνο που απαιτείται για ERDDAP™ Για να αποσυμπιέσετε το αρχείο. Για να χρησιμοποιήσετε αυτό το χαρακτηριστικό, απλά πρέπει να βεβαιωθείτε ότι το σύνολο δεδομένων<αρχείοNameRegex> επιτρέπει τον συμπιεσμένο τύπο αρχείου (π.χ. με προσθήκη ( | .gz ) έως το τέλος του regex) .
- Για την πιο κοινή περίπτωση, όπου έχετε ένα ERDDAP™ εγκατεστημένο στον υπολογιστή σας για δοκιμή / ανάπτυξη και όπου το σύνολο δεδομένων έχει δυαδικά αρχεία δεδομένων που αποθηκεύονται ως αντικείμενα σε έναν κουβά S3, μια προσέγγιση για να πάρει το σύνολο δεδομένων σε ERDDAP™ είναι:
-
Δημιουργήστε έναν κατάλογο στον υπολογιστή σας για να κρατήσει μερικά αρχεία δεδομένων δοκιμής.
-
Κατεβάστε δύο αρχεία δεδομένων από την πηγή στον κατάλογο που μόλις δημιουργήσατε.
-
Χρήση Δημιουργία συνόλων δεδομένωνXml για την παραγωγή του κομματιού datasets.xml για το σύνολο δεδομένων με βάση τα δύο τοπικά αρχεία δεδομένων.
-
Ελέγξτε ότι το σύνολο δεδομένων λειτουργεί όπως επιθυμείτε ΔΑΠ ή/και το τοπικό σας ERDDAP .
Τα ακόλουθα βήματα κάνουν ένα αντίγραφο του συνόλου δεδομένων (που θα πάρει δεδομένα από τον κουβά S3) σε κοινό ERDDAP .
-
Αντιγραφή του κομματιού του datasets.xml για το σύνολο δεδομένων στο datasets.xml για το κοινό ERDDAP™ Αυτό θα εξυπηρετήσει τα δεδομένα.
-
Δημιουργία καταλόγου στο κοινό ERDDAP Είναι τοπικός σκληρός δίσκος για να κρατήσει μια κρύπτη προσωρινών αρχείων. Ο κατάλογος δεν θα χρησιμοποιήσει πολύ χώρο στο δίσκο. (δείτε cacheSizeGB παρακάτω) .
-
Αλλαγή της τιμής του συνόλου δεδομένων<αρχείοDir> ετικέτα έτσι ώστε να δείχνει τον κατάλογο που μόλις δημιουργήσατε (παρόλο που ο κατάλογος είναι κενός) .
-
Προσθήκη α λανθάνουσα μνήμηFromUrl ετικέτα που καθορίζει το όνομα του συνόλου δεδομένων και το προαιρετικό πρόθεμα (Δηλαδή, κατάλογος) στο συγκεκριμένο Aws S3 URL Μορφή που ERDDAP™ απαιτεί .
-
Προσθήκη α [<λανθάνον μέγεθοςGB>] (#Cachefromurl Από τον ουρανό) ετικέτα στο xml του συνόλου δεδομένων (π.χ. το 10 είναι καλή τιμή για τα περισσότερα σύνολα δεδομένων) για να πω ERDDAP™ για τον περιορισμό του μεγέθους της τοπικής cache (Δηλαδή, μην προσπαθήσεις να κρύψεις όλα τα απομακρυσμένα αρχεία.) .
-
Δες αν αυτό λειτουργεί στο κοινό. ERDDAP . Σημειώστε ότι την πρώτη φορά ERDDAP™ φορτώνει το σύνολο δεδομένων, θα πάρει πολύ χρόνο για να φορτώσει, επειδή ERDDAP™ χρειάζεται να κατεβάσετε και να διαβάσετε όλα τα αρχεία δεδομένων.
-
Εάν το σύνολο δεδομένων είναι μια τεράστια συλλογή από τεράστια πλέγμα αρχεία δεδομένων, αυτό θα πάρει πολύ καιρό και δεν είναι πρακτικό. Σε ορισμένες περιπτώσεις, για τα ηλεκτρονικά αρχεία δεδομένων, ERDDAP™ μπορεί να αποσπάσει τις απαραίτητες πληροφορίες (π.χ. το χρονικό σημείο για τα δεδομένα σε ένα αρχείο δεδομένων σε πλέγμα) από το όνομα αρχείου και να αποφευχθεί αυτό το πρόβλημα. Βλέπεις; Συγκέντρωση μέσω Ονόματα αρχείων .
- Προαιρετικά (αλλά ειδικά για τα σύνολα δεδομένων EDDTableFromFiles) , μπορείτε να προσθέσετε ένα nThreads ετικέτα στο σύνολο δεδομένων για να πει ERDDAP να χρησιμοποιεί περισσότερο από 1 νήμα όταν ανταποκρίνεται στο αίτημα του χρήστη για δεδομένα. Αυτό ελαχιστοποιεί τα αποτελέσματα της καθυστέρησης που συμβαίνει όταν ERDDAP™ διαβάζει αρχεία δεδομένων από (απομακρυσμένο) AWS S3 κουβάδες στην τοπική cache και (Ίσως) Τους αποσυμπιέζουμε.
Άνοιγμα δεδομένων AWS S3
Ως μέρος της NOAA Σ Μεγάλο πρόγραμμα δεδομένων , NOAA έχει συνεργασίες με πέντε οργανισμούς, συμπεριλαμβανομένης της AWS, "να διερευνήσει τα πιθανά οφέλη της αποθήκευσης αντιγράφων των βασικών παρατηρήσεων και εξόδους μοντέλων στο Cloud για να επιτρέψει την απευθείας υπολογιστική στα δεδομένα χωρίς να απαιτεί περαιτέρω διανομή. AWS περιλαμβάνει τα σύνολα δεδομένων που παίρνει από NOAA ως μέρος του προγράμματος της για να προσφέρει δημόσια πρόσβαση σε μια μεγάλη συλλογή Άνοιγμα δεδομένων για το AWS S3 από οποιονδήποτε υπολογιστή, είτε πρόκειται για ένα παράδειγμα υπολογισμού Amazon (νοικιασμένο υπολογιστή) στο δίκτυο AWS ή στο δικό σας υπολογιστή σε οποιοδήποτε δίκτυο. Το παρακάτω παράδειγμα υποθέτει ότι εργάζεστε με ένα δημοσίως προσβάσιμο σύνολο δεδομένων.
Πρόσβαση αρχείων σε έναν κάδο AWS S3
Για έναν ιδιωτικό κουβά δεδομένων S3, ο ιδιοκτήτης του κουβά πρέπει να σας δώσει πρόσβαση στον κουβά. (Βλέπε τα έγγραφα AWS.)
Σε όλες τις περιπτώσεις, θα χρειαστείτε ένα λογαριασμό AWS επειδή το AWS SDK για Java (το οποίο ERDDAP™ χρησιμοποιεί για να ανακτήσει πληροφορίες σχετικά με το περιεχόμενο ενός κουβά) απαιτεί πιστοποιητικά λογαριασμού AWS. (περισσότερα για αυτό παρακάτω)
ERDDAP™ μπορεί να έχει πρόσβαση σε κουβάδες AWS S3 μόνο αν καθορίσετε το [<cacheFromUrl>] (#Cachefromurl Από τον ουρανό) (ή<αρχείοDir>) σε συγκεκριμένη μορφή:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
όπου
- Ο κουβάςName είναι η σύντομη μορφή του ονόματος κουβά, π.χ. noaa-goes17 .
- Η aws-περιοχή, π.χ., us-east-1, είναι από τη στήλη "Περιφέρεια" σε έναν από τους πίνακες της Τέλος σημείων υπηρεσίας AWS όπου βρίσκεται ο κουβάς.
- Το πρόθεμα είναι προαιρετικό. Αν είναι παρών, πρέπει να τελειώσει με '/' .
Για παράδειγμα,https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Αυτή η μορφή URL είναι μια από τις συστάσεις AWS S3: δείτε Πρόσβαση σε έναν Κουβά και αυτή η περιγραφή προθέσεων . ERDDAP™ απαιτεί να συνδυάσετε το URL του κουβά και το προαιρετικό πρόθεμα σε ένα URL προκειμένου να καθορίσετε το<cacheFromUrl> (ή<αρχείοDir>) όπου βρίσκονται τα αρχεία.
Δοκιμή δημόσιων βαλβίδων AWS S3
Για τους δημόσιους κουβάδες, μπορείτε και θα πρέπει να δοκιμάσετε το URL κουβά του καταλόγου AWS S3 στον browser σας, π.χ., https://noaa-goes17.s3.us-east-1.amazonaws.com Εάν το URL του κουβά είναι σωστό και κατάλληλο για ERDDAP , θα επιστρέψει ένα έγγραφο XML που έχει (μερική) κατάλογο των περιεχομένων του εν λόγω κουβά. Δυστυχώς, το πλήρες URL (Δηλαδή, URL κουβά συν πρόθεμα) ότι ERDDAP™ θέλει ένα δεδομένο σύνολο δεδομένων δεν λειτουργεί σε ένα πρόγραμμα περιήγησης. Το AWS δεν προσφέρει ένα σύστημα για να περιηγηθείτε στην ιεραρχία ενός κουβά εύκολα στον browser σας. (Αν αυτό είναι λάθος, παρακαλώ στείλτε email στον Κρις. Τζον στο Νόαγκοβ. Διαφορετικά, Amazon, παρακαλώ προσθέστε υποστήριξη για αυτό!)
Βλέπει τα Περιεχόμενα ενός Κουβά
S3 κουβάδες συχνά περιέχουν μια-δυο κατηγορίες αρχείων, σε μια-δυο ψευδο-υποκαταλόγους, η οποία θα μπορούσε να γίνει ένα-δυο από ERDDAP™ σύνολα δεδομένων. Για να κάνει το ERDDAP™ σύνολα δεδομένων, θα πρέπει να γνωρίζετε τον κατάλογο έναρξης για<cacheFromUrl> (ή<fileDir>) και τη μορφή των ονομάτων αρχείων που προσδιορίζουν αυτό το υποσύνολο αρχείων. Αν προσπαθήσετε να δείτε ολόκληρο το περιεχόμενο ενός κουβά σε ένα πρόγραμμα περιήγησης, το S3 θα σας δείξει μόνο τα πρώτα 1000 αρχεία, τα οποία είναι ανεπαρκή. Επί του παρόντος, ο καλύτερος τρόπος για να δείτε όλα τα περιεχόμενα ενός κουβά είναι να κάνει ένα Πίνακας EDD από αρχείοNames σύνολο δεδομένων (στο PC σας ERDDAP™ ή/και στο κοινό σας ERDDAP ) , το οποίο σας δίνει επίσης έναν εύκολο τρόπο να περιηγηθείτε στη δομή καταλόγου και να κατεβάσετε αρχεία. Η<αρχείοDir> για αυτό θα είναι το URL που κάνατε παραπάνω, π.χ.,https://noaa-goes17.s3.us-east-1.amazonaws.com. \[ Γιατί το AWS S3 δεν προσφέρει ένα γρήγορο και εύκολο τρόπο για οποιονδήποτε να το κάνει αυτό χωρίς λογαριασμό AWS; \] Σημειώστε ότι όταν το κάνω αυτό στον υπολογιστή μου σε ένα μη-Αμαζόνιο δίκτυο, φαίνεται ότι η Amazon επιβραδύνει την απόκριση σε μια trickπή (περίπου 100 (♪ ♪) αρχεία ανά κομμάτι) μετά τα πρώτα κομμάτια (1000 αρχείων ανά τεμάχιο) κατεβάζονται. Δεδομένου ότι οι κουβάδες μπορεί να έχουν ένα τεράστιο αριθμό αρχείων (Η Noaa-goes17 έχει 26 εκατομμύρια) , να πάρει όλα τα περιεχόμενα ενός κουβά μπορεί να λάβει EDDTableFromFileNames αρκετές ώρες (π.χ., 12!) να τελειώσει. \[ Αμαζόνιο, σωστά;! \]
Δημιουργία ενός πίνακα EDD ΑπόΑρχείοNames Dataset με έναν κάδο AWS S3
Εάν έχετε ένα όνομα κουβά, αλλά δεν έχετε ήδη μια λίστα αρχείων στον κουβά S3 ή το πρόθεμα που προσδιορίζει τη θέση των σχετικών αρχείων στον κουβά, χρησιμοποιήστε τις παρακάτω οδηγίες για να φτιάξετε ένα σύνολο δεδομένων EDDTableFromFileNames ώστε να μπορείτε να περιηγηθείτε στην ιεραρχία καταλόγου του κουβά S3 μέσω ERDDAP Σ "files" σύστημα.
- Άνοιγμα λογαριασμού AWS ERDDAP™ χρησιμοποιεί το AWS SDK για Java για να πάρετε πληροφορίες κουβά από AWS, έτσι θα πρέπει να δημιουργία και ενεργοποίηση λογαριασμού AWS . Πολύ μεγάλη δουλειά, με πολλά πράγματα να μάθεις.
- Βάλτε την εντολή AWS σας όπου ERDDAP™ Μπορεί να τους βρει. Ακολουθήστε τις οδηγίες Set της εντολής AWS και της περιοχής ανάπτυξης Οπότε... ERDDAP™ (Συγκεκριμένα, το AWS SDK για Java ) θα είναι σε θέση να βρει και να χρησιμοποιήσει τα διαπιστευτήριά σας AWS. Εάν ERDDAP™ Δεν μπορείτε να βρείτε τα διαπιστευτήρια, θα δείτε Τζάβα. Λανγκ. ΠαράνομοΕπιχειρήματαException: το αρχείο προφίλ δεν μπορεί να είναι κενό σφάλμα στο ERDDAP Το αρχείο καταγραφής.
Υπόδειξη για το Linux και το Mac OS: το αρχείο διαπιστευτηρίων πρέπει να βρίσκεται στον αρχικό κατάλογο του χρήστη που εκτελεί το Tomcat (και ERDDAP ) (Για αυτή την παράγραφο, θα υποθέσουμε user=tomcat) σε ένα αρχείο που ονομάζεται ~/.aws / credentials . Μην υποθέτεις ότι το ~ είναι /home/tomcat -- στην πραγματικότητα χρησιμοποιεί το cd ~ για να ανακαλύψει που πιστεύει το λειτουργικό σύστημα ~ για το user=tomcat είναι. Δημιουργήστε τον κατάλογο αν δεν υπάρχει. Επίσης, αφού βάλετε το αρχείο διαπιστευτηρίων στη θέση του, βεβαιωθείτε ότι ο χρήστης και η ομάδα για το αρχείο είναι tomcat και στη συνέχεια χρησιμοποιήστε chmod 400 διαπιστευτήρια για να βεβαιωθείτε ότι το αρχείο είναι μόνο ανάγνωσης για το χρήστη=tomcat.
- Δημιουργία του URL κουβά στο μορφή που ERDDAP™ απαιτεί , π.χ., https://noaa-goes17.s3.us-east-1.amazonaws.com , και (για δημόσιους κουβάδες) δοκιμάστε το σε ένα πρόγραμμα περιήγησης για να βεβαιωθείτε ότι επιστρέφει ένα έγγραφο XML το οποίο έχει μια μερική λίστα των περιεχομένων του εν λόγω κουβά.
- Χρήση Δημιουργία συνόλων δεδομένωνXml για τη δημιουργία ενός Πίνακας EDD από αρχείοNames σύνολο δεδομένων:
- Για τον αρχικό κατάλογο, χρησιμοποιήστε αυτή τη σύνταξη: \\\ Από το OnTheFly, BucketUrl σας* για παράδειγμα, \\\Από το OnTheFly,https://noaa-goes17.s3.us-east-1.amazonaws.com/
- Όνομα αρχείου regex; .\*
- Αναδρομική; αλήθεια
- επαναφόρτωση Κάθε λεπτό; 10080
- infoUrl ♪ ♪https://registry.opendata.aws/noaa-goes/
- Ίδρυμα; NOAA
- Περίληψη; τίποτα ( ERDDAP™ θα δημιουργήσει μια αξιοπρεπή περίληψη αυτόματα.)
- Τίτλος; τίποτα ( ERDDAP™ θα δημιουργήσει έναν αξιοπρεπή τίτλο αυτόματα.) Ως συνήθως, θα πρέπει να επεξεργαστείτε το αποτέλεσμα XML για να επαληθεύσετε την ορθότητα και να κάνετε βελτιώσεις πριν από το κομμάτι των συνόλων δεδομένων χρησιμοποιώντας το datasets.xml .
- Εάν ακολουθήσετε τις παραπάνω οδηγίες και φορτώσετε το σύνολο δεδομένων ERDDAP , έχετε δημιουργήσει ένα σύνολο δεδομένων EDDTableFromFiles. Για παράδειγμα, και για να είναι ευκολότερο για οποιονδήποτε να περιηγηθεί και να κατεβάσει αρχεία από τους AWS Open Data κουβάδες, δημιουργήσαμε το EDDTableFromFileNames datasets (δείτε τη λίστα στο
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) για σχεδόν όλα τα AWS S3 Ανοιχτοί κουβάδες δεδομένων .
\[ Οι λίγοι κουβάδες που δεν συμπεριλάβαμε είτε έχουν ένα μεγάλο αριθμό αρχείων στον ριζικό κατάλογο (περισσότερα από όσα μπορείτε να κατεβάσετε σε εύλογο χρονικό διάστημα) , ή δεν επιτρέπουν την πρόσβαση του κοινού (Δεν υποτίθεται ότι είναι όλοι δημόσιοι;) , ή είναι ο αιτών πληρώνει κουβάδες (π.χ., Sentinel) . \]
Εάν κάνετε κλικ στο "files" σύνδεση για ένα από αυτά τα σύνολα δεδομένων, μπορείτε να περιηγηθείτε στο δέντρο καταλόγου και τα αρχεία σε αυτόν τον κουβά S3. Λόγω του τρόπου\\\* από το OnTheFly EDDTableFromFiles λειτουργεί, αυτές οι λίστες καταλόγου είναι πάντα απόλυτα ενημερωμένες επειδή ERDDAP™ Τους παίρνει στην πτήση. Αν κάνετε κλικ στο δέντρο καταλόγου σε ένα πραγματικό όνομα αρχείου και κάνετε κλικ στο όνομα αρχείου, ERDDAP™ θα ανακατευθύνει το αίτημά σας σε AWS S3 έτσι ώστε να μπορείτε να κατεβάσετε το αρχείο απευθείας από AWS. Μπορείτε τότε να επιθεωρήσετε αυτό το αρχείο.
Πρόβλημα; Αν ο πίνακας EDDFromFiles σας δεν φορτώσει ERDDAP™ (ή DasDds) , δείτε στο αρχείο log.txt για ένα μήνυμα σφάλματος. Εάν δείτε ένα Τζάβα. Λανγκ. ΠαράνομοΕπιχειρήματαΕξαίρεση: το αρχείο προφίλ δεν μπορεί να είναι κενό σφάλμα, το πρόβλημα είναι ότι το AWS SDK για Java (χρησιμοποιείται από ERDDAP ) Δεν βρίσκει το αρχείο διαπιστευτηρίων. Δείτε τις παραπάνω οδηγίες πιστοποίησης.
Είναι ατυχές που το AWS δεν επιτρέπει απλά στους ανθρώπους να χρησιμοποιούν ένα πρόγραμμα περιήγησης για να δουν το περιεχόμενο ενός δημόσιου κουβά.
Τότε μπορείς να κάνεις ERDDAP™ σύνολα δεδομένων που δίνουν στους χρήστες πρόσβαση στα δεδομένα των αρχείων.
Βλέπε τις οδηγίες ERDDAP™ και S3 Μπάκετς (ανωτέρω) .
Για το δείγμα EDDTableFromFileNames dataset που κάνατε παραπάνω, αν κάνετε λίγο ψάξιμο με τον κατάλογο και τα ονόματα αρχείων στο δέντρο καταλόγου, γίνεται σαφές ότι τα ονόματα καταλόγου ανωτάτου επιπέδου (π.χ., ABI-L1b-RadC) αντιστοιχεί σε ό, τι ERDDAP™ θα καλούσε ξεχωριστά σύνολα δεδομένων. Ο κουβάς με τον οποίο δουλεύεις μπορεί να είναι παρόμοιος. Στη συνέχεια, θα μπορούσατε να επιδιώξετε τη δημιουργία ξεχωριστών συνόλων δεδομένων ERDDAP™ για κάθε ένα από αυτά τα σύνολα δεδομένων, χρησιμοποιώντας, π.χ.,
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
ως η<cacheFromUrl>. Δυστυχώς, για το συγκεκριμένο παράδειγμα, τα σύνολα δεδομένων στον κουβά όλα φαίνονται να είναι επίπεδο 1 ή επίπεδο 2 σύνολα δεδομένων, το οποίο ERDDAP™ δεν είναι ιδιαίτερα καλή στο , επειδή το σύνολο δεδομένων είναι μια πιο περίπλοκη συλλογή μεταβλητών που χρησιμοποιούν διαφορετικές διαστάσεις.
Αρχεία NcML
NcML αρχεία σας επιτρέπουν να ορίσετε τις αλλαγές on-the-fly σε μία ή περισσότερες αρχικές πηγές NetCDF (v3 ή v4) .nc , .grib, .bufr, ή .hdf (v4 ή v5) αρχεία, και στη συνέχεια έχουν ERDDAP™ θεραπεία .nc αρχεία ml ως πηγαία αρχεία. ERDDAP™ Τα σύνολα δεδομένων θα δεχτούν .nc αρχεία ml όποτε .nc Τα αρχεία αναμένονται. Τα αρχεία NcML ΠΡΕΠΕΙ να έχουν την επέκταση .nc ml. Δείτε το Unidata Τεκμηρίωση NcML . NcML είναι χρήσιμο γιατί μπορείτε να κάνετε κάποια πράγματα με αυτό (για παράδειγμα, κάνοντας διαφορετικές αλλαγές σε διαφορετικά αρχεία σε μια συλλογή, συμπεριλαμβανομένης της προσθήκης διάστασης με συγκεκριμένη τιμή σε ένα αρχείο) , ότι δεν μπορείτε να κάνετε με ERDDAP Σ datasets.xml .
- Αλλαγές σε .nc Η τελευταία τροποποιημένη ώρα του αρχείου ml θα προκαλέσει την επαναφόρτωση του αρχείου όταν επαναφορτωθεί το σύνολο δεδομένων, αλλά αλλαγές στο υποκείμενο .nc Τα αρχεία δεδομένων δεν θα παρατηρηθούν άμεσα.
- Υπόδειξη: NcML είναι\*πολύ\*ευαίσθητο στη σειρά ορισμένων αντικειμένων στο αρχείο NcML. Σκεφτείτε το NcML ως καθορισμό μιας σειράς οδηγιών στην καθορισμένη σειρά, με την πρόθεση να αλλάξετε τα αρχεία πηγής (η κατάσταση στην αρχή/πάνω του αρχείου NcML) στα αρχεία προορισμού (η κατάσταση στο τέλος/κάτω μέρος του αρχείου NcML) .
Μια εναλλακτική λύση για NcML είναι η NetCDF Φορείς εκμετάλλευσης ( NCO ) . Η μεγάλη διαφορά είναι ότι η NcML είναι ένα σύστημα για τις αλλαγές στην-the-fly (Οπότε τα αρχεία πηγής δεν έχουν αλλάξει.) , ότι NCO μπορεί να χρησιμοποιηθεί για να κάνει αλλαγές σε (ή νέες εκδόσεις του) Τα αρχεία. Και τα δύο NCO και NcML είναι πολύ, πολύ ευέλικτο και σας επιτρέπει να κάνετε σχεδόν οποιαδήποτε αλλαγή μπορείτε να σκεφτείτε στα αρχεία. Και για τους δύο, μπορεί να είναι δύσκολο να καταλάβουμε ακριβώς πώς να κάνουμε αυτό που θέλετε να κάνετε -- ελέγξτε το διαδίκτυο για παρόμοια παραδείγματα. Και τα δύο είναι χρήσιμα εργαλεία για την προετοιμασία του netCDF και HDF αρχεία για χρήση με ERDDAP , ιδίως για να γίνουν αλλαγές πέρα από τις ERDDAP Το σύστημα χειραγώγησης μπορεί να κάνει.
Παράδειγμα #1: Προσθήκη μιας χρονικής διάστασης με μια ενιαία τιμή Ορίστε. .nc ml αρχείο που δημιουργεί μια νέα εξωτερική διάσταση (χρόνος, με 1 τιμή: 1041379200) και προσθέτει αυτή τη διάσταση στη μεταβλητή pic στο αρχείο με το όνομα A2003001.L3m\_DAY\_PIC\_pic\_4km .nc :
<netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'>
<variable name='time' type='int' shape='time' />
<aggregation dimName='time' type='joinNew'>
<variableAgg name='pic'/>
<netcdf location='A2003001.L3m\\_DAY\\_PIC\\_pic\\_4km.nc' coordValue='1041379200'/>
</aggregation>
</netcdf>
Παράδειγμα #2: Αλλαγή μιας υπάρχουσας τιμής χρόνου Μερικές φορές η πηγή .nc αρχείο έχει ήδη μια χρονική διάσταση και τιμή χρόνου, αλλά η τιμή είναι λανθασμένη (για τους σκοπούς σας) . Αυτό .nc Αρχείο ml λέει: για το αρχείο δεδομένων που ονομάζεται "198119810825230030-NCEI...", για τη μεταβλητή διάσταση "time" , set the units account to be 'seconds from 1970-01-01T00:00:00Z' και set the time value to be 367588800.
<netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'
location="19810825230030-NCEI-L3C\\_GHRSST-SSTskin-AVHRR\\_Pathfinder-PFV5.3\\_NOAA07\\_G\\_1981237\\_day-v02.0-fv01.0.nc">
<variable name="time">
<attribute name='units' value='seconds since 1970-01-01T00:00:00Z' />
<values>367588800</values>
</variable>
</netcdf>
NetCDF Φορείς εκμετάλλευσης ( NCO )
"Οι φορείς εκμετάλλευσης του δικτύουCDF ( NCO ) περιλαμβάνουν μια ντουζίνα ανεξάρτητα, προγράμματα γραμμής εντολών που λαμβάνουν netCDF \[ v3 ή v4 \] , HDF \[ v4 ή v5 \] , \[ .Grib, .bufr, \] ή/και DAP αρχεία ως είσοδο, στη συνέχεια, λειτουργούν (π.χ., να αντλούν νέα δεδομένα, να υπολογίσουν στατιστικά στοιχεία, εκτύπωση, hyperslab, να χειρίζονται μεταδεδομένα) και την έξοδο των αποτελεσμάτων στην οθόνη ή τα αρχεία σε κείμενο, δυαδικό, ή netCDF μορφές. NCO Βοηθά στην ανάλυση των δικτυωμένων επιστημονικών δεδομένων. Το στυλ του κελύφους-χειρισμού NCO επιτρέπει στους χρήστες να χειραγωγούν και να αναλύουν αρχεία διαδραστικά, ή με εκφραστικά σενάρια που αποφεύγουν κάποια πάνω από τα ανώτερα επίπεδα περιβάλλοντα προγραμματισμού. (από την NCO Αρχική σελίδα) .
Μια εναλλακτική λύση NCO λέ NcML . Η μεγάλη διαφορά είναι ότι η NcML είναι ένα σύστημα για τις αλλαγές στην-the-fly (Οπότε τα αρχεία πηγής δεν έχουν αλλάξει.) , ότι NCO μπορεί να χρησιμοποιηθεί για να κάνει αλλαγές σε (ή νέες εκδόσεις του) Τα αρχεία. Και τα δύο NCO και NcML είναι πολύ, πολύ ευέλικτο και σας επιτρέπει να κάνετε σχεδόν οποιαδήποτε αλλαγή μπορείτε να σκεφτείτε στα αρχεία. Και για τους δύο, μπορεί να είναι δύσκολο να καταλάβουμε ακριβώς πώς να κάνουμε αυτό που θέλετε να κάνετε -- ελέγξτε το διαδίκτυο για παρόμοια παραδείγματα. Και τα δύο είναι χρήσιμα εργαλεία για την προετοιμασία του netCDF και HDF αρχεία για χρήση με ERDDAP , ιδίως για να γίνουν αλλαγές πέρα από τις ERDDAP Το σύστημα χειραγώγησης μπορεί να κάνει.
Για παράδειγμα, μπορείτε να χρησιμοποιήσετε NCO να κάνουν τις μονάδες του χρόνου μεταβλητή συνεπή σε μια ομάδα αρχείων όπου δεν ήταν συνεπή αρχικά. Ή, μπορείτε να χρησιμοποιήσετε NCO για εφαρμογή scale\_factor και add\_offset σε μια ομάδα αρχείων όπου scale\_factor και add\_offset έχουν διαφορετικές τιμές σε διαφορετικά πηγαία αρχεία. (Ή μπορείς τώρα να αντιμετωπίσεις αυτά τα προβλήματα ERDDAP™ μέσω EDDGrid Από αρχείαNcUnpacked , η οποία είναι μια παραλλαγή του EDDGrid FromNcFiles που αποσυσκευάζει τα συσκευασμένα δεδομένα και τυποποιεί τις τιμές χρόνου σε χαμηλό επίπεδο προκειμένου να ασχοληθεί με μια συλλογή αρχείων που έχουν διαφορετικές scale\_factor s και add\_offset , ή διαφορετικές χρονικές μονάδες.)
NCO είναι Ελεύθερο και Open Source Software που χρησιμοποιεί το GPL 3.0 Δίπλωμα.
Παράδειγμα #1: Κάνοντας τις μονάδες συνεπείς
EDDGrid Από αρχεία και πίνακα EDD Από τα Αρχεία επιμένει ότι οι μονάδες για μια δεδομένη μεταβλητή είναι πανομοιότυπες σε όλα τα αρχεία. Αν μερικά αρχεία είναι ασήμαντα (μη λειτουργικά) διαφορετικές από τις άλλες (π.χ. μονάδες χρόνου
"δευτερόλεπτα από το 1970-01-01 00:00:00 UTC" έναντι
"seconds since 1970-01-01T00:00:00Z" , θα μπορούσατε να χρησιμοποιήσετε NCO Σ ncatted . να αλλάξει τις μονάδες σε όλα τα αρχεία να είναι πανομοιότυπα με
nco/ncatted -μια μονάδα, χρόνο, o,c,' δευτερόλεπτα από το 1970-01-01T00:00:00Z' \* .nc
\[ Για πολλά προβλήματα όπως αυτό στο EDDTableFrom... Σειρά δεδομένων αρχείων, μπορείτε τώρα να χρησιμοποιήσετε Τυποποίηση Τι; για να πω ERDDAP για την τυποποίηση των πηγαίων αρχείων καθώς διαβάζονται ERDDAP . \]
Όρια στο μέγεθος ενός συνόλου δεδομένων
Θα δείτε πολλές αναφορές στα "2 δισεκατομμύρια" παρακάτω. Ακριβέστερα, αυτή είναι μια αναφορά στο 2.147.483.647 (2^31-1) , η οποία είναι η μέγιστη τιμή ενός 32-bit υπογεγραμμένου ακέραιου. Σε μερικές γλώσσες υπολογιστών, για παράδειγμα Java (το οποίο ERDDAP™ γράφεται στο) , αυτός είναι ο μεγαλύτερος τύπος δεδομένων που μπορεί να χρησιμοποιηθεί για πολλές δομές δεδομένων (για παράδειγμα, το μέγεθος μιας συστοιχίας) .
Για τιμές συμβολοσειράς (για παράδειγμα, για τα ονόματα μεταβλητών, τα ονόματα χαρακτηριστικών, τις τιμές χαρακτηριστικών συμβολοσειρών και τις τιμές δεδομένων συμβολοσειρών) , ο μέγιστος αριθμός χαρακτήρων ανά συμβολοσειρά ERDDAP™ είναι ~2 δισεκατομμύρια. Αλλά σχεδόν σε όλες τις περιπτώσεις, θα υπάρξουν μικρά ή μεγάλα προβλήματα αν ένα String υπερβαίνει ένα λογικό μέγεθος (π.χ. 80 χαρακτήρες για μεταβλητά ονόματα και ονόματα χαρακτηριστικών, και 255 χαρακτήρες για τις περισσότερες τιμές χαρακτηριστικών συμβολοσειρών και τιμές δεδομένων) . Για παράδειγμα, οι ιστοσελίδες που εμφανίζουν μακρά μεταβλητά ονόματα θα είναι αμήχανα ευρύ και μακρά μεταβλητά ονόματα θα περικοπούν αν υπερβαίνουν το όριο του τύπου αρχείου απόκρισης.
Για δέσμες δεδομένων με πλέγμα:
- Ο μέγιστος αριθμός axisVariable Το s είναι ~2 δισεκατομμύρια. Ο μέγιστος αριθμός dataVariable Το s είναι ~2 δισεκατομμύρια. Αλλά αν ένα σύνολο δεδομένων έχει > 100 μεταβλητές, θα είναι δυσκίνητο για τους χρήστες να χρησιμοποιούν. Και αν ένα σύνολο δεδομένων έχει > 1 εκατομμύριο μεταβλητές, ο διακομιστής σας θα χρειαστεί πολλή φυσική μνήμη και θα υπάρξουν άλλα προβλήματα.
- Το μέγιστο μέγεθος κάθε διάστασης ( axisVariable ) είναι ~2 δισεκατομμύρια τιμές.
- Νομίζω ότι ο μέγιστος συνολικός αριθμός κυττάρων (το προϊόν όλων των μεγεθών διαστάσεων) είναι απεριόριστη, αλλά μπορεί να είναι ~9e18.
Για σύνολα δεδομένων πίνακα:
- Ο μέγιστος αριθμός dataVariable Το s είναι ~2 δισεκατομμύρια. Αλλά αν ένα σύνολο δεδομένων έχει > 100 μεταβλητές, θα είναι δυσκίνητο για τους χρήστες να χρησιμοποιούν. Και αν ένα σύνολο δεδομένων έχει > 1 εκατομμύριο μεταβλητές, ο διακομιστής σας θα χρειαστεί πολλή φυσική μνήμη και θα υπάρξουν άλλα προβλήματα.
- Ο μέγιστος αριθμός πηγών (για παράδειγμα, αρχεία) Αυτό μπορεί να συγκεντρωθεί είναι ~2 δισεκατομμύρια.
- Σε ορισμένες περιπτώσεις, ο μέγιστος αριθμός σειρών από μια μεμονωμένη πηγή (για παράδειγμα, ένα αρχείο, αλλά όχι μια βάση δεδομένων) είναι ~2 δισεκατομμύρια σειρές.
- Δεν νομίζω ότι υπάρχουν άλλα όρια.
Για τα σύνολα δεδομένων με κάνναβο και πίνακα, υπάρχουν κάποια εσωτερικά όρια στο μέγεθος του υποσύνολου που μπορεί να ζητηθεί από ένα χρήστη σε ένα μόνο αίτημα (συχνά σχετίζονται με > 2 δισεκατομμύρια κάτι ή ~9e18 κάτι) , αλλά είναι πολύ πιο πιθανό ότι ένας χρήστης θα χτυπήσει τα όρια τύπου αρχείου.
- NetCDF έκδοση 3 .nc τα αρχεία περιορίζονται σε bytes 2GB. (Αν αυτό είναι πρόβλημα για κάποιον, ενημέρωσέ με: (Χειροκροτήματα) NetCDF έκδοση 3 .nc Επέκταση 64- bit ή NetCDF Έκδοση 4, η οποία θα αυξήσει σημαντικά το όριο, αλλά όχι απείρως.)
- Περιηγητές συντρίβονται μετά από μόνο ~500MB των δεδομένων, έτσι ERDDAP™ περιορίζει την απόκριση σε .htmlTable ζητεί να ~400MB των δεδομένων.
- Πολλά προγράμματα ανάλυσης δεδομένων έχουν παρόμοια όρια (για παράδειγμα, το μέγιστο μέγεθος μιας διάστασης είναι συχνά ~2 δισεκατομμύρια τιμές) , έτσι δεν υπάρχει λόγος να εργαστεί σκληρά για να πάρει γύρω από το αρχείο-τύπο-συγκεκριμένα όρια.
- Τα ειδικά για το αρχείο όρια είναι χρήσιμα επειδή εμποδίζουν αφελείς αιτήσεις για πραγματικά τεράστιες ποσότητες δεδομένων (Για παράδειγμα, "δώσε μου όλο αυτό το σύνολο δεδομένων" όταν το σύνολο δεδομένων έχει 20TB δεδομένων) , η οποία θα πάρει εβδομάδες ή μήνες για να κατεβάσετε. Όσο περισσότερο το κατέβασμα, τόσο πιο πιθανό θα αποτύχει για διάφορους λόγους.
- Τα ειδικά για τον τύπο του αρχείου όρια είναι χρήσιμα στο ότι αναγκάζουν τον χρήστη να αντιμετωπίσει υποσύνολα ευλόγως μεγέθους (για παράδειγμα, η αντιμετώπιση ενός μεγάλου πλέγματος δεδομένων μέσω αρχείων με δεδομένα από ένα χρονικό σημείο το καθένα) .
Εναλλαγή σε ACDD-1,3
Εμείς (κυρίως Δημιουργία συνόλων δεδομένωνXml ) προς το παρόν συνιστάται Έκδοση ACDD 1.3 , η οποία επικυρώθηκε στις αρχές του 2015 και η οποία αναφέρεται ως "ACDD-1,3" στις παγκόσμιες Συμβάσεις χαρακτηριστικό. Πριν από ERDDAP™ έκδοση 1.62 (κυκλοφόρησε τον Ιούνιο του 2015) , ERDDAP™ χρησιμοποιείται/συνιστά το πρωτότυπο, έκδοση 1.0, της NetCDF Σύμβαση χαρακτηριστικών για την ανακάλυψη συνόλου δεδομένων που αναφέρεται ως " Unidata Dataset Discovery v1.0" στις παγκόσμιες συμβάσεις και Metadata\_Conventions Χαρακτηριστικά.
Εάν τα σύνολα δεδομένων σας χρησιμοποιούν προηγούμενες εκδόσεις του ACDD, σας συνιστούμε να μεταβείτε στο ACDD-1.3. Δεν είναι δύσκολο. Το ACDD-1,3 είναι συμβατό με την έκδοση 1.0. Εναλλαγή, για όλα τα σύνολα δεδομένων (εκτός EDDGrid Από το Erddap και τον πίνακα EDD Συστήματα δεδομένων FromErddap) :
- Αφαίρεση του νέου υποτιμημένου παγκόσμιου Metadata\_Conventions χαρακτηριστικό με την προσθήκη (ή με την αλλαγή των υφιστάμενων Metadata\_Conventions χαρακτηριστικό)
<att name="Metadata\\_Conventions">null</att>
στο παγκόσμιο σύνολο δεδομένων< addAttributes >. 2. Εάν το σύνολο δεδομένων έχει χαρακτηριστικό των συμβάσεων στο παγκόσμιο< addAttributes >, αλλαγή όλων " Unidata Dataset Discovery v1.0" αναφορές στο "ACDD-1.3". Εάν το σύνολο δεδομένων δεν έχει ένα χαρακτηριστικό Συμβάσεων στο παγκόσμιο< addAttributes >, στη συνέχεια, προσθέστε ένα που αναφέρεται στο ACDD-1.3. Για παράδειγμα,
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Αν το σύνολο δεδομένων έχει ένα παγκόσμιο standard\_name\_vocabulary χαρακτηριστικό, παρακαλώ να αλλάξετε τη μορφή της τιμής σε, για παράδειγμα,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Εάν η αναφορά αφορά παλαιότερη έκδοση της Πίνακας τυποποιημένων ονομάτων CF . είναι πιθανώς μια καλή ιδέα να μεταβείτε στην τρέχουσα έκδοση (65, όπως γράφουμε αυτό) , δεδομένου ότι τα νέα τυποποιημένα ονόματα προστίθενται σε αυτόν τον πίνακα με τις επόμενες εκδόσεις, αλλά παλιά τυποποιημένα ονόματα σπάνια υποτιμούνται και δεν αφαιρούνται ποτέ. 4. Αν και το ACDD-1.0 περιελάμβανε καθολικά χαρακτηριστικά για creator\_name , creator\_email , creator\_url , Δημιουργία συνόλων δεδομένωνXml Δεν τα πρόσθεσα αυτόματα μέχρι που κάποια στιγμή γύρω ERDDAP™ v1,50. Αυτές είναι σημαντικές πληροφορίες:
- creator\_name ενημερώνει τους χρήστες/παρακινεί τον δημιουργό του συνόλου δεδομένων.
- creator\_email λέει στους χρήστες την προτιμώμενη διεύθυνση ηλεκτρονικού ταχυδρομείου για την επικοινωνία με τον δημιουργό του συνόλου δεδομένων, για παράδειγμα αν έχουν ερωτήσεις σχετικά με το σύνολο δεδομένων.
- creator\_url δίνει στους χρήστες έναν τρόπο να μάθουν περισσότερα για τον δημιουργό.
- ERDDAP™ χρησιμοποιεί όλες αυτές τις πληροφορίες κατά την παραγωγή εγγράφων μεταδεδομένων FGDC και ISO 19115-2/19139 για κάθε σύνολο δεδομένων. Τα έγγραφα αυτά χρησιμοποιούνται συχνά από εξωτερικές υπηρεσίες αναζήτησης.
Παρακαλώ προσθέστε αυτές τις ιδιότητες στο παγκόσμιο σύνολο δεδομένων< addAttributes >.
<att name="creator\\_name">NOAA NMFS SWFSC ERD</att>
<att name="creator\\_email">erd.data@noaa.gov</att>
<att name="creator\\_url">https://www.pfeg.noaa.gov</att>
Αυτό είναι. Ελπίζω να μην ήταν πολύ δύσκολο.
Ζαρ
Από την έκδοση 2.25 ERDDAP™ μπορεί να διαβάσει τοπικά Αρχεία Zarr που χρησιμοποιούν Πίνακας EDD από αρχείαNc και EDDGrid Από αρχείαNc .
(Από τον Αύγουστο του 2019) Θα μπορούσαμε εύκολα να κάνουμε λάθος, αλλά δεν είμαστε ακόμα πεπεισμένοι ότι Ζαρ , ή παρόμοια συστήματα που διασπούν αρχεία δεδομένων σε μικρότερα κομμάτια, είναι μεγάλες λύσεις στο πρόβλημα της ERDDAP™ ανάγνωση δεδομένων αποθηκευμένων σε υπηρεσίες cloud όπως το Amazon AWS S3. Ο Zarr είναι μια μεγάλη τεχνολογία που έχει δείξει τη χρησιμότητά της σε διάφορες καταστάσεις, απλά δεν είμαστε σίγουροι ότι ERDDAP +S3 θα είναι μια από αυτές τις καταστάσεις. Κυρίως λέμε: πριν βιαστούμε να κάνουμε την προσπάθεια να αποθηκεύσουμε όλα τα δεδομένα μας στο Zarr, ας κάνουμε κάποιες εξετάσεις για να δούμε αν είναι στην πραγματικότητα μια καλύτερη λύση.
Τα προβλήματα με την πρόσβαση δεδομένων στο σύννεφο είναι λανθάνουσα (η καθυστέρηση για την πρώτη λήψη δεδομένων) και πρόσβαση σε επίπεδο αρχείων (αντί για πρόσβαση σε επίπεδο μπλοκ) . Ο Zarr λύνει το πρόβλημα πρόσβασης σε επίπεδο αρχείου, αλλά δεν κάνει τίποτα για την καθυστέρηση. Σε σύγκριση με τη λήψη του αρχείου (ώστε να μπορεί να διαβαστεί ως τοπικό αρχείο με πρόσβαση block-level) , Zarr μπορεί ακόμη και να επιδεινώσει το πρόβλημα λανθάνουσας ισχύος, επειδή, με Zarr, ανάγνωση ενός αρχείου περιλαμβάνει τώρα μια σειρά από πολλές κλήσεις για να διαβάσετε διαφορετικά μέρη του αρχείου (το καθένα με δική του καθυστέρηση) . Το πρόβλημα της καθυστέρησης μπορεί να λυθεί παραλληλίζοντας τα αιτήματα, αλλά αυτή είναι μια λύση υψηλότερου επιπέδου, όχι εξαρτώμενη από τον Ζαρρ.
Και με τον Ζαρρ. (όπως και με τις σχετικές βάσεις δεδομένων) , χάνουμε την ευκολία να έχουμε ένα αρχείο δεδομένων είναι ένα απλό, ενιαίο αρχείο που μπορείτε εύκολα να επαληθεύσετε την ακεραιότητα του, ή make/download ένα αντίγραφο του.
ERDDAP™ (από v2) έχει ένα σύστημα για τη διατήρηση μιας τοπικής κρύπτης αρχείων από μια πηγή URL (π.χ. S3) (βλέπε [<cacheFromUrl> και<cacheMaxGB>] (#Cachefromurl Από τον ουρανό) ). Και το νέο [<nThreads>] (#nthreads (στα Αγγλικά)) θα πρέπει να ελαχιστοποιούν το πρόβλημα της λανθάνουσας συχνότητας παραλληλίζοντας την ανάκτηση δεδομένων σε υψηλό επίπεδο.<cacheFromUrl> φαίνεται να λειτουργεί πολύ καλά για πολλά σενάρια. (Δεν είμαστε σίγουροι πόσο ωφέλιμοι<nThreads> είναι χωρίς περαιτέρω δοκιμές.) Παραδεχόμαστε ότι δεν έχουμε κάνει δοκιμές συγχρονισμού σε μια περίπτωση AWS με μια καλή σύνδεση δικτύου, αλλά έχουμε δοκιμαστεί επιτυχώς με διάφορες απομακρυσμένες πηγές URL αρχείων. Και... ERDDAP Σ<λανθάνουσα μνήμηFromUrl> λειτουργεί με οποιοδήποτε τύπο αρχείου δεδομένων (π.χ., .nc , .hdf .csv, .jsonlCSV ) , ακόμη και αν εξωτερικά συμπιεσμένα (π.χ., .gz ) , χωρίς αλλαγές στα αρχεία (π.χ., επαναγραφή τους ως συλλογές Zarr) .
Είναι πιθανό ότι διαφορετικά σενάρια θα ευνοήσουν διαφορετικές λύσεις, π.χ., μόνο που χρειάζεται να διαβάσετε μέρος ενός αρχείου μία φορά (Ο Ζαρ θα νικήσει.) , vs. πρέπει να διαβάσετε όλα τα αρχεία μία φορά, vs. πρέπει να διαβάσετε μέρος ή όλο το αρχείο επανειλημμένα (<cheapFromUrl> θα κερδίσει).
Κυρίως λέμε: πριν βιαστούμε να κάνουμε την προσπάθεια να αποθηκεύσουμε όλα τα δεδομένα μας στο Zarr, ας κάνουμε κάποιες εξετάσεις για να δούμε αν είναι στην πραγματικότητα μια καλύτερη λύση.
-
- Ναι.
Κατάλογος συνόλων δεδομένων τύπων
Εάν χρειάζεστε βοήθεια για την επιλογή του σωστού τύπου συνόλου δεδομένων, δείτε Επιλογή του τύπου συνόλου δεδομένων .
Οι τύποι συνόλων δεδομένων εμπίπτουν σε δύο κατηγορίες. ( Γιατί; )
EDDGrid
- ** EDDGrid ** Τα σύνολα δεδομένων χειρίζονται δεδομένα με πλέγμα.
- Μέσα EDDGrid Τα σύνολα δεδομένων, οι μεταβλητές δεδομένων είναι πολυδιάστατες συστοιχίες δεδομένων.
- Πρέπει να υπάρχει μια μεταβλητή άξονα για κάθε διάσταση. Οι μεταβλητές του άξονα ΠΡΕΠΕΙ να προσδιορίζονται με τη σειρά που τις χρησιμοποιούν οι μεταβλητές δεδομένων.
- Μέσα EDDGrid σύνολα δεδομένων, όλες οι μεταβλητές δεδομένων ΠΡΕΠΕΙ να χρησιμοποιούν (μετοχή) όλες τις μεταβλητές του άξονα. ( Γιατί; Κι αν δεν το κάνουν; ) Νέο in ERDDAP™ έκδοση 2.29.0 EDDGrid FromNcFiles είναι πειραματική υποστήριξη για τις μεταβλητές δεδομένων που δεν υποστηρίζουν όλες τις μεταβλητές άξονα (ή όπως κάποιοι το έχουν ονομάσει 1D και 2D δεδομένα στο ίδιο σύνολο δεδομένων) .
- Ταξινόμηση τιμών διάστασης - Σε όλα EDDGrid σύνολα δεδομένων, κάθε διάσταση πρέπει να είναι ταξινομημένη σειρά (αύξουσα ή φθίνουσα) . Το καθένα μπορεί να είναι ακανόνιστα τοποθετημένο. Δεν μπορεί να υπάρχουν δεσμοί. Αυτή είναι η απαίτηση της Πρότυπο μεταδεδομένων CF . Αν οι τιμές οποιασδήποτε διάστασης δεν είναι ταξινομημένες, το σύνολο δεδομένων δεν θα φορτωθεί και ERDDAP™ θα προσδιορίσει την πρώτη μη ταξινομημένη τιμή στο αρχείο καταγραφής, bigParentΚατάλογος /logs/log.txt .
Μερικές υποκατηγορίες έχουν πρόσθετους περιορισμούς (κυρίως, EDDGrid ΣυγκέντρωσηΗ υπάρχουσα διάσταση απαιτεί η εξωτερική (αριστερότερη, πρώτη) διάσταση να ανεβαίνει.
Οι μη ταξινομημένες τιμές διάστασης σχεδόν πάντα δείχνουν ένα πρόβλημα με το σύνολο δεδομένων πηγής. Αυτό συμβαίνει συνηθέστερα όταν ένα λανθασμένο ή ακατάλληλο αρχείο περιλαμβάνεται στη συγκέντρωση, η οποία οδηγεί σε μια μη ταξινομημένη χρονική διάσταση. Για την επίλυση αυτού του προβλήματος, δείτε το μήνυμα σφάλματος στο ERDDAP™ αρχείο log.txt για να βρείτε την τιμή ώρας που προσβάλλει. Στη συνέχεια, κοιτάξτε στα πηγαία αρχεία για να βρείτε το αντίστοιχο αρχείο (ή μία πριν ή μία μετά) Αυτό δεν ανήκει στη συγκέντρωση.
- Δείτε την πληρέστερη περιγραφή του EDDGrid μοντέλο δεδομένων .
- Η EDDGrid Οι τύποι συνόλου δεδομένων είναι:
- EDDGrid Από AudioFiles συγκεντρωτικά δεδομένα από μια ομάδα τοπικών αρχείων ήχου.
- EDDGrid Από το Νταπ χειρίζεται δεδομένα με πλέγμα από DAP Διακομιστές.
- EDDGrid Από τον πίνακα EDD σας επιτρέπει να μετατρέψετε ένα σύνολο δεδομένων πίνακα σε ένα πλέγμα σύνολο δεδομένων.
- EDDGrid Από τοErddap χειρίζεται δεδομένα με πλέγμα από ένα απομακρυσμένο ERDDAP .
- EDDGrid Από το Etopo Απλά χειρίζεται τα ενσωματωμένα δεδομένα τοπογραφίας ETOPO.
- EDDGrid Από αρχεία είναι η σούπερ τάξη όλων EDDGrid Από τα μαθήματα Αρχείων.
- EDDGrid FromMergeIRΑρχεία συγκεντρωτικά δεδομένα από μια ομάδα τοπικών συνεργατών .gz αρχεία.
- EDDGrid Από αρχείαNc συγκεντρωτικά δεδομένα από μια ομάδα τοπικών NetCDF (v3 ή v4) .nc και σχετικά αρχεία.
- EDDGrid Από αρχείαNcUnpacked είναι μια παραλλαγή εάν EDDGrid FromNcFiles που συγκεντρώνει επίσης δεδομένα από μια ομάδα τοπικών NetCDF (v3 ή v4) .nc και σχετικά αρχεία, τα οποία ERDDAP™ ξεπακετάρει σε χαμηλό επίπεδο.
- EDDGrid LonPM180 τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιού EDDGrid έτσι ώστε να βρίσκονται στο εύρος -180 έως 180.
- EDDGrid Λον0360 τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιού EDDGrid έτσι ώστε να είναι στην εμβέλεια 0 έως 360.
- EDDGrid Παράπλευρο αθροίσματα δύο ή περισσότερα EDDGrid Datasets δίπλα-δίπλα.
- EDDGrid ΣυγκέντρωσηΥπάρχουσας διάστασης αθροίσματα δύο ή περισσότερα EDDGrid σύνολα δεδομένων, καθένα από τα οποία έχει διαφορετικό φάσμα τιμών για την πρώτη διάσταση, αλλά πανομοιότυπες τιμές για τις άλλες διαστάσεις.
- EDDGrid Αντιγραφή μπορεί να κάνει ένα τοπικό αντίγραφο ενός άλλου EDDGrid Είναι δεδομένα και εξυπηρετεί δεδομένα από το τοπικό αντίγραφο.
- Όλα EDDGrid σύνολα δεδομένων υποστηρίζουν μια ρύθμιση nThreads, η οποία λέει ERDDAP™ πόσα νήματα να χρησιμοποιήσετε όταν ανταποκρίνεται σε μια αίτηση. Δείτε το nThreads τεκμηρίωση για λεπτομέρειες.
Πίνακας EDD
- Πίνακας EDD Τα σύνολα δεδομένων χειρίζονται δεδομένα πίνακα.
- Τα δεδομένα πίνακα μπορούν να αναπαρασταθούν ως πίνακας βάσης δεδομένων με σειρές και στήλες. Κάθε στήλη (μεταβλητή δεδομένων) έχει ένα όνομα, ένα σύνολο χαρακτηριστικών, και αποθηκεύει μόνο έναν τύπο δεδομένων. Κάθε γραμμή έχει μια παρατήρηση (ή ομάδα συναφών τιμών) . Η πηγή δεδομένων μπορεί να έχει τα δεδομένα σε μια διαφορετική δομή δεδομένων, μια πιο περίπλοκη δομή δεδομένων, ή/και πολλαπλά αρχεία δεδομένων, αλλά ERDDAP™ πρέπει να είναι σε θέση να ισοπεδώσει τα δεδομένα πηγής σε έναν πίνακα που μοιάζει με βάση δεδομένων, προκειμένου να παρουσιάσει τα δεδομένα ως σύνολο δεδομένων πίνακα στους χρήστες της ERDDAP .
- Δείτε την πληρέστερη περιγραφή του Πρότυπο δεδομένων EDDTable .
- Οι τύποι συνόλου δεδομένων EDDTable είναι:
- Πίνακας EDD από όλα τα σύνολα δεδομένων είναι ένα σύνολο δεδομένων υψηλότερου επιπέδου το οποίο έχει πληροφορίες σχετικά με όλα τα άλλα σύνολα δεδομένων στο σας ERDDAP .
- Πίνακας EDD από αρχεία Ascii αθροίζει τα δεδομένα από τα αρχεία δεδομένων ASCII που έχουν χωριστεί από κόμμα, καρτέλα, ημικολόν ή χώρο.
- Πίνακας EDD από την υπηρεσία Ascii είναι η σούπερ τάξη όλων των τάξεων EDDTableFromAsciiService.
- Πίνακας EDD από AsciiServiceNOS χειρίζεται τα δεδομένα από μερικά από τα NOAA Υπηρεσίες διαδικτύου NOS.
- Πίνακας EDD από αρχεία Audio συγκεντρωτικά δεδομένα από μια ομάδα τοπικών αρχείων ήχου.
- Πίνακας EDD από AwsXmlΑρχεία συγκεντρωτικά δεδομένα από ένα σύνολο Αυτόματων Μετεωρολογικών Σταθμών (AWS) Αρχεία XML.
- Πίνακας EDD από την Κασάνδρα χειρίζεται τα στοιχεία πίνακα από έναν πίνακα Κασσάνδρα.
- Πίνακας EDD από αρχεία ColumnarAscii συγκεντρωτικά δεδομένα από αρχεία δεδομένων ASCII πίνακα με στήλες δεδομένων σταθερού πλάτους.
- Πίνακας EDD από το DapSequence χειρίζεται τα στοιχεία πίνακα από DAP Διακομιστές ακολουθίας.
- Πίνακας EDD από τη βάση δεδομένων χειρίζεται τα στοιχεία πίνακα από έναν πίνακα βάσης δεδομένων.
- Πίνακας EDD από EDDGrid σας επιτρέπει να δημιουργήσετε ένα σύνολο δεδομένων EDDTable από ένα EDDGrid Σύστημα δεδομένων.
- EDD TableFromErddap χειρίζεται δεδομένα πίνακα από ένα απομακρυσμένο ERDDAP .
- Πίνακας EDD από αρχείοNames δημιουργεί ένα σύνολο δεδομένων από πληροφορίες σχετικά με μια ομάδα αρχείων στο σύστημα αρχείων του διακομιστή, αλλά δεν εξυπηρετεί δεδομένα από μέσα από τα αρχεία.
- Πίνακας EDD από αρχεία είναι η σούπερ τάξη όλων των τάξεων EDDTableFrom...Files.
- Πίνακας EDDFromHttpGet λέ ERDDAP Μόνο το σύστημα εισαγωγής δεδομένων καθώς και η εξαγωγή δεδομένων.
- Πίνακας EDD από Hyrax Αρχεία (ΙΔΙΑΙΤΕΡΟ) συγκεντρωτικά δεδομένα από αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις εξυπηρετούνται από ένα Hyrax OPeNDAP εξυπηρετητής .
- Πίνακας EDD από αρχεία InvalidCRA συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία που χρησιμοποιούν μια συγκεκριμένη, άκυρη, παραλλαγή του CF DSG Contigoul Ragged Array (ΟΜΑΔΑ) αρχεία. Αν και ERDDAP™ υποστηρίζει αυτόν τον τύπο αρχείου, είναι ένας μη έγκυρος τύπος αρχείου που κανείς δεν πρέπει να αρχίσει να χρησιμοποιεί. Ομάδες που χρησιμοποιούν αυτόν τον τύπο αρχείου ενθαρρύνονται έντονα να χρησιμοποιούν ERDDAP™ να δημιουργήσει έγκυρα αρχεία CF DSG CRA και να σταματήσει τη χρήση αυτών των αρχείων.
- Πίνακας EDD από αρχεία JsonlCSV συγκεντρωτικά δεδομένα από JSON Γραμμές αρχείων CSV .
- Πίνακας EDD από αρχεία MultidimNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις.
- Πίνακας EDDFromMqtt κατασκευάζει ένα σύνολο δεδομένων βασισμένο σε μηνύματα MQTT. Σημειώστε ότι η τεκμηρίωση είναι σε μια ειδική σελίδα. Σημειώστε ότι υπάρχουν πολλές ομοιότητες με Πίνακας EDDFromHttpGet .
- Πίνακας EDD από αρχείαNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις. Είναι καλό να συνεχίσετε να χρησιμοποιείτε αυτόν τον τύπο συνόλου δεδομένων για τα υπάρχοντα σύνολα δεδομένων, αλλά για τα νέα σύνολα δεδομένων συνιστούμε τη χρήση του EDDTableFromMultidimNcFiles αντί.
- Πίνακας EDDFromNcCFΑρχεία συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία που χρησιμοποιούν μία από τις μορφές αρχείων που καθορίζονται από την ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Συμβάσεις. Αλλά για αρχεία που χρησιμοποιούν μια από τις πολυδιάστατες παραλλαγές CF DSG, χρήση Πίνακας EDD από αρχεία MultidimNc Αντ' αυτού.
- Πίνακας EDDFromNccsvFiles συγκεντρωτικά δεδομένα από NCCSV Αρχεία ASCII .csv.
- Πίνακας EDDFromNOS (ΙΔΙΑΙΤΕΡΟ) χειρίζεται τα στοιχεία πίνακα από τους διακομιστές NOS XML.
- Πίνακας EDDFromOBIS χειρίζεται τα στοιχεία πίνακα από τους διακομιστές OBIS.
- Πίνακας EDDFromParquetFiles χειρίζεται τα δεδομένα από Παρκέ .
- Πίνακας EDD από SOS χειρίζεται τα στοιχεία πίνακα από SOS Διακομιστές.
- Πίνακας EDD από τα αρχεία Thredds (ΙΔΙΑΙΤΕΡΟ) συγκεντρωτικά δεδομένα από αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις εξυπηρετούνται από ένα ΤΡΙΤΕΣ OPeNDAP εξυπηρετητής .
- Πίνακας EDD από WFS Αρχεία (ΙΔΙΑΙΤΕΡΟ) κάνει ένα τοπικό αντίγραφο όλων των δεδομένων από ένα ArcGIS Εξυπηρετητής χαρτών WFS διακομιστής έτσι ώστε τα δεδομένα να μπορούν στη συνέχεια να διατηρούνται γρήγορα ERDDAP™ χρήστες.
- Πίνακας EDDAggregateRows μπορεί να δημιουργήσει ένα σύνολο δεδομένων EDDTable από μια ομάδα συνόλων δεδομένων EDDTable.
- EDDTableCopy μπορεί να κάνει ένα τοπικό αντίγραφο πολλών τύπων συνόλων δεδομένων EDDTable και στη συνέχεια να διατηρήσει τα δεδομένα γρήγορα από το τοπικό αντίγραφο.
-
- Ναι.
Λεπτομερείς περιγραφές τύπων συνόλου δεδομένων
EDDGrid Από το Νταπ
** EDDGrid Από το Νταπ** χειρίζεται μεταβλητές καννάβου από DAP Διακομιστές.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Μπορείτε να συγκεντρώσετε τις πληροφορίες που χρειάζεστε για να τροποποιήσετε αυτό ή να δημιουργήσετε το δικό σας XML για ένα EDDGrid FromDap dataset κοιτάζοντας τα αρχεία DDS και DAS του συνόλου δεδομένων πηγής στον browser σας (με την προσθήκη .das και .dds στο sourceUrl , για παράδειγμα, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGrid Από Dap μπορεί να πάρει τα δεδομένα από οποιαδήποτε πολυδιάστατη μεταβλητή από ένα DAP Διακομιστής δεδομένων. (Προηγουμένως, EDDGrid Το FromDap περιορίστηκε στις μεταβλητές που έχουν οριστεί ως "grid", αλλά αυτό δεν είναι πλέον απαίτηση.)
- Ταξινόμηση τιμών διάστασης - Οι τιμές για κάθε διάσταση ΠΡΕΠΕΙ να είναι ταξινομημένες (αύξουσα ή φθίνουσα) . Οι τιμές μπορούν να είναι ακανόνιστα διαχωρισμένες. Δεν μπορεί να υπάρχουν δεσμοί. Αυτή είναι η απαίτηση της Πρότυπο μεταδεδομένων CF . Αν οι τιμές οποιασδήποτε διάστασης δεν είναι ταξινομημένες, το σύνολο δεδομένων δεν θα φορτωθεί και ERDDAP™ θα προσδιορίσει την πρώτη μη ταξινομημένη τιμή στο αρχείο καταγραφής, bigParentΚατάλογος /logs/log.txt .
Οι μη ταξινομημένες τιμές διάστασης σχεδόν πάντα δείχνουν ένα πρόβλημα με το σύνολο δεδομένων πηγής. Αυτό συμβαίνει συνηθέστερα όταν ένα λανθασμένο ή ακατάλληλο αρχείο περιλαμβάνεται στη συγκέντρωση, η οποία οδηγεί σε μια μη ταξινομημένη χρονική διάσταση. Για την επίλυση αυτού του προβλήματος, δείτε το μήνυμα σφάλματος στο ERDDAP™ αρχείο log.txt για να βρείτε την τιμή ώρας που προσβάλλει. Στη συνέχεια, κοιτάξτε στα πηγαία αρχεία για να βρείτε το αντίστοιχο αρχείο (ή μία πριν ή μία μετά) Αυτό δεν ανήκει στη συγκέντρωση.
EDDGrid Από σκελετό Dap XML
<dataset type="EDDGridFromDap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDGrid Από τον πίνακα EDD
** EDDGrid Από τον πίνακα EDD** σας επιτρέπει να μετατρέψετε ένα σύνολο δεδομένων πίνακα EDDTable σε ένα EDDGrid δικτυωμένο σύνολο δεδομένων. Να το θυμάσαι αυτό. ERDDAP™ αντιμετωπίζει τα σύνολα δεδομένων όπως είτε σύνολα δεδομένων με πλέγμα (υποκλάσεις EDDGrid ) ή σύνολα δεδομένων πίνακα (υποκλάσεις του πίνακα EDD) .
- Κανονικά, αν έχετε grided δεδομένα, μπορείτε απλά να ρυθμίσετε ένα EDDGrid σύνολο δεδομένων άμεσα. Μερικές φορές αυτό δεν είναι δυνατόν, για παράδειγμα, όταν έχετε τα δεδομένα αποθηκευμένα σε μια σχεσιακή βάση δεδομένων που ERDDAP™ μπορεί να έχει πρόσβαση μόνο μέσω EDDTableFromDatabase. EDDGrid Από την τάξη EDDTable σας επιτρέπει να διορθώσετε την κατάσταση.
- Προφανώς, τα δεδομένα στο υποκείμενο σύνολο δεδομένων EDDTable πρέπει να είναι (Βασικά) δικτυωμένα δεδομένα, αλλά σε μορφή πίνακα. Για παράδειγμα, το σύνολο δεδομένων EDDTable μπορεί να έχει δεδομένα CTD: μετρήσεις του ρεύματος προς ανατολάς και προς βορρά, σε διάφορα βάθη, αρκετές φορές. Δεδομένου ότι τα βάθη είναι τα ίδια σε κάθε σημείο του χρόνου, EDDGrid FromEDDTable μπορεί να δημιουργήσει ένα πλέγμα σύνολο δεδομένων με ένα χρόνο και μια διάσταση βάθους που έχει πρόσβαση στα δεδομένα μέσω του υποκείμενου συνόλου δεδομένων EDDTable.
- Δημιουργία συνόλων δεδομένων Xml -- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Μπορείτε να συγκεντρώσετε τις πληροφορίες που χρειάζεστε για να βελτιώσετε το πρόχειρο σχέδιο.
- Χαρακτηριστικά πηγής -- Όπως συμβαίνει με όλους τους άλλους τύπους συνόλων δεδομένων, EDDGrid FromTable έχει την ιδέα ότι υπάρχουν παγκόσμια πηγή Χαρακτηριστικά και παγκόσμιο addAttributes (προσδιορίζονται στο datasets.xml ) , που συνδυάζονται για να κάνουν το παγκόσμιο συνδυασμένο Χαρακτηριστικά, που είναι αυτά που βλέπουν οι χρήστες. Για παγκόσμια πηγή Χαρακτηριστικά, EDDGrid FromEDDTable χρησιμοποιεί το παγκόσμιο συνδυασμένο Χαρακτηριστικά του υποκείμενου συνόλου δεδομένων EDDTable. (Αν το σκεφτείς για ένα λεπτό, είναι λογικό.)
Ομοίως, για κάθε axisVariable "και dataVariable Σ addAttributes , EDDGrid FromEDDTable χρησιμοποιεί το συνδυασμό της μεταβλητής Χαρακτηριστικά του υποκείμενου συνόλου δεδομένων EDDTable ως EDDGrid Από την πηγή της μεταβλητής EDDTable Χαρακτηριστικά. (Αν το σκεφτείς για ένα λεπτό, είναι λογικό.)
Κατά συνέπεια, εάν ο πίνακας EDD έχει καλά μεταδεδομένα, η EDDGrid FromEDDTable συχνά χρειάζεται πολύ λίγα addAttributes μεταδεδομένα -- μόνο μερικές αλλαγές εδώ και εκεί.
-
dataVariable έναντι axisVariable Σ... Ο υποκείμενος πίνακας EDD έχει μόνο dataVariable Σ. Α EDDGrid Το σύνολο δεδομένων FromEDDTable θα έχει κάποια axisVariable α (δημιουργήθηκε από κάποιο από τον πίνακα EDD dataVariable α) και μερικά dataVariable α (δημιουργήθηκε από τον υπόλοιπο πίνακα EDD dataVariable α) . Δημιουργία συνόλων δεδομένωνXml θα κάνει μια εικασία ως προς το ποιος πίνακας EDD dataVariable θα πρέπει να γίνει EDDGrid Από τον πίνακα EDD axisVariable Αλλά είναι απλά μια εικασία. Πρέπει να τροποποιήσετε την έξοδο του GenerateDatasetsXml για να καθορίσετε ποια dataVariable θα γίνει axisVariable s, και με ποια σειρά.
-
ΆξοναςValues-- Δεν υπάρχει τίποτα σχετικά με το υποκείμενο EDDTable να πει EDDGrid Από τον πίνακα EDD axisVariable s στην grided έκδοση του συνόλου δεδομένων, έτσι ΠΡΕΠΕΙ ΝΑ παρέχετε αυτές τις πληροφορίες για κάθε axisVariable μέσω ενός από αυτά τα χαρακτηριστικά:
- axelValues -- σας επιτρέπει να καθορίσετε μια λίστα των τιμών. Για παράδειγμα, <att name="axisValues" τύπος="διπλή λίστα" \>2, 2,5, 3, 3,5, 4</att> Σημείωση: Τύπος δεδομένων συν τη λέξη Λίστα. Επίσης, ο τύπος της λίστας (για παράδειγμα, διπλό) , ΠΡΕΠΕΙ να ταιριάζει με τα δεδομένα Τύπος της μεταβλητής στον πίνακα EDD και EDDGrid Από τα σύνολα δεδομένων του πίνακα EDD.
- axelValuesStartStrideStop -- σας επιτρέπει να καθορίσετε μια ακολουθία των τιμών τακτικής απόστασης προσδιορίζοντας τις τιμές έναρξης, διασκελισμού και διακοπής. Εδώ είναι ένα παράδειγμα που ισοδυναμεί με το παράδειγμα axisValues παραπάνω: <att name="axisValuesStartStrideStop" τύπος="διπλή λίστα" \>2, 0,5, 4</att> Και πάλι, σημειώστε τη χρήση ενός τύπου δεδομένων λίστας. Επίσης, ο τύπος της λίστας (για παράδειγμα, διπλό) , ΠΡΕΠΕΙ να ταιριάζει με τα δεδομένα Τύπος της μεταβλητής στον πίνακα EDD και EDDGrid Από τα σύνολα δεδομένων του πίνακα EDD.
Ενημέρωση -- Ακριβώς όπως δεν υπάρχει τρόπος για EDDGrid Από τον πίνακα EDD για τον καθορισμό των τιμών άξονα από τον πίνακα EDD αρχικά, δεν υπάρχει επίσης αξιόπιστος τρόπος για EDDGrid Από τον πίνακα EDD για τον καθορισμό από τον πίνακα EDD όταν οι τιμές άξονα έχουν αλλάξει (Ειδικότερα, όταν υπάρχουν νέες τιμές για τη χρονική μεταβλητή) . Επί του παρόντος, η μόνη λύση είναι να αλλάξει το χαρακτηριστικό άξοναValues datasets.xml και επαναφόρτωσε το σύνολο δεδομένων. Για παράδειγμα, θα μπορούσατε να γράψετε ένα σενάριο
- Αναζήτηση datasets.xml για datasetID =" το σύνολο δεδομένωνID " Οπότε δουλεύεις με το σωστό σύνολο δεδομένων.
- Αναζήτηση datasets.xml για την επόμενη εμφάνιση
η πηγή των μεταβλητώνName
Έτσι, εργάζεστε με τη σωστή μεταβλητή. - Αναζήτηση datasets.xml για την επόμενη εμφάνιση
<att name="axisValuesStartStrideStop" type="doubleList">
Οπότε ξέρεις τη θέση εκκίνησης της ετικέτας. 4. Αναζήτηση datasets.xml για την επόμενη εμφάνιση
</att>
ώστε να γνωρίζετε την τελική θέση των τιμών του άξονα. 5. Αντικατάσταση της παλιάς αρχής, διασκελισμός, διακοπή τιμών με τις νέες τιμές. 6. Επικοινώνησε με την URL σημαίας για να πει το σύνολο δεδομένων ERDDAP™ για να ξαναγεμίσει το σύνολο δεδομένων.
Αυτό δεν είναι ιδανικό, αλλά λειτουργεί.
- ακρίβεια -- Πότε EDDGrid FromEDDTable ανταποκρίνεται στο αίτημα ενός χρήστη για δεδομένα, μετακινεί μια σειρά δεδομένων από τον πίνακα απόκρισης EDDTable στο EDDGrid Δίκτυο απόκρισης. Για να γίνει αυτό, πρέπει να υπολογίσει αν οι τιμές "άξονα" σε μια δεδομένη σειρά στον πίνακα ταιριάζουν με κάποιο συνδυασμό τιμών άξονα στο πλέγμα. Για τους ακέραιους τύπους δεδομένων, είναι εύκολο να προσδιοριστεί αν δύο τιμές είναι ίσες. Αλλά για πλωτήρες και διπλάσια, αυτό φέρνει το τρομερό πρόβλημα των αριθμών κινητής υποδιαστολής δεν ταιριάζουν ακριβώς . (Για παράδειγμα, 0,2 έναντι 0, 199999999999996) . Στο (Προσπάθησε.) Ασχολήσου με αυτό, EDDGrid FromTable σας επιτρέπει να καθορίσετε ένα χαρακτηριστικό ακρίβειας για οποιοδήποτε από τα axisVariable s, που προσδιορίζει τον συνολικό αριθμό δεκαδικών ψηφίων που πρέπει να είναι πανομοιότυπα.
- Για παράδειγμα,<att name="Ακριβής" τύπος="int">5</att>
- Για διαφορετικούς τύπους μεταβλητών δεδομένων, υπάρχουν διαφορετικές προκαθορισμένες τιμές ακριβείας. Οι προεπιλεγμένες είναι συνήθως κατάλληλες. Αν δεν είναι, θα πρέπει να ορίσετε διαφορετικές τιμές.
- Για axisVariable ίνα χρόνος ή χρόνος Μεταβλητές γραμματοσήμων , η προεπιλογή είναι πλήρης ακρίβεια (ακριβή ταύτιση) .
- Για axisVariable s που είναι πλωτήρες, η προκαθορισμένη ακρίβεια είναι 5.
- Για axisVariable s που είναι διπλά, η προκαθορισμένη ακρίβεια είναι 9.
- Για axisVariable s που έχουν ακέραιους τύπους δεδομένων, EDDGrid FromEDDTable αγνοεί το χαρακτηριστικό ακρίβειας και χρησιμοποιεί πάντα πλήρη ακρίβεια (ακριβή ταύτιση) .
- ΠΡΟΕΙΔΟΠΟΙΗΣΗ! Κατά τη μετατροπή ενός κομματιού των δεδομένων πίνακα σε ένα κομμάτι των δεδομένων πλέγματος, εάν EDDGrid FromEDDTable δεν μπορεί να ταιριάζει με ένα EDDTable "axis" τιμή σε ένα από τα αναμενόμενα EDDGrid Τιμές άξονα του πίνακα απόEDD, EDDGrid Από τον πίνακα EDD σιωπηλά (χωρίς σφάλμα) Πετά τα δεδομένα από τη σειρά του πίνακα. Για παράδειγμα, μπορεί να υπάρχουν και άλλα δεδομένα (όχι στο πλέγμα) στο σύνολο δεδομένων EDDTable. (Και αν το βήμα > 1, δεν είναι προφανές να EDDGrid Από τον πίνακα ποιες τιμές άξονα είναι επιθυμητές τιμές και ποιες είναι αυτές που πρέπει να παραλειφθούν λόγω του διασκελισμού.) Έτσι, αν οι τιμές ακρίβειας είναι πολύ υψηλές, ο χρήστης θα δει τις τιμές που λείπουν στην απόκριση δεδομένων όταν υπάρχουν πραγματικά έγκυρες τιμές δεδομένων.
Αντιστρόφως, εάν οι τιμές ακριβείας είναι πολύ χαμηλές, EDDTable "axis" τιμές που δεν πρέπει να ταιριάζουν EDDGrid Από τις τιμές άξονα του πίνακα EDD θα (Εσφαλμένα) Ταιριάζουν.
Αυτά τα πιθανά προβλήματα είναι φρικτά, επειδή ο χρήστης παίρνει λάθος δεδομένα (ή ελλείπουσες τιμές) όταν θα πρέπει να πάρει τα σωστά δεδομένα (ή τουλάχιστον ένα μήνυμα σφάλματος) . Αυτό δεν είναι ελάττωμα. EDDGrid Από τον πίνακα. EDDGrid Ο πίνακας δεν μπορεί να λύσει αυτό το πρόβλημα. Το πρόβλημα είναι εγγενές στη μετατροπή των δεδομένων πίνακα σε δεδομένα πλέγματος (εκτός αν μπορούν να γίνουν άλλες υποθέσεις, αλλά δεν μπορούν να γίνουν εδώ.) . Από σένα εξαρτάται. ERDDAP™ διαχειριστής, προς δοκιμή σας EDDGrid Πίνακας απόEDD να εξασφαλιστεί ότι οι τιμές ακριβείας καθορίζονται για την αποφυγή αυτών των δυνητικών προβλημάτων.
Διάφραγμα
- Διάφραγμα -- Αυτό είναι ένα πολύ ασυνήθιστο είδος συνόλου δεδομένων. Δεδομένου ότι τα είδη των ερωτήσεων που μπορούν να γίνουν (τον οποίο διαχειρίζεται η εταιρεία) α EDDGrid σύνολο δεδομένων (που σχετίζονται με τις περιοχές και τα διασκελίσματα του axisVariable α) είναι πολύ διαφορετικές από τους τύπους των ερωτημάτων που μπορούν να γίνουν (τον οποίο διαχειρίζεται η εταιρεία) σύνολο δεδομένων του πίνακα EDD (μόνο που σχετίζονται με τα όρια ορισμένων μεταβλητών) , η απόδοση της EDDGrid Από τα σύνολα δεδομένων του πίνακα EDD θα διαφέρουν σε μεγάλο βαθμό ανάλογα με την ακριβή αίτηση που γίνεται και την ταχύτητα του υποκείμενου συνόλου δεδομένων του πίνακα EDD. Για αιτήματα που έχουν τιμή διασκελισμού > 1, EDDGrid Από τον πίνακα EDD μπορεί να ζητήσει από τον υποκείμενο πίνακα EDD για ένα σχετικά μεγάλο κομμάτι δεδομένων (σαν διασκελισμός=1) και στη συνέχεια να κοσκινίσει μέσα από τα αποτελέσματα, κρατώντας τα δεδομένα από ορισμένες σειρές και πετώντας τα δεδομένα από άλλους. Αν πρέπει να κοσκινίσει πολλά δεδομένα για να πάρει τα δεδομένα που χρειάζεται, το αίτημα θα πάρει περισσότερο χρόνο για να γεμίσει.
Εάν EDDGrid Από τον πίνακα EDD μπορεί να πει ότι θα υπάρχουν μεγάλα κενά (με σειρές ανεπιθύμητων δεδομένων) μεταξύ των γραμμών με τα επιθυμητά δεδομένα, EDDGrid Ο πίνακας FromEDDTable μπορεί να επιλέξει να κάνει διάφορες υποζητήσεις στον υποκείμενο πίνακα EDD αντί για ένα μεγάλο αίτημα, παραλείποντας έτσι τις ανεπιθύμητες σειρές δεδομένων στα μεγάλα κενά. Η ευαισθησία για την απόφαση αυτή ελέγχεται από το κενό<κενόThreshold> tag (προεπιλογή=1000 σειρές δεδομένων πηγής) . Ο καθορισμός χάσματοςThreshold σε μικρότερο αριθμό θα οδηγήσει στη δημιουργία συνόλου δεδομένων (γενικά) Κι άλλες αιτήσεις. Ο καθορισμός χάσματοςThreshold σε μεγαλύτερο αριθμό θα οδηγήσει στη δημιουργία συνόλου δεδομένων (γενικά) λιγότερες αιτήσεις.
Αν το κενόThreshold είναι πολύ μικρό, EDDGrid FromEDDTable θα λειτουργήσει πιο αργά, επειδή το πάνω μέρος των πολλαπλών αιτημάτων θα είναι μεγαλύτερη από το χρόνο που αποθηκεύεται με τη λήψη κάποιων υπερβολικών δεδομένων. Αν το κενόThreshold είναι πολύ μεγάλο, EDDGrid Ο πίνακας FromEDDTable θα λειτουργεί πιο αργά επειδή τόσο πολλά επιπλέον δεδομένα θα ανακτηθούν από τον πίνακα EDD, μόνο για να απορριφθούν. (Όπως ανακάλυψε η Goldilocks, η μέση είναι " ακριβώς δεξιά.) Τα γενικά έξοδα για διαφορετικούς τύπους συνόλων δεδομένων EDDTable ποικίλουν πολύ, έτσι ο μόνος τρόπος για να γνωρίζετε την πραγματική καλύτερη ρύθμιση για το σύνολο δεδομένων σας είναι μέσω πειραματισμού. Αλλά δεν θα πάει πάρα πολύ λάθος κολλήσει στην προεπιλογή.
Ένα απλό παράδειγμα είναι: Φανταστείτε ένα EDDGrid Από τον πίνακα με μόνο ένα axisVariable (χρόνο, με μέγεθος 100000) , ένα dataVariable (θερμοκρασία) , και το προεπιλεγμένο κενό
- Εάν ο χρήστης ζητήσει θερμοκρασία \[ 0💯5000 \] , ο διασκελισμός είναι 100 έτσι το μέγεθος του χάσματος είναι 99, το οποίο είναι λιγότερο από το κενόThreshold. Λοιπόν... EDDGrid Το FromTable θα υποβάλει μόνο ένα αίτημα στον EDDTable για όλα τα δεδομένα που απαιτούνται για το αίτημα (ισοδύναμο με τη θερμοκρασία \[ 0:5000 \] ) και πετάξτε όλες τις σειρές δεδομένων που δεν χρειάζονται.
- Εάν ο χρήστης ζητήσει θερμοκρασία \[ 0:2500:50000 \] , ότι ο διασκελισμός είναι 2500 έτσι ώστε το μέγεθος χάσμα είναι 2499, το οποίο είναι μεγαλύτερο από το κενόThreshold. Λοιπόν... EDDGrid Ο πίνακας FromTable θα υποβάλει ξεχωριστά αιτήματα στον πίνακα EDD που είναι ισοδύναμα με τη θερμοκρασία \[ 0 \] , θερμοκρασία \[ 2500 \] , θερμοκρασία \[ 5000 \] .
Ο υπολογισμός του μεγέθους του κενού είναι πιο περίπλοκος όταν υπάρχουν πολλαπλοί άξονες.
Για κάθε αίτημα χρήστη, EDDGrid ΑπόEDDTable εκτυπώσεις διαγνωστικά μηνύματα που σχετίζονται με αυτό στο log.txt Αρχείο.
- Εάν [<logLevel>] (#loglevel) μέσα datasets.xml έχει οριστεί για πληροφορίες, αυτό εκτυπώνει ένα μήνυμα όπως \* nOuterAxes=1 of 4 nOuterΑιτήσεις=22 Εάν nOuterAxes=0, το κενόThreshold δεν ξεπεράστηκε και μόνο ένα αίτημα θα υποβληθεί στον πίνακα EDD. Εάν nOuterAxes>0, ξεπεράστηκε το κενόThreshold και nOuterΑίτηση θα γίνει στο EDDTable, που αντιστοιχεί σε κάθε ζητούμενο συνδυασμό του αριστερού nOuterAxes. Για παράδειγμα, εάν το σύνολο δεδομένων έχει 4 axisVariable s και dataVariable s όπως ανατολικά \[ χρόνος \] \[ γεωγραφικό πλάτος \] \[ γεωγραφικό μήκος \] \[ βάθος \] , το αριστερό (πρώτη) ο άξονας μεταβλητός είναι ο χρόνος.
- Εάν<logLevel> μέσα datasets.xml είναι ρυθμισμένο σε όλους, πρόσθετες πληροφορίες γράφεται στο αρχείο log.txt.
EDDGrid Σκελετός πίνακα απόEDDD XML
<dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromEDDTable, this only works if the underlying EDDTable
supports updateEveryNMillis. -->
<gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
</dataset>
EDD* από ERDDAP
** EDDGrid Από τοErddap** χειρίζεται δεδομένα με πλέγμα από ένα απομακρυσμένο ERDDAP™ Διακομιστής. EDD TableFromErddap χειρίζεται δεδομένα πίνακα από ένα απομακρυσμένο ERDDAP™ Διακομιστής.
- EDDGrid ΑπόErddap και EDDTableFromErddap συμπεριφέρονται διαφορετικά από όλους τους άλλους τύπους συνόλων δεδομένων στο ERDDAP .
- Όπως και άλλοι τύποι συνόλων δεδομένων, αυτά τα σύνολα δεδομένων παίρνουν πληροφορίες για το σύνολο δεδομένων από την πηγή και το κρατούν στη μνήμη.
- Όπως και άλλοι τύποι συνόλων δεδομένων, όταν ERDDAP™ αναζητήσεις για σύνολα δεδομένων, εμφανίζει τη φόρμα πρόσβασης δεδομένων ( * datasetID * .html) , ή εμφανίζει τη φόρμα Make A Graph ( * datasetID * . γράφημα) , ERDDAP™ χρησιμοποιεί τις πληροφορίες σχετικά με το σύνολο δεδομένων που βρίσκεται στη μνήμη.
- EDDGrid Από το Erddap και τον πίνακα EDD FromErddap είναι η βάση για δίκτυα/συσκευές/ομοσπονδίες του ERDDAP s, τα οποία διανέμουν αποτελεσματικά τη χρήση ΚΜΕ (κυρίως για την κατασκευή χαρτών) , χρήση μνήμης, αποθήκευση συνόλου δεδομένων, και χρήση εύρους ζώνης ενός μεγάλου κέντρου δεδομένων.
Ανακατεύθυνση
- Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, όταν ERDDAP™ λαμβάνει αίτημα για δεδομένα ή εικόνες από αυτά τα σύνολα δεδομένων, ERDDAP ανακατευθύνσεις την αίτηση στο τηλεχειριστήριο ERDDAP™ Διακομιστής. Το αποτέλεσμα είναι:
- Αυτό είναι πολύ αποτελεσματικό. (ΚΜΕ, μνήμη και εύρος ζώνης) , γιατί διαφορετικά
- Το σύνθετο ERDDAP™ πρέπει να αποστείλει το αίτημα στο άλλο ERDDAP™ (που απαιτεί χρόνο) .
- Το άλλο ERDDAP™ πρέπει να πάρει τα δεδομένα, αναδιαμόρφωση σε αυτό, και να διαβιβάσει τα δεδομένα στο σύνθετο ERDDAP .
- Το σύνθετο ERDDAP™ πρέπει να λάβει τα δεδομένα (χρήση εύρους ζώνης) , αναδιαμόρφωση σε αυτό (χρήση ΚΜΕ και μνήμης) , και να διαβιβάσει τα δεδομένα στο χρήστη (χρήση εύρους ζώνης) . Με ανακατευθύνοντας το αίτημα και επιτρέποντας το άλλο ERDDAP™ για να στείλετε την απάντηση απευθείας στο χρήστη, το σύνθετο ERDDAP™ Ουσιαστικά δεν ξοδεύει καθόλου χρόνο CPU, μνήμη ή εύρος ζώνης κατόπιν αιτήματος.
- Η ανακατεύθυνση είναι διαφανής στον χρήστη ανεξάρτητα από το λογισμικό του πελάτη (περιηγητής ή οποιοδήποτε άλλο λογισμικό ή εργαλείο γραμμής εντολών) .
- Αυτό είναι πολύ αποτελεσματικό. (ΚΜΕ, μνήμη και εύρος ζώνης) , γιατί διαφορετικά
- Μπορείς να καταλάβεις. ERDDAP™ να μην ανακατευθύνει οποιαδήποτε αιτήματα χρήστη με τη ρύθμιση<ανακατευθύνει > false</redirect>, αλλά αυτό αναιρεί τα περισσότερα από τα πλεονεκτήματα του ...Από το σύνολο δεδομένων Erddap (κυρίως, διασπορά του φορτίου στο μπροστινό άκρο ERDDAP™ στο απομακρυσμένο/υποστηρικτικό σύστημα ERDDAP ) .
Συνδρομές
Κανονικά, όταν EDDGrid Από το Erddap και τον πίνακα EDD Από το Erddap (οπ) φορτωμένο σε σας ERDDAP , προσπαθούν να προσθέσουν μια συνδρομή στο απομακρυσμένο σύνολο δεδομένων μέσω του απομακρυσμένου ERDDAP Σύστημα συνδρομής ηλεκτρονικού ταχυδρομείου/URL. Έτσι, κάθε φορά που αλλάζει το απομακρυσμένο σύνολο δεδομένων, το απομακρυσμένο ERDDAP™ Εpiικοινωνεί με το σύνολο δεδομένων URL σημαίας πάνω σας ERDDAP™ έτσι ώστε το τοπικό σύνολο δεδομένων να επαναφορτώνεται το συντομότερο δυνατόν και ώστε το τοπικό σύνολο δεδομένων να είναι πάντα απόλυτα ενημερωμένο και να μιμείται το απομακρυσμένο σύνολο δεδομένων. Έτσι, την πρώτη φορά που αυτό συμβαίνει, θα πρέπει να πάρετε ένα email ζητώντας να επικυρώσετε τη συνδρομή. Ωστόσο, εάν το τοπικό ERDDAP™ δεν μπορεί να στείλει ένα email ή αν το τηλεχειριστήριο ERDDAP Το σύστημα συνδρομής email/URL δεν είναι ενεργό, θα πρέπει να στείλετε email στο απομακρυσμένο ERDDAP™ Διαχειριστής και να ζητήσει να προσθέσει χειροκίνητα [<onChange>] (#αλλαγή) ...</onChange> ετικέτες σε όλα τα σχετικά σύνολα δεδομένων για να καλέσετε το σύνολο δεδομένων σας σύνολο δεδομένων URL σημαιών . Δες το. ERDDAP™ ημερήσια αναφορά για μια λίστα setDataset Σημαία URLs, αλλά απλά στείλτε αυτά για EDDGrid Από τα σύνολα δεδομένων Erddap και EDDTableFromErddap στο απομακρυσμένο ERDDAP™ Διευθυντής.
Δεν δουλεύει; Τα τοπικά σύνολα δεδομένων σας δεν παραμένουν σε συγχρονισμό με τα απομακρυσμένα σύνολα δεδομένων; Αρκετά πράγματα πρέπει όλα να λειτουργούν σωστά για να λειτουργήσει αυτό το σύστημα έτσι ώστε τα σύνολα δεδομένων σας να παραμείνουν ενημερωμένα. Ελέγξτε κάθε ένα από αυτά τα πράγματα με τη σειρά:
- Το δικό σου ERDDAP™ πρέπει να είναι σε θέση να στείλει μηνύματα ηλεκτρονικού ταχυδρομείου. Δείτε τις ρυθμίσεις email στην εγκατάσταση σας.xml.
- Γενικά (αλλά όχι πάντα) , σου ERDDAP Σ<βάσηUrl> και<βάσηHttpsUrl> δεν πρέπει να έχει αριθμό θύρας (π.χ., :8080, :8443) . Εάν ναι, χρησιμοποιήστε ένα μεσολάβηση να αφαιρέσετε το λιμάνι από το Url.
- Στην εγκατάσταση σας.xml,<συνδρομητήςToRemoteErddapDataset> πρέπει να γίνει πραγματικότητα.
- Όταν η τοπική αστυνομία... Το σύνολο δεδομένων FromErddap επαναφορτώνεται, θα πρέπει να στείλει ένα αίτημα στο τηλεχειριστήριο ERDDAP™ να εγγραφείτε στο απομακρυσμένο σύνολο δεδομένων. Κοίτα στο ημερολόγιο για να δεις αν συμβαίνει αυτό.
- Θα πρέπει να πάρετε ένα email ζητώντας σας να επικυρώσετε το αίτημα συνδρομής.
- Πρέπει να κάνετε κλικ στο σύνδεσμο σε αυτό το email για να επικυρώσετε το αίτημα συνδρομής.
- Το απομακρυσμένο ERDDAP™ θα πρέπει να πούμε ότι η επικύρωση ήταν επιτυχής. Οποιαδήποτε στιγμή, μπορείτε να ζητήσετε ένα email από το τηλεχειριστήριο ERDDAP™ με κατάλογο των εκκρεμών και έγκυρων συνδρομών σας. Βλέπε το έντυπο στο απομακρυσμένη βάσηErddapName Ουρλ /erddap/ subscriptions/list.html .
- Όταν το απομακρυσμένο σύνολο δεδομένων αλλάζει (π.χ., λαμβάνει πρόσθετα δεδομένα) , το απομακρυσμένο ERDDAP™ θα πρέπει να προσπαθήσετε να επικοινωνήσετε με το flagURL για σας ERDDAP . Δεν μπορείς να το ελέγξεις, αλλά μπορείς να ρωτήσεις τον διαχειριστή του τηλεχειριστηρίου. ERDDAP™ Για να το ελέγξω αυτό.
- Το δικό σου ERDDAP™ θα πρέπει να λάβει αίτηση για τον καθορισμό της εν λόγω σημαίας. Δείτε στο log.txt σας για "setDatasetFlag.txt?" αίτημα (α) και δείτε αν υπάρχει κάποιο μήνυμα σφάλματος που σχετίζεται με τις αιτήσεις.
- Το δικό σου ERDDAP™ θα πρέπει στη συνέχεια να προσπαθήσουμε να επαναφορτώσουμε το σύνολο δεδομένων (Ίσως όχι αμέσως, αλλά αμέσως.) .
Ενημέρωση max (χρόνος) ♪ ♪
EDDGrid /TableFromErddap datasets αλλάζει τις αποθηκευμένες πληροφορίες τους μόνο για κάθε σύνολο δεδομένων πηγής όταν το σύνολο δεδομένων πηγή είναι " επαναφόρτωση και κάποιες αλλαγές μεταδεδομένων (π.χ. η μεταβλητή του χρόνου actual\_range ) , με τον τρόπο αυτό προβαίνει σε κοινοποίηση συνδρομής. Εάν το σύνολο δεδομένων πηγής έχει δεδομένα που αλλάζουν συχνά (για παράδειγμα, νέα δεδομένα κάθε δευτερόλεπτο) και χρησιμοποιεί το " ενημέρωση" σύστημα για την παρατήρηση συχνών αλλαγών στα υποκείμενα δεδομένα, EDDGrid /TableFromErddap δεν θα ενημερωθεί σχετικά με αυτές τις συχνές αλλαγές μέχρι το επόμενο σύνολο δεδομένων " επαναφόρτωση", έτσι ώστε η EDDGrid /TableFromErddap δεν θα είναι απολύτως ενημερωμένο. Μπορείτε να ελαχιστοποιήσετε αυτό το πρόβλημα αλλάζοντας το σύνολο δεδομένων της πηγής<reloadEveryNminutes> σε μικρότερη τιμή (60; 15;) Έτσι ώστε να υπάρχουν περισσότερες κοινοποιήσεις συνδρομής για να πληροφορηθεί το EDDGrid /TableFromErddap για να ενημερώσει τις πληροφορίες του σχετικά με το σύνολο δεδομένων πηγή.
Ή, αν το σύστημα διαχείρισης δεδομένων σας γνωρίζει πότε το σύνολο δεδομένων πηγή έχει νέα δεδομένα (π.χ., μέσω σεναρίου που αντιγράφει ένα αρχείο δεδομένων στη θέση του) , και αν αυτό δεν είναι πολύ συχνό (π.χ. κάθε 5 λεπτά, ή λιγότερο συχνές) Υπάρχει καλύτερη λύση.
- Μην το χρησιμοποιείς.<updateEveryNMillis> για να κρατάτε τα δεδομένα της πηγής ενημερωμένα.
- Ορισμός του συνόλου δεδομένων πηγής<reloadEveryNMinutes> σε μεγαλύτερο αριθμό (1440;) .
- Βάλε το σενάριο να επικοινωνήσει με το σύνολο δεδομένων πηγής URL σημαίας αμέσως μετά την αντιγραφή ενός νέου αρχείου δεδομένων στη θέση του.
Αυτό θα οδηγήσει στην πλήρη ενημέρωση του συνόλου των δεδομένων πηγής και θα προκαλέσει τη δημιουργία μιας κοινοποίησης εγγραφής, η οποία θα αποσταλεί στην EDDGrid /TableFromErddap dataset. Αυτό θα οδηγήσει στην EDDGrid /TableFromErddap dataset για να είναι απόλυτα ενημερωμένα (Λοιπόν, μέσα σε 5 δευτερόλεπτα από την προσθήκη νέων δεδομένων) . Και όλα αυτά θα γίνουν αποτελεσματικά. (χωρίς περιττές επαναφορτίσεις συνόλου δεδομένων) .
Όχι. addAttributes , axisVariable , ή dataVariable
Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, EDDTableFromErddap και EDDGrid Από τα σύνολα δεδομένων Erddap δεν επιτρέπουν παγκόσμια<addAttributes>,< axisVariable >, ή< dataVariable & gt; τμήματα στα datasets.xml για το σύνολο δεδομένων. Το πρόβλημα είναι ότι επιτρέποντας σε αυτούς θα οδηγήσει σε ασυνέπειες:
- Ας πούμε ότι επιτράπηκε και πρόσθεσες ένα νέο παγκόσμιο χαρακτηριστικό.
- Όταν ένας χρήστης asks σας ERDDAP™ Για τα παγκόσμια χαρακτηριστικά, το νέο χαρακτηριστικό θα εμφανιστεί.
- Αλλά όταν ένας χρήστης ρωτάει σας ERDDAP™ για ένα αρχείο δεδομένων, σας ERDDAP™ ανακατευθύνει το αίτημα στην πηγή ERDDAP . Αυτό... ERDDAP™ δεν γνωρίζει το νέο χαρακτηριστικό. Έτσι, αν δημιουργεί ένα αρχείο δεδομένων με μεταδεδομένα, π.χ., a .nc αρχείο, τα μεταδεδομένα δεν θα έχουν το νέο χαρακτηριστικό.
Υπάρχουν δύο θέσεις εργασίας:
- Πείσε τον διαχειριστή της πηγής ERDDAP™ για να κάνετε τις αλλαγές που θέλετε στα μεταδεδομένα.
- Αντί του EDDTableFromErddap, χρήση Πίνακας EDD από το DapSequence . Ή αντί EDDGrid Από το Erddap, χρήση EDDGrid Από το Νταπ . Αυτοί οι τύποι EDD σας επιτρέπουν να συνδεθείτε αποτελεσματικά με ένα σύνολο δεδομένων σε ένα απομακρυσμένο ERDDAP™ (αλλά χωρίς να ανακατευθύνει τα αιτήματα δεδομένων) και σας επιτρέπουν να συμπεριλάβετε παγκόσμια<addAttributes>,< axisVariable >, ή< dataVariable & gt; τμήματα στα datasets.xml . Μια άλλη διαφορά: θα πρέπει να εγγραφείτε χειροκίνητα στο απομακρυσμένο σύνολο δεδομένων, έτσι ώστε το σύνολο δεδομένων για σας ERDDAP™ θα ειδοποιηθεί. (μέσω της URL σημαίας ) όταν υπάρχουν αλλαγές στο απομακρυσμένο σύνολο δεδομένων. Έτσι, δημιουργείτε ένα νέο σύνολο δεδομένων, αντί να συνδέεστε με ένα απομακρυσμένο σύνολο δεδομένων.
Άλλες σημειώσεις
- Για λόγους ασφαλείας, EDDGrid Από το Erddap και τον πίνακα EDD Από το Erddap δεν υποστηρίζουν το [<προσιτόTo>] (#προσιτό στο) ετικέτα και δεν μπορεί να χρησιμοποιηθεί με απομακρυσμένα σύνολα δεδομένων που απαιτούν σύνδεση (επειδή χρησιμοποιούν [<προσιτόTo>] (#προσιτό στο) ).. Βλέπεις; ERDDAP Σ σύστημα ασφαλείας για τον περιορισμό της πρόσβασης σε ορισμένα σύνολα δεδομένων σε ορισμένους χρήστες.
- Ξεκινώντας με ERDDAP™ v2.10, EDDGrid Από το Erddap και το EDDTableFromErddap υποστηρίζουν το [<προσβάσιμοViaFiles>] (#accessibleviafiles) Ταγκ. Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, η προεπιλογή είναι αληθινή, αλλά τα αρχεία του συνόλου δεδομένων θα είναι προσβάσιμαViaFiles μόνο αν το σύνολο δεδομένων πηγή έχει επίσης<προσβάσιμαViaFiles> που έχουν τεθεί σε ισχύ.
- Μπορείτε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει το datasets.xml κομμάτι για αυτό το είδος συνόλου δεδομένων. Αλλά μπορείτε να κάνετε αυτά τα είδη των συνόλων δεδομένων εύκολα με το χέρι.
EDDGrid Από το σκελετό Erddap XML
- EDDGrid Από το σκελετό Erddap XML σύνολο δεδομένων είναι πολύ απλή, επειδή η πρόθεση είναι απλά να μιμηθεί το απομακρυσμένο σύνολο δεδομένων που είναι ήδη κατάλληλο για χρήση σε ERDDAP :
<dataset type="EDDGridFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>...</accessibleViaFiles> <!-- 0 or 1, default=true. -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1
For EDDGridFromErddap, this gets the remote .dds and then gets
the new leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDTableFromErddap σκελετός XML
- Ο σκελετός XML για ένα σύνολο δεδομένων EDDTableFromErddap είναι πολύ απλός, επειδή η πρόθεση είναι απλά να μιμηθεί το απομακρυσμένο σύνολο δεδομένων, το οποίο είναι ήδη κατάλληλο για χρήση σε ERDDAP :
<dataset type="EDDTableFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDGrid Από το Etopo
** EDDGrid Από το Etopo** Απλά εξυπηρετεί το ETOPO1 παγκόσμιο σύνολο δεδομένων ανύψωσης 1 λεπτών (Επιφάνεια πάγου, δίκτυο καταχωρημένο, δυαδικό, 2byte int: etopo1\_ice\_g\_i2 .zip ) που διανέμεται με ERDDAP .
- Μόνο δύο. datasetID Τα s υποστηρίζονται για EDDGrid FromEtopo, έτσι ώστε να μπορείτε να έχετε πρόσβαση στα δεδομένα με τιμές γεωγραφικού μήκους -180 έως 180, ή τιμές γεωγραφικού μήκους 0 έως 360.
- Δεν υπάρχουν ποτέ υποετικέτες, δεδομένου ότι τα δεδομένα ήδη περιγράφονται μέσα ERDDAP .
- Έτσι, οι δύο επιλογές για EDDGrid Τα σύνολα δεδομένων FromEtopo είναι (κυριολεκτικά) :
<!-- etopo180 serves the data from longitude -180 to 180 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo180" />
<!-- etopo360 serves the data from longitude 0 to 360 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo360" />
EDDGrid Από αρχεία
** EDDGrid Από αρχεία** είναι η σούπερ τάξη όλων EDDGrid Από τα μαθήματα Αρχείων. Δεν μπορείς να χρησιμοποιήσεις EDDGrid Από τους Φακέλους απευθείας. Αντ 'αυτού, χρησιμοποιήστε μια υποκατηγορία EDDGrid ΑπόΑρχεία για τον χειρισμό του συγκεκριμένου τύπου αρχείου:
- EDDGrid FromMergeIRΑρχεία χειρίζεται δεδομένα από πλέγμα Συγχώνευση .gz αρχεία.
- EDDGrid Από AudioFiles συγκεντρωτικά δεδομένα από μια ομάδα τοπικών αρχείων ήχου.
- EDDGrid Από αρχείαNc χειρίζεται δεδομένα από πλέγμα GRIB .grb αρχεία, HDF (v4 ή v5) .hdf αρχεία, .nc ml αρχεία και NetCDF (v3 ή v4) .nc αρχεία. Αυτό μπορεί να λειτουργήσει με άλλους τύπους αρχείων (για παράδειγμα, BUFR) , απλά δεν το έχουμε δοκιμάσει -- παρακαλώ στείλτε μας μερικά αρχεία δειγμάτων αν ενδιαφέρεστε.
- EDDGrid Από αρχείαNcUnpacked είναι μια παραλλαγή του EDDGrid FromNcFiles που χειρίζεται τα δεδομένα από το πλέγμα NetCDF (v3 ή v4) .nc και σχετικά αρχεία, τα οποία ERDDAP™ ξεπακετάρει σε χαμηλό επίπεδο.
Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι αρχείων. Αλλά είναι συνήθως σχετικά εύκολο να προσθέσετε υποστήριξη για άλλους τύπους αρχείων. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα. Ή, αν τα δεδομένα σας είναι σε μια παλιά μορφή αρχείου από την οποία θα θέλατε να απομακρυνθείτε, συνιστούμε τη μετατροπή των αρχείων να είναι NetCDF v3 .nc αρχεία. NetCDF είναι μια ευρέως υποστηριζόμενη, δυαδική μορφή, επιτρέπει γρήγορη τυχαία πρόσβαση στα δεδομένα, και υποστηρίζεται ήδη από ERDDAP .
Από τα στοιχεία αρχείων
Οι ακόλουθες πληροφορίες ισχύουν για όλες τις υποκατηγορίες EDDGrid Από τους Φακέλους.
Συγκέντρωση Υφιστάμενης Διάστασης
Όλες οι παραλλαγές EDDGrid FromFiles μπορεί να συγκεντρώσει δεδομένα από τοπικά αρχεία, όπου κάθε αρχείο έχει 1 (ή περισσότερο) διαφορετικές τιμές για το αριστερό άκρο (πρώτη) διάσταση, συνήθως \[ χρόνος \] , η οποία θα συγκεντρωθεί. Για παράδειγμα, οι διαστάσεις μπορεί να είναι \[ χρόνος \] \[ υψόμετρο \] \[ γεωγραφικό πλάτος \] \[ γεωγραφικό μήκος \] , και τα αρχεία μπορεί να έχουν τα δεδομένα για ένα (ή μερικά) Τιμή χρόνου (α) ανά φάκελο. Το σύνολο δεδομένων που προκύπτει φαίνεται σαν όλα τα δεδομένα του αρχείου να είχαν συνδυαστεί. Τα μεγάλα πλεονεκτήματα της συγκέντρωσης είναι:
- Το μέγεθος του συγκεντρωτικού συνόλου δεδομένων μπορεί να είναι πολύ μεγαλύτερο από ένα μόνο αρχείο μπορεί να είναι βολικά (~2GB) .
- Για τα δεδομένα σχεδόν πραγματικού χρόνου, είναι εύκολο να προσθέσετε ένα νέο αρχείο με το τελευταίο κομμάτι των δεδομένων. Δεν χρειάζεται να ξαναγράψεις όλο το σύνολο δεδομένων.
Οι απαιτήσεις για τη συγκέντρωση είναι:
- Τα τοπικά αρχεία δεν χρειάζεται να έχουν το ίδιο dataVariable α (όπως ορίζεται στο σύνολο δεδομένων datasets.xml ) . Το σύνολο δεδομένων θα έχει το dataVariable οπ datasets.xml . Εάν ένα δεδομένο αρχείο δεν έχει ένα δεδομένο dataVariable , ERDDAP™ θα προσθέσει τις τιμές που λείπουν, όπως απαιτείται.
- Όλα dataVariable Ο sΗΓΙΕΣ ΧΡΗΣΗΣ axisVariable s/διαστάσεις (όπως ορίζεται στο σύνολο δεδομένων datasets.xml ) . Τα αρχεία θα συγκεντρωθούν με βάση το πρώτο (αριστερό περισσότερο) διάσταση, ταξινομημένη με αύξουσα σειρά.
- Κάθε αρχείο μπορεί να έχει δεδομένα για μία ή περισσότερες τιμές της πρώτης διάστασης, αλλά δεν μπορεί να υπάρξει επικάλυψη μεταξύ των αρχείων. Εάν ένα αρχείο έχει περισσότερες από μία τιμές για την πρώτη διάσταση, οι τιμές ΠΡΕΠΕΙ να ταξινομούνται με αύξουσα σειρά, χωρίς δεσμούς.
- Όλα τα αρχεία ΠΡΕΠΕΙ να έχουν ακριβώς τις ίδιες τιμές για όλες τις άλλες διαστάσεις. Η ακρίβεια της δοκιμής καθορίζεται από ταίριασμαAxisNDigits .
- Όλα τα αρχεία πρέπει να έχουν ακριβώς το ίδιο μονάδες μεταδεδομένα για όλους axisVariable s και dataVariable Σ. Εάν αυτό είναι ένα πρόβλημα, μπορεί να είστε σε θέση να χρησιμοποιήσετε NcML ή NCO για να διορθώσω το πρόβλημα.
Συγκέντρωση μέσω ονομάτων αρχείων ή παγκόσμιων μεταδεδομένων
Όλες οι παραλλαγές EDDGrid FromFiles μπορεί επίσης να συγκεντρώσει μια ομάδα αρχείων με την προσθήκη ενός νέου αριστερά (πρώτη) διάσταση, συνήθως χρόνο, με βάση μια τιμή που προέρχεται από κάθε όνομα αρχείου ή από την τιμή ενός παγκόσμιου χαρακτηριστικού που βρίσκεται σε κάθε αρχείο. Για παράδειγμα, το όνομα αρχείου μπορεί να περιλαμβάνει την τιμή χρόνου για τα δεδομένα στο αρχείο. ERDDAP™ θα δημιουργούσε τότε μια νέα χρονική διάσταση.
Σε αντίθεση με το παρόμοιο χαρακτηριστικό στο THREDDS, ERDDAP™ πάντα δημιουργεί ένα axisVariable με αριθμητικές τιμές (όπως απαιτείται από την ΚΙ) , ποτέ τιμές συμβολοσειρών (τα οποία δεν επιτρέπονται από την ΚΙ) . Επίσης, ERDDAP™ θα ταξινομήσει τα αρχεία στη συγκέντρωση με βάση τον αριθμό axisVariable τιμή που αποδίδεται σε κάθε αρχείο, έτσι ώστε η μεταβλητή άξονα να έχει πάντα ταξινομημένες τιμές όπως απαιτείται από την ΚΙ. Η προσέγγιση THREDS του να κάνεις ένα λεξικογραφικό είδος με βάση τα ονόματα αρχείων οδηγεί σε συγκεντρώσεις όπου οι τιμές άξονα δεν είναι ταξινομημένες (το οποίο δεν επιτρέπεται από την ΚΙ) όταν τα ονόματα αρχείων ταξινομούνται διαφορετικά από τα παράγωγα axisVariable τιμές.
Για να δημιουργηθεί μια από αυτές τις συγκεντρώσεις ERDDAP™ , θα ορίσετε μια νέα αριστερά (πρώτη) axisVariable με ειδικό ψευδο-ψευδάργυρο< sourceName > που λέει ERDDAP™ όπου και πώς να βρείτε την τιμή για τη νέα διάσταση από κάθε αρχείο.
- Η μορφή του ψευδο sourceName που λαμβάνει την τιμή από ένα όνομα αρχείου (μόνο όνομα αρχείου.ext) λέ \\\ αρχείοName, δεδομένα Τύπος , εκχύλισμαRegex , Αριθμός ομάδας σύλληψης*
- Η μορφή του ψευδο sourceName που παίρνει την τιμή από το απόλυτο όνομα διαδρομής ενός αρχείου είναι \\\ διαδρομήName, δεδομένα Τύπος , εκχύλισμαRegex , Αριθμός ομάδας σύλληψης* \[ Για αυτό, το όνομα διαδρομής χρησιμοποιεί πάντα '/' ως ο διαχωριστικός χαρακτήρας καταλόγου, ποτέ ''. \]
- Η μορφή του ψευδο sourceName που παίρνει την αξία από ένα παγκόσμιο χαρακτηριστικό είναι \\\ παγκόσμιο: χαρακτηριστικό Όνομα , δεδομένα Τύπος , εκχύλισμαRegex , Αριθμός ομάδας σύλληψης*
- Αυτό το ψευδο sourceName επιλογή λειτουργεί διαφορετικά από τα άλλα: αντί για τη δημιουργία ενός νέου αριστερά (πρώτη) axisVariable , αυτό αντικαθιστά την τιμή του τρέχοντος axisVariable με τιμή που εξάγεται από το όνομα αρχείου (μόνο όνομα αρχείου.ext) . Η μορφή είναι \\\ αντικατάσταση Από αρχείοName, δεδομένα Τύπος , εκχύλισμαRegex , Αριθμός ομάδας σύλληψης*
Οι περιγραφές των μερών που πρέπει να παράσχετε είναι:
- χαρακτηριστικό Όνομα -- το όνομα του παγκόσμιου χαρακτηριστικού που βρίσκεται σε κάθε αρχείο και περιέχει την τιμή διάστασης.
- δεδομένα Τύπος -- Αυτό καθορίζει τον τύπο δεδομένων που θα χρησιμοποιηθεί για την αποθήκευση των τιμών. Δείτε την τυπική λίστα δεδομένα Τύποι ότι ERDDAP™ υποστηρίζει, με εξαίρεση ότι η συμβολοσειρά δεν επιτρέπεται εδώ, δεδομένου ότι οι μεταβλητές άξονα στο ERDDAP™ Δεν μπορεί να είναι μεταβλητές συμβολοσειρών.
Υπάρχει ένα επιπλέον ψευδο dataType, timeFormat= συμβολοσειρά ΧρόνοςFormat , που λέει ERDDAP™ ότι η τιμή είναι ένας χρόνος συμβολοσειράςStamp μονάδες κατάλληλες για χρόνους συμβολοσειράς . Στις περισσότερες περιπτώσεις, η συμβολοσειράTimeFormat που χρειάζεστε θα είναι μια παραλλαγή μιας από αυτές τις μορφές:
- yyyy-MM-dd 'T'HH:mm:ss.SSSZ -- ποιο ISO 8601:2004 (E) μορφή ημερομηνίας. Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ., yyyy-MM-dd «T'HH:mm:s ή yyyy-MM-dd .
- yyuhMddHhmmss.SSS -- η οποία είναι η συμπαγής έκδοση της μορφής ημερομηνίας ISO 8601. Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ., yyehMddHmmss ή yyymmd.
- M/η/εεεεε H:mm:ss.SSS -- η οποία είναι η μορφή της αμερικανικής έκδοσης. Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ., M/d/εεεε .
- yyyuddDHmmssSS -- το οποίο είναι το έτος συν την μηδενική προσαυξημένη ημέρα του έτους (π.χ., 001 = 1 Ιαν. 365 = 31 Δεκ. σε μη διαθέσιμο έτος· αυτό μερικές φορές λανθασμένα ονομάζεται Ιουλιανή ημερομηνία.) . Μπορεί να χρειαστείτε μια συντομευμένη έκδοση αυτού, π.χ. yyyuddD .
Εάν χρησιμοποιείτε αυτό το ψευδοστοιχείοType, προσθέστε αυτό στη νέα μεταβλητή< addAttributes >:
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Εάν θέλετε να μετατοπίσετε όλες τις τιμές χρόνου, μετατοπίστε την τιμή χρόνου σε μονάδες, π.χ. 1970-01-01T12:00:00Z.
- εκχύλισμαRegex -- Αυτό είναι το κανονική έκφραση ( φροντιστήριο ) η οποία περιλαμβάνει ομάδα σύλληψης (σε παρένθεση) που περιγράφει τον τρόπο εξαγωγής της τιμής από το όνομα αρχείου ή την παγκόσμια τιμή χαρακτηριστικού. Για παράδειγμα, σε ένα όνομα αρχείου όπως S19980011998031.L3b\_MO\_CHL .nc , ομάδα σύλληψης #1, "\ \dφροντιστήριο " στην κανονική έκφραση S (\ \dφροντιστήριο ) \ \dφροντιστήριο Τα πρώτα 7 ψηφία μετά το 'S': 1998001.
- Αριθμός ομάδας σύλληψης -- Αυτός είναι ο αριθμός της ομάδας σύλληψης (μέσα σε ένα ζεύγος παρενθέσεων) στην κανονική έκφραση που περιέχει τις πληροφορίες ενδιαφέροντος. Είναι συνήθως 1, η πρώτη ομάδα σύλληψης. Μερικές φορές πρέπει να χρησιμοποιήσετε ομάδες σύλληψης για άλλους σκοπούς στην regex, έτσι τότε ο σημαντικός αριθμός ομάδα σύλληψης θα είναι 2 (η δεύτερη ομάδα σύλληψης) ή 3 (το τρίτο) , κ.λπ.
Ένα πλήρες παράδειγμα axisVariable που κάνει ένα συγκεντρωτικό σύνολο δεδομένων με ένα νέο χρονοάξονα που παίρνει τις τιμές του χρόνου από το όνομα αρχείου κάθε αρχείου είναι
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
</axisVariable>
Όταν χρησιμοποιείτε τα "timeFormat=" ψευδοδεδομένα Τύπος, ERDDAP™ θα προσθέσει 2 χαρακτηριστικά στο axisVariable Έτσι ώστε να φαίνεται ότι προέρχονται από την πηγή:
<att name="standard\\_name">time</att>
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Έτσι σε αυτή την περίπτωση, ERDDAP™ θα δημιουργήσει ένα νέο άξονα που ονομάζεται "time" με διπλές τιμές (δευτερόλεπτα από το 1970-01-01T00:00:00Z) εκχυλίζοντας τα 7 ψηφία μετά το 'S' και πριν από το -.L3m" στο όνομα αρχείου και ερμηνεύοντας αυτά ως τιμές χρόνου μορφοποιημένες ως yyyddD.
Μπορείτε να παρακάμψετε τον προκαθορισμένο χρόνο βάσης (1970-01-01T00:00:00Z) με την προσθήκη ενός προσθήκη χαρακτηριστικού το οποίο προσδιορίζει διαφορετικό χαρακτηριστικό των μονάδων με διαφορετικό χρόνο βάσης. Μια κοινή κατάσταση είναι: υπάρχουν ομάδες αρχείων δεδομένων, το καθένα με σύνθεση 1 ημέρας ενός συνόλου δορυφορικών δεδομένων, όπου θέλετε η τιμή ώρας να είναι μεσημέρι της ημέρας που αναφέρεται στο όνομα αρχείου (η κεντρική ώρα κάθε ημέρας) και θέλουν της μεταβλητής long\_name να είναι "Centered Time". Ένα παράδειγμα που το κάνει αυτό είναι:
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
<addAttributes>
<att name="long\\_name">Centered Time</att>
<att name="units">seconds since 1970-01-01T12:00:00Z</att>
</addAttributes>
</axisVariable>
Σημείωση hour=12 στο χρόνο βάσης, το οποίο προσθέτει 12 ώρες σε σχέση με τον αρχικό χρόνο βάσης του 1970-01-01T00:00:00Z.
Ένα πλήρες παράδειγμα axisVariable το οποίο καθιστά συγκεντρωτικό σύνολο δεδομένων με άξονα νέας πορείας (με τιμές int) που παίρνει τις τιμές εκτέλεσης από το "runID" παγκόσμιο χαρακτηριστικό σε κάθε αρχείο (με τιμές όπως "r17\_global", όπου 17 είναι ο αριθμός εκτέλεσης) λέ
<axisVariable>
<sourceName>\\*\\*\\*global:runID,int,(r|s)(\\d+)\\_global,2</sourceName>
<destinationName>run</destinationName>
<addAttributes>
<att name="ioos\\_category">Other</att>
<att name="units">count</att>
</addAttributes>
</axisVariable>
Σημειώστε τη χρήση της ομάδας σύλληψης αριθ. 2 για τη σύλληψη των ψηφίων που συμβαίνουν μετά το 'r' ή 's' και πριν από το "\_global". Αυτό το παράδειγμα δείχνει επίσης πώς να προσθέσετε πρόσθετες ιδιότητες (π.χ., ioos\_category και μονάδες) στη μεταβλητή άξονα.
Εξωτερικά Συμπιεσμένα Αρχεία
-
Σειρά δεδομένων που είναι υποσύνολα EDDGrid Από αρχεία και πίνακα EDD FromFiles μπορεί να εξυπηρετήσει τα δεδομένα απευθείας από εξωτερικά συμπιεσμένα αρχεία δεδομένων, συμπεριλαμβανομένων .tgz , .tar .gz , .tar .gzip , .gz , .gzip , .zip , .bz2 , και .Z αρχεία .
-
Αυτό λειτουργεί εκπληκτικά καλά!
Στις περισσότερες περιπτώσεις, η επιβράδυνση που σχετίζεται με την αποσυμπίεση μικρών και μεσαίων αρχείων δεδομένων είναι μικρή. Αν χρειαστεί να διατηρήσετε χώρο στο δίσκο, ενθαρρύνουμε έντονα τη χρήση αυτού του χαρακτηριστικού, ειδικά για παλαιότερα αρχεία που σπάνια έχουν πρόσβαση. -
Κράτα λεφτά!
Αυτό είναι ένα από τα λίγα χαρακτηριστικά του ERDDAP™ που σας προσφέρει μια ευκαιρία να εξοικονομήσετε πολλά χρήματα (αν και στο κόστος της ελαφρώς μειωμένης απόδοσης) . Εάν ο λόγος συμπίεσης είναι π.χ., 6:1 (Μερικές φορές θα είναι πολύ ψηλότερα.) , τότε τα αρχεία δεδομένων του συνόλου δεδομένων θα χρειαστούν μόνο 1/6 το χώρο του δίσκου. Τότε ίσως μπορείς να τα καταφέρεις με 1 RAID (ενός δεδομένου μεγέθους) αντί για 6 RAIDS (του ίδιου μεγέθους) . Αυτή είναι μια τεράστια εξοικονόμηση κόστους. Ας ελπίσουμε ότι, η ικανότητα να συμπιέζουν κάποια αρχεία σε μια συλλογή (Τα μεγαλύτερα;) και δεν συμπιέζουν άλλα (Τα νεότερα;) , και για να το αλλάξετε αυτό ανά πάσα στιγμή, ας ελαχιστοποιήσουμε το μειονέκτημα για να συμπιέσουμε μερικά από τα αρχεία (βραδύτερη πρόσβαση) . Και αν η επιλογή είναι μεταξύ της αποθήκευσης των αρχείων σε κασέτα (και μόνο προσβάσιμα κατόπιν αιτήματος, μετά από καθυστέρηση) vs αποθήκευση τους συμπιεσμένο σε ένα RAID (και προσβάσιμο μέσω ERDDAP ) , τότε υπάρχει ένα τεράστιο πλεονέκτημα στη χρήση συμπίεσης έτσι ώστε οι χρήστες να πάρει διαδραστικό και (σχετικά) γρήγορη πρόσβαση στα δεδομένα. Και αν αυτό μπορεί να σας σώσει από την αγορά ενός πρόσθετου RAID, αυτό το χαρακτηριστικό μπορεί να σας σώσει περίπου $ 30.000. -
Για όλους EDDGrid FromFiles υποκλάσεις, αν τα αρχεία δεδομένων έχουν μια επέκταση που δείχνει ότι είναι εξωτερικά συμπιεσμένα αρχεία (προς το παρόν: .tgz , .tar .gz , .tar .gzip , .gz , .gzip , .zip , .bz2 , ή .Z) , ERDDAP™ θα αποσυμπιέσει τα αρχεία στον κατάλογο cache του συνόλου δεδομένων όταν τα διαβάζει (αν δεν είναι ήδη στην κρύπτη) . Το ίδιο ισχύει και για το δυαδικό αρχείο (π.χ., .nc ) υποκλάσεις του EDDTableFromFiles.
-
Για EDDTableFromFiles υποκλάσεις για μη δυαδικά αρχεία (π.χ., .csv.) , αρχεία δεδομένων με επέκταση που δείχνει ότι είναι εξωτερικά συμπιεσμένα αρχεία θα αποσυμπιέζονται on-the-fly όπως το αρχείο διαβάζεται.
-
ΑΠΑΙΤΗΣΗ: Εάν ο τύπος του εξωτερικά συμπιεσμένο αρχείο που χρησιμοποιείται (π.χ., .tgz ή .zip ) υποστηρίζει περισσότερα από 1 αρχείο μέσα στο συμπιεσμένο αρχείο, το συμπιεσμένο αρχείο πρέπει να περιέχει μόνο 1 αρχείο.
-
REQUIREMENT: Αυτό το χαρακτηριστικό υποθέτει ότι τα περιεχόμενα των εξωτερικών συμπιεσμένων αρχείων δεν αλλάζουν, έτσι ώστε ένα αποθηκευμένο αποσυμπιεσμένο αρχείο να μπορεί να επαναχρησιμοποιηθεί. Εάν κάποια ή όλα τα αρχεία δεδομένων ενός συνόλου δεδομένων αλλάζουν μερικές φορές, μην συμπιέζετε αυτά τα αρχεία. Αυτό συνάδει με την κοινή χρήση, αφού οι άνθρωποι συνήθως δεν συμπιέζουν αρχεία που μερικές φορές χρειάζεται να αλλάξουν.
-
<αρχείοNameRegex> Για να πετύχει αυτό, το σύνολο δεδομένων<αρχείοNameRegex> πρέπει να ταιριάζει με τα ονόματα των συμπιεσμένων αρχείων. Προφανώς, regexes όπως.\θα ταιριάζει με όλα τα ονόματα αρχείων. Εάν ορίσετε έναν συγκεκριμένο τύπο αρχείου, π.χ., .\~ .nc , τότε θα πρέπει να τροποποιήσετε το regex για να συμπεριλάβει την επέκταση συμπίεσης πάρα πολύ, π.χ., . . . . ~ .nc ~ .gz (αν όλα τα αρχεία θα είναι κάτι* .nc .gz αρχεία) .
-
Είναι καλό αν το σύνολο δεδομένων σας περιλαμβάνει ένα μείγμα από συμπιεσμένα και δεν συμπιεσμένα αρχεία. Αυτό μπορεί να είναι χρήσιμο αν πιστεύετε ότι κάποια αρχεία (π.χ. παλαιότερα αρχεία) θα χρησιμοποιηθεί λιγότερο συχνά και επομένως θα ήταν χρήσιμο να αποθηκεύσετε χώρο στο δίσκο με συμπίεση τους. Για να λειτουργήσει αυτό, το<αρχείοNameRegex> πρέπει να ταιριάζει με τα συμπιεσμένα και μη συμπιεσμένα ονόματα αρχείων, π.χ., .\ή .\~ .nc ( | ~ .gz ) (όπου η ομάδα δέσμευσης στο τέλος αυτής ορίζει ότι .gz είναι προαιρετική.
-
Είναι εντάξει αν συμπιέσετε ή αποσυμπιέσετε συγκεκριμένα αρχεία στη συλλογή ανά πάσα στιγμή. Εάν το σύνολο δεδομένων δεν χρησιμοποιεί [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) , ορίστε το σύνολο δεδομένων σημαία για να πω ERDDAP™ να επαναφορτώσει το σύνολο δεδομένων και έτσι να παρατηρήσει τις αλλαγές. Είναι ενδιαφέρον ότι θα μπορούσατε να χρησιμοποιήσετε διαφορετικούς αλγόριθμους συμπίεσης και ρυθμίσεις για διαφορετικά αρχεία στο ίδιο σύνολο δεδομένων (π.χ., .bz2 για σπάνια χρησιμοποιούμενα αρχεία, .gz για τα αρχεία που δεν χρησιμοποιούνται συχνά, και καμία συμπίεση για τα αρχεία που χρησιμοποιούνται συχνά) , απλά βεβαιωθείτε ότι η regex υποστηρίζει όλες τις επεκτάσεις αρχείων που χρησιμοποιούνται, π.χ., .\*\ .nc ( | ~ .gz | ~ .bz2 ) .
-
Φυσικά, οι αναλογίες συμπίεσης και οι ταχύτητες για τους διαφορετικούς αλγόριθμους συμπίεσης ποικίλλουν ανάλογα με το πηγαίο αρχείο και τις ρυθμίσεις (π.χ., επίπεδο συμπίεσης) . Αν θέλετε να βελτιστοποιήσετε αυτό το σύστημα για τα αρχεία σας, κάντε μια δοκιμή των διαφόρων μεθόδων συμπίεσης με τα αρχεία σας και με μια σειρά από ρυθμίσεις συμπίεσης. Αν θέλετε ένα αξιόπιστο καλό (όχι απαραίτητα το καλύτερο) setup, θα προτείνουμε ελαφρώς gzip ( .gz ) . gzip δεν κάνει το μικρότερο συμπιεσμένο αρχείο (Είναι αρκετά κοντά.) , αλλά συμπιέζει το αρχείο πολύ γρήγορα και (πιο σημαντικό για ERDDAP™ χρήστες) αποσυμπιέζει το αρχείο πολύ γρήγορα. Συν, gzip λογισμικό έρχεται στάνταρ με κάθε εγκατάσταση Linux και Mac OS και είναι άμεσα διαθέσιμο για Windows μέσω δωρεάν εργαλείων όπως 7Zip και Linux add-ons όπως Git Bash. Για παράδειγμα, για να συμπιέσετε ένα πηγαίο αρχείο στο .gz έκδοση του αρχείου (ίδιο όνομα αρχείου, αλλά με .gz Προσαρτημένο) , χρήση (σε Linux, Mac OS και Git Bash)
gzip * sourceName *
Για να αποσυμπιέσετε .gz αρχείο πίσω στο πρωτότυπο, χρήση γκουντζίπη * sourceName .gz *
Για να συμπιέσετε κάθε ένα από τα αρχεία πηγαίου κώδικα στον κατάλογο και τους υποκαταλόγους του, αναδρομικά, χρησιμοποιήστε gzip -r ΔιευθυντήςName
Για να αποσυμπιέσετε κάθε ένα από τα .gz αρχεία στον κατάλογο και τους υποκαταλόγους του, αναδρομικά, χρήση Gunzip - r ΔιευθυντήςName
-
ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Μην συμπιέζετε εξωτερικά ( gzip ) αρχεία που είναι ήδη εσωτερικά συμπιεσμένα! Πολλά αρχεία έχουν ήδη συμπιεσμένα δεδομένα εσωτερικά. Εάν εσείς gzip αυτά τα αρχεία, τα αρχεία που προκύπτουν δεν θα είναι πολύ μικρότερο (<5%) και ERDDAP™ θα χάσουν χρόνο αποσυμπιέζοντας τους όταν χρειάζεται να τα διαβάσει. Για παράδειγμα:
- αρχεία δεδομένων: π.χ. .nc 4, και .hdf 5 αρχεία: Κάποια αρχεία χρησιμοποιούν εσωτερική συμπίεση, κάποια όχι. Πώς να πει: συμπιεσμένες μεταβλητές έχουν "\_ChunkSize" ιδιότητες. Επίσης, εάν μια ομάδα πλέγματος .nc ή .hdf Τα αρχεία είναι όλα διαφορετικά μεγέθη, είναι πιθανόν εσωτερικά συμπιεσμένα. Αν έχουν όλα το ίδιο μέγεθος, δεν συμπιέζονται εσωτερικά.
- αρχεία εικόνας: π.χ., .gif, .jpg, και .png
- αρχεία ήχου: π.χ., .mp3, και .ogg.
- αρχεία βίντεο: π.χ., .mp4, .ogv, και .webm.
Μια ατυχής περίεργη περίπτωση: .wav αρχεία ήχου είναι τεράστια και δεν συμπιεσμένα εσωτερικά. Θα ήταν ωραίο να συμπιέσουμε ( gzip ) τους, αλλά γενικά δεν θα πρέπει γιατί αν το κάνετε, οι χρήστες δεν θα είναι σε θέση να παίξουν τα συμπιεσμένα αρχεία στο πρόγραμμα περιήγησης τους.
-
Θήκη δοκιμής: συμπίεση (με gzip ) σύνολο δεδομένων με πλέγμα 1523 .nc αρχεία.
- Τα δεδομένα στα αρχεία πηγής ήταν αραιά (πολλές ελλείπουσες τιμές) .
- Ο συνολικός χώρος δίσκων πήγε από 57 GB πριν από τη συμπίεση σε 7 GB μετά.
- Μια αίτηση για πολλά δεδομένα από 1 χρονικό σημείο είναι<1 s πριν και μετά τη συμπίεση.
- Αίτηση για 1 σημείο δεδομένων για 365 ώρες (η χειρότερη περίπτωση) πήγε από 4 s σε 71 s.
Για μένα αυτό είναι μια λογική ανταλλαγή δεδομένων για κάθε σύνολο δεδομένων, και σίγουρα για σύνολα δεδομένων που χρησιμοποιούνται σπάνια.
-
Εσωτερικό έναντι Εξωτερικής Συμπίεσης -- Σε σύγκριση με την εσωτερική συμπίεση αρχείων που προσφέρονται από .nc 4 και .hdf 5 αρχεία, ERDDAP Η προσέγγιση του για εξωτερικά συμπιεσμένα δυαδικά αρχεία έχει πλεονεκτήματα και μειονεκτήματα. Το μειονέκτημα είναι: για μια φορά που διαβάζεται ένα μικρό μέρος ενός αρχείου, εσωτερική συμπίεση είναι καλύτερη επειδή EDDGrid FromFiles χρειάζεται μόνο να αποσυμπιέσετε μερικά κομμάτια (α) του αρχείου, όχι ολόκληρο το αρχείο. Αλλά... ERDDAP Η προσέγγιση έχει κάποια πλεονεκτήματα:
- ERDDAP™ υποστηρίζει συμπίεση όλων των τύπων αρχείων δεδομένων (δυαδικό και μη-binary, π.χ., .nc 3 και . csv) Όχι μόνο .nc 4 και .hdf 4.
- Αν το μεγαλύτερο μέρος ενός αρχείου πρέπει να διαβαστεί περισσότερες από μία φορές σε σύντομο χρονικό διάστημα, τότε εξοικονομεί χρόνο για να αποσυμπιέσει το αρχείο μία φορά και να το διαβάσει πολλές φορές. Αυτό συμβαίνει στο ERDDAP™ όταν ένας χρήστης χρησιμοποιεί Make-A-Graph για το σύνολο δεδομένων και κάνει μια σειρά από μικρές αλλαγές στο γράφημα.
- Η δυνατότητα να έχουν συμπιεσμένα αρχεία και δεν συμπιεσμένα αρχεία στην ίδια συλλογή, σας επιτρέπει περισσότερο έλεγχο πάνω στα οποία τα αρχεία είναι συμπιεσμένα και τα οποία δεν είναι. Και αυτό το πρόσθετο έλεγχο έρχεται χωρίς πραγματικά τροποποίηση του πηγαίου αρχείου (εφόσον μπορείτε να συμπιέσετε ένα αρχείο με π.χ., .gz και στη συνέχεια αποσυμπίεση για να πάρει το αρχικό αρχείο) .
- Η δυνατότητα αλλαγής ανά πάσα στιγμή εάν ένα δεδομένο αρχείο συμπιέζεται και πώς συμπιέζεται (διαφορετικοί αλγόριθμοι και ρυθμίσεις) Σας δίνει περισσότερο έλεγχο της απόδοσης του συστήματος. Και μπορείτε εύκολα να ανακτήσετε το αρχικό μη συμπιεσμένο αρχείο ανά πάσα στιγμή.
Ενώ καμία προσέγγιση δεν είναι νικήτρια σε όλες τις περιπτώσεις, είναι σαφές ότι ERDDAP Η ικανότητα να εξυπηρετεί δεδομένα από εξωτερικά συμπιεσμένα αρχεία καθιστά την εξωτερική συμπίεση μια λογική εναλλακτική λύση στην εσωτερική συμπίεση που προσφέρεται από .nc 4 και .hdf 5. Αυτό είναι σημαντικό δεδομένου ότι η εσωτερική συμπίεση είναι ένας από τους κύριους λόγους που οι άνθρωποι επιλέγουν να χρησιμοποιήσουν .nc 4 και .hdf 5.
Αποσυμπίεση λανθάνουσας μνήμης
ERDDAP™ κάνει μια αποσυμπιεσμένη έκδοση οποιουδήποτε συμπιεσμένο δυαδικό (π.χ., .nc ) αρχείο δεδομένων όταν χρειάζεται να διαβάσει το αρχείο. Τα αποσυμπιεσμένα αρχεία φυλάσσονται στον κατάλογο του συνόλου δεδομένων μέσα bigParentΚατάλογος /αποσυμπίεση / . Αποσυμπιεσμένα αρχεία που δεν έχουν χρησιμοποιηθεί πρόσφατα θα διαγραφούν για να απελευθερώσουν χώρο όταν το σωρευτικό μέγεθος αρχείου είναι >10GB. Μπορείτε να το αλλάξετε αυτό με τη ρύθμιση<αποσυμπίεσηCacheMaxGB> (προεπιλογή=10) σε σύνολα δεδομένων Xml.xml, π.χ.,
<decompressedCacheMaxGB>40</decompressedCacheMaxGB>
Επίσης, τα αποσυμπιεσμένα αρχεία που δεν έχουν χρησιμοποιηθεί τα τελευταία 15 λεπτά θα διαγραφούν κατά την έναρξη κάθε μεγάλης επαναφόρτωσης δεδομένων. Μπορείτε να το αλλάξετε αυτό με τη ρύθμιση<αποσυμπιεσμένοCacheMaxMinutesOld> (προεπιλογή=15) σε σύνολα δεδομένων Xml.xml, π.χ.,
<decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>
Μεγαλύτεροι αριθμοί είναι ωραίοι, αλλά το σωρευτικό μέγεθος των αποσυμπιεσμένων αρχείων μπορεί να προκαλέσει bigParentΚατάλογος να ξεμείνει από χώρο στο δίσκο, πράγμα που προκαλεί σοβαρά προβλήματα.
- Επειδή η αποσυμπίεση ενός αρχείου μπορεί να πάρει ένα σημαντικό χρονικό διάστημα (0.1 έως 10 δευτερόλεπτα) , σύνολα δεδομένων με συμπιεσμένα αρχεία μπορεί να επωφεληθούν από τον καθορισμό του συνόλου δεδομένων [<nThreads>] (#nthreads (στα Αγγλικά)) καθορισμός υψηλότερου αριθμού (Δύο; Τρία; Τέσσερα;) . Τα μειονεκτήματα σε ακόμα υψηλότερους αριθμούς (π.χ., 5; Έξι; 7;) είναι μειωμένες αποδόσεις και ότι το αίτημα ενός χρήστη μπορεί στη συνέχεια να χρησιμοποιήσει ένα υψηλό ποσοστό των πόρων του συστήματος, επιβραδύνοντας έτσι σημαντικά την επεξεργασία των αιτημάτων του άλλου χρήστη. Έτσι, δεν υπάρχει καμία ιδανική ρύθμιση nThreads, απλά διαφορετικές συνέπειες σε διαφορετικές καταστάσεις με διαφορετικές ρυθμίσεις.
Ταξινόμηση τιμών διαστάσεων
Οι τιμές για κάθε διάσταση ΠΡΕΠΕΙ να είναι ταξινομημένες (άνω ή κάτω, εκτός από το πρώτο (αριστερό περισσότερο) διάσταση που πρέπει να ανεβαίνει) . Οι τιμές μπορούν να είναι ακανόνιστα διαχωρισμένες. Δεν μπορεί να υπάρχουν δεσμοί. Αυτή είναι η απαίτηση της Πρότυπο μεταδεδομένων CF . Αν οι τιμές οποιασδήποτε διάστασης δεν είναι ταξινομημένες, το σύνολο δεδομένων δεν θα φορτωθεί και ERDDAP™ θα προσδιορίσει την πρώτη μη ταξινομημένη τιμή στο αρχείο καταγραφής, bigParentΚατάλογος /logs/log.txt .
Οι μη ταξινομημένες τιμές διάστασης σχεδόν πάντα δείχνουν ένα πρόβλημα με το σύνολο δεδομένων πηγής. Αυτό συμβαίνει συνηθέστερα όταν ένα λανθασμένο ή ακατάλληλο αρχείο περιλαμβάνεται στη συγκέντρωση, η οποία οδηγεί σε μια μη ταξινομημένη χρονική διάσταση. Για την επίλυση αυτού του προβλήματος, δείτε το μήνυμα σφάλματος στο ERDDAP™ αρχείο log.txt για να βρείτε την τιμή ώρας που προσβάλλει. Στη συνέχεια, κοιτάξτε στα πηγαία αρχεία για να βρείτε το αντίστοιχο αρχείο (ή μία πριν ή μία μετά) Αυτό δεν ανήκει στη συγκέντρωση.
Κατάλογοι
Τα αρχεία μπορεί να είναι σε έναν κατάλογο, ή σε έναν κατάλογο και τους υποκαταλόγους του (αναδρομικά) . Αν υπάρχει μεγάλος αριθμός αρχείων (για παράδειγμα, >1.000) , το λειτουργικό σύστημα (και έτσι EDDGrid Από αρχεία) θα λειτουργήσει πολύ πιο αποτελεσματικά αν αποθηκεύσετε τα αρχεία σε μια σειρά υποκαταστημάτων (μία ανά έτος, ή μία ανά μήνα για σύνολα δεδομένων με πολύ συχνά αρχεία) , έτσι ώστε να μην υπάρχει ποτέ ένας τεράστιος αριθμός αρχείων σε ένα δεδομένο κατάλογο.
<cacheFromUrl>
Όλα EDDGrid ΑπόΑρχεία και όλα τα σύνολα δεδομένων EDDTableFromFiles υποστηρίζουν ένα σύνολο ετικετών που λένε ERDDAP™ για να κατεβάσετε και να διατηρήσετε ένα αντίγραφο όλων των αρχείων ενός απομακρυσμένου συνόλου δεδομένων, ή μια κρύπτη μερικών αρχείων (κατεβάστηκε όπως απαιτείται) . Αυτό μπορεί να είναι απίστευτα χρήσιμο. Δείτε το κρύπτη Τεκμηρίωση FromUrl .
Απομακρυσμένοι κατάλογοι και αιτήματα εύρους HTTP
(Γνωστός και ως Byte Serving, Byte Ranges http Κεφαλίδα)
EDDGrid Από αρχεία NcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles, και EDDTableFromNcCFFiles, μπορεί μερικές φορές υπηρεσία δεδομένων από .nc αρχεία σε απομακρυσμένους διακομιστές και πρόσβαση μέσω HTTP αν ο διακομιστής υποστηρίζει Υπηρεσία Byte μέσω αιτήσεων εύρους HTTP (τον μηχανισμό HTTP για χρήση byte) . Αυτό είναι δυνατό επειδή το netcdf-java (το οποίο ERDDAP™ χρήση για ανάγνωση .nc αρχεία) υποστηρίζει την ανάγνωση δεδομένων από απομακρυσμένο .nc αρχεία μέσω αιτήσεων εύρους HTTP.
Μην το κάνεις αυτό! Είναι τρομερά αναποτελεσματικό και αργό. Αντ 'αυτού, χρησιμοποιήστε το [<σύστημα cacheFromUrl>] (#Cachefromurl Από τον ουρανό) .
Πρόσβαση ERDDAP™ σύνολα δεδομένων ως αρχεία μέσω των αιτημάτων εύρους byte -- Γυρνώντας αυτό γύρω, δεδομένου ότι μπορείτε (Θεωρητικά) Σκεφτείτε ένα σύνολο δεδομένων ERDDAP™ ως γίγαντας .nc αρχείο με προσθήκη " .nc " στη βάση OPEN DAP URL για ένα δοσμένο σύνολο δεδομένων (π.χ.,https://myserver.org/erddap/griddap/datasetID.ncκαι επίσης με την προσθήκη a ?query μετά από αυτό για να καθορίσετε ένα υποσύνολο) , είναι ίσως λογικό να ρωτήσω αν μπορείτε να χρησιμοποιήσετε netcdf-java, Ferret , ή κάποια άλλη NetCDF λογισμικό πελάτη για να διαβάσει τα δεδομένα μέσω Αιτήσεις εύρους HTTP από ERDDAP . Η απάντηση είναι όχι, γιατί δεν υπάρχει πραγματικά ένα τεράστιο - .nc " αρχείο. Αν θέλετε να το κάνετε αυτό, αντί να κάνετε μια από αυτές τις επιλογές:
- Χρήση(OPeN)DAPλογισμικό πελάτη για να συνδεθεί με τις υπηρεσίες griddap που προσφέρονται από ERDDAP . Αυτό είναι ό, τι DAP (και έτσι ERDDAP ) ήταν σχεδιασμένο για. Είναι πολύ αποτελεσματικό.
- Ή, κατεβάστε το πηγαίο αρχείο (α) από την "files" σύστημα (ή ένα υποσύνολο αρχείο μέσω ενός .nc ♪ ♪ Ερώτηση) στον υπολογιστή σας και χρησιμοποιήστε netcdf-java, Ferret , ή κάποια άλλη NetCDF λογισμικό πελάτη για να διαβάσετε το (Τώρα.) τοπικό αρχείο (α) .
Cached πληροφορίες αρχείου
Όταν ένα EDDGrid Το σύνολο δεδομένων FromFiles φορτώθηκε για πρώτη φορά, EDDGrid FromFiles διαβάζει πληροφορίες από όλα τα σχετικά αρχεία και δημιουργεί πίνακες (μία σειρά για κάθε αρχείο) με πληροφορίες για κάθε έγκυρο αρχείο και κάθε "κακό" (διαφορετικό ή μη έγκυρο) Αρχείο.
- Οι πίνακες αποθηκεύονται επίσης στο δίσκο, όπως NetCDF v3 .nc αρχεία σε bigParentΚατάλογος / σύνολο δεδομένων/ τελευταίο2CharsOfDatasetID / * datasetID * / σε αρχεία που ονομάζονται: dirTable .nc (που περιέχει μια λίστα με μοναδικά ονόματα καταλόγου) , αρχείο Πίνακας .nc (που περιέχει τον πίνακα με τις πληροφορίες κάθε έγκυρου αρχείου) , κακόΑρχεία .nc (που κρατά τον πίνακα με τις πληροφορίες κάθε κακού αρχείου) .
- Για να επιταχυνθεί η πρόσβαση σε ένα EDDGrid Σύνολο δεδομένων από αρχεία (αλλά εις βάρος της χρήσης περισσότερης μνήμης) , μπορείτε να χρησιμοποιήσετε [<Πίνακας αρχείωνInMemory> true</fileTableInMemory>] (#filetableinmemory) για να πω ERDDAP™ να κρατήσει ένα αντίγραφο των πινάκων πληροφοριών αρχείων στη μνήμη.
- Το αντίγραφο των πινάκων πληροφοριών αρχείων στο δίσκο είναι επίσης χρήσιμο όταν ERDDAP™ κλείνει και επανεκκινείται: αποθηκεύει EDDGrid Από αρχεία από το να πρέπει να ξαναδιαβάσει όλα τα αρχεία δεδομένων.
- Όταν ένα σύνολο δεδομένων επαναφορτώνεται, ERDDAP™ μόνο χρειάζεται να διαβάσει τα δεδομένα σε νέα αρχεία και αρχεία που έχουν αλλάξει.
- Εάν ένα αρχείο έχει διαφορετική δομή από τα άλλα αρχεία (για παράδειγμα, ένας διαφορετικός τύπος δεδομένων για μία από τις μεταβλητές, ή μια διαφορετική τιμή για το - μονάδες " χαρακτηριστικό) , ERDDAP προσθέτει το αρχείο στη λίστα των "κακών" αρχείων. Πληροφορίες σχετικά με το πρόβλημα με το αρχείο θα γραφτεί στο bigParentΚατάλογος Αρχείο /logs/log.txt.
- Δεν χρειάζεται να διαγράψετε ή να δουλέψετε με αυτά τα αρχεία. Μια εξαίρεση είναι: αν εξακολουθείτε να κάνετε αλλαγές σε ένα σύνολο δεδομένων datasets.xml ρύθμιση, ίσως θέλετε να διαγράψετε αυτά τα αρχεία για να πιέσετε ERDDAP™ για να ξαναδιαβάσετε όλα τα αρχεία αφού τα αρχεία θα διαβαστούν/ερμηνευθούν διαφορετικά. Αν χρειαστεί ποτέ να διαγράψετε αυτά τα αρχεία, μπορείτε να το κάνετε όταν ERDDAP™ τρέχει. (Τότε βάλε ένα σημαία να επαναφορτώσει το σύνολο δεδομένων το συντομότερο δυνατόν.) Ωστόσο, ERDDAP™ συνήθως παρατηρεί ότι η datasets.xml οι πληροφορίες δεν ταιριάζουν με το αρχείο Πίνακας πληροφοριών και διαγράφει αυτόματα τους πίνακες αρχείων.
- Αν θέλετε να ενθαρρύνετε ERDDAP™ για την ενημέρωση των αποθηκευμένων πληροφοριών του συνόλου δεδομένων (για παράδειγμα, εάν μόλις προσθέσατε, αφαιρέσατε ή αλλάξατε κάποια αρχεία στον κατάλογο δεδομένων του συνόλου δεδομένων) , χρήση του σύστημα σημαίας στη βία ERDDAP™ για να ενημερώσετε τις πληροφορίες του αρχείου cached.
Αιτήματα χειρισμού
Όταν γίνεται επεξεργασία του αιτήματος ενός πελάτη για δεδομένα, EDDGrid FromFiles μπορεί να κοιτάξει γρήγορα στον πίνακα με τις έγκυρες πληροφορίες αρχείων για να δείτε ποια αρχεία έχουν τα ζητούμενα δεδομένα.
Ενημέρωση των πληροφοριών αρχείου Cached
Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, οι πληροφορίες του αρχείου σε κρύπτη ενημερώνονται.
- Το σύνολο δεδομένων επαναφορτώνεται περιοδικά, όπως καθορίζεται από το<reloadEveryNMinutes> στις πληροφορίες του συνόλου δεδομένων datasets.xml .
- Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατό, όποτε αυτό είναι δυνατό. ERDDAP™ ανιχνεύει ότι έχετε προσθέσει, αφαιρεθεί, Άγγιξε (για να αλλάξετε το τελευταίο αρχείο Τροποποιημένος χρόνος) ή άλλαξε ένα αρχείο δεδομένων.
- Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατόν αν χρησιμοποιήσετε το σύστημα σημαίας .
Όταν επαναφορτίζεται το σύνολο δεδομένων, ERDDAP™ συγκρίνει τα τρέχοντα διαθέσιμα αρχεία με τους πίνακες πληροφοριών αρχείων cached. Νέα αρχεία διαβάζονται και προστίθενται στον έγκυρο πίνακα αρχείων. Τα αρχεία που δεν υπάρχουν πλέον απορρίπτονται από τον έγκυρο πίνακα αρχείων. Τα αρχεία όπου έχει αλλάξει η χρονοσφραγίδα αρχείων διαβάζονται και οι πληροφορίες τους ενημερώνονται. Οι νέοι πίνακες αντικαθιστούν τους παλιούς πίνακες στη μνήμη και στο δίσκο.
Κακά αρχεία
Ο πίνακας των κακών αρχείων και οι λόγοι που τα αρχεία κηρύχθηκαν άσχημα (κατεστραμμένο αρχείο, λείπουν μεταβλητές, κ.λπ.) στέλνεται με email στο email Τα πάντα Στη διεύθυνση email (Μάλλον εσύ.) κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Θα πρέπει να αντικαταστήσετε ή να επισκευάσετε αυτά τα αρχεία το συντομότερο δυνατόν.
Αγνοούμενες μεταβλητές
Αν μερικά από τα αρχεία δεν έχουν κάποια από τα dataVariable s που ορίζονται στα σύνολα δεδομένων datasets.xml Δεν πειράζει. Πότε EDDGrid FromFiles διαβάζει ένα από αυτά τα αρχεία, θα ενεργεί σαν το αρχείο είχε τη μεταβλητή, αλλά με όλες τις τιμές που λείπουν.
Πρόβλημα FTP / Advice
Εάν FTP νέα αρχεία δεδομένων στο ERDDAP™ εξυπηρετητής κατά τη διάρκεια ERDDAP™ τρέχει, υπάρχει η πιθανότητα ότι ERDDAP™ θα επαναφορτώσει το σύνολο δεδομένων κατά τη διαδικασία FTP. Συμβαίνει πιο συχνά απ' όσο νομίζεις! Αν συμβεί, το αρχείο θα φανεί έγκυρο (έχει έγκυρο όνομα) Αλλά το αρχείο δεν είναι ακόμα έγκυρο. Εάν ERDDAP™ προσπαθεί να διαβάσει δεδομένα από αυτό το μη έγκυρο αρχείο, το σφάλμα που προκύπτει θα προκαλέσει την προσθήκη του αρχείου στον πίνακα των μη έγκυρων αρχείων. Αυτό δεν είναι καλό. Για να αποφύγετε αυτό το πρόβλημα, χρησιμοποιήστε ένα προσωρινό όνομα αρχείου όταν FTP'ing το αρχείο, για παράδειγμα, ABC2005 .nc \_TEMP . Στη συνέχεια, το αρχείοNameRegex δοκιμή (Βλέπε παρακάτω) θα δείξει ότι αυτό δεν είναι σχετικό αρχείο. Μετά την ολοκλήρωση της διαδικασίας FTP, μετονομάστε το αρχείο στο σωστό όνομα. Η διαδικασία μετονομασίας θα προκαλέσει το αρχείο να γίνει σχετικό σε μια στιγμή.
"0 αρχεία" Μήνυμα σφάλματος
Αν τρέξεις Δημιουργία συνόλων δεδομένωνXml ή ΔΑΠ , ή αν προσπαθήσετε να φορτώσετε EDDGrid Από... το σύνολο δεδομένων αρχείων ERDDAP™ , και μπορείτε να πάρετε ένα "0 αρχεία" μήνυμα σφάλματος που δείχνει ότι ERDDAP™ βρέθηκε 0 ταίριασμα αρχείων στον κατάλογο (όταν νομίζετε ότι υπάρχουν αρχεία που ταιριάζουν σε αυτόν τον κατάλογο) :
- Ελέγξτε ότι τα αρχεία είναι πραγματικά σε αυτόν τον κατάλογο.
- Ελέγξτε την ορθογραφία του ονόματος καταλόγου.
- Ελέγξτε το αρχείοNameRegex. Είναι πολύ εύκολο να κάνεις λάθη με τους Ρέγκες. Για δοκιμαστικούς σκοπούς, δοκιμάστε το regex .\* το οποίο θα πρέπει να ταιριάζει με όλα τα ονόματα αρχείων. (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
- Ελέγξτε ότι ο χρήστης που τρέχει το πρόγραμμα (π.χ., user=tomcat (♪ ♪) για το Tomcat/ ERDDAP ) έχει "διαβάστε" άδεια για αυτά τα αρχεία.
- Σε ορισμένα λειτουργικά συστήματα (για παράδειγμα, SELinux) και ανάλογα με τις ρυθμίσεις του συστήματος, ο χρήστης που έτρεξε το πρόγραμμα πρέπει να έχει «διαβασμένη» άδεια για όλη την αλυσίδα καταλόγων που οδηγεί στον κατάλογο που έχει τα αρχεία.
EDDGrid FromFiles σκελετός XML
- Ο σκελετός XML για όλους EDDGrid Οι υποκλάσεις FromFiles είναι:
<dataset type="EDDGridFrom...Files" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromFiles subclasses, this uses Java's WatchDirectory system
to notice new/deleted/changed files quickly and efficiently. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<fileDir>...</fileDir> <-- The directory (absolute) with the
data files. -->
<recursive>true|false</recursive> <!-- 0 or 1. Indicates if
subdirectories of fileDir have data files, too. -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\") will be accepted. -->
<fileNameRegex>...</fileNameRegex> <-- 0 or 1. A
regular expression (tutorial) describing valid data
file names, for example, ".\\.nc" for all .nc files. -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<metadataFrom>...</metadataFrom> <-- The file to get
metadata from ("first" or "last" (the default) based on file's
lastModifiedTime). -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
false (the default)) -->
<cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
<cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDD* Από AudioFiles
** EDDGrid Από AudioFiles** και Πίνακας EDD από αρχεία Audio συγκεντρωτικά δεδομένα από μια συλλογή τοπικών αρχείων ήχου. (Αυτές πρωτοεμφανίστηκαν στο ERDDAP™ v1.82.) Η διαφορά είναι ότι EDDGrid ΑπόAudioFiles αντιμετωπίζει τα δεδομένα ως ένα πολυδιάστατο σύνολο δεδομένων (συνήθως με 2 διαστάσεις: \[ Εκκίνηση αρχείου Χρόνος \] και \[ έχει παρέλθει Ώρα μέσα σε ένα αρχείο \] ) , ενώ EDDTableFromAudioFiles αντιμετωπίζει τα δεδομένα ως δεδομένα πίνακα (συνήθως με στήλες για την εκκίνηση του αρχείουTime, το χρονικό διάστημα με το αρχείο, και τα δεδομένα από τα κανάλια ήχου) . EDDGrid ΑπόAudioFiles απαιτεί ότι όλα τα αρχεία έχουν τον ίδιο αριθμό δειγμάτων, οπότε αν αυτό δεν είναι αλήθεια, θα πρέπει να χρησιμοποιήσετε EDDTableFromAudioFiles. Διαφορετικά, η επιλογή του τύπου EDD είναι αποκλειστικά δική σας επιλογή. Ένα πλεονέκτημα του EDDTableFromAudioFiles: μπορείτε να προσθέσετε άλλες μεταβλητές με άλλες πληροφορίες, π.χ. stationID , stationType. Και στις δύο περιπτώσεις, η έλλειψη μιας ενοποιημένης μεταβλητής χρόνου καθιστά πιο δύσκολη τη συνεργασία με τα δεδομένα από αυτούς τους τύπους EDD, αλλά δεν υπήρχε καλός τρόπος για να δημιουργηθεί μια ενοποιημένη μεταβλητή χρόνου.
Δείτε αυτές τις τάξεις, EDDGrid Από αρχεία και Πίνακας EDD από αρχεία , για γενικές πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Δεδομένου ότι τα αρχεία ήχου δεν έχουν άλλα μεταδεδομένα εκτός από πληροφορίες που σχετίζονται με την κωδικοποίηση των δεδομένων ήχου, θα πρέπει να επεξεργαστείτε την έξοδο από το GenerateDatasets Xml για την παροχή βασικών πληροφοριών (π.χ. τίτλος, περίληψη, creator\_name , ίδρυμα, ιστορικό) .
Λεπτομέρειες:
- Υπάρχει ένας μεγάλος αριθμός μορφών αρχείων ήχου. Προς το παρόν, ERDDAP™ μπορεί να διαβάσει στοιχεία από τα περισσότερα αρχεία .wav και .au. Προς το παρόν δεν μπορεί να διαβάσει άλλους τύπους αρχείων ήχου, π.χ., .aiff ή .mp3. Εάν χρειάζεστε υποστήριξη για άλλες μορφές αρχείων ήχου ή άλλες παραλλαγές του .wav και .au, παρακαλούμε στείλτε email το αίτημά σας στον Chris. Ο Τζον στο Νόαγκοβ. Ή, ως μια εργασία γύρω από μπορείτε να χρησιμοποιήσετε τώρα, μπορείτε να μετατρέψετε αρχεία ήχου σας σε PCM\_ ΥΠΟΓΡΑΦΗ (για ακέραια δεδομένα) ή PCM\_FLOAT (για δεδομένα κινητής υποδιαστολής) .wav αρχεία έτσι ώστε ERDDAP™ Μπορεί να δουλέψει μαζί τους.
- Αυτή τη στιγμή, ERDDAP™ μπορεί να διαβάσει αρχεία ήχου με τι Java Η κλάση AudioFormat καλεί PCM\_FLOAT, PCM\_Signed, PCM\_UNSigned, ALAW, και κωδικοποιήσεις ULAW. ERDDAP™ μετατρέπει τιμές PCM\_UNSIGNED (π.χ., 0 έως 255) σε υπογεγραμμένες τιμές (π.χ. -128 έως 128) αναδιατάσσοντας τα bits στις τιμές δεδομένων. ERDDAP™ μετατρέπει ALAW και ULAW κωδικοποιημένα από τη μητρική κωδικοποιημένη μορφή byte τους σε σύντομο (int16) τιμές. Από Java θέλει bigEndian=αληθινά δεδομένα, ERDDAP™ αναδιαμορφώνει τα bytes των δεδομένων που αποθηκεύονται με bigEndian=false (μικρό endian) προκειμένου να διαβαστούν σωστά οι τιμές. Για όλες τις άλλες κωδικοποιήσεις (ΣΑΠ) , ERDDAP™ διαβάζει τα δεδομένα όπως είναι.
- Πότε ERDDAP™ διαβάζει δεδομένα από αρχεία ήχου, μετατρέπει τα διαθέσιμα μεταδεδομένα ήχου του αρχείου σε παγκόσμια χαρακτηριστικά. Αυτό θα περιλαμβάνει πάντα (με απεικονιζόμενες τιμές δείγματος)
audio συμβολοσειρά BigEndian "ψευδής"; //true ή ψευδής int audio Κανάλια 1 Ηχογράφηση συμβολοσειρώνEnPCM\_SIGNED"; float audioFrameRate 96000.0; //ανά δευτερόλεπτο int audioFrameΜέγεθος 2; //# των ψηφιολέξεων δεδομένων ανά πλαίσιο float audioSampleRate 96000.0; //ανά δευτερόλεπτο int audioSampleSizeInBits 16; //# των bits ανά κανάλι ανά δείγμα
Για ERDDAP Οι σκοποί ενός πλαισίου είναι συνώνυμο με ένα δείγμα, το οποίο είναι τα δεδομένα για ένα σημείο στο χρόνο. Τα χαρακτηριστικά στο ERDDAP™ θα έχουν τις πληροφορίες που περιγράφουν τα δεδομένα όπως ήταν στα αρχεία πηγής. ERDDAP™ συχνά έχουν αλλάξει αυτό, ενώ διαβάζοντας τα δεδομένα, π.χ., PCM\_UNSIGNED, ALAW, και ULAW κωδικοποιημένα δεδομένα μετατρέπονται σε PCM\_SIGNED, και bigEndian=false δεδομένα μετατρέπεται σε bigEndian=true δεδομένα (Έτσι γίνεται. Java Θέλει να το διαβάσει.) . Στο τέλος, οι τιμές των δεδομένων ERDDAP™ θα είναι πάντα το Κωδικοποιημένο με PCM Τιμές δεδομένων (Δηλαδή, απλά ψηφιακά δείγματα του ηχητικού κύματος) .
- Πότε ERDDAP™ διαβάζει δεδομένα από αρχεία ήχου, διαβάζει ολόκληρο το αρχείο. ERDDAP™ μπορεί να διαβάσει περίπου 2 δισεκατομμύρια δείγματα ανά κανάλι. Για παράδειγμα, αν ο ρυθμός δειγματοληψίας είναι 44,100 δείγματα ανά δευτερόλεπτο, 2 δισεκατομμύρια δείγματα μεταφράζονται σε περίπου 756 λεπτά δεδομένων ήχου ανά αρχείο. Αν έχετε αρχεία ήχου με περισσότερα από αυτό το ποσό των δεδομένων, θα πρέπει να σπάσει τα αρχεία σε μικρότερα κομμάτια, έτσι ώστε ERDDAP™ Μπορεί να τα διαβάσει.
- Γιατί; ERDDAP™ διαβάζει ολόκληρα αρχεία ήχου, ERDDAP™ πρέπει να έχουν πρόσβαση σε μια μεγάλη ποσότητα μνήμης για να εργαστούν με μεγάλα αρχεία ήχου. Βλέπεις; ERDDAP settings μνήμης . Και πάλι, αν αυτό είναι ένα πρόβλημα, μια έρευνα που μπορείτε να χρησιμοποιήσετε τώρα είναι να διασπάσετε τα αρχεία σε μικρότερα κομμάτια έτσι ώστε ERDDAP™ μπορεί να τα διαβάσει με λιγότερη μνήμη.
- Μερικά αρχεία ήχου γράφτηκαν λανθασμένα. ERDDAP™ κάνει μια μικρή προσπάθεια να αντιμετωπίσει τέτοιες υποθέσεις. Αλλά σε γενικές γραμμές, όταν υπάρχει ένα λάθος, ERDDAP™ Θα ρίξει μια εξαίρεση (και να απορρίψει τον φάκελο) ή (εάν το σφάλμα είναι μη ανιχνεύσιμο) ανάγνωση των δεδομένων (αλλά τα δεδομένα θα είναι λανθασμένα) .
- ERDDAP™ δεν ελέγχει ή τροποποιεί την ένταση του ήχου. Ιδανικά, ακέραια δεδομένα ήχου κλιμακώνεται για να χρησιμοποιήσει ολόκληρο το φάσμα του τύπου δεδομένων.
- Τα αρχεία ήχου και οι συσκευές αναπαραγωγής ήχου δεν έχουν σύστημα για τις τιμές που λείπουν (π.χ. -999 ή Float.NaN) . Έτσι, τα δεδομένα ήχου δεν θα πρέπει να έχουν οποιεσδήποτε τιμές που λείπουν. Εάν υπάρχουν ελλείπουσες τιμές (π.χ., εάν χρειάζεται να επιμηκύνετε ένα αρχείο ήχου) , χρησιμοποιήστε μια σειρά 0 που θα ερμηνευτεί ως τέλεια σιωπή.
- Πότε ERDDAP™ διαβάζει δεδομένα από αρχεία ήχου, δημιουργεί πάντα μια στήλη που ονομάζεται περασμένες Χρόνος με το χρόνο για κάθε δείγμα, σε δευτερόλεπτα (αποθηκευμένα ως διπλάσια) , σε σχέση με το πρώτο δείγμα (το οποίο έχει παρέλθει Χρόνος=0,0 s) . Με EDDGrid Από AudioFiles, αυτό γίνεται η μεταβλητή άξονα του χρόνου.
- EDDGrid Από AudioFiles απαιτεί ότι όλα τα αρχεία έχουν τον ίδιο αριθμό δειγμάτων. Έτσι, αν αυτό δεν είναι αλήθεια, θα πρέπει να χρησιμοποιήσετε το EDDTableFromAudioFiles.
- Για EDDGrid Από AudioFiles, σας συνιστούμε να ρυθμίσετε [<ΔιαστάσειςΤιμέςInMemory>] (#τιμές διάστασης μνήμη) σε ψευδή (όπως συνιστάται από το GenerateDatasets Xml) , επειδή η χρονική διάσταση συχνά έχει έναν τεράστιο αριθμό τιμών.
- Για EDDGrid Από AudioFiles, θα πρέπει σχεδόν πάντα να χρησιμοποιήσετε το EDDGrid Σύστημα απόΑρχεία για Συγκέντρωση μέσω Ονόματα αρχείων , σχεδόν πάντα με την εξαγωγή της ημερομηνίας έναρξης της εγγραφής Ώρα από τα ονόματα αρχείων. Για παράδειγμα,
<sourceName>\\*\\*\\*fileName,"timeFormat=yyyyMMdd'\\_'HHmmss",aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
Δημιουργία συνόλων δεδομένων Xml θα ενθαρρύνει αυτό και να σας βοηθήσει με αυτό.
- Για τον πίνακα EDDFromAudioFiles, θα πρέπει σχεδόν πάντα να χρησιμοποιείτε το σύστημα EDDTableFromFiles για \\\* αρχείοName pseudo sourceName α για την εξαγωγή πληροφοριών από το όνομα του αρχείου (σχεδόν πάντα η ημερομηνία έναρξης Ώρα για την ηχογράφηση) και την προώθηση να είναι μια στήλη δεδομένων. Για παράδειγμα,
<sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
Στη συνέχεια, ο μορφότυπος του χρόνου θα πρέπει να προσδιορίζεται ως χαρακτηριστικό των μονάδων:<att name="μονάδες"> yyyMMdd'\_'Hmmss</att>
EDDGrid FromMergeIRΑρχεία
** EDDGrid FromMergeIRΑρχεία** συγκεντρωτικά στοιχεία από τοπικά, Συγχώνευση αρχεία, τα οποία είναι από το τροπική αποστολή μέτρησης βροχοπτώσεων (ΑΤΜΜ) , η οποία αποτελεί κοινή αποστολή μεταξύ της NASA και της Υπηρεσίας Αεροδιαστημικής Εξερεύνησης της Ιαπωνίας (ΙΑΞΑ) . Συγχώνευση Τα αρχεία IR μπορούν να μεταφορτωθούν από NASA .
EDDGrid ΑπόMergeIRFiles.java γράφτηκε και συνέβαλε στην ERDDAP™ έργο των Jonathan Lafite και Philippe Makowski της R.Tech Engineering (άδεια: πνευματικά δικαιώματα ανοικτού κώδικα) .
EDDGrid ΑπόMergeIRFiles είναι λίγο ασυνήθιστο:
- EDDGrid FromMergeIRFiles υποστηρίζει συμπιεσμένα ή ασυμπίεστα αρχεία δεδομένων πηγαίου κώδικα, σε οποιοδήποτε συνδυασμό, στο ίδιο σύνολο δεδομένων. Αυτό σας επιτρέπει, για παράδειγμα, να συμπιέσετε παλαιότερα αρχεία που είναι σπάνια προσβάσιμα, αλλά να αποσυμπιέσετε νέα αρχεία που είναι συχνά προσβάσιμα. Ή, μπορείτε να αλλάξετε το είδος της συμπίεσης από την αρχική . Z για παράδειγμα, .gz .
- Εάν έχετε συμπιεσμένες και ασυμπίεστες εκδόσεις των ίδιων αρχείων δεδομένων στον ίδιο κατάλογο, παρακαλούμε βεβαιωθείτε ότι η<αρχείοNameRegex> για το σύνολο δεδομένων σας ταιριάζει με τα ονόματα αρχείων που θέλετε να ταιριάζει και δεν ταιριάζει με τα ονόματα αρχείων που δεν θέλετε να ταιριάζει.
- Μη συμπιεσμένα αρχεία δεδομένων πηγής δεν πρέπει να έχουν επέκταση αρχείου (Δηλαδή, όχι "." στο όνομα αρχείου) .
- Συμπιεσμένα αρχεία δεδομένων πηγής πρέπει να έχουν μια επέκταση αρχείου, αλλά ERDDAP™ καθορίζει τον τύπο συμπίεσης ελέγχοντας τα περιεχόμενα του αρχείου, όχι κοιτάζοντας την επέκταση του αρχείου του αρχείου (Για παράδειγμα, ".Ζ") . Οι υποστηριζόμενοι τύποι συμπίεσης περιλαμβάνουν "gz", "bzip2", "xz", "lzma", "snappy-raw", "snappy-frame", "pack200", και "z". Πότε ERDDAP™ διαβάζει συμπιεσμένα αρχεία, αποσυμπιέζει on-the-fly, χωρίς να γράφει σε προσωρινό αρχείο.
- Όλα τα αρχεία δεδομένων πηγής πρέπει να χρησιμοποιούν το αρχικό σύστημα ονοματοδοσίας αρχείων: δηλαδή, merg\_ ΕΕΕΕΜΜΗΗΗ \4km-pixel (όπου ΕΕΕΕΜΜΗΗΗ δηλώνει το χρόνο που συνδέεται με τα δεδομένα στο αρχείο) , συν μια επέκταση αρχείου αν το αρχείο είναι συμπιεσμένο.
Δες αυτή την τάξη, EDDGrid Από αρχεία , για γενικές πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
EDDGrid Από αρχείαNc
** EDDGrid Από αρχείαNc** συγκεντρωτικά δεδομένα από τοπικά, πλέγματα, GRIB .grb και .grb2 αρχεία, HDF (v4 ή v5) .hdf αρχεία, .nc ml αρχεία, NetCDF (v3 ή v4) .nc αρχεία και Ζαρ αρχεία (από την έκδοση 2.25) . Τα αρχεία Zarr έχουν ελαφρώς διαφορετική συμπεριφορά και απαιτούν είτε το αρχείοNameRegex είτε το μονοπάτιRegex να περιλαμβάνει " zarr".
Νέο in ERDDAP™ έκδοση 2.29.0 είναι πειραματική υποστήριξη για τις μεταβλητές δεδομένων που δεν υποστηρίζουν όλες τις μεταβλητές άξονα (ή όπως κάποιοι το έχουν ονομάσει 1D και 2D δεδομένα στο ίδιο σύνολο δεδομένων) . Παρακαλώ επικοινωνήστε με το GitHub (συζητήσεις ή θέματα) με ανατροφοδότηση και σφάλματα.
Αυτό μπορεί να λειτουργήσει με άλλους τύπους αρχείων (για παράδειγμα, BUFR) Απλά δεν το δοκιμάσαμε. Παρακαλώ στείλτε μας μερικά δείγματα.
- Για αρχεία GRIB, ERDDAP™ θα κάνει ένα αρχείο ευρετηρίου .gbx την πρώτη φορά που διαβάζει κάθε αρχείο GRIB. Έτσι, τα αρχεία GRIB πρέπει να είναι σε έναν κατάλογο όπου ο "χρήστης" που έτρεξε Tomcat έχει ανάγνωση + άδεια εγγραφής.
- Δες αυτή την τάξη, EDDGrid Από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Ξεκινώντας με ERDDAP™ v2.12, EDDGrid Από αρχεία και EDDGrid Από αρχείαNc Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε .nc 4 και .hdf Τέσσερα αρχεία. Για τον προσδιορισμό μιας μεταβλητής που είναι από μια δομή, η< sourceName > πρέπει να χρησιμοποιούν το μορφότυπο: πλήρης δομήName | μέλοςName , για παράδειγμα ομάδα1/myStruct | Το μέλος μου.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Ομάδες σε ρυθμισμένα αρχεία Nc
Τα αρχεία Netcdf4 μπορούν να περιέχουν ομάδες. ERDDAP™ απλά κάνει ένα σύνολο δεδομένων από τις μεταβλητές σε μια ομάδα και όλες τις μητρικές της ομάδες. Μπορείτε να ορίσετε ένα συγκεκριμένο όνομα ομάδας στα σύνολα GenerateDatasets Xml (παραλείψτε την οριζοντίωση) , ή χρήση "" για τη δημιουργία συνόλων δεδομένων Xml αναζήτηση όλων των ομάδων για τις μεταβλητές που χρησιμοποιούν τις περισσότερες διαστάσεις, ή χρήση. \[ ρίζα \] " να έχουν GenerateDatasets απλά να ψάξουν για μεταβλητές στη ρίζα ομάδα.
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
EDDGrid Από αρχείαNcUnpacked
** EDDGrid Από αρχείαNcUnpacked** είναι μια παραλλαγή του EDDGrid Από αρχείαNc το οποίο συγκεντρώνει δεδομένα από τοπικά, πλέγματα NetCDF (v3 ή v4) .nc και σχετικά αρχεία. Η διαφορά είναι ότι αυτή η κατηγορία αποσυσκευάζει κάθε αρχείο δεδομένων πριν EDDGrid FromFiles κοιτάζει τα αρχεία:
- Αποσυσκευάζει τις μεταβλητές που είναι γεμάτες με scale\_factor ή/και add\_offset .
- Μετατρέπει \_FillValue και missing\_value τιμές να είναι NaN του (ή MAX\_VALUE για ακέραιους τύπους δεδομένων) .
- Μετατρέπει τις τιμές χρόνου και χρονοσφραγίδων σε "seconds since 1970-01-01T00:00:00Z" .
Το μεγάλο πλεονέκτημα αυτής της κατηγορίας είναι ότι παρέχει έναν τρόπο για την αντιμετώπιση των διαφορετικών αξιών scale\_factor , add\_offset , \_FillValue, missing\_value , ή μονάδες χρόνου σε διαφορετικά αρχεία πηγή σε μια συλλογή. Διαφορετικά, θα πρέπει να χρησιμοποιήσετε ένα εργαλείο όπως NcML ή NCO για να τροποποιήσετε κάθε αρχείο για να αφαιρέσετε τις διαφορές έτσι ώστε τα αρχεία θα μπορούσε να χειριστεί EDDGrid Από το NcFiles. Για να λειτουργήσει σωστά αυτή η τάξη, τα αρχεία πρέπει να ακολουθούν τα πρότυπα ΚΙ για τα σχετικά χαρακτηριστικά.
- Αν προσπαθήσετε να κάνετε ένα EDDGrid Από αρχείαNc Αποσυσκευασμένα από μια ομάδα αρχείων με τα οποία προηγουμένως προσπαθήσατε και δεν χρησιμοποιήσατε EDDGrid ΑπόΑρχεία, cd σε bigParentΚατάλογος / σύνολο δεδομένων/ τελευταία2Γράμματα / * datasetID * / όπου τελευταία2Γράμματα είναι τα τελευταία 2 γράμματα της datasetID , και να διαγράψει όλα τα αρχεία σε αυτόν τον κατάλογο.
- Ξεκινώντας με ERDDAP™ v2.12, EDDGrid Από αρχεία και EDDGrid Από αρχείαNc Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε .nc 4 και .hdf Τέσσερα αρχεία. Για τον προσδιορισμό μιας μεταβλητής που είναι από μια δομή, η< sourceName > πρέπει να χρησιμοποιούν το μορφότυπο: πλήρης δομήName | μέλοςName , για παράδειγμα ομάδα1/myStruct | Το μέλος μου.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Τα αρχεία Netcdf4 μπορούν να περιέχουν ομάδες. Βλέπεις; τα εν λόγω έγγραφα .
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτό το είδος συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος πριν Είναι ξεπακεταρισμένο. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
EDDGrid LonPM180
** EDDGrid LonPM180** τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιού (κλειστό) EDDGrid σύνολο δεδομένων που έχει ορισμένες τιμές γεωγραφικού μήκους μεγαλύτερες από 180 (για παράδειγμα, 0 έως 360) έτσι ώστε να είναι στο εύρος -180 έως 180 (Γεωγραφικό μήκος Plus ή Minus 180, εξ ου και το όνομα) .
- Αυτό παρέχει έναν τρόπο για να γίνουν σύνολα δεδομένων που έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180 συμμορφούμενες σε / με OGC υπηρεσίες (Για παράδειγμα, το WMS εξυπηρετητής in ERDDAP ) , από όλα OGC οι υπηρεσίες απαιτούν τιμές γεωγραφικού μήκους μεταξύ -180 και 180.
- Η εργασία κοντά σε ασυνέχεια προκαλεί προβλήματα, ανεξάρτητα από το αν η ασυνέχεια είναι στο γεωγραφικό μήκος 0 ή στο γεωγραφικό μήκος 180. Αυτός ο τύπος συνόλου δεδομένων σας επιτρέπει να αποφύγετε αυτά τα προβλήματα για όλους, προσφέροντας δύο εκδόσεις του ίδιου συνόλου δεδομένων: ένα με τιμές γεωγραφικού μήκους μεταξύ 0 και 360 ("Ειρηνοκεντρική"?) , ένα με τιμές γεωγραφικού μήκους μεταξύ 180 και 180 ("Ατλαντική"?) .
- Για τα σύνολα δεδομένων για παιδιά με όλες τις τιμές γεωγραφικού μήκους μεγαλύτερες από 180, όλες οι νέες τιμές γεωγραφικού μήκους είναι απλά 360 μοίρες χαμηλότερες. Για παράδειγμα, ένα σύνολο δεδομένων με τιμές γεωγραφικού μήκους 180 έως 240 θα γινόταν σύνολο δεδομένων με τιμές γεωγραφικού μήκους -180 έως -120.
- Για σύνολα δεδομένων παιδιών που έχουν τιμές γεωγραφικού μήκους για ολόκληρο τον κόσμο (περίπου 0 έως 360) , η νέα τιμή γεωγραφικού μήκους θα αναδιαρθρωθεί (χονδρικά) -180 έως 180: Οι αρχικές τιμές 0 έως σχεδόν 180 είναι αμετάβλητες. Οι αρχικές 180 σε 360 τιμές μετατρέπονται σε -180 σε 0 και μετατοπίζονται στην αρχή της συστοιχίας γεωγραφικού μήκους.
- Για παιδικά σύνολα δεδομένων που καλύπτουν 180 αλλά δεν καλύπτουν την υδρόγειο, ERDDAP™ εισάγει τις τιμές που λείπουν, όπως απαιτείται, για να δημιουργηθεί ένα σύνολο δεδομένων που καλύπτει τον κόσμο. Για παράδειγμα, ένα σύνολο δεδομένων για παιδιά με τιμές γεωγραφικού μήκους 140 έως 200 θα γινόταν σύνολο δεδομένων με τιμές γεωγραφικού μήκους -180 έως 180. Οι παιδικές αξίες των 180 με 200 θα γίνονταν -180 με -160. Νέες τιμές γεωγραφικού μήκους θα παρεμβάλλονται από -160 έως 140. Οι αντίστοιχες τιμές δεδομένων θα είναι \_FillValues. Οι τιμές των παιδιών από 140 έως σχεδόν 180 θα ήταν αμετάβλητες. Η εισαγωγή των τιμών που λείπουν μπορεί να φαίνεται περίεργη, αλλά αποφεύγει αρκετά προβλήματα που προκύπτουν από την ύπαρξη τιμών γεωγραφικού μήκους που άλμα ξαφνικά (π.χ. από -160 έως 140) .
- Μέσα Δημιουργία συνόλων δεδομένωνXml , υπάρχει ένας τύπος ειδικού συνόλου δεδομένων ", EDDGrid LonPM180FromErddapCatalog, που σας επιτρέπει να δημιουργήσετε το datasets.xml για EDDGrid LonPM180 σύνολα δεδομένων από κάθε ένα από τα EDDGrid σύνολα δεδομένων ERDDAP που έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180. Αυτό διευκολύνει την προσφορά δύο εκδόσεων αυτών των συνόλων δεδομένων: το πρωτότυπο, με τιμές γεωγραφικού μήκους μεταξύ 0 και 360, και το νέο σύνολο δεδομένων, με τιμές γεωγραφικού μήκους μεταξύ -180 και 180.
Το σύνολο δεδομένων για παιδιά σε κάθε EDDGrid Το σύνολο δεδομένων LonPM180 θα είναι ένα EDDGrid Από το σύνολο δεδομένων Erddap που δείχνει το αρχικό σύνολο δεδομένων. Το νέο σύνολο δεδομένων datasetID θα είναι το όνομα του αρχικού συνόλου δεδομένων συν "\_LonPM180". Για παράδειγμα,
<dataset type="EDDGridLonPM180" datasetID="erdMBsstdmday\\_LonPM180" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_LonPM180Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=120.0 maxLon=320.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Βάλε το EDDGrid Σύνολο δεδομένων LonPM180 παρακάτω το αρχικό σύνολο δεδομένων datasets.xml . Αυτό αποφεύγει κάποια πιθανά προβλήματα.
Εναλλακτικά, μπορείτε να αντικαταστήσετε το EDDGrid Από το σύνολο δεδομένων παιδιών Erddap με το αρχικό σύνολο δεδομένων datasets.xml . Στη συνέχεια, θα υπάρχει μόνο μία έκδοση του συνόλου δεδομένων: αυτή με τιμές γεωγραφικού μήκους εντός -180 έως 180. Το αποθαρρύνουμε γιατί υπάρχουν φορές που κάθε έκδοση του συνόλου δεδομένων είναι πιο βολική.
-
Εάν προσφέρετε δύο εκδόσεις ενός συνόλου δεδομένων, για παράδειγμα, μία με γεωγραφικό μήκος 0 έως 360 και μία με γεωγραφικό μήκος -180 έως 180:
- Μπορείτε να χρησιμοποιήσετε το προαιρετικό [<προσβάσιμη Μέσω WMS > Ψεύδος</προσιτό Μέσω WMS >] (#προσιτά viawms) με το σύνολο δεδομένων 0-360 για να απενεργοποιήσετε το WMS υπηρεσία για το σύνολο δεδομένων. Στη συνέχεια, μόνο η έκδοση LonPM180 του συνόλου δεδομένων θα είναι προσβάσιμη μέσω WMS .
- Υπάρχουν δύο τρόποι για να κρατήσετε το σύνολο δεδομένων LonPM180 ενημερωμένο με τις αλλαγές στο υποκείμενο σύνολο δεδομένων:
- Εάν το σύνολο δεδομένων για το παιδί είναι EDDGrid Από το σύνολο δεδομένων Erddap που αναφέρει ένα σύνολο δεδομένων στο ίδιο ERDDAP™ , το σύνολο δεδομένων LonPM180 θα προσπαθήσει να εγγραφεί άμεσα στο υποκείμενο σύνολο δεδομένων, ώστε να είναι πάντα ενημερωμένο. Οι άμεσες συνδρομές δεν δημιουργούν email που σας ζητούν να επικυρώσετε την εγγραφή - επικύρωση θα πρέπει να γίνει αυτόματα.
- Εάν το σύνολο δεδομένων για παιδιά δεν είναι EDDGrid Από το σύνολο δεδομένων Erddap που βρίσκεται στο ίδιο ERDDAP™ , το σύνολο δεδομένων LonPM180 θα προσπαθήσει να χρησιμοποιήσει το κανονικό σύστημα συνδρομής για να εγγραφεί στο υποκείμενο σύνολο δεδομένων. Εάν έχετε το σύστημα συνδρομής στο ERDDAP™ ενεργοποιημένο, θα πρέπει να πάρετε e-mail ζητώντας σας να επικυρώσετε τη συνδρομή. Σε παρακαλώ, κάνε το.
- Εάν έχετε το σύστημα συνδρομής στο ERDDAP™ απενεργοποιημένο, το σύνολο δεδομένων LonPM180 μπορεί μερικές φορές να έχει ξεπερασμένα μεταδεδομένα μέχρι την επαναφόρτωση του συνόλου δεδομένων LonPM180. Έτσι, αν το σύστημα συνδρομής είναι απενεργοποιημένο, θα πρέπει να ρυθμίσετε το [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) ρύθμιση του συνόλου δεδομένων LonPM180 σε μικρότερο αριθμό, έτσι ώστε να είναι πιο πιθανό να πιάσει αλλαγές στο σύνολο δεδομένων παιδιών νωρίτερα.
-
Για σύνολα δεδομένων μέγιστου μήκους > 360, χρησιμοποιήστε την ακόλουθη προαιρετική διαμόρφωση για να ορίσετε τη μέγιστη τιμή και το σύνολο δεδομένων θα διορθωθεί σε -180 έως 180.
<maxSourceLon>540</maxSourceLon>
EDDGrid Σκελετός LonPM180 XML
<dataset type="EDDGridLonPM180" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGrid Λον0360
** EDDGrid Λον0360** τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιού (κλειστό) EDDGrid σύνολο δεδομένων που έχει ορισμένες τιμές γεωγραφικού μήκους μικρότερες από 0 (για παράδειγμα, -180 έως 180) έτσι ώστε να είναι στην περιοχή 0 έως 360 (εξ ου και η ονομασία) .
- Η εργασία κοντά σε ασυνέχεια προκαλεί προβλήματα, ανεξάρτητα από το αν η ασυνέχεια είναι στο γεωγραφικό μήκος 0 ή στο γεωγραφικό μήκος 180. Αυτός ο τύπος συνόλου δεδομένων σας επιτρέπει να αποφύγετε αυτά τα προβλήματα για όλους, προσφέροντας δύο εκδόσεις του ίδιου συνόλου δεδομένων: ένα με τιμές γεωγραφικού μήκους μεταξύ 180 και 180 ("Ατλαντική"?) . ένα με τιμές γεωγραφικού μήκους μεταξύ 0 και 360 ("Ειρηνοκεντρική"?) ,
- Για σύνολα δεδομένων για παιδιά με όλες τις τιμές γεωγραφικού μήκους μικρότερες του 0, όλες οι νέες τιμές γεωγραφικού μήκους είναι απλώς 360 μοίρες υψηλότερες. Για παράδειγμα, ένα σύνολο δεδομένων με τιμές γεωγραφικού μήκους -180 έως -120 θα γινόταν σύνολο δεδομένων με τιμές γεωγραφικού μήκους 180 έως 240.
- Για σύνολα δεδομένων παιδιών που έχουν τιμές γεωγραφικού μήκους για ολόκληρο τον κόσμο (περίπου -180 έως 180) , η νέα τιμή γεωγραφικού μήκους θα αναδιαρθρωθεί (χονδρικά) 0 έως 360: Οι αρχικές -180 σε 0 τιμές μετατρέπονται σε 180 σε 360 και μετατοπίζονται στο τέλος της συστοιχίας γεωγραφικού μήκους. Οι αρχικές τιμές 0 έως σχεδόν 180 είναι αμετάβλητες.
- Για παιδικά σύνολα δεδομένων που καλύπτουν το lon=0 αλλά δεν καλύπτουν την υδρόγειο, ERDDAP™ εισάγει τις τιμές που λείπουν, όπως απαιτείται, για να δημιουργηθεί ένα σύνολο δεδομένων που καλύπτει τον κόσμο. Για παράδειγμα, ένα σύνολο δεδομένων για παιδιά με τιμές γεωγραφικού μήκους -40 έως 20 θα γινόταν σύνολο δεδομένων με τιμές γεωγραφικού μήκους 0 έως 360. Οι τιμές των παιδιών από 0 έως 20 θα ήταν αμετάβλητες. Οι νέες τιμές γεωγραφικού μήκους θα παρεμβάλλονται από 20 έως 320. Οι αντίστοιχες τιμές δεδομένων θα είναι \_FillValues. Οι παιδικές αξίες του -40 με 0 θα γίνονταν 320 με 360. Η εισαγωγή των τιμών που λείπουν μπορεί να φαίνεται περίεργη, αλλά αποφεύγει αρκετά προβλήματα που προκύπτουν από την ύπαρξη τιμών γεωγραφικού μήκους που άλμα ξαφνικά (π.χ. από 20 έως 320) .
- Μέσα Δημιουργία συνόλων δεδομένωνXml , υπάρχει ένας τύπος ειδικού συνόλου δεδομένων ", EDDGrid Lon0360 Από ErddapCatalog, που σας επιτρέπει να δημιουργήσετε το datasets.xml για EDDGrid Lon0360 σύνολα δεδομένων από κάθε ένα από τα EDDGrid σύνολα δεδομένων ERDDAP που έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180. Αυτό διευκολύνει την προσφορά δύο εκδόσεων αυτών των συνόλων δεδομένων: το πρωτότυπο, με τιμές γεωγραφικού μήκους μεταξύ 0 και 360, και το νέο σύνολο δεδομένων, με τιμές γεωγραφικού μήκους μεταξύ -180 και 180.
Το σύνολο δεδομένων για παιδιά σε κάθε EDDGrid Lon0360 σύνολο δεδομένων θα είναι ένα EDDGrid Από το σύνολο δεδομένων Erddap που δείχνει το αρχικό σύνολο δεδομένων. Το νέο σύνολο δεδομένων datasetID θα είναι το όνομα του αρχικού συνόλου δεδομένων συν "\_Lon0360". Για παράδειγμα,
<dataset type="EDDGridLon0360" datasetID="erdMBsstdmday\\_Lon0360" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_Lon0360Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=-40.0 maxLon=20.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Βάλε το EDDGrid Σύνολο δεδομένων Lon0360 παρακάτω το αρχικό σύνολο δεδομένων datasets.xml . Αυτό αποφεύγει κάποια πιθανά προβλήματα.
Εναλλακτικά, μπορείτε να αντικαταστήσετε το EDDGrid Από το σύνολο δεδομένων παιδιών Erddap με το αρχικό σύνολο δεδομένων datasets.xml . Στη συνέχεια, θα υπάρχει μόνο μία έκδοση του συνόλου δεδομένων: αυτή με τιμές γεωγραφικού μήκους μεταξύ 0 και 360. Το αποθαρρύνουμε γιατί υπάρχουν φορές που κάθε έκδοση του συνόλου δεδομένων είναι πιο βολικό.
- Εάν προσφέρετε δύο εκδόσεις ενός συνόλου δεδομένων, για παράδειγμα, μία με γεωγραφικό μήκος 0 έως 360 και μία με γεωγραφικό μήκος -180 έως 180:
- Μπορείτε να χρησιμοποιήσετε το προαιρετικό [<προσβάσιμη Μέσω WMS > Ψεύδος</προσιτό Μέσω WMS >] (#προσιτά viawms) με το σύνολο δεδομένων 0 έως 360 για τη βίαιη απενεργοποίηση του WMS υπηρεσία για το σύνολο δεδομένων. Στη συνέχεια, μόνο η -180 έως 180 έκδοση του συνόλου δεδομένων θα είναι προσβάσιμη μέσω WMS .
- Υπάρχουν δύο τρόποι να διατηρηθεί το σύνολο δεδομένων Lon0360 ενημερωμένο με τις αλλαγές στο υποκείμενο σύνολο δεδομένων:
- Εάν το σύνολο δεδομένων για το παιδί είναι EDDGrid Από το σύνολο δεδομένων Erddap που αναφέρει ένα σύνολο δεδομένων στο ίδιο ERDDAP™ , το σύνολο δεδομένων Lon0360 θα προσπαθήσει να εγγραφεί άμεσα στο υποκείμενο σύνολο δεδομένων έτσι ώστε να είναι πάντα ενημερωμένο. Οι άμεσες συνδρομές δεν δημιουργούν email που σας ζητούν να επικυρώσετε την εγγραφή - επικύρωση θα πρέπει να γίνει αυτόματα.
- Εάν το σύνολο δεδομένων για παιδιά δεν είναι EDDGrid Από το σύνολο δεδομένων Erddap που βρίσκεται στο ίδιο ERDDAP™ , το σύνολο δεδομένων Lon0360 θα προσπαθήσει να χρησιμοποιήσει το κανονικό σύστημα συνδρομής για να εγγραφεί στο υποκείμενο σύνολο δεδομένων. Εάν έχετε το σύστημα συνδρομής στο ERDDAP™ ενεργοποιημένο, θα πρέπει να πάρετε e-mail ζητώντας σας να επικυρώσετε τη συνδρομή. Σε παρακαλώ, κάνε το.
- Εάν έχετε το σύστημα συνδρομής στο ERDDAP™ απενεργοποιημένο, το σύνολο δεδομένων Lon0360 μπορεί μερικές φορές να έχει ξεπερασμένα μεταδεδομένα μέχρι την επαναφόρτωση του συνόλου δεδομένων Lon0360. Έτσι, αν το σύστημα συνδρομής είναι απενεργοποιημένο, θα πρέπει να ρυθμίσετε το [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) καθορισμός του συνόλου δεδομένων Lon0360 σε μικρότερο αριθμό, έτσι ώστε να είναι πιο πιθανό να πιάσει αλλαγές στο σύνολο δεδομένων παιδιών νωρίτερα.
EDDGrid Lon0360 σκελετός XML
<dataset type="EDDGridLon0360" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGrid Παράπλευρο
** EDDGrid Παράπλευρο** αθροίσματα δύο ή περισσότερα EDDGrid σύνολα δεδομένων (τα παιδιά) δίπλα-δίπλα.
- Το σύνολο δεδομένων που προκύπτει έχει όλες τις μεταβλητές από όλα τα σύνολα δεδομένων παιδιών.
- Το γονικό σύνολο δεδομένων και όλα τα σύνολα δεδομένων παιδιών ΠΡΕΠΕΙ να έχουν διαφορετικές datasetID Σ. Αν κάποια ονόματα σε μια οικογένεια είναι ακριβώς τα ίδια, το σύνολο δεδομένων θα αποτύχει να φορτώσει (με το μήνυμα σφάλματος ότι οι τιμές του συγκεντρωτικού άξονα δεν είναι ταξινομημένες) .
- Όλα τα παιδιά ΠΡΕΠΕΙ να έχουν τις ίδιες τιμές πηγής για axisVariable α \[ 1+ \] (για παράδειγμα, γεωγραφικό πλάτος, γεωγραφικό μήκος) . Η ακρίβεια της δοκιμής καθορίζεται από ταίριασμαAxisNDigits .
- Τα παιδιά μπορεί να έχουν διαφορετικές τιμές πηγής για axisVariable α \[ 0 \] (για παράδειγμα, ο χρόνος) , αλλά είναι συνήθως σε μεγάλο βαθμό το ίδιο.
- Το σύνολο γονικών δεδομένων θα φαίνεται να έχει όλα τα axisVariable α \[ 0 \] τιμές πηγής από όλα τα παιδιά.
- Για παράδειγμα, αυτό σας επιτρέπει να συνδυάσετε ένα σύνολο δεδομένων πηγής με ένα u-component φορέα και ένα άλλο σύνολο δεδομένων πηγής με ένα v-component φορέα, έτσι ώστε τα συνδυασμένα δεδομένα μπορούν να εξυπηρετηθούν.
- Τα παιδιά που δημιουργούνται με αυτή τη μέθοδο κρατούνται ιδιωτικά. Δεν είναι ξεχωριστά προσβάσιμα σύνολα δεδομένων (για παράδειγμα, από αιτήματα δεδομένων πελατών ή από Αρχεία σημαίας ) .
- Τα παγκόσμια μεταδεδομένα και ρυθμίσεις για τον γονέα προέρχονται από τα παγκόσμια μεταδεδομένα και ρυθμίσεις για το πρώτο παιδί.
- Αν υπάρχει μια εξαίρεση κατά τη δημιουργία του πρώτου παιδιού, ο γονέας δεν θα δημιουργηθεί.
- Αν υπάρχει εξαίρεση κατά τη δημιουργία άλλων παιδιών, αυτό στέλνει ένα email στο email EverythingTo (όπως προσδιορίζεται στο setup.xml ) και συνεχίζει με τα άλλα παιδιά.
EDDGrid Σκελετός SideBySide XML
<dataset type="EDDGridSideBySide" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- 2 or more -->
</dataset>
EDDGrid ΣυγκέντρωσηΥπάρχουσας διάστασης
** EDDGrid ΣυγκέντρωσηΥπάρχουσας διάστασης** αθροίσματα δύο ή περισσότερα EDDGrid σύνολα δεδομένων καθένα από τα οποία έχει διαφορετικό φάσμα τιμών για την πρώτη διάσταση, αλλά πανομοιότυπες τιμές για τις άλλες διαστάσεις.
- Για παράδειγμα, ένα σύνολο δεδομένων για παιδιά μπορεί να έχει 366 τιμές (για το 2004) για τη χρονική διάσταση και ένα άλλο παιδί μπορεί να έχει 365 τιμές (για το 2005) για τη χρονική διάσταση.
- Όλες οι τιμές για όλες τις άλλες διαστάσεις (για παράδειγμα, γεωγραφικό πλάτος, γεωγραφικό μήκος) Πρέπει να είναι πανομοιότυπο για όλα τα παιδιά. Η ακρίβεια της δοκιμής καθορίζεται από ταίριασμαAxisNDigits .
- Ταξινόμηση τιμών διάστασης - Οι τιμές για κάθε διάσταση ΠΡΕΠΕΙ να είναι ταξινομημένες (αύξουσα ή φθίνουσα) . Οι τιμές μπορούν να είναι ακανόνιστα διαχωρισμένες. Δεν μπορεί να υπάρχουν δεσμοί. Αυτή είναι η απαίτηση της Πρότυπο μεταδεδομένων CF . Αν οι τιμές οποιασδήποτε διάστασης δεν είναι ταξινομημένες, το σύνολο δεδομένων δεν θα φορτωθεί και ERDDAP™ θα προσδιορίσει την πρώτη μη ταξινομημένη τιμή στο αρχείο καταγραφής, bigParentΚατάλογος /logs/log.txt .
Οι μη ταξινομημένες τιμές διάστασης σχεδόν πάντα δείχνουν ένα πρόβλημα με το σύνολο δεδομένων πηγής. Αυτό συμβαίνει συνηθέστερα όταν ένα λανθασμένο ή ακατάλληλο αρχείο περιλαμβάνεται στη συγκέντρωση, η οποία οδηγεί σε μια μη ταξινομημένη χρονική διάσταση. Για την επίλυση αυτού του προβλήματος, δείτε το μήνυμα σφάλματος στο ERDDAP™ αρχείο log.txt για να βρείτε την τιμή ώρας που προσβάλλει. Στη συνέχεια, κοιτάξτε στα πηγαία αρχεία για να βρείτε το αντίστοιχο αρχείο (ή μία πριν ή μία μετά) Αυτό δεν ανήκει στη συγκέντρωση.
- Το γονικό σύνολο δεδομένων και το σύνολο δεδομένων παιδιών ΠΡΕΠΕΙ να έχουν διαφορετικές datasetID Σ. Αν κάποια ονόματα σε μια οικογένεια είναι ακριβώς τα ίδια, το σύνολο δεδομένων θα αποτύχει να φορτώσει (με το μήνυμα σφάλματος ότι οι τιμές του συγκεντρωτικού άξονα δεν είναι ταξινομημένες) .
- Επί του παρόντος, το σύνολο δεδομένων για τα παιδιά ΠΡΕΠΕΙ να είναι ένα EDDGrid FromDap dataset και ΠΡΕΠΕΙ να έχουν τις χαμηλότερες τιμές της συγκεντρωτικής διάστασης (συνήθως οι παλαιότερες τιμές χρόνου) . Όλα τα άλλα παιδιά πρέπει να είναι σχεδόν πανομοιότυπα σύνολα δεδομένων (διαφέρει μόνο στις τιμές της πρώτης διάστασης) και προσδιορίζονται από μόνο τους sourceUrl .
- Το συνολικό σύνολο δεδομένων παίρνει τα μεταδεδομένα του από το πρώτο παιδί.
- Η Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml μπορεί να κάνει ένα πρόχειρο σχέδιο του datasets.xml για α EDDGrid AggreateExistingDimension με βάση ένα σύνολο αρχείων που εξυπηρετούνται από ένα Hyrax ή σέρβερ Thredds. Για παράδειγμα, χρησιμοποιήστε αυτή την εισαγωγή για το πρόγραμμα (το "/1988" στο URL κάνει το παράδειγμα να τρέχει γρηγορότερα) :
EDDType? EDDGridAggregateExistingDimension
Server type (hyrax, thredds, or dodsindex)? hyrax
Parent URL (for example, for hyrax, ending in "contents.html";
for thredds, ending in "catalog.xml")
? https://opendap.jpl.nasa.gov/opendap/ocean\\_wind/ccmp/L3.5a/data/
flk/1988/contents.html
File name regex (for example, ".\\*\\.nc")? month.\\*flk\\.nc\\.gz
ReloadEveryNMinutes (for example, 10080)? 10080
Μπορείτε να χρησιμοποιήσετε το αποτέλεσμα< sourceUrl > ετικέτες ή να τα διαγράψετε και να αποσυνδέσετε το< sourceUrl > ετικέτα (έτσι ώστε τα νέα αρχεία γίνονται αντιληπτά κάθε φορά που το σύνολο δεδομένων επαναφορτώνεται.
EDDGrid Συγκεντρωτικός σκελετός Υφιστάμενης διάστασης XML
<dataset type="EDDGridAggregateExistingDimension" datasetID\="..."
active\="..." >
<dataset>...</dataset> <!-- This is a regular EDDGridFromDap dataset
description child with the lowest values for the aggregated
dimensions. -->
<sourceUrl>...</sourceUrl> <!-- 0 or many; the sourceUrls for
other children. These children must be listed in order of
ascending values for the aggregated dimension. -->
<sourceUrls serverType="..." regex="..." recursive="true"
pathRegex\=".\"
>https://someServer/someDirectory/someSubdirectory/catalog.xml</sourceUrls>
<!-- 0 or 1. This specifies how to find the other children,
instead of using separate sourceUrl tags for each child. The
advantage of this is: new children will be detected each time
the dataset is reloaded. The serverType must be "thredds",
"hyrax", or "dodsindex". An example of a regular expression (regex) (tutorial) is .\\.nc
recursive can be "true" or "false".
Only directory names which match the
<pathRegex>
(default=".\*") will be accepted.
A thredds catalogUrl MUST include "/thredds/catalog/".
An example of a thredds catalogUrl is
https://thredds1.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/
chla/catalog.xml
An example of a hyrax catalogUrl is
https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/
flk/1988/contents.html
An example of a dodsindex URL is
https://opendap.jpl.nasa.gov/opendap/GeodeticsGravity/tellus/L3/mascon/RL06/JPL/v02/CRI/netcdf/contents.html
(Note the "OPeNDAP logo at the top of the page.)
When these children are sorted by filename, they must be in
order of ascending values for the aggregated dimension. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
</dataset>
EDDGrid Αντιγραφή
** EDDGrid Αντιγραφή** κάνει και διατηρεί ένα τοπικό αντίγραφο ενός άλλου EDDGrid Είναι δεδομένα και εξυπηρετεί δεδομένα από το τοπικό αντίγραφο.
- EDDGrid Αντιγραφή (και για δεδομένα πίνακα, EDDTableCopy ) είναι πολύ εύκολο στη χρήση και πολύ αποτελεσματικό λύση σε μερικά από τα μεγαλύτερα προβλήματα με την εξυπηρέτηση δεδομένων από μια απομακρυσμένη πηγή δεδομένων:
- Η πρόσβαση σε δεδομένα από μια απομακρυσμένη πηγή δεδομένων μπορεί να είναι αργή.
- Μπορεί να είναι αργό επειδή είναι εγγενώς αργό (Για παράδειγμα, ένας αναποτελεσματικός τύπος εξυπηρετητή) ,
- επειδή κατακλύζεται από πάρα πολλά αιτήματα,
- ή επειδή ο διακομιστής σας ή ο απομακρυσμένος εξυπηρετητής είναι περιορισμένος.
- Το απομακρυσμένο σύνολο δεδομένων είναι μερικές φορές μη διαθέσιμο (και πάλι, για διάφορους λόγους) .
- Βασιζόμενοι σε μια πηγή για τα δεδομένα δεν κλιμακώνεται καλά (για παράδειγμα, όταν πολλοί χρήστες και πολλοί ERDDAP Το χρησιμοποιείς.) .
- Πώς λειτουργεί... EDDGrid Το αντίγραφο λύνει αυτά τα προβλήματα κάνοντας αυτόματα και διατηρώντας ένα τοπικό αντίγραφο των δεδομένων και εξυπηρετώντας δεδομένα από το τοπικό αντίγραφο. ERDDAP™ μπορεί να εξυπηρετήσει τα δεδομένα από το τοπικό αντίγραφο πολύ, πολύ γρήγορα. Και κάνοντας ένα τοπικό αντίγραφο ανακουφίζει το βάρος στον απομακρυσμένο διακομιστή. Και το τοπικό αντίγραφο είναι ένα αντίγραφο ασφαλείας του πρωτότυπου, το οποίο είναι χρήσιμο σε περίπτωση που συμβεί κάτι στο πρωτότυπο.
Δεν υπάρχει τίποτα νέο στην κατασκευή ενός τοπικού αντιγράφου ενός συνόλου δεδομένων. Αυτό που είναι καινούργιο εδώ είναι ότι αυτή η τάξη το κάνει\*Ήρεμα.\*να δημιουργήσει και\*διατήρηση\*ένα τοπικό αντίγραφο δεδομένων από ένα\*ποικιλία\*των τύπων απομακρυσμένων πηγών δεδομένων και\*προσθήκη μεταδεδομένων\*αντιγράφοντας τα δεδομένα.
- Τσανκς των Ντέιτα... EDDGrid Αντιγραφή κάνει το τοπικό αντίγραφο των δεδομένων ζητώντας κομμάτια των δεδομένων από το απομακρυσμένο<σύνολο δεδομένων> . Θα υπάρχει ένα κομμάτι για κάθε τιμή του αριστερού (πρώτη) μεταβλητός άξονας. EDDGrid Το αντίγραφο δεν βασίζεται στους αριθμούς ευρετηρίου του απομακρυσμένου συνόλου δεδομένων για τον άξονα -- αυτοί μπορεί να αλλάξουν.
ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Εάν το μέγεθος ενός κομματιού δεδομένων είναι τόσο μεγάλο (> 2GB) ότι προκαλεί προβλήματα, EDDGrid Το αντίγραφο δεν μπορεί να χρησιμοποιηθεί. (Λυπάμαι, ελπίζουμε να έχουμε μια λύση για αυτό το πρόβλημα στο μέλλον.)
- \[ Μια εναλλακτική λύση EDDGrid Αντιγραφή - Εάν τα απομακρυσμένα δεδομένα είναι διαθέσιμα μέσω downloadable αρχεία, όχι μια υπηρεσία web, χρησιμοποιήστε κρύπτη Επιλογή FromUrl για EDDGrid Από αρχεία , που κάνει ένα τοπικό αντίγραφο των απομακρυσμένων αρχείων και εξυπηρετεί τα δεδομένα από τα τοπικά αρχεία. \]
- Τοπικά αρχεία -- Κάθε κομμάτι δεδομένων αποθηκεύεται σε ένα ξεχωριστό NetCDF αρχείο σε έναν υποκατάλογο bigParentΚατάλογος /αντίγραφο/ * datasetID * / (όπως προσδιορίζεται στο setup.xml ) . Τα ονόματα αρχείων που δημιουργούνται από τις τιμές άξονα τροποποιούνται ώστε να είναι ασφαλή από το όνομα αρχείου (Για παράδειγμα, οι παύλα αντικαθίστανται από το "x2D") -- αυτό δεν επηρεάζει τα πραγματικά δεδομένα.
- Νέα δεδομένα -- Κάθε φορά EDDGrid Το αντίγραφο ξαναγεμίζεται, ελέγχει το τηλεκοντρόλ.<dataset> για να δείτε τι κομμάτια είναι διαθέσιμα. Εάν το αρχείο για ένα κομμάτι των δεδομένων δεν υπάρχει ήδη, μια αίτηση για να πάρει το κομμάτι προστίθεται σε μια ουρά. ERDDAP Η εργασίαThread επεξεργάζεται όλα τα αιτήματα ουράς για κομμάτια δεδομένων, ένα προς ένα. Μπορείτε να δείτε στατιστικά στοιχεία για τη δραστηριότητα του έργουThread σχετικά με το Σελίδα κατάστασης και στην Ημερήσια έκθεση . (Ναι. ERDDAP™ θα μπορούσε να αναθέσει πολλαπλές εργασίες σε αυτή τη διαδικασία, αλλά αυτό θα χρησιμοποιούσε πολλά από το εύρος ζώνης της απομακρυσμένης πηγής δεδομένων, τη μνήμη, και το χρόνο ΚΜΕ, και πολλά από τα τοπικά ERDDAP Το εύρος ζώνης, η μνήμη και ο χρόνος ΚΜΕ, καμία από τις οποίες δεν είναι καλή ιδέα.)
ΣΗΜΕΙΩΣΗ: Η πρώτη φορά EDDGrid Το αντίγραφο φορτώθηκε, (Αν όλα πάνε καλά) Πολλά αιτήματα για κομμάτια δεδομένων θα προστεθούν στην ουρά του taskThread, αλλά δεν θα έχουν δημιουργηθεί τοπικά αρχεία δεδομένων. Έτσι ο κατασκευαστής θα αποτύχει αλλά taskThread θα συνεχίσει να λειτουργεί και να δημιουργήσει τοπικά αρχεία. Αν όλα πάνε καλά, η εργασίαThread θα κάνει κάποια τοπικά αρχεία δεδομένων και την επόμενη προσπάθεια για την επαναφόρτωση του συνόλου δεδομένων (σε ~15 λεπτά) θα επιτύχει, αλλά αρχικά με πολύ περιορισμένο αριθμό δεδομένων.
ΣΗΜΕΙΩΣΗ: Αφού το τοπικό σύνολο δεδομένων έχει κάποια δεδομένα και εμφανίζεται στο δικό σας ERDDAP , εάν το απομακρυσμένο σύνολο δεδομένων είναι προσωρινά ή μόνιμα μη προσβάσιμο, το τοπικό σύνολο δεδομένων θα εξακολουθεί να λειτουργεί.
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Εάν το απομακρυσμένο σύνολο δεδομένων είναι μεγάλο ή/και ο απομακρυσμένος εξυπηρετητής είναι αργός (Αυτό δεν είναι το πρόβλημα;) , θα πάρει πολύ χρόνο για να κάνει ένα πλήρες τοπικό αντίγραφο. Σε ορισμένες περιπτώσεις, ο χρόνος που απαιτείται θα είναι απαράδεκτος. Για παράδειγμα, διαβίβαση 1 TB δεδομένων σε γραμμή T1 (0.15 GB/s) παίρνει τουλάχιστον 60 ημέρες, υπό τις καλύτερες συνθήκες. Επιπλέον, χρησιμοποιεί πολύ εύρος ζώνης, μνήμης και χρόνου CPU στους απομακρυσμένους και τοπικούς υπολογιστές. Η λύση είναι να στείλετε ένα σκληρό δίσκο στον διαχειριστή του απομακρυσμένου συνόλου δεδομένων έτσι ώστε s/he μπορεί να κάνει ένα αντίγραφο του συνόλου δεδομένων και να στείλει το σκληρό δίσκο πίσω σε σας. Χρήση αυτών των δεδομένων ως σημείο εκκίνησης και EDDGrid Η αντιγραφή θα προσθέσει δεδομένα σε αυτό. (Αυτός είναι ένας τρόπος που Η υπηρεσία Cloud EC2 της Amazon χειρίζεται το πρόβλημα, παρόλο που το σύστημά τους έχει πολύ εύρος ζώνης.)
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αν μια δεδομένη τιμή για το αριστερότερο (πρώτη) η μεταβλητή άξονα εξαφανίζεται από το απομακρυσμένο σύνολο δεδομένων, EDDGrid Η αντιγραφή ΔΕΝ διαγράφει το τοπικό αντιγραμμένο αρχείο. Αν θέλετε, μπορείτε να το διαγράψετε μόνοι σας.
Έλεγχος αντιγραφής καννάβουSource Δεδομένα
Η datasets.xml για αυτό το σύνολο δεδομένων μπορεί να έχει μια προαιρετική ετικέτα
<checkSourceData>true</checkSourceData>
Η προκαθορισμένη τιμή είναι αληθινή. Αν/όταν το ρυθμίσετε σε ψευδή, το σύνολο δεδομένων δεν θα ελέγξει ποτέ το σύνολο δεδομένων πηγής για να δείτε αν υπάρχουν πρόσθετα διαθέσιμα δεδομένα.
μόνο από
Μπορείς να καταλάβεις. EDDGrid Αντιγραφή για να γίνει ένα αντίγραφο ενός υποσύνολου του συνόλου δεδομένων πηγής, αντί για ολόκληρο το σύνολο δεδομένων πηγής, με την προσθήκη μιας ετικέτας στη μορφή<μόνο Από> μερικά Τιμή </μόνοΑπό> στο σύνολο δεδομένων datasets.xml Κομμάτι. EDDGrid Η αντιγραφή θα κατεβάσει μόνο τις τιμές δεδομένων που σχετίζονται με τις τιμές της πρώτης διάστασης (συνήθως η χρονική διάσταση) που είναι μεγαλύτερα από μερικά Τιμή . μερικά Τιμή μπορεί να είναι:
-
Σχετικός χρόνος που καθορίζεται μέσω now- nUnits . Για παράδειγμα,<μόνο Από> now- 2 χρόνια</μόνοΑπό> λέει στο σύνολο δεδομένων να κάνει μόνο τοπικά αντίγραφα των δεδομένων για τα δεδομένα όπου οι τιμές της εξωτερικής διάστασης (συνήθως τιμές χρόνου) είναι μέσα στα τελευταία 2 χρόνια (που επαναξιολογείται κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, που είναι όταν αναζητά νέα δεδομένα για αντιγραφή) . Δείτε το now- nUnits Συντακτική περιγραφή . Αυτό είναι χρήσιμο αν η πρώτη διάσταση έχει δεδομένα χρόνου, κάτι που συνήθως κάνει.
EDDGrid Η αντιγραφή δεν διαγράφει τοπικά αρχεία δεδομένων που έχουν δεδομένα τα οποία, με την πάροδο του χρόνου, γίνονται παλαιότερα από now- nUnits . Μπορείτε να διαγράψετε αυτά τα αρχεία οποιαδήποτε στιγμή αν το επιλέξετε. Εάν το κάνετε, σας συνιστούμε να ορίσετε ένα σημαία αφού διαγράψετε τα αρχεία για να πείτε EDDGrid Αντιγραφή για ενημέρωση της λίστας των αποθηκευμένων αρχείων.
-
Ένα σταθερό χρονικό σημείο που ορίζεται ως συμβολοσειρά ISO 8601 yyyy-MM-ddTHH:mm:ssZ . Για παράδειγμα,<μόνοΑπό>2000-01-01T00:00:00Z</μόνοΑπό> λέει το σύνολο δεδομένων μόνο για να κάνει τοπικά αντίγραφα των δεδομένων όπου η τιμή της πρώτης διάστασης είναι \>=2000-01-01T00:00Z . Αυτό είναι χρήσιμο αν η πρώτη διάσταση έχει δεδομένα χρόνου, κάτι που συνήθως κάνει.
-
Αριθμός κινητής υποδιαστολής. Για παράδειγμα,<μόνο Από>946684800.0</μόνο από τότε>. Οι μονάδες θα είναι οι μονάδες προορισμού της πρώτης διάστασης. Για παράδειγμα, για τις διαστάσεις του χρόνου, οι μονάδες ERDDAP™ είναι πάντα "seconds since 1970-01-01T00:00:00Z" . Έτσι 946684800.0 "seconds since 1970-01-01T00:00:00Z" ισοδυναμεί με 2000-01-01T00:00:00Z. Αυτή είναι πάντα μια χρήσιμη επιλογή, αλλά είναι ιδιαίτερα χρήσιμη όταν η πρώτη διάσταση δεν έχει δεδομένα χρόνου.
EDDGrid Αντιγραφή Συνιστώμενη χρήση
- Δημιουργία του<σύνολο δεδομένων> καταχώρηση (ο φυσικός τύπος, όχι EDDGrid Αντιγραφή) για την απομακρυσμένη πηγή δεδομένων. Να λειτουργήσει σωστά, συμπεριλαμβανομένων όλων των επιθυμητών μεταδεδομένων.
- Εάν είναι πολύ αργή, προσθέστε XML κώδικα για να το τυλίξετε σε ένα EDDGrid Αντιγραφή συνόλου δεδομένων.
- Χρήση διαφορετικής datasetID (Ίσως με την αλλαγή του datasetID των παλαιών datasetID ελαφρά) .
- Αντιγραφή του<προσβάσιμη Στο>,<επαναφόρτωσηEveryNminutes> και<onChange> από το τηλεχειριστήριο EDDGrid XML στο EDDGrid Ελήφθη XML. (Οι τιμές τους για EDDGrid Αντιγραφή ύλης· οι τιμές τους για το εσωτερικό σύνολο δεδομένων γίνονται άνευ σημασίας.)
- ERDDAP™ θα κάνει και θα διατηρήσει ένα τοπικό αντίγραφο των δεδομένων.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: EDDGrid Αντιγραφή υποθέτει ότι οι τιμές δεδομένων για κάθε κομμάτι δεν αλλάζουν ποτέ. Αν/όταν το κάνουν, θα πρέπει να διαγράψετε χειροκίνητα τα αρχεία κομματιών στο bigParentΚατάλογος /αντίγραφο/ * datasetID * / που άλλαξε και σημαία το σύνολο δεδομένων που θα επαναφορτωθεί ώστε να αντικατασταθούν τα διαγραμμένα κομμάτια. Εάν έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα λάβετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά επαναφορτίζει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
- Όλες οι τιμές άξονα πρέπει να είναι ίσες. Για καθέναν από τους άξονες εκτός από τον αριστερότερο (πρώτη) , όλες οι τιμές πρέπει να είναι ίσες για όλα τα παιδιά. Η ακρίβεια της δοκιμής καθορίζεται από ταίριασμαAxisNDigits .
- Settings, Μεταδεδομένα, Μεταβλητές -- EDDGrid Το αντίγραφο χρησιμοποιεί ρυθμίσεις, μεταδεδομένα και μεταβλητές από το κλειστό σύνολο δεδομένων πηγής.
- Τροποποίηση μεταδεδομένων -- Εάν χρειαστεί να αλλάξετε κάποια addAttributes ή να αλλάξει τη σειρά των μεταβλητών που συνδέονται με το σύνολο δεδομένων πηγής:
- Αλλαγή του addAttributes για το σύνολο δεδομένων πηγής στο datasets.xml , όπως χρειάζεται.
- Διαγράψτε ένα από τα αντιγραφέντα αρχεία.
- Ορισμός α σημαία να επαναφορτώσει το σύνολο δεδομένων αμέσως. Εάν χρησιμοποιείτε μια σημαία και έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα πάρετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά φορτώνει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
- Το διαγραμμένο αρχείο θα αναγεννηθεί με τα νέα μεταδεδομένα. Εάν το σύνολο δεδομένων πηγής δεν είναι ποτέ διαθέσιμο, η EDDGrid Αντιγραφή συνόλου δεδομένων θα πάρει μεταδεδομένα από το αναγεννημένο αρχείο, δεδομένου ότι είναι το νεότερο αρχείο.
EDDGrid Αντιγραφή σκελετού XML
<dataset type="EDDGridCopy" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or false
(the default)) -->
<checkSourceData>...</checkSourceData> <!-- 0 or 1 -->
<onlySince>...</onlySince> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1 -->
</dataset>
Πίνακας EDD από την Κασάνδρα
Πίνακας EDD από την Κασάνδρα χειρίζεται δεδομένα από ένα Κασσάνδρα τραπέζι. Η Κασσάνδρα είναι μια βάση δεδομένων NoSQL.
- ERDDAP™ μπορεί να συνεργαστεί με Cassandra v2 και v3 χωρίς αλλαγές ή διαφορές στη ρύθμιση. Έχουμε δοκιμαστεί με Κασσάνδρα v2 και v3 από Απάτσι . Είναι πιθανό ότι ERDDAP™ μπορεί επίσης να συνεργαστεί με την Κασσάνδρα κατεβάσει από DataStax.
- Για την Αυγ 2019 - Μάιος 2021, είχαμε πρόβλημα να κάνουμε την Κασσάνδρα να συνεργαστεί με την AdopteOpenJdk Java v8. Πέταξε μια εξαίρεση\_ACCESS\_VIOLATION). Αλλά τώρα (Μάιος 2021) , αυτό το πρόβλημα έχει φύγει: μπορούμε να χρησιμοποιήσουμε με επιτυχία Κασσάνδρα v2.1.22 και να υιοθετήσουμεOpenJdk jdk8u292-b10.
Ένας πίνακας
Η Κασσάνδρα δεν υποστηρίζει "συνδέεται" όπως κάνουν οι σχετικές βάσεις δεδομένων. Ένα ERDDAP™ EDDTableFromCassandra χάρτες σύνολο δεδομένων σε έναν (Ίσως ένα υποσύνολο ενός) Τραπέζι Κασσάνδρα.
Κασσάνδρα datasets.xml
- ERDDAP™ έρχεται με την Κασσάνδρα Java οδηγός, έτσι ώστε να μην χρειάζεται να το εγκαταστήσετε ξεχωριστά.
- Διαβάστε προσεκτικά όλες τις πληροφορίες αυτού του εγγράφου για το EDDTableFromCassandra. Μερικές από τις λεπτομέρειες είναι πολύ σημαντικές.
- Η Κασσάνδρα Java οδηγός προορίζεται να συνεργαστεί με Apache Κασσάνδρα (1.2+) και DataStax Enterprise (3.1+) . Εάν χρησιμοποιείτε Apache Κασσάνδρα 1.2.x, θα πρέπει να επεξεργαστείτε το αρχείο cassandra.yaml για κάθε κόμβο για να ρυθμίσετε εκκίνηση\_native\_transport: true, τότε επανεκκινήστε κάθε κόμβο.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο (ειδικά [<κατάτμηση Πηγή κλειδιώνName>] (#partitionkey ονόματα πηγαίου κώδικα) ). Μπορείτε να συλλέξετε τις περισσότερες από τις πληροφορίες που χρειάζεστε για να δημιουργήσετε το XML για ένα EDDTableFromCassandra dataset επικοινωνώντας με τον διαχειριστή της Κασσάνδρας και αναζητώντας τον ιστό.
Δημιουργία συνόλων δεδομένων Xml έχει δύο ειδικές επιλογές για EDDTableFromCassandra:
- Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το keyspace, το πρόγραμμα θα εμφανίσει μια λίστα με keyspaces
- Εάν μπείτε σε ένα συγκεκριμένο χώρο-κλειδί και στη συνέχεια εισάγετε "!!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα του πίνακα, το πρόγραμμα θα εμφανίζει μια λίστα πινάκων σε αυτόν τον χώρο κλειδιών και τις στήλες τους.
Ευαισθησία πεζών/ κεφαλαίων
- Θήκη-αναίσθητο Keyspace και ονόματα πίνακα - Η Κασσάνδρα αντιμετωπίζει το keyspace και τα επιτραπέζια ονόματα με έναν αναίσθητο τρόπο. Εξαιτίας αυτού, δεν πρέπει ποτέ να χρησιμοποιείς μια συγκρατημένη λέξη. (αλλά με διαφορετική περίπτωση) ως keyspace Κασσάνδρα ή όνομα πίνακα.
- Αναίσθητα ονόματα στηλών... Από προεπιλογή, η Κασσάνδρα αντιμετωπίζει τα ονόματα της στήλης με έναν τρόπο αναίσθητο. Αν χρησιμοποιείς μια από τις λέξεις της Κασσάνδρας ως όνομα στήλης (Σε παρακαλώ, μη!) , ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ
<columnNameQuotes>"<columnNameQuotes>
μέσα datasets.xml για αυτό το σύνολο δεδομένων έτσι ώστε η Κασσάνδρα και ERDDAP™ θα αντιμετωπίσει τα ονόματα της στήλης κατά τρόπο ευαίσθητο στην περίπτωση. Αυτό θα είναι πιθανώς ένας τεράστιος πονοκέφαλος για σας, επειδή είναι δύσκολο να καθοριστεί η περίπτωση-ευαίσθητες εκδόσεις των ονομάτων στήλης -- Κασσάνδρα σχεδόν πάντα εμφανίζει τα ονόματα στήλης ως όλα κάτω-υπόθεση, ανεξάρτητα από την πραγματική περίπτωση.
- Συνεργαστείτε στενά με τον διαχειριστή της Κασσάνδρας, ο οποίος μπορεί να έχει σχετική εμπειρία. Εάν το σύνολο δεδομένων αποτύχει να φορτώσει, διαβάστε το Μήνυμα σφάλματος προσεκτικά για να μάθετε γιατί.
Κασσάνδρα<σύνδεση Ιδιοκτησία & gt·
Η Κασσάνδρα έχει ιδιότητες σύνδεσης που μπορούν να προσδιοριστούν στο datasets.xml . Πολλά από αυτά θα επηρεάσουν την παράσταση της Κασσάνδρας... ERDDAP™ σύνδεση. Δυστυχώς, οι ιδιότητες Κασσάνδρας πρέπει να ρυθμιστούν προγραμματικά Java , έτσι ERDDAP™ πρέπει να έχει κωδικό για κάθε ακίνητο ERDDAP™ υποστήριξη. Αυτή τη στιγμή, ERDDAP™ υποστηρίζει αυτές τις ιδιότητες: (Τα προεπιλεγμένα που εμφανίζονται είναι αυτά που βλέπουμε. Οι προκαθορισμοί του συστήματός σας μπορεί να είναι διαφορετικές.)
- Γενικές επιλογές
<σύνδεση Όνομα ακινήτου=" συμπίεση "> κανένα | LZ4 | Γρήγορο <Σύνδεση Ιδιοκτησία> (περίπτωση-αναίσθητη, προεπιλογή=κανένα)
(Γενικές συμβουλές συμπίεσης: χρήση «κανένα» εάν η σύνδεση μεταξύ Κασσάνδρας και ERDDAP™ είναι τοπικό/γρήγορο και χρησιμοποιήστε το 'LZ4' αν η σύνδεση είναι απομακρυσμένη/αργή.)
<σύνδεση Όνομα ακινήτου=" διαπιστευτήρια "> όνομα χρήστη/κωδικός πρόσβασης <Σύνδεση Ιδιοκτησία> (Αυτό είναι κυριολεκτικό. '/' )
<σύνδεση Όνομα ακινήτου=" μετρητικά "> αλήθεια | ψευδές <Σύνδεση Ιδιοκτησία> (2021-01-25 ήταν προεπιλογή=αλήθεια, τώρα αγνοείται και πάντα ψευδής)
<σύνδεση Όνομα ακινήτου=" θύρα "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> (προεπιλεγμένο για το εγχώριο δυαδικό πρωτόκολλο=9042)
<σύνδεση Όνομα ακινήτου=" ssl "> αλήθεια | ψευδές <Σύνδεση Ιδιοκτησία> (προεπιλογή=ψευδής)
(Η γρήγορη προσπάθειά μου να χρησιμοποιήσω SSL απέτυχε. Αν πετύχεις, πες μου πώς το έκανες.) - Επιλογές ερωτήματος
<σύνδεση Όνομα ακινήτου=" συνέπεια Επίπεδο "> όλα | Οποιοδήποτε | κάθε\_quorum | τοπικό\_ένα | τοπικό\_quorum | τοπικό\_σειρικό | ένα | απαρτία | κατά σειρά | τρία | δύο <Σύνδεση Ιδιοκτησία> (περίπτωση-αναίσθητη, προεπιλογή=ONE)
<σύνδεση Όνομα ακινήτου=" μέγεθος ανάκτησης "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> (προεπιλογή=5000)
(Μην ορίσετε το μέγεθος σε μικρότερη τιμή.)
<σύνδεση Όνομα ακινήτου=" Επίπεδο σειριακής συνέπειας "> όλα | Οποιοδήποτε | κάθε\_quorum | τοπικό\_ένα | τοπικό\_quorum | τοπικό\_σειρικό | ένα | απαρτία | κατά σειρά | τρία | δύο <Σύνδεση Ιδιοκτησία> (περίπτωση-αναίσθητη, προεπιλογή=SERIAL) - Επιλογές υποδοχής
<σύνδεση Όνομα ακινήτου=" σύνδεση χρονικού ορίουMillis "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> (προεπιλογή=5000)
(Να μην οριστεί σύνδεση Χρονικό όριοMillis σε μικρότερη τιμή.)
<σύνδεση Όνομα ακινήτου=" διατήρηση Alive "> αλήθεια | ψευδές <Σύνδεση Ιδιοκτησία> <σύνδεση Όνομα ακινήτου=" ανάγνωσηTimeoutMillis "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> (Η προεπιλεγμένη ανάγνωση της ΚασσάνδραςTimeoutMillis είναι 12000, αλλά ERDDAP™ αλλάζει την προεπιλογή σε 120000. Αν η Κασσάνδρα πετάει readTimeouts, αυξάνοντας αυτό μπορεί να μην βοηθήσει, επειδή η Κασσάνδρα μερικές φορές τα πετάει πριν από αυτή τη φορά. Το πρόβλημα είναι πιο πιθανό ότι αποθηκεύετε πάρα πολλά δεδομένα ανά κατάτμηση Συνδυασμός κλειδιών.)
<σύνδεση Όνομα ακινήτου=" λήψηBufferSize "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> (Είναι ασαφές τι η προεπιλεγμένη λήψηBufferSize είναι. Μην το βάλεις σε μικρή τιμή.)
<σύνδεση Όνομα ακινήτου=" Σολίνγκερ "> ένας ακέραιος <Σύνδεση Ιδιοκτησία> <σύνδεση Όνομα ακινήτου=" tcpNoDelay "> αλήθεια | ψευδές <Σύνδεση Ιδιοκτησία> (προεπιλογή=null)
Αν πρέπει να είστε σε θέση να ρυθμίσετε άλλες ιδιότητες σύνδεσης, δείτε μας τμήμα για τη λήψη πρόσθετης υποστήριξης .
Για μια δεδομένη εκκίνηση του Tomcat, οι ιδιότητες σύνδεσης χρησιμοποιούνται μόνο την πρώτη φορά που δημιουργείται ένα σύνολο δεδομένων για μια δεδομένη διεύθυνση URL Κασσάνδρας. Όλες οι επαναφορτώσεις αυτού του συνόλου δεδομένων και όλων των επακόλουθων συνόλων δεδομένων που μοιράζονται το ίδιο URL θα χρησιμοποιήσουν αυτές τις αρχικές συνδέσειςProperties.
CQL
Η γλώσσα του ερωτήματος Κασσάνδρα (CQL) είναι επιφανειακά όπως το SQL, η γλώσσα ερωτημάτων που χρησιμοποιείται από τις παραδοσιακές βάσεις δεδομένων. Γιατί; OPeNDAP Τα αιτήματα των πινάκων δεδομένων σχεδιάστηκαν για να μιμηθούν τα αιτήματα των πινάκων SQL, είναι δυνατό για ERDDAP™ για να μετατρέψετε τα αιτήματα δεδομένων πίνακα σε CQL Bound / PreparedStatements. ERDDAP™ καταγράφει τη δήλωση log.txt ως
δήλωση ως κείμενο: η δήλωση ως κείμενο
Η έκδοση της δήλωσης που βλέπετε θα είναι μια αναπαράσταση κειμένου της δήλωσης και θα έχει μόνο "?" όπου θα τοποθετηθούν οι τιμές περιορισμού.
Όχι τόσο απλό... Δυστυχώς, το CQL έχει πολλούς περιορισμούς στους οποίους οι στήλες μπορούν να τεθούν υπό αμφισβήτηση με τους οποίους οι τύποι περιορισμών, για παράδειγμα, οι στήλες κλειδιών χωρισμάτων μπορούν να περιοριστούν με = και IN, έτσι ERDDAP™ στέλνει κάποιους περιορισμούς στην Κασσάνδρα και εφαρμόζει όλους τους περιορισμούς μετά την παραλαβή των δεδομένων από την Κασσάνδρα. Για να βοηθήσει ERDDAP™ ασχολούνται αποτελεσματικά με την Κασσάνδρα, θα πρέπει να καθορίσετε [<κατάτμηση Πηγή κλειδιώνName>] (#partitionkey ονόματα πηγαίου κώδικα) , [<συστάδα ColumnSourceNames>] (#cluster columnNames) , και [<ευρετήριοColumnSourceNames>] (#index columnNames) μέσα datasets.xml για αυτό το σύνολο δεδομένων. Αυτοί είναι οι πιο σημαντικοί τρόποι για να βοηθήσει ERDDAP™ Δούλεψε αποτελεσματικά με την Κασσάνδρα. Αν δεν το πεις ERDDAP™ Αυτή η πληροφορία, το σύνολο δεδομένων θα είναι επώδυνα αργή ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
<κατάτμηση Πηγή κλειδιώνNames>
Επειδή τα κλειδιά διαμέρισης παίζουν κεντρικό ρόλο στα τραπέζια της Κασσάνδρας, ERDDAP™ πρέπει να γνωρίζουν τους sourceName και, κατά περίπτωση, άλλες πληροφορίες σχετικά με το πώς να συνεργαστείτε μαζί τους.
- Πρέπει να ορίσετε μια λίστα χωρισμένη με κόμματα των ονομάτων βασικής στήλης χωρισμάτων σε datasets.xml μέσω<κατάτμηση Πηγή κλειδιώνName>. Απλό παράδειγμα,
<partitionKeySourceNames>station, deviceid<partitionKeySourceNames>
Πιο περίπλοκο παράδειγμα,
<partitionKeySourceNames>deviceid=1007, date/sampletime/1970-01-01<partitionKeySourceNames>
- Κλειδιά κατατμήσεων TimeStamp -- Εάν μία από τις στήλες-κλειδιά χωρισμάτων είναι μια στήλη χρονοσφραγίδων που έχει μια χονδροειδή έκδοση μιας άλλης στήλης χρονοσφραγίδων, προσδιορίστε αυτό μέσω
*Πηγή κλειδιών κατατμήσεωνName/ otherColumnSourceName/ time\_precision *
όπου time\_precision είναι ένα από τα time\_precision συμβολοσειρές που χρησιμοποιούνται αλλού ERDDAP . Το μονοπάτι Z στο time\_precision συμβολοσειρά είναι η προκαθορισμένη, έτσι δεν έχει σημασία αν το time\_precision Η συμβολοσειρά τελειώνει σε Z ή όχι. Για παράδειγμα, ERDDAP™ θα ερμηνεύσει την ημερομηνία / sampletime/1970-01-01 ως " Οι περιορισμοί για την ημερομηνία μπορούν να κατασκευαστούν από περιορισμούς κατά το χρόνο δειγματοληψίας χρησιμοποιώντας αυτό time\_precision ." Η πραγματική μετατροπή των περιορισμών είναι πιο περίπλοκη, αλλά αυτή είναι η επισκόπηση. Χρησιμοποιήστε το όποτε είναι σχετικό. Επιτρέπει ERDDAP™ να συνεργαστεί αποτελεσματικά με την Κασσάνδρα. Αν αυτή η σχέση μεταξύ στηλών υπάρχει σε πίνακα Κασσάνδρας και δεν το λες ERDDAP™ , το σύνολο δεδομένων θα είναι οδυνηρά αργή σε ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα. - Μόνος Κλειδιά κατάτμησης αξίας -- Εάν θέλετε ένα ERDDAP™ σύνολο δεδομένων για εργασία με μία μόνο τιμή ενός κλειδιού χωρισμάτων, καθορίστε Πηγή κλειδιών κατατμήσεωνName= value . Μην χρησιμοποιείτε εισαγωγικά για μια αριθμητική στήλη, για παράδειγμα, deviceid=1007 Χρησιμοποιήστε εισαγωγικά για μια στήλη εγχόρδων, για παράδειγμα, stationid="Point Pinos"
- Προκαθορισμένη σειρά δεδομένων: Η σειρά του κλειδιού κατάτμησης< dataVariable > είναι μέσα datasets.xml καθορίζει την προκαθορισμένη σειρά των αποτελεσμάτων από την Κασσάνδρα. Φυσικά, οι χρήστες μπορούν να ζητήσουν μια διαφορετική σειρά για ένα δεδομένο σύνολο αποτελεσμάτων με την προσθήκη & orderBy (" κατάλογος μεταβλητών χωρισμένων με κόμματα ") στο τέλος του ερωτήματός τους.
- Εξ ορισμού, Κασσάνδρα και ERDDAP™ αντιμετώπιση ονομάτων στήλης κατά περίπτωση-αναίσθητο τρόπο. Αλλά αν είστε έτοιμοι στήληNameQuates έως ", ERDDAP™ θα αντιμετωπίσει την Κασσάνδρα με ονόματα στήλης ένα σε περίπτωση ευαίσθητου τρόπου.
<κατάτμηση Κλειδί CSV>·
Εάν αυτό καθορίζεται, ERDDAP™ θα το χρησιμοποιήσει αντί να ζητήσει από την Κασσάνδρα για την κατάτμηση Βασικές πληροφορίες κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Αυτό παρέχει τη λίστα των διακριτών βασικών τιμών χωρισμάτων, με τη σειρά που θα χρησιμοποιηθούν. Οι καιροί πρέπει να προσδιορίζονται ως δευτερόλεπτα από το 1970-01-01T00:00:00Z. Αλλά υπάρχουν επίσης δύο ειδικοί εναλλακτικοί τρόποι για να καθορίσετε τις ώρες (κάθε κωδικοποιημένη ως συμβολοσειρά) :
- χρόνος (αISO8601 Χρόνος) (Μπορεί να κωδικοποιηθεί ως συμβολοσειρά)
- " χρόνοι (anISO8601StartTime, διασκελισμός Seconds, stopTime) " (ΠΡΕΠΕΙ να κωδικοποιηθεί ως συμβολοσειρά)
Σταμάτημα Ο χρόνος μπορεί να είναι ISO8601 Χρόνος ή α " now- nUnits" χρόνος (π.χ., " now- 3 λεπτά") . Σταμάτημα Ο χρόνος δεν χρειάζεται να ταιριάζει ακριβώς με την αρχή. Χρόνος + x διασκελισμός δευτερόλεπτα. Μια σειρά με μια φορά () η τιμή επεκτείνεται σε πολλαπλές σειρές πριν από κάθε ερώτημα, οπότε η λίστα της κατάτμησης Τα κλειδιά μπορεί να είναι πάντα απόλυτα ενημερωμένα. Για παράδειγμα,
<partitionKeyCSV>
deviceid,date
1001,"times(2014-11-01T00:00:00Z, 86400, 2014-11-02T00:00:00Z)"
1007,"time(2014-11-07T00:00:00Z)"
1008,time(2014-11-08T00:00:00Z)
1009,1.4154912E9
</partitionKeyCSV>
επεκτείνεται σε αυτόν τον πίνακα συνδυασμών κλειδιών χωρισμάτων:
deviceid,date
1001,1.4148E9
1001,1.4148864E9
1007,1.4153184E9
1008,1.4154048E9
1009,1.4154912E9
<συστάδα ColumnSourceNames>
Η Κασσάνδρα δέχεται περιορισμούς τύπου SQL στις στήλες συστάδων, οι οποίες είναι οι στήλες που αποτελούν το δεύτερο μέρος του πρωτεύοντος κλειδιού (μετά το πλήκτρο κατάτμησης (α) ) . Έτσι, είναι σημαντικό να αναγνωρίσετε αυτές τις στήλες μέσω<συστάδα ColumnSourceName>. Αυτό επιτρέπει ERDDAP™ να συνεργαστεί αποτελεσματικά με την Κασσάνδρα. Αν υπάρχουν συστάδες και δεν το λες ERDDAP , το σύνολο δεδομένων θα είναι οδυνηρά αργή σε ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
- Για παράδειγμα,<συστάδα ColumnΠηγήName> μουCluster Column1, μουClusterColumn2 </clusterColumnSourceName>
- Εάν ένας πίνακας Κασσάνδρα δεν έχει στήλες συστάδων, είτε δεν καθορίζουν<συστάδα ColumnSourceNames>, ή καθορίστε το χωρίς αξία.
- Εξ ορισμού, Κασσάνδρα και ERDDAP™ αντιμετώπιση ονομάτων στήλης κατά περίπτωση-αναίσθητο τρόπο. Αλλά αν είστε έτοιμοι στήληNameQuates έως ", ERDDAP™ θα αντιμετωπίζεις τα ονόματα της στήλης της Κασσάνδρας με τρόπο ευαίσθητο στην περίπτωση.
<indexColumnSourceNames>·
Η Κασσάνδρα δέχεται '=' περιορισμοί στις δευτερεύουσες στήλες δείκτη, οι οποίες είναι οι στήλες για τις οποίες έχετε δημιουργήσει ρητά δείκτες μέσω
CREATE INDEX *indexName* ON *keyspace.tableName* (*columnName*);
(Ναι, οι παρενθέσεις είναι απαραίτητες.)
Έτσι, είναι πολύ χρήσιμο αν αναγνωρίζετε αυτές τις στήλες μέσω<indexColumnSourceNames>. Αυτό επιτρέπει ERDDAP™ να συνεργαστεί αποτελεσματικά με την Κασσάνδρα. Αν υπάρχουν στήλες ευρετηρίου και δεν το λες ERDDAP , μερικά ερωτήματα θα είναι άσκοπα, επώδυνα αργά στο ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
- Για παράδειγμα,<ευρετήριοColumnSourceNames> Index Column μου1, myIndex Column2 </indexColumnΠηγήName>
- Αν ένας πίνακας Κασσάνδρας δεν έχει στήλες δείκτη, είτε δεν καθορίζει<indexColumnSourceNames>, ή καθορίστε το χωρίς αξία.
- ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ευρετήρια Κασσάνδρας δεν είναι σαν τα ευρετήρια βάσεων δεδομένων. Τα ευρετήρια Κασσάνδρας βοηθούν μόνο '=' περιορισμούς. Και είναι μόνο συνιστάται για στήλες που έχουν πολύ λιγότερες διακριτές τιμές από τις συνολικές.
- Εξ ορισμού, Κασσάνδρα και ERDDAP™ αντιμετώπιση ονομάτων στήλης κατά περίπτωση-αναίσθητο τρόπο. Αλλά αν είστε έτοιμοι στήληNameQuates έως ", ERDDAP™ θα αντιμετωπίζεις τα ονόματα της στήλης της Κασσάνδρας με τρόπο ευαίσθητο στην περίπτωση.
<maxRequestFraction>·
Πότε ERDDAP™ (οπ) φορτώνει ένα σύνολο δεδομένων, ERDDAP™ παίρνει από την Κασσάνδρα τη λίστα των διακριτών συνδυασμών των κλειδιών χωρισμάτων. Για ένα τεράστιο σύνολο δεδομένων, ο αριθμός των συνδυασμών θα είναι τεράστιος. Εάν θέλετε να εμποδίσετε τα αιτήματα των χρηστών από το να ζητήσουν το μεγαλύτερο μέρος ή το σύνολο των δεδομένων (ή ακόμα και ένα αίτημα που ζητά ERDDAP™ για να κατεβάσετε τα περισσότερα ή όλα τα δεδομένα προκειμένου να το φιλτράρετε περαιτέρω) , μπορείτε να πείτε ERDDAP™ μόνο για να επιτρέψει τις αιτήσεις που μειώνουν τον αριθμό των συνδυασμών κατά κάποιο ποσό μέσω<maxRequestFraction>, ο οποίος είναι ένας αριθμός κινητής υποδιαστολής μεταξύ 1e-10 (που σημαίνει ότι το αίτημα δεν μπορεί να χρειαστεί πάνω από 1 συνδυασμό σε ένα δισεκατομμύριο) και 1 (η προεπιλογή, που σημαίνει ότι η αίτηση μπορεί να είναι για ολόκληρο το σύνολο δεδομένων) . Για παράδειγμα, αν ένα σύνολο δεδομένων έχει 10000 διακριτούς συνδυασμούς των πλήκτρων χωρισμάτων και η maxRequestFraction ορίζεται σε 0.1, τότε αιτήματα που χρειάζονται δεδομένα από 1001 ή περισσότερους συνδυασμούς θα δημιουργήσουν ένα μήνυμα σφάλματος, αλλά θα επιτρέπονται αιτήματα που χρειάζονται δεδομένα από 1000 ή λιγότερους συνδυασμούς.
Γενικά, όσο μεγαλύτερο είναι το σύνολο δεδομένων, τόσο χαμηλότερο θα πρέπει να ορίσετε<maxRequestFraction>. Έτσι μπορείτε να το ρυθμίσετε σε 1 για ένα μικρό σύνολο δεδομένων, 0.1 για ένα μεσαίου μεγέθους σύνολο δεδομένων, 0.01 για ένα μεγάλο σύνολο δεδομένων, και 0.001 για ένα τεράστιο σύνολο δεδομένων.
Αυτή η προσέγγιση δεν είναι καθόλου τέλεια. Θα οδηγήσει στην απόρριψη ορισμένων εύλογων αιτημάτων και σε ορισμένα υπερβολικά μεγάλα αιτήματα. Αλλά είναι ένα δύσκολο πρόβλημα και αυτή η λύση είναι πολύ καλύτερη από το τίποτα.
Κασσάνδρα subsetVariables
Όπως και με άλλα σύνολα δεδομένων EDDTable, μπορείτε να καθορίσετε μια λίστα χωρισμένη με κόμματα< dataVariable > destinationName s σε ένα παγκόσμιο χαρακτηριστικό που ονομάζεται " subsetVariables " προσδιορισμός μεταβλητών που έχουν περιορισμένο αριθμό τιμών. Το σύνολο δεδομένων θα έχει τότε μια σελίδα . subset και θα εμφανίζει λίστες διακριτών τιμών για αυτές τις μεταβλητές σε drop-down λίστες σε πολλές ιστοσελίδες.
Συμπεριλαμβανομένων μόνο βασικών μεταβλητών κατάτμησης και στατικών στηλών στη λίστα είναι STRONGLY E NCO - Ναι. Η Κασσάνδρα θα είναι σε θέση να δημιουργήσει τον κατάλογο των διακριτών συνδυασμών πολύ γρήγορα και εύκολα κάθε φορά που το σύνολο δεδομένων επαναφορτώνεται. Μια εξαίρεση είναι τα πλήκτρα κατατμήσεων χρονοσφραγίδων που είναι χονδροειδείς εκδόσεις κάποιας άλλης στήλης χρονοσφραγίδων -- είναι μάλλον καλύτερο να τα αφήσουμε αυτά εκτός της λίστας των subsetVariables δεδομένου ότι υπάρχει ένας μεγάλος αριθμός των τιμών και δεν είναι πολύ χρήσιμο για τους χρήστες.
Εάν συμπεριλάβετε το κλειδί μη-διαχωρισμού, μη-στατικές μεταβλητές στη λίστα, θα είναι πιθανώς πολύ υπολογιστικά ακριβό για την Κασσάνδρα κάθε φορά που το σύνολο δεδομένων επαναφορτίζεται, επειδή ERDDAP™ πρέπει να εξετάσει κάθε σειρά του συνόλου δεδομένων για να δημιουργήσει τις πληροφορίες. Στην πραγματικότητα, το ερώτημα είναι πιθανό να αποτύχει. Έτσι, εκτός από πολύ μικρά σύνολα δεδομένων, αυτό είναι ΣΤΡΑΤΙΩΤΙΚΑ ΔΙΑΘΡΩΣΜΕΝΟ.
Τύποι δεδομένων Κασσάνδρας
Γιατί υπάρχει κάποια ασάφεια για την οποία Τύποι δεδομένων Cassandra χάρτης στον οποίο ERDDAP™ Τύποι δεδομένων, θα πρέπει να ορίσετε ένα [<Τύπος δεδομένων>] (#Τύπος δεδομένων) ετικέτα για κάθε [< dataVariable >] (#μεταβλητή δεδομένων) για να πω ERDDAP™ ποια δεδομέναΤύπος προς χρήση. Το πρότυπο ERDDAP™ δεδομένα Τύποι (και τους πιο κοινούς αντίστοιχους τύπους δεδομένων Cassandra) είναι:
- βουλεάνη (βουλεάνη) , η οποία ERDDAP™ στη συνέχεια αποθηκεύει ως bytes
- byte (αντίγραφο) (int, εάν το εύρος είναι -128 έως 127)
- σύντομο (int, εάν η εμβέλεια είναι -32768 έως 32767)
- int (-2147483648 έως 2147483647)
- μακρύ (-9223372036854775808 έως 9223372036854775807)
- πλωτήρας (πλωτήρας)
- διπλό (διπλό, δεκαδικό (με πιθανή απώλεια ακριβείας) , χρονοσφραγίδα)
- Χαρ (Ascii ή κείμενο, εάν ποτέ δεν έχουν περισσότερο από 1 χαρακτήρα)
- Στρινγκ (Ascii, κείμενο, varchar, inet, uuid, timeuid, blob, χάρτης, σύνολο, λίστα;)
Η Κασσάνδρα. χρονοσφραγίδα είναι ειδική περίπτωση: χρήση ERDDAP Διπλά δεδομένα Πληκτρολογήστε.
Αν ορίσετε ένα συμβολοσειρά δεδομένωνΕίδος ERDDAP™ για ένα χάρτη Κασσάνδρα, σύνολο ή λίστα, ο χάρτης, που ή λίστα σε κάθε σειρά Κασσάνδρα θα μετατραπεί σε μια μόνο συμβολοσειρά σε μια μόνο σειρά στην ERDDAP™ τραπέζι. ERDDAP™ έχει εναλλακτικό σύστημα για τις λίστες· βλέπε παρακάτω.
τύπος Λίστες... ERDDAP Είναι...<Τύπος δεδομένων>] (#Τύπος δεδομένων) ετικέτα για Κασσάνδρα dataVariable s μπορεί να περιλαμβάνει την τακτική ERDDAP™ δεδομένα Τύποι (βλ. παραπάνω) συν αρκετά ειδικά δεδομέναTypes που μπορούν να χρησιμοποιηθούν για στήλες λίστα Κασσάνδρα: boleanList, byteList, ubyteList, shortList, ushortList, intList, uintList, longList, ulongList, floatList, doubleList, charList, StringList. Όταν μία από αυτές τις στήλες λίστας βρίσκεται στα αποτελέσματα που περνούν στην ERDDAP™ , κάθε σειρά δεδομένων πηγής θα επεκταθεί στη λίστα. μέγεθος () Σειρά δεδομένων ERDDAP · απλά στοιχεία Τύποι (Π.χ.) στην εν λόγω γραμμή δεδομένων πηγής θα είναι διπλή λίστα. μέγεθος () φορές. Εάν τα αποτελέσματα περιέχουν περισσότερες από μία μεταβλητές λίστας, όλες οι λίστες σε μια δεδομένη σειρά δεδομένων ΠΡΕΠΕΙ να έχουν το ίδιο μέγεθος και ΠΡΕΠΕΙ να είναι "παράλληλες" λίστες, ή ERDDAP™ θα δημιουργήσει ένα μήνυμα σφάλματος. Για παράδειγμα, για μετρήσεις ρευμάτων από ADCP, βάθος \[ 0 \] , uCurrent \[ 0 \] , vCurrent \[ 0 \] , και zCurrent \[ 0 \] είναι όλοι συγγενείς, και βάθος \[ 1 \] , uCurrent \[ 1 \] , vCurrent \[ 1 \] , και zCurrent \[ 1 \] είναι όλοι συγγενείς, ... Εναλλακτικά, αν δεν θέλετε ERDDAP™ για την επέκταση μιας λίστας σε πολλαπλές σειρές στο ERDDAP™ πίνακα, προσδιορίστε συμβολοσειρά ως το dataVariable Δεδομένα Πληκτρολογήστε έτσι ώστε όλη η λίστα θα αναπαρασταθεί ως μία συμβολοσειρά σε μια γραμμή ERDDAP .
Δεδομένα χρονοσταθεροποίησης Κασσάνδρας
Τα δεδομένα της Κασσάνδρας έχουν πάντα επίγνωση των χρονικών ζωνών. Εάν εισάγετε δεδομένα χρονοσφραγίδων χωρίς να προσδιορίσετε μια ζώνη ώρας, η Κασσάνδρα υποθέτει ότι η χρονοσφραγίδα χρησιμοποιεί την τοπική ζώνη ώρας.
ERDDAP™ υποστηρίζει δεδομένα χρονοσφραγίδων και πάντα παρουσιάζει τα δεδομένα στο Zulu Ζώνη ώρας /GMT. Έτσι, αν εισάγετε δεδομένα χρονοσφραγίδων στην Κασσάνδρα χρησιμοποιώντας μια ζώνη ώρας άλλη από Zulu /GMT, θυμηθείτε ότι πρέπει να κάνετε όλα τα ερωτήματα για τα δεδομένα χρονοσφραγίδα στο ERDDAP™ χρησιμοποιώντας το Zulu Ζώνη ώρας /GMT. Έτσι μην εκπλαγείτε όταν οι τιμές χρονοσφραγίδα που βγαίνουν από ERDDAP μετατοπίζονται κατά αρκετές ώρες λόγω της αλλαγής ζώνης ώρας από το τοπικό στο Zulu Ώρα για GMT.
- Μέσα ERDDAP Σ datasets.xml , στο< dataVariable > ετικέτα για μια μεταβλητή χρονοσφραγίδων, σετ
<dataType>double</dataType>
και μέσα< addAttributes > σύνολο
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
- Πρόταση: Εάν τα δεδομένα είναι ένα χρονικό εύρος, είναι χρήσιμο οι τιμές της χρονοσφραγίδας να αναφέρονται στο κέντρο του υπονοούμενου χρονικού εύρους (για παράδειγμα, το μεσημέρι) . Για παράδειγμα, αν ένας χρήστης έχει δεδομένα για το 2010-03-26T13:00Z από ένα άλλο σύνολο δεδομένων και θέλουν τα κοντινότερα δεδομένα από αυτό το σύνολο δεδομένων Κασσάνδρα που έχει δεδομένα για κάθε ημέρα, τότε τα δεδομένα για το 2010-03-26T12:00Z (που αντιπροσωπεύουν δεδομένα της Κασσάνδρας για την εν λόγω ημερομηνία) είναι προφανώς το καλύτερο (σε αντίθεση με τα μεσάνυχτα πριν ή μετά, όπου είναι λιγότερο προφανές ποιο είναι το καλύτερο) .
- ERDDAP™ έχει ένα βοηθητικό Μετατροπή ενός αριθμητικού Χρόνος έως/από ώρα συμβολοσειράς .
- Βλέπεις; Πώς ERDDAP™ Αντιμετωπίζει το Χρόνο .
Ακέραιος μηδενίζεται
Η Κασσάνδρα υποστηρίζει άκυρα στην Κασσάνδρα ( ERDDAP™ int) και bigint ( ERDDAP™ μακρύ) στήλες, αλλά ERDDAP™ δεν υποστηρίζει αληθινά μηδενικά για οποιονδήποτε ακέραιο τύπο δεδομένων. Εξ ορισμού, η Κασσάνδρα θα μετατραπεί σε ακέραια ERDDAP™ έως 2147483647 για τις εσωτερικές στήλες, ή 9223372036854775807 για τις μακριές στήλες. Αυτά θα εμφανιστούν ως "NaN" σε ορισμένους τύπους αρχείων εξόδου κειμένου (Για παράδειγμα, .csv) , "" σε άλλους τύπους αρχείων εξόδου κειμένου (για παράδειγμα, .htmlTable ) , και τον ειδικό αριθμό (2147483647 για ελλείπουσες τιμές) σε άλλους τύπους αρχείων (για παράδειγμα, δυαδικά αρχεία όπως .nc και χαλάκι) . Ένας χρήστης μπορεί να αναζητήσει σειρές δεδομένων με αυτό το είδος της ελλείπουσας τιμής αναφερόμενος στο "NaN", π.χ., "&windSpeed=NaN".
Εάν χρησιμοποιείτε κάποια άλλη ακέραια τιμή για να υποδείξετε τις τιμές που λείπουν στον πίνακα Κασσάνδρα σας, παρακαλούμε προσδιορίστε αυτή την τιμή στο datasets.xml :
<att name="missing\_value" type="int"\>-999</att>
Για τις στήλες κινητής υποδιαστολής Κασσάνδρα, μηδενικά μετατρέπονται σε NaNs σε ERDDAP . Για τύπους δεδομένων Cassandra που μετατρέπονται σε Strings in ERDDAP™ , nulls να μετατραπεί σε άδεια Strings. Αυτό δεν θα είναι πρόβλημα.
"ΠΛΗΡΟΦΟΡΗΣΗ: Επαναπροετοίμαση ήδη προετοιμασμένη ερώτηση"
- " ΠΛΗΡΟΦΟΡΗΣΗ: Επαναπροετοίμαση ήδη προετοιμασμένων ερωτημάτων τομκάτ /logs/καταλίνα.out (ή κάποιο άλλο αρχείο καταγραφής Tomcat)
Η τεκμηρίωση της Κασσάνδρας λέει ότι υπάρχει πρόβλημα αν το ίδιο ερώτημα γίνεται δύο φορές σε μια Προετοιμασμένη Δήλωση (ή περισσότερο) . (Δες αυτό. αναφορά σφάλματος .) Για να αποφύγεις να τρελάνεις την Κασσάνδρα, ERDDAP™ caches όλα τα προετοιμασμένα Statements έτσι ώστε να μπορεί να τα επαναχρησιμοποιήσει. Η λανθάνουσα μνήμη χάνεται αν/όταν Tomcat/ ERDDAP™ επανεκκινήθηκε, αλλά νομίζω ότι είναι εντάξει, επειδή οι έτοιμες δηλώσεις σχετίζονται με μια δεδομένη συνεδρία (μεταξύ Java και Κασσάνδρα) , το οποίο επίσης χάθηκε. Έτσι, μπορείτε να δείτε αυτά τα μηνύματα. Δεν ξέρω άλλη λύση. Ευτυχώς, είναι προειδοποίηση, όχι λάθος. (Αν και η Κασσάνδρα απειλεί ότι μπορεί να οδηγήσει σε προβλήματα απόδοσης) .
Η Κασσάνδρα ισχυρίζεται ότι οι Ετοιμες δηλώσεις είναι καλές για πάντα, οπότε... ERDDAP Οι προπαρασκευασμένες δηλώσεις δεν πρέπει ποτέ να είναι ξεπερασμένες/ακυρωμένες. Αν αυτό δεν είναι αλήθεια, και έχετε λάθη σχετικά με ορισμένες προετοιμασμένες δηλώσεις που είναι ξεπερασμένες / άκυρες, τότε θα πρέπει να επανεκκινήσετε ERDDAP™ για να καθαρίσετε ERDDAP Η κρύπτη των προετοιμασμένων δηλώσεων.
Ασφάλεια Κασσάνδρας
Βλέπεις; Ασφάλεια Κασσάνδρας
Όταν εργάζεστε με την Κασσάνδρα, πρέπει να κάνετε τα πράγματα όσο το δυνατόν πιο ασφαλή και ασφαλή για να αποφύγετε να αφήσετε έναν κακόβουλο χρήστη να βλάψει την Κασσάνδρα σας ή να αποκτήσετε πρόσβαση σε δεδομένα στα οποία δεν θα πρέπει να έχουν πρόσβαση. ERDDAP™ Προσπαθεί να κάνει τα πράγματα με ασφαλή τρόπο, πάρα πολύ.
- Σας ενθαρρύνουμε να στήσετε ERDDAP™ να συνδεθεί με την Κασσάνδρα ως ένας χρήστης Κασσάνδρα που έχει μόνο πρόσβαση στο σχετικό τραπέζι (α) και έχει μόνο δικαιώματα READ.
- Σας ενθαρρύνουμε να δημιουργήσετε τη σύνδεση από ERDDAP™ στην Κασσάνδρα έτσι ώστε να
- χρησιμοποιεί πάντα SSL,
- επιτρέπει συνδέσεις μόνο από μία διεύθυνση IP (ή ένα σύνολο διευθύνσεων) και από το ένα ERDDAP™ χρήστη, και
- μόνο μεταβιβάζει τους κωδικούς πρόσβασης σε MD5 hashed μορφή τους.
- \[ ΓΝΩΡΙΣΜΕΝΟ ΠΡΟΒΛΗΜΑ \] Η σύνδεσηΙδιότητες (Συμπεριλαμβανομένου και του κωδικού πρόσβασης!) αποθηκεύονται ως απλό κείμενο datasets.xml . Δεν έχουμε βρει τρόπο να επιτρέψουμε στον διαχειριστή να εισάγει τον κωδικό της Κασσάνδρας κατά τη διάρκεια της ERDDAP Η εκκίνηση του Tomcat (που συμβαίνει χωρίς είσοδο χρήστη) , έτσι ο κωδικός πρόσβασης πρέπει να είναι προσβάσιμος σε ένα αρχείο. Για να γίνει αυτό πιο ασφαλές:
- Εσύ. (το ERDDAP™ διαχειριστής) θα πρέπει να είναι ο ιδιοκτήτης της datasets.xml και έχουν πρόσβαση ανάγνωσης και εγγραφής.
- Κάντε μια ομάδα που περιλαμβάνει μόνο user=tomcat. Χρησιμοποιήστε chgrp για να κάνει ότι η ομάδα για datasets.xml , με απλά δικαιώματα ανάγνωσης.
- Χρήση chmod για την ανάθεση δικαιωμάτων o-rwx (δεν έχει πρόσβαση READ ή WRITE για άλλους χρήστες) για datasets.xml .
- Πότε μπαίνεις; ERDDAP™ , ο κωδικός πρόσβασης και άλλες ιδιότητες σύνδεσης αποθηκεύονται σε "ιδιωτικό" Java μεταβλητές.
- Οι αιτήσεις από πελάτες αναλύονται και ελέγχονται για εγκυρότητα πριν από την παραγωγή των αιτήσεων CQL για Κασσάνδρα.
- Οι αιτήσεις προς Κασσάνδρα γίνονται με CQL Bound/Prepared Statements, για την πρόληψη της ένεσης CQL. Σε κάθε περίπτωση, η Κασσάνδρα είναι εγγενώς λιγότερο ευαίσθητη στην έγχυση CQL από ό, τι οι παραδοσιακές βάσεις δεδομένων Ένεση SQL .
Ταχύτητα Κασσάνδρας
Η Κασσάνδρα μπορεί να είναι γρήγορη ή αργή. Υπάρχουν κάποια πράγματα που μπορείτε να κάνετε για να το κάνετε γρήγορα:
- Γενικά... Η φύση του CQL είναι ότι τα ερωτήματα είναι Δηλωτικό . Απλά καθορίζουν τι θέλει ο χρήστης. Δεν περιλαμβάνουν μια προδιαγραφή ή υποδείξεις για το πώς το ερώτημα πρέπει να χειριστεί ή να βελτιστοποιηθεί. Έτσι δεν υπάρχει τρόπος για ERDDAP™ για να δημιουργήσει το ερώτημα με τέτοιο τρόπο ώστε να βοηθήσει την Κασσάνδρα να βελτιστοποιήσει το ερώτημα (ή με οποιονδήποτε τρόπο καθορίζει τον τρόπο χειρισμού του ερωτήματος) . Σε γενικές γραμμές, είναι στο χέρι του διαχειριστή Κασσάνδρα να δημιουργήσει τα πράγματα (για παράδειγμα, ευρετήρια) να βελτιστοποιηθεί για ορισμένους τύπους ερωτήσεων.
- Προσδιορίζοντας τις στήλες χρονοσφραγίδων που σχετίζονται με τα πλήκτρα χωρισμάτων με μεγαλύτερη ακρίβεια<κατάτμηση Πηγή κλειδιώνName>] (#partitionkey ονόματα πηγαίου κώδικα) είναι ο πιο σημαντικός τρόπος για να βοηθήσει ERDDAP™ Δούλεψε αποτελεσματικά με την Κασσάνδρα. Αν αυτή η σχέση υπάρχει σε ένα τραπέζι της Κασσάνδρας και δεν το λες ERDDAP™ , το σύνολο δεδομένων θα είναι οδυνηρά αργή σε ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
- Προσδιορίζοντας τις στήλες συστάδων μέσω [<συστάδα ColumnSourceNames>] (#cluster columnNames) είναι ο δεύτερος πιο σημαντικός τρόπος για να βοηθήσει ERDDAP™ Δούλεψε αποτελεσματικά με την Κασσάνδρα. Αν υπάρχουν συστάδες και δεν το λες ERDDAP , ένα μεγάλο υποσύνολο των πιθανών ερωτημάτων για τα δεδομένα θα είναι άσκοπα, επώδυνα αργή ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
- Μάρκα Δείκτες για τις κοινώς περιορισμένες μεταβλητές -- Μπορείτε να επιταχύνετε μερικά ερωτήματα δημιουργώντας ευρετήρια για στήλες Κασσάνδρας που συχνά περιορίζονται με περιορισμούς "=".
Η Κασσάνδρα δεν μπορεί να φτιάξει ευρετήρια για λίστες, σετ ή στήλες χαρτών.
- Προσδιορίζοντας τις στήλες του δείκτη μέσω [<ευρετήριοColumnSourceNames>] (#index columnNames) είναι ένας σημαντικός τρόπος για να βοηθήσει ERDDAP™ Δούλεψε αποτελεσματικά με την Κασσάνδρα. Αν υπάρχουν στήλες ευρετηρίου και δεν το λες ERDDAP , ορισμένα ερωτήματα για τα δεδομένα θα είναι άσκοπα, επώδυνα αργά στο ERDDAP™ και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.
Κασσάνδρα Στατιστικά
- " Στατιστικά Cassandra" Διαγνωστικά μηνύματα -- Για κάθε ERDDAP™ ερώτημα χρήστη σε ένα σύνολο δεδομένων Κασσάνδρας, ERDDAP™ θα εκτυπώσει μια γραμμή στο αρχείο καταγραφής, bigParentΚατάλογος /logs/log.txt, με ορισμένες στατιστικές που σχετίζονται με το ερώτημα, για παράδειγμα,
\\* Cassandra stats: partitionKeyTable: 2/10000=2e-4 < 0.1 nCassRows=1200 nErddapRows=12000 nRowsToUser=7405
Χρησιμοποιώντας τους αριθμούς στο παραπάνω παράδειγμα, αυτό σημαίνει:
- Πότε ERDDAP™ τελευταίο (οπ) φόρτωσε αυτό το σύνολο δεδομένων, είπε η Κασσάνδρα ERDDAP™ ότι υπήρχαν 10000 διακριτοί συνδυασμοί των πλήκτρων χωρισμάτων. ERDDAP™ αποθήκευσε όλους τους ξεχωριστούς συνδυασμούς σε ένα αρχείο.
- Λόγω των περιορισμών του χρήστη, ERDDAP™ Αναγνωρίστηκαν 2 συνδυασμοί από τους 10000 που μπορεί να έχουν τα επιθυμητά δεδομένα. Λοιπόν... ERDDAP™ θα κάνει 2 κλήσεις στην Κασσάνδρα, ένα για κάθε συνδυασμό των πλήκτρων χωρισμάτων. (Αυτό απαιτεί η Κασσάνδρα.) Σαφώς, είναι ενοχλητικό αν ένα μεγάλο σύνολο δεδομένων έχει μεγάλο αριθμό συνδυασμών των κλειδιών χωρισμάτων και ένα δεδομένο αίτημα δεν μειώνει δραστικά αυτό. Μπορείτε να απαιτήσετε κάθε αίτημα να μειώσει το βασικό χώρο με τον καθορισμό [<maxRequestFraction>] (# maxζητούν διάθλαση) . Εδώ, 2/10000=2e-4, το οποίο είναι μικρότερο από το maxRequestFraction (0.1) , έτσι το αίτημα επιτρεπόταν.
- Μετά την εφαρμογή των περιορισμών στα πλήκτρα χωρισμάτων, στήλες συστάδων , και στήλες δεικτών τα οποία εστάλησαν από ERDDAP™ , Κασσάνδρα επέστρεψε 1200 σειρές δεδομένων ERDDAP™ στο ResultSet.
- Το Αποτέλεσμα Το σετ πρέπει να είχε δεδομένα Τύπος = κάποιος τύπος Λίστα στήλες (με μέσο όρο 10 αντικείμενα ανά κατάλογο) , επειδή ERDDAP™ επέκταση των 1200 σειρές από Κασσάνδρα σε 12000 σειρές ERDDAP .
- ERDDAP™ πάντα εφαρμόζει όλους τους περιορισμούς του χρήστη στα δεδομένα από την Κασσάνδρα. Στην περίπτωση αυτή, οι περιορισμοί που δεν είχε χειριστεί η Κασσάνδρα μείωσαν τον αριθμό των σειρών σε 7405. Αυτός είναι ο αριθμός των γραμμών που αποστέλλονται στο χρήστη.
Η πιο σημαντική χρήση αυτών των διαγνωστικών μηνυμάτων είναι να βεβαιωθείτε ότι ERDDAP™ κάνει αυτό που νομίζεις ότι κάνει. Αν δεν είναι... (Για παράδειγμα, δεν μειώνει τον αριθμό των διακριτών συνδυασμών όπως αναμενόταν;) Τότε μπορείς να χρησιμοποιήσεις τις πληροφορίες για να βρεις τι συμβαίνει.
- Έρευνα και πείραμα για την εύρεση και τη ρύθμιση καλύτερα [<σύνδεσηProperty>] (Ιδιοκτησία σύνδεσης #cassandra) Είναι.
- Ελέγξτε την ταχύτητα της σύνδεσης δικτύου μεταξύ Κασσάνδρας και ERDDAP . Αν η σύνδεση είναι αργή, δείτε αν μπορείτε να την βελτιώσετε. Η καλύτερη κατάσταση είναι όταν ERDDAP™ εκτελείται σε έναν εξυπηρετητή συνδεδεμένο στο ίδιο (γρήγορα) Αλλάξτε ως ο διακομιστής που εκτελεί τον κόμβο Κασσάνδρα με τον οποίο συνδέεστε.
- Κάνε υπομονή. Διαβάστε προσεκτικά τις πληροφορίες εδώ και στην τεκμηρίωση της Κασσάνδρας. Πείραμα. Έλεγξε τη δουλειά σου. Αν η Κασσάνδρα... ERDDAP™ σύνδεση είναι ακόμα πιο αργή από ό, τι περιμένετε, παρακαλούμε να συμπεριλάβετε το σχήμα του τραπεζιού Κασσάνδρα σας και σας ERDDAP™ κομμάτι του datasets.xml και να δούμε μας τμήμα για τη λήψη πρόσθετης υποστήριξης .
- Αν όλα τα άλλα αποτύχουν, να εξετάσει την αποθήκευση των δεδομένων σε μια συλλογή NetCDF v3 .nc αρχεία (ιδιαίτερα .nc αρχεία που χρησιμοποιούν το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Contigoul Ragged δομές δεδομένων Array και έτσι μπορεί να αντιμετωπιστεί με ERDDAP Σ Πίνακας EDDFromNcCFΑρχεία ) . Αν είναι λογικά οργανωμένοι (το καθένα με δεδομένα για ένα κομμάτι χώρου και χρόνου) , ERDDAP™ μπορεί να εξάγει δεδομένα από αυτά πολύ γρήγορα.
Πίνακας EDDΑπό σκελετό Cassandra XML
<dataset type="EDDTableFromCassandra" datasetID\="..." active\="..." >
<ipAddress>...</ipAddress>
<!-- The Cassandra URL without the port number, for example,
127.0.0.1 REQUIRED. -->
<connectionProperty name="name">value</connectionProperty>
<!-- The names (for example, "readTimeoutMillis") and values
of the Cassandra properties that ERDDAP™ needs to change.
0 or more. -->
<keyspace>...</keyspace> <!-- The name of the keyspace that has
the table. REQUIRED. -->
<tableName>...</tableName> <!-- The name of the table, default = "".
REQUIRED. -->
<partitionKeySourceNames>...<partitionKeySourceNames>
<!-- REQUIRED. -->
<clusterColumnSourceNames>...<clusterColumnSourceNames>
<!-- OPTIONAL. -->
<indexColumnSourceNames>...<indexColumnSourceNames> <!-- OPTIONAL. -->
<maxRequestFraction>...<maxRequestFraction>
<!-- OPTIONAL double between 1e-10 and 1 (the default). -->
<columnNameQuotes>...<columnNameQuotes> <!-- OPTIONAL.
Options: \[nothing\] (the default) or ". -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include a <dataType> tag. See
Cassandra DataTypes.
For Cassandra timestamp columns, set dataType=double and
units=seconds since 1970-01-01T00:00:00Z -->
</dataset>
Πίνακας EDD από το DapSequence
Πίνακας EDD από το DapSequence χειρίζεται μεταβλητές μέσα σε ακολουθίες 1 και 2 επιπέδων από DAP εξυπηρετητές όπως: DAP ΑΝΑ (ήταν στοhttps://www.pmel.noaa.gov/epic/software/dapper/, τώρα διακόπτεται) .
-
Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο. Μπορείτε να συγκεντρώσετε τις πληροφορίες που χρειάζεστε εξετάζοντας τα αρχεία DDS και DAS του συνόλου δεδομένων πηγής στο πρόγραμμα περιήγησης σας (με την προσθήκη .das και .dds στο sourceUrl (ένα παράδειγμαhttps://dapper.pmel.noaa.gov/dapper/epic/tao\\_time\\_series.cdp.dds).
-
Μια μεταβλητή είναι σε DAP ακολουθία, εάν η απόκριση .dds δείχνει ότι η δομή δεδομένων που κατέχει τη μεταβλητή είναι μια αλληλουχία .dds . (περίπτωση αναίσθητη) .
-
Σε ορισμένες περιπτώσεις, θα δείτε μια ακολουθία μέσα σε μια ακολουθία, μια ακολουθία 2 επιπέδων -- EDDTableFromDapSequence χειρίζεται αυτά, πάρα πολύ.
EDDTableFromDapSequence σκελετός XML
<dataset type="EDDTableFromDapSequence" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<outerSequenceName>...</outerSequenceName>
<!-- The name of the outer sequence for DAP sequence data.
This tag is REQUIRED. -->
<innerSequenceName>...</innerSequenceName>
<!-- The name of the inner sequence for DAP sequence data.
This tag is OPTIONAL; use it if the DAP data is a two level
sequence. -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<sourceCanConstrainStringEQNE>true|false</sourceCanConstrainStringEQNE>
<sourceCanConstrainStringGTLT>true|false</sourceCanConstrainStringGTLT>
<sourceCanConstrainStringRegex>...</sourceCanConstrainStringRegex>
<skipDapperSpacerRows>...</skipDapperSpacerRows>
<!-- skipDapperSpacerRows specifies whether the dataset
will skip the last row of each innerSequence other than the
last innerSequence (because Dapper servers put NaNs in the
row to act as a spacer). This tag is OPTIONAL. The default
is false. It is recommended that you set this to true for
all Dapper sources and false for all other data sources. -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
Πίνακας EDD από τη βάση δεδομένων
Πίνακας EDD από τη βάση δεδομένων χειρίζεται δεδομένα από έναν σχετικό πίνακα βάσεων δεδομένων ή προβολή.
Ένας πίνακας ή προβολή
Εάν τα δεδομένα που θέλετε να εξυπηρετήσετε είναι σε δύο ή περισσότερους πίνακες (και έτσι χρειάζεται ένα JOIN για την εξαγωγή δεδομένων και από τους δύο πίνακες ταυτόχρονα) , θα πρέπει να κάνετε ένα απομαλοποιημένο (έχουν ήδη ενταχθεί) τραπέζι ή προβολή με όλα τα δεδομένα που θέλετε να κάνετε διαθέσιμα ως ένα σύνολο δεδομένων ERDDAP .
Για μεγάλες, πολύπλοκες βάσεις δεδομένων, μπορεί να έχει νόημα να διαχωρίσουμε αρκετά κομμάτια ως απομαλοποιημένους πίνακες, το καθένα με ένα διαφορετικό είδος δεδομένων, το οποίο θα γίνει ξεχωριστά σύνολα δεδομένων ERDDAP .
Κάνοντας έναν απομαλοποιημένο πίνακα για χρήση σε ERDDAP™ Μπορεί να σου ακούγεται σαν τρελή ιδέα. Σε παρακαλώ, εμπιστεύσου μας. Υπάρχουν αρκετοί λόγοι για τους οποίους ERDDAP™ έργα με απομαλοποιημένους πίνακες:
- Είναι πολύ πιο εύκολο για τους χρήστες. Πότε ERDDAP™ παρουσιάζει το σύνολο δεδομένων ως ένα, απλό, απομαλοποιημένο, ενιαίο πίνακα, είναι πολύ εύκολο για τον καθένα να καταλάβει τα δεδομένα. Οι περισσότεροι χρήστες δεν έχουν ακούσει ποτέ για κανονικοποιημένα τραπέζια, και πολύ λίγοι κατανοούν τα κλειδιά, τα ξένα κλειδιά, ή το τραπέζι ενώνει, και σχεδόν σίγουρα δεν γνωρίζουν τις λεπτομέρειες των διαφόρων τύπων των ενώσεων, ή πώς να ορίσετε το SQL για να κάνετε μια σύνδεση (ή πολλαπλές ενώσεις) Σωστά. Η χρήση ενός απομαλοποιημένου πίνακα αποφεύγει όλα αυτά τα προβλήματα. Αυτός και μόνο ο λόγος δικαιολογεί τη χρήση ενός απομαλοποιημένου ενιαίου πίνακα για την παρουσίαση ενός συνόλου δεδομένων ERDDAP™ χρήστες.
- Κανονικοποιημένοι πίνακες (πολλαπλοί πίνακες που σχετίζονται με βασικές στήλες) είναι μεγάλη για την αποθήκευση δεδομένων σε μια βάση δεδομένων. Αλλά ακόμα και στο SQL, το αποτέλεσμα που επιστρέφεται στο χρήστη είναι ένα απομαλοποιημένο (Ενωμένοι) Μονό τραπέζι. Έτσι φαίνεται λογικό να παρουσιάσει το σύνολο δεδομένων στους χρήστες ως ένα τεράστιο, απομαλοποιημένο, ενιαίο πίνακα από το οποίο μπορούν στη συνέχεια να ζητήσουν υποσύνολα (π.χ., δείξε μου σειρές του πίνακα όπου η θερμοκρασία> 30) .
- Μπορείτε να κάνετε αλλαγές για ERDDAP™ χωρίς να αλλάζεις τραπέζια. ERDDAP™ έχει μερικές απαιτήσεις που μπορεί να είναι διαφορετικές από το πώς έχετε δημιουργήσει τη βάση δεδομένων σας. Για παράδειγμα, ERDDAP™ απαιτεί τα δεδομένα χρονοσφραγίδων να αποθηκεύονται σε πεδία 'timestamp with timezone'. Κάνοντας ένα ξεχωριστό πίνακα / προβολή για ERDDAP™ , μπορείτε να κάνετε αυτές τις αλλαγές όταν κάνετε το απομαλοποιημένο πίνακα για ERDDAP . Έτσι, δεν χρειάζεται να κάνετε αλλαγές στα τραπέζια σας.
- ERDDAP™ θα αναδημιουργήσει μέρος της δομής των κανονικοποιημένων πινάκων. Μπορείτε να καθορίσετε ποιες στήλες δεδομένων προέρχονται από τους πίνακες 'εξωτερικών' και επομένως έχουν περιορισμένο αριθμό διακριτών τιμών. ERDDAP™ θα συλλέξει όλους τους διαφορετικούς συνδυασμούς τιμών σε αυτές τις στήλες και θα τις παρουσιάσει στους χρήστες σε ένα ειδικό . subset ιστοσελίδα που βοηθά τους χρήστες να επιλέξουν γρήγορα υποσύνολα του συνόλου δεδομένων. Οι διακριτές τιμές για κάθε στήλη εμφανίζονται επίσης σε drop-down λίστες στις άλλες ιστοσελίδες του συνόλου δεδομένων.
- Ένας απομαλοποιημένος πίνακας κάνει τα δεδομένα παράδοσης από εσάς στο ERDDAP Διαχειριστής εύκολα. Είσαι ο ειδικός για αυτό το σύνολο δεδομένων, οπότε είναι λογικό να παίρνεις τις αποφάσεις για το ποιοι πίνακες και ποιες στήλες να ενωθούν και πώς να ενωθούν μαζί τους. Οπότε δεν χρειάζεται να μας παραδώσεις. (ή χειρότερα, οι τελικοί χρήστες) αρκετά τραπέζια και λεπτομερείς οδηγίες για το πώς να ενωθούν μαζί τους, απλά θα πρέπει να μας δώσει πρόσβαση στο απομαλοποιημένο τραπέζι.
- Ένας απομαλοποιημένος πίνακας επιτρέπει την αποτελεσματική πρόσβαση στα δεδομένα. Η απομαλοποιημένη μορφή είναι συνήθως ταχύτερη στην πρόσβαση από την κανονικοποιημένη μορφή. Η συμμετοχή μπορεί να είναι αργή. Οι πολλαπλές ενώσεις μπορεί να είναι πολύ αργές.
Προκειμένου να ληφθούν τα δεδομένα από δύο ή περισσότερους πίνακες στη βάση δεδομένων ERDDAP™ , υπάρχουν τρεις επιλογές:
- Προτεινόμενη επιλογή: Μπορείτε να δημιουργήσετε ένα αρχείο διαχωρισμένης-τιμής με τα δεδομένα από τον απομαλοποιημένο πίνακα. Αν το σύνολο δεδομένων είναι τεράστιο, τότε έχει νόημα να δημιουργήσετε αρκετά αρχεία, το καθένα με ένα συνεκτικό υποσύνολο του απομαλοποιημένου πίνακα (για παράδειγμα, δεδομένα από μικρότερο χρονικό εύρος) .
Το μεγάλο πλεονέκτημα εδώ είναι ότι ERDDAP™ θα είναι σε θέση να χειριστεί τα αιτήματα των χρηστών για δεδομένα χωρίς περαιτέρω προσπάθεια από τη βάση δεδομένων σας. Λοιπόν... ERDDAP™ Δεν θα είναι βάρος στη βάση δεδομένων σας ή κίνδυνος για την ασφάλεια. Αυτή είναι η καλύτερη επιλογή κάτω από όλες σχεδόν τις συνθήκες, επειδή ERDDAP™ μπορεί συνήθως να πάρει δεδομένα από τα αρχεία γρηγορότερα από ό, τι από μια βάση δεδομένων (αν μετατρέψουμε τα αρχεία .csv σε .nc Αρχεία CF) . (Μέρος του λόγου είναι ότι ERDDAP +files είναι ένα σύστημα μόνο ανάγνωσης και δεν χρειάζεται να ασχοληθεί με την πραγματοποίηση αλλαγών κατά την παροχή ΟΞΥ (Ατομικότητα, συνέπεια, απομόνωση, αντοχή) .) Επίσης, πιθανότατα δεν θα χρειαστείτε ξεχωριστό διακομιστή αφού μπορούμε να αποθηκεύσουμε τα δεδομένα σε ένα από τα RAID μας και να το προσπελάσουμε με ένα υπάρχον ERDDAP™ σε έναν υπάρχοντα εξυπηρετητή.
- Εντάξει επιλογή: Στήσατε μια νέα βάση δεδομένων σε έναν διαφορετικό υπολογιστή με μόνο τον απομαλοποιημένο πίνακα. Δεδομένου ότι αυτή η βάση δεδομένων μπορεί να είναι μια ελεύθερη και ανοιχτή βάση δεδομένων κώδικα όπως MariaDB, MySQL, και PostgreSQL, αυτή η επιλογή δεν χρειάζεται να κοστίσει πολύ.
Το μεγάλο πλεονέκτημα εδώ είναι ότι ERDDAP™ θα είναι σε θέση να χειριστεί τα αιτήματα των χρηστών για δεδομένα χωρίς καμία περαιτέρω προσπάθεια από την τρέχουσα βάση δεδομένων σας. Λοιπόν... ERDDAP™ Δεν θα είναι βάρος στην τρέχουσα βάση δεδομένων σας. Αυτό επίσης εξαλείφει πολλές ανησυχίες για την ασφάλεια από ERDDAP™ δεν θα έχουν πρόσβαση στην τρέχουσα βάση δεδομένων σας.
-
Αποθαρρυμένη επιλογή: Μπορούμε να συνδεθούμε. ERDDAP™ στην τρέχουσα βάση δεδομένων σας. Για να το κάνεις αυτό, πρέπει:
- Δημιουργήστε έναν ξεχωριστό πίνακα ή προβολή με τον απομαλοποιημένο πίνακα δεδομένων.
- Δημιουργία ενός "erddap" χρήστη που έχει πρόσβαση μόνο ανάγνωσης σε μόνο τον απομαλοποιημένο πίνακα (α) .
Αυτή είναι μια επιλογή αν τα δεδομένα αλλάζουν πολύ συχνά και θέλετε να δώσετε ERDDAP™ οι χρήστες έχουν άμεση πρόσβαση σε αυτές τις αλλαγές· ωστόσο, ακόμα και έτσι, μπορεί να έχει νόημα η χρήση της επιλογής αρχείου παραπάνω και περιοδικά (κάθε 30 λεπτά;) αντικατάσταση του αρχείου που έχει τα σημερινά δεδομένα. Τα τεράστια μειονεκτήματα αυτής της προσέγγισης είναι ότι ERDDAP™ Τα αιτήματα των χρηστών θα θέσουν πιθανώς ένα αφόρητα μεγάλο βάρος στη βάση δεδομένων σας και ότι η ERDDAP™ σύνδεση είναι ένας κίνδυνος ασφάλειας (αν και μπορούμε να ελαχιστοποιήσουμε/να διαχειριστούμε τον κίνδυνο) .
Κάνοντας τον απομαλοποιημένο πίνακα ή θέα για ERDDAP™ είναι μια καλή ευκαιρία για να κάνει μερικές αλλαγές που ERDDAP™ χρειάζεται, κατά τρόπο που δεν επηρεάζει τα αρχικά σας τραπέζια:
- Αλλαγή ημερομηνίας και χρονοσφραγίδων πεδίων/στήλων για χρήση του τύπου δεδομένων που καλεί η Postgres χρονοσφραγίδα με ζώνη ώρας (ή το ισοδύναμο στη βάση δεδομένων σας) . Χρονοσφραγίδες χωρίς πληροφορίες ζώνης ώρας δεν λειτουργούν σωστά σε ERDDAP .
- Κάντε ευρετήρια για τις στήλες που οι χρήστες συχνά ψάχνουν.
- Να είστε πολύ ενήμεροι η περίπτωση του πεδίου/των ονομάτων στηλών (Για παράδειγμα, χρησιμοποιήστε όλα τα πεζά) όταν τα πληκτρολογείς.
- Μη χρησιμοποιείτε αποκλεισμένες λέξεις για τον πίνακα και για τα ονόματα πεδίου/στήλης.
Εάν χρειάζεστε βοήθεια κάνοντας τον απομαλοποιημένο πίνακα ή προβολή, παρακαλώ επικοινωνήστε με το διαχειριστή της βάσης δεδομένων σας. Αν θέλετε να μιλήσετε για όλη αυτή την προσέγγιση ή στρατηγική πώς να το κάνετε καλύτερα, παρακαλούμε στείλτε email Chris. Ο Τζον στο Νόαγκοβ.
βάση δεδομένων σε datasets.xml
Είναι δύσκολο να δημιουργήσεις το σωστό datasets.xml Απαιτούμενες πληροφορίες ERDDAP™ να δημιουργήσει μια σύνδεση με τη βάση δεδομένων. Κάνε υπομονή. Να είσαι μεθοδικός.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Δημιουργία συνόλων δεδομένων Xml έχει τρεις ειδικές επιλογές για EDDTableFromDatabase:
- Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα καταλόγου, το πρόγραμμα θα εμφανίσει μια λίστα με τα ονόματα καταλόγου.
- Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) Για το όνομα σχήματος, το πρόγραμμα θα εμφανίσει μια λίστα με τα ονόματα σχήματος.
- Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα του πίνακα, το πρόγραμμα θα εμφανίσει μια λίστα πινάκων και των στηλών τους. Η πρώτη "!!!!!!!!!" είσοδος που κάνετε είναι αυτή που θα χρησιμοποιηθεί.
- Διαβάστε προσεκτικά όλες τις πληροφορίες αυτού του εγγράφου σχετικά με το EDDTableFromDatabase.
- Μπορείτε να συλλέξετε τις περισσότερες πληροφορίες που χρειάζεστε για να δημιουργήσετε το XML για ένα σύνολο δεδομένων EDDTableFromDatabase επικοινωνώντας με το διαχειριστή της βάσης δεδομένων και ερευνώντας τον ιστό.
- Αν και οι βάσεις δεδομένων συχνά αντιμετωπίζουν τα ονόματα στήλης και τα ονόματα πίνακα με έναν τρόπο περίπτωση-αναίσθητη, είναι περίπτωση-ευαίσθητη σε ERDDAP . Έτσι αν ένα μήνυμα σφάλματος από τη βάση δεδομένων λέει ότι ένα όνομα στήλης είναι άγνωστο (Για παράδειγμα, "Άγνωστο αναγνωριστικό = " στήλη\_όνομα «") Ακόμα κι αν ξέρεις ότι υπάρχει, προσπάθησε να χρησιμοποιήσεις όλα τα κεφάλαια, για παράδειγμα, ΣΥΛΛΟΓΗ\_ΝΑΜΕ , η οποία είναι συχνά η πραγματική, περίπτωση-ευαίσθητη έκδοση του ονόματος στήλης.
- Συνεργαστείτε στενά με τον διαχειριστή της βάσης δεδομένων, ο οποίος μπορεί να έχει σχετική εμπειρία. Εάν το σύνολο δεδομένων αποτύχει να φορτώσει, διαβάστε το Μήνυμα σφάλματος προσεκτικά για να μάθετε γιατί.
Οδηγός JDBC
-
[Οδηγός JDBC και<οδηγόςName>] (#jdbc-οδηγός) -- Πρέπει να πάρετε το κατάλληλο αρχείο JDBC 3 ή JDBC 4 οδηγού .jar για τη βάση δεδομένων σας και Βάλτο μέσα. τομκάτ /webapps/erddap/WEB-INF/lib μετά την εγκατάσταση ERDDAP . Τότε, στο δικό σου datasets.xml για αυτό το σύνολο δεδομένων, πρέπει να ορίσετε το<οδηγόςName> για αυτόν τον οδηγό, που είναι (Δυστυχώς.) διαφορετικό από το όνομα αρχείου. Αναζήτηση στο διαδίκτυο για τον οδηγό JDBC για τη βάση δεδομένων σας και τον οδηγόName that Java Πρέπει να το χρησιμοποιήσεις.
- Για την MariaDB, προσπάθησε. https://mariadb.com/kb/en/about-the-mariadb-java-client/
Η<οδηγόςName> για χρήση datasets.xml (Βλέπε παρακάτω) είναι πιθανώς org.mariadb.jdbc. Οδηγέ. - Για MySQL και Amazon RDS, δοκιμάστε https://dev.mysql.com/downloads/connector/j/
Η<οδηγόςName> για χρήση datasets.xml (Βλέπε παρακάτω) είναι πιθανώς com.mysql.jdbc. Οδηγέ. - Για Oracle , προσπάθησε https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html . Η<οδηγόςName> για χρήση datasets.xml (Βλέπε παρακάτω) είναι πιθανώς μαντείο.jdbc.driver. Oracle Οδηγέ.
- Για την Postgresql, πήραμε τον οδηγό JDBC 4 από https://mvnrepository.com/artifact/org.postgresql/postgresql
Η<οδηγόςName> για χρήση datasets.xml (Βλέπε παρακάτω) είναι πιθανώς org.postgresql. Οδηγέ. - Για SQL Server, μπορείτε να πάρετε τον οδηγό JTDS JDBC από https://jtds.sourceforge.net . Η<οδηγόςName> για χρήση datasets.xml (Βλέπε παρακάτω) είναι πιθανώς καθαρό.sourceforge.jtds.jdbc. Οδηγέ.
- Για την MariaDB, προσπάθησε. https://mariadb.com/kb/en/about-the-mariadb-java-client/
Αφού βάλετε τον οδηγό JDBC .jar σε ERDDAP™ lib directory, θα πρέπει να προσθέσετε μια αναφορά σε αυτό το αρχείο .jar στα αρχεία .bat ή / και .sh σεναρίων για GenerateDatasets Xml, DasDds, και ArchiveADataset που βρίσκονται στο τομκάτ /webapps/erddap/WEB-INF/ directory? Διαφορετικά, θα πάρετε μια ClassNotFoundException όταν εκτελέσετε αυτά τα σενάρια.
Δυστυχώς, η JDBC είναι μερικές φορές η πηγή των προβλημάτων. Στο ρόλο του ως ενδιάμεσου ERDDAP™ και η βάση δεδομένων, μερικές φορές κάνει λεπτές αλλαγές στο πρότυπο / γενετική βάση δεδομένων SQL αίτημα ότι ERDDAP™ δημιουργεί, προκαλώντας έτσι προβλήματα (για παράδειγμα, σχετικά με Αναγνωριστικοί κωδικοί άνω/κάτω πεζών και σχετίζονται με Ζώνες ημερομηνίας/ώρας ) . Παρακαλώ να είστε υπομονετικοί, διαβάστε τις πληροφορίες εδώ προσεκτικά, ελέγξτε τη δουλειά σας, και δείτε μας τμήμα για τη λήψη πρόσθετης υποστήριξης .
Βάση δεδομένων<σύνδεση Ιδιοκτησία & gt·
- [<σύνδεσηProperty>] (Ιδιοκτησία σύνδεσης #database) -- Στο datasets.xml για το σύνολο δεδομένων σας, πρέπει να ορίσετε πολλές συνδέσεις Ετικέτες ιδιότητας για να πείτε ERDDAP™ πώς να συνδεθείτε στη βάση δεδομένων σας (για παράδειγμα, για τον προσδιορισμό του ονόματος χρήστη, του κωδικού πρόσβασης, της σύνδεσης ssl, και ανάκτηση μεγέθους ) . Αυτά είναι διαφορετικά για κάθε κατάσταση και είναι λίγο δύσκολο να τα καταλάβεις. Αναζήτηση στο διαδίκτυο για παραδείγματα χρήσης ενός οδηγού JDBC για σύνδεση στη βάση δεδομένων σας. Η<σύνδεσηProperty> names (Για piαράδειγα, "χρήστη", "κωδικό πρόσβασης", και "σλ") , και μερικές από τις τιμές σύνδεσηςProperty μπορεί να βρεθεί με την αναζήτηση του ιστού για propertiesJDBC ιδιότητες σύνδεσης βάση δεδομένων Τύπος " (για παράδειγμα, Oracle , MySQL, Amazon RDS, MariaDB, PostgreSQL) .
Εισαγωγές για Ονόματα και Ευαισθησία Υπόθεση
- Εισαγωγές για ονόματα πεδίου/συνόλων; Ευαισθησία περίπτωση - Εξ ορισμού, το EDDTableFromDatabase βάζει ANSI-SQL-standard διπλά εισαγωγικά γύρω από τα ονόματα πεδίου/στήλης σε δηλώσεις SELECT σε περίπτωση που έχετε χρησιμοποιήσει μια δεσμευμένη λέξη ως όνομα πεδίου/στήλης, ή έναν ειδικό χαρακτήρα σε ένα όνομα πεδίου/στήλης. Τα διπλά εισαγωγικά επίσης ματαιώνουν ορισμένους τύπους επιθέσεων με ένεση SQL. Μπορείς να καταλάβεις. ERDDAP™ για χρήση ", ' ή χωρίς εισαγωγικά μέσω<στήληNameQuotes> μέσα datasets.xml για αυτό το σύνολο δεδομένων.
Για πολλές βάσεις δεδομένων, η χρήση οποιουδήποτε τύπου εισαγωγικών κάνει τη βάση δεδομένων να λειτουργεί με ονόματα πεδίου/στήλης σε μια περίπτωση ευαίσθητου τρόπου (αντί της προεπιλεγμένης περίπτωσης βάσης δεδομένων αναίσθητος τρόπος) . Οι βάσεις δεδομένων συχνά εμφανίζουν τα ονόματα αρχείων/στήλων ως όλες τις ανώτερες περιπτώσεις, όταν στην πραγματικότητα η ευαίσθητη περίπτωση είναι διαφορετική. Μέσα ERDDAP™ , παρακαλούμε να αντιμετωπίζετε πάντα τα ονόματα στήλη της βάσης δεδομένων ως περίπτωση ευαίσθητη.
- Για τη Μαρία DB, θα πρέπει να τρέξει τη βάση δεδομένων με \--sql-mode=ANSI\_QUOTES .
- Για MySQL και Amazon RDS, θα πρέπει να εκτελέσετε τη βάση δεδομένων με \--sql-mode=ANSI\_QUOTES .
- Oracle υποστηρίζει ANSI-SQL-πρότυπα διπλά εισαγωγικά εξ ορισμού .
- PostgreSQL υποστηρίζει ANSI-SQL-standard διπλά εισαγωγικά από προεπιλογή.
Μην χρησιμοποιείς μια κρατημένη λέξη για μια βάση δεδομένων, κατάλογο, σχήμα ή το όνομα του πίνακα. ERDDAP™ Δεν βάζει εισαγωγικά γύρω τους.
Εάν είναι δυνατόν, χρησιμοποιήστε όλες τις πεζές περιπτώσεις για τη βάση δεδομένων, κατάλογο, σχήμα, ονόματα πίνακα και τα ονόματα πεδίου κατά τη δημιουργία του πίνακα βάσεων δεδομένων (ή προβολή) και όταν αναφέρεται στο πεδίο/στήλη datasets.xml μέσα ERDDAP . Διαφορετικά, μπορεί να λάβετε ένα μήνυμα λάθους που να λέει ότι δεν βρέθηκε η βάση δεδομένων, ο κατάλογος, το σχήμα, το τραπέζι ή/και το πεδίο. Εάν λάβετε αυτό το μήνυμα σφάλματος, δοκιμάστε να χρησιμοποιήσετε την έκδοση που είναι ευαίσθητη στην περίπτωση, την άνω έκδοση και την κάτω έκδοση του ονόματος σε ERDDAP . Ένας από αυτούς μπορεί να δουλέψει. Αν όχι, θα πρέπει να αλλάξετε το όνομα της βάσης δεδομένων, κατάλογο, σχήμα, και / ή πίνακα σε όλες τις χαμηλότερες περιπτώσεις.
Βάση δεδομένων<δεδομένα Τύπος & gt·
- Βάση δεδομένων [<Τύπος δεδομένων>] (#Τύπος δεδομένων) Ετικέτες -- Γιατί υπάρχει κάποια ασάφεια για την οποία τύποι δεδομένων βάσης δεδομένων χάρτης στον οποίο ERDDAP™ Τύποι δεδομένων, θα πρέπει να ορίσετε ένα [<Τύπος δεδομένων>] (#Τύπος δεδομένων) ετικέτα για κάθε [< dataVariable >] (#μεταβλητή δεδομένων) για να πω ERDDAP™ ποια δεδομέναΤύπος προς χρήση. Μέρος του προβλήματος είναι ότι διαφορετικά σύνολα δεδομένων χρησιμοποιούν διαφορετικούς όρους για τους διάφορους τύπους δεδομένων -- οπότε πάντα προσπαθήστε να ταιριάξετε τους ορισμούς, όχι μόνο τα ονόματα. Βλέπε την περιγραφή του πρότυπο ERDDAP™ δεδομένα Τύποι , η οποία περιλαμβάνει αναφορές στους αντίστοιχους τύπους δεδομένων SQL. Ημερομηνία και ώρα είναι ειδικές περιπτώσεις: χρήση ERDDAP Διπλά δεδομένα Πληκτρολογήστε.
Δεδομένα ημερομηνίας της βάσης δεδομένων
Ορισμένες στήλες ημερομηνίας της βάσης δεδομένων δεν έχουν ρητή ζώνη ώρας. Αυτές οι στήλες είναι πρόβλημα για ERDDAP . Οι βάσεις δεδομένων υποστηρίζουν την έννοια της ημερομηνίας (με ή χωρίς χρόνο) χωρίς ζώνη ώρας, ως κατά προσέγγιση εύρος χρόνου. Αλλά... Java (και έτσι ERDDAP ) ασχολείται μόνο με στιγμιαίες ημερομηνίες + ώρες με μια ζώνη ώρας. Έτσι, μπορεί να γνωρίζετε ότι τα δεδομένα της ημερομηνίας ώρα βασίζεται σε μια τοπική ζώνη ώρας (με ή χωρίς θερινή ώρα) ή το GMT/ Zulu ζώνη ώρας, αλλά Java (και ERDDAP ) Μη. Αρχικά πιστεύαμε ότι θα μπορούσαμε να δουλέψουμε γύρω από αυτό το πρόβλημα. (π.χ. προσδιορίζοντας μια ζώνη ώρας για τη στήλη) , αλλά η βάση δεδομένων + JDBC+ Java Οι αλληλεπιδράσεις το έκαναν μια αναξιόπιστη λύση.
- Λοιπόν... ERDDAP™ απαιτεί να αποθηκεύετε όλα τα δεδομένα ημερομηνίας και ημερομηνίας στον πίνακα βάσης δεδομένων με έναν τύπο δεδομένων βάσης δεδομένων που αντιστοιχεί στον τύπο JDBC "timestamp με ζώνη ώρας. (ιδανικά, που χρησιμοποιεί το GMT / Zulu ζώνη ώρας) .
- Μέσα ERDDAP Σ datasets.xml , στο< dataVariable > ετικέτα για μια μεταβλητή χρονοσφραγίδων, σετ
και μέσα< addAttributes > σύνολο
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
- Πρόταση: Εάν τα δεδομένα είναι ένα χρονικό εύρος, είναι χρήσιμο οι τιμές της χρονοσφραγίδας να αναφέρονται στο κέντρο του υπονοούμενου χρονικού εύρους (για παράδειγμα, το μεσημέρι) . Για παράδειγμα, αν ένας χρήστης έχει δεδομένα για το 2010-03-26T13:00Z από άλλο σύνολο δεδομένων και θέλουν τα πλησιέστερα δεδομένα από ένα σύνολο δεδομένων βάσης δεδομένων που έχει δεδομένα για κάθε ημέρα, τότε τα δεδομένα βάσης δεδομένων για το 2010-03-26T12:00Z (που αντιπροσωπεύουν δεδομένα για την εν λόγω ημερομηνία) είναι προφανώς το καλύτερο (σε αντίθεση με τα μεσάνυχτα πριν ή μετά, όπου είναι λιγότερο προφανές ποιο είναι το καλύτερο) .
- ERDDAP™ έχει ένα βοηθητικό Μετατροπή ενός αριθμητικού Χρόνος έως/από ώρα συμβολοσειράς .
- Βλέπεις; Πώς ERDDAP Αντιμετωπίζει το Χρόνο .
Ακέραιος μηδενίζεται
Η υποστήριξη βάσεων δεδομένων μηδενίζει ακέραιο (int, μικρόσωμος, μικροσκοπικός) στήλες, αλλά ERDDAP™ Δεν υποστηρίζει τα αληθινά μηδενικά. Τα μηδενικά βάσης δεδομένων θα μετατραπούν σε ERDDAP™ 127 για τις στήλες byte, 255 για τις στήλες ubyte, 32767 για τις κοντές στήλες, 65535 για τις στήλες ushort, 2147483647 για τις στήλες int, 4294967295 για τις στήλες uint, 9,223,372,036,854,775,807 για τις μακριές στήλες, ή 18446744073709551615 για τις στήλες ulong. Εάν χρησιμοποιείτε αυτές τις προκαθορισμένες τιμές, παρακαλούμε προσδιορίστε αυτές missing\_value s για τους χρήστες του συνόλου δεδομένων ERDDAP™ με
<att name="\_FillValue" type="int"\>2147483647</att>
ή
<att name="\_FillValue" type="short"\>32767</att>
Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το - missing\_value " χαρακτηριστικό αντί του "\ FillValue". Δημιουργία συνόλων δεδομένων Το Xml προσθέτει αυτόματα αυτά τα χαρακτηριστικά \_FillValue όταν παράγει τα προτεινόμενα datasets.xml για σύνολα δεδομένων βάσης δεδομένων.
Για στήλες κινητής βάσης δεδομένων, nulls μετατρέπονται σε NaNs in ERDDAP . Για τους τύπους δεδομένων βάσεων δεδομένων που μετατρέπονται σε συμβολοσειρές ERDDAP™ , nulls να μετατραπεί σε άδεια Strings.
Ασφάλεια βάσης δεδομένων
- Όταν εργάζεστε με βάσεις δεδομένων, θα πρέπει να κάνετε τα πράγματα όσο το δυνατόν με ασφάλεια και ασφάλεια για να αποφύγετε να αφήσετε έναν κακόβουλο χρήστη να βλάψει τη βάση δεδομένων σας ή να αποκτήσετε πρόσβαση σε δεδομένα στα οποία δεν θα πρέπει να έχουν πρόσβαση. ERDDAP™ Προσπαθεί να κάνει τα πράγματα με ασφαλή τρόπο, πάρα πολύ.
- Εξετάστε την αντιγραφή, σε διαφορετικό υπολογιστή, τη βάση δεδομένων και πίνακες βάσεων δεδομένων με τα δεδομένα που θέλετε ERDDAP™ να υπηρετήσω. (Ναι, για εμπορικές βάσεις δεδομένων όπως Oracle , αυτό περιλαμβάνει πρόσθετα τέλη αδειοδότησης. Αλλά για βάσεις δεδομένων ανοιχτού κώδικα, όπως PostgreSQL, MySQL, Amazon RDS, και MariaDB, αυτό δεν κοστίζει τίποτα.) Αυτό σας δίνει ένα υψηλό επίπεδο ασφάλειας και επίσης αποτρέπει ERDDAP™ αιτήματα από την επιβράδυνση της αρχικής βάσης δεδομένων.
- Σας ενθαρρύνουμε να στήσετε ERDDAP™ να συνδεθεί στη βάση δεδομένων ως χρήστης βάσης δεδομένων που έχει μόνο πρόσβαση στο σχετικό βάση δεδομένων (α) και έχει μόνο δικαιώματα READ.
- Σας ενθαρρύνουμε να δημιουργήσετε τη σύνδεση από ERDDAP™ στη βάση δεδομένων έτσι ώστε να
- χρησιμοποιεί πάντα SSL,
- επιτρέπει συνδέσεις μόνο από μία διεύθυνση IP (ή ένα σύνολο διευθύνσεων) και από το ένα ERDDAP™ χρήστη, και
- μόνο μεταβιβάζει τους κωδικούς πρόσβασης σε MD5 hashed μορφή τους.
- \[ ΓΝΩΡΙΣΜΕΝΟ ΠΡΟΒΛΗΜΑ \] Η σύνδεσηΙδιότητες (Συμπεριλαμβανομένου και του κωδικού πρόσβασης!) αποθηκεύονται ως απλό κείμενο datasets.xml . Δεν έχουμε βρει τρόπο να επιτρέψουμε στον διαχειριστή να εισάγει τον κωδικό της βάσης δεδομένων κατά τη διάρκεια ERDDAP Η εκκίνηση του Tomcat (που συμβαίνει χωρίς είσοδο χρήστη) , έτσι ο κωδικός πρόσβασης πρέπει να είναι προσβάσιμος σε ένα αρχείο. Για να γίνει αυτό πιο ασφαλές:
- Εσύ. (το ERDDAP™ διαχειριστής) θα πρέπει να είναι ο ιδιοκτήτης της datasets.xml και έχουν πρόσβαση ανάγνωσης και εγγραφής.
- Κάντε μια ομάδα που περιλαμβάνει μόνο user=tomcat. Χρησιμοποιήστε chgrp για να κάνει ότι η ομάδα για datasets.xml , με απλά δικαιώματα ανάγνωσης.
- Χρήση chmod για την ανάθεση δικαιωμάτων o-rwx (δεν έχει πρόσβαση READ ή WRITE για άλλους χρήστες) για datasets.xml .
- Πότε μπαίνεις; ERDDAP™ , ο κωδικός πρόσβασης και άλλες ιδιότητες σύνδεσης αποθηκεύονται σε "ιδιωτικό" Java μεταβλητές.
- Τα αιτήματα των πελατών αναλύονται και ελέγχονται για εγκυρότητα πριν από τη δημιουργία των αιτήσεων SQL για τη βάση δεδομένων.
- Οι αιτήσεις προς τη βάση δεδομένων γίνονται με SQL PrematedStatements, για την πρόληψη Ένεση SQL .
- Οι αιτήσεις στη βάση δεδομένων υποβάλλονται με εκτέλεση Ερώτηση (μη εκτέλεση δήλωσης) να περιορίσει τις αιτήσεις μόνο για ανάγνωση (έτσι επιχείρησε SQL ένεση για να αλλάξει τη βάση δεδομένων θα αποτύχει για το λόγο αυτό, πάρα πολύ) .
SQL
- Γιατί; OPeNDAP Τα αιτήματα της καρτέλας δεδομένων σχεδιάστηκαν για να μιμηθούν τα αιτήματα της καρτέλας SQL, είναι εύκολο για ERDDAP™ να μετατρέψετε τα αιτήματα δεδομένων πίνακα σε απλές SQL προετοιμασμένες δηλώσεις. Για παράδειγμα, το ERDDAP™ αίτηση
time,temperature&time>=2008-01-01T00:00:00Z&time<=2008-02-01T00:00:00Z
θα μετατραπεί στην προετοιμασμένη δήλωση SQL
SELECT "time", "temperature" FROM *tableName*
WHERE "time" >= 2008-01-01T00:00:00Z AND "time" <= 2008-02-01T00:00:00Z
ERDDAP™ αιτήματα με το & distinct () και/ή & orderBy ( μεταβλητές ) θα προσθέσετε ΔΙΑΣΤΑΣΗ ή / και ΔΙΑΤΑΞΗ ΑΠΟ μεταβλητές στην προετοιμασμένη δήλωση SQL. Γενικά, αυτό θα επιβραδύνει σημαντικά την ανταπόκριση από τη βάση δεδομένων. ERDDAP™ καταγράφει την προετοιμασμένη δήλωση log.txt ως
statement=*thePreparedStatement*
Αυτή θα είναι μια παράσταση κειμένου της προπαρασκευαστικής δήλωσης, η οποία μπορεί να διαφέρει ελαφρώς από την πραγματική προετοιμασμένη δήλωση. Για παράδειγμα, στην Προετοιμασμένη Κατάσταση, οι χρόνοι κωδικοποιούνται με ειδικό τρόπο. Αλλά στην αναπαράσταση κειμένου εμφανίζονται ως ώρες ημερομηνίας ISO 8601.
Ταχύτητα βάσης δεδομένων
- Οι βάσεις δεδομένων μπορεί να είναι αργές. Υπάρχουν κάποια πράγματα που μπορείς να κάνεις:
- Γενικά... Η φύση του SQL είναι ότι οι ερωτήσεις είναι Δηλωτικό . Απλά καθορίζουν τι θέλει ο χρήστης. Δεν περιλαμβάνουν μια προδιαγραφή ή υποδείξεις για το πώς το ερώτημα πρέπει να χειριστεί ή να βελτιστοποιηθεί. Έτσι δεν υπάρχει τρόπος για ERDDAP™ για τη δημιουργία του ερωτήματος με τέτοιο τρόπο ώστε να βοηθά τη βάση δεδομένων βελτιστοποιώντας το ερώτημα (ή με οποιονδήποτε τρόπο καθορίζει τον τρόπο χειρισμού του ερωτήματος) . Σε γενικές γραμμές, είναι στο χέρι του διαχειριστή της βάσης δεδομένων να δημιουργήσει τα πράγματα (για παράδειγμα, ευρετήρια) να βελτιστοποιηθεί για ορισμένους τύπους ερωτήσεων.
Ορισμός μεγέθους συλλογής
Οι βάσεις δεδομένων επιστρέφουν τα δεδομένα σε ERDDAP™ σε κομμάτια. Εξ ορισμού, διαφορετικές βάσεις δεδομένων επιστρέφουν διαφορετικό αριθμό γραμμών στα κομμάτια. Συχνά αυτός ο αριθμός είναι πολύ μικρός και τόσο αναποτελεσματικός. Για παράδειγμα, η προεπιλογή για Oracle Είναι 10! Διαβάστε την τεκμηρίωση JDBC για τον οδηγό JDBC της βάσης δεδομένων σας για να βρείτε την ιδιότητα σύνδεσης που θα ρυθμίσετε προκειμένου να αυξήσετε αυτό, και προσθέστε αυτό στην περιγραφή του συνόλου δεδομένων στο datasets.xml . Για παράδειγμα, Για το MySQL και το Amazon RDS, χρήση
<connectionProperty name="defaultFetchSize">10000</connectionProperty>
Για την MariaDB, αυτή τη στιγμή δεν υπάρχει τρόπος να αλλάξει το μέγεθος της παραλαβής. Αλλά είναι ένα ζητούμενο χαρακτηριστικό, οπότε ψάξτε τον ιστό για να δείτε αν αυτό έχει υλοποιηθεί. Για Oracle , χρήση
<connectionProperty name="defaultRowPrefetch">10000</connectionProperty>
Για PostgreSQL, χρήση
<connectionProperty name="defaultRowFetchSize">10000</connectionProperty>
Αλλά μπορείτε να αλλάξετε τον αριθμό. Θέτοντας τον αριθμό πολύ μεγάλο θα προκαλέσει ERDDAP™ να χρησιμοποιήσει πολλή μνήμη και να είναι πιο πιθανό να ξεμείνει από μνήμη.
Ιδιότητες σύνδεσης
Κάθε βάση δεδομένων έχει άλλες ιδιότητες σύνδεσης που μπορούν να προσδιοριστούν στο datasets.xml . Πολλά από αυτά θα επηρεάσουν την απόδοση της βάσης δεδομένων ERDDAP™ σύνδεση. Παρακαλώ διαβάστε την τεκμηρίωση για τον οδηγό JDBC της βάσης δεδομένων σας για να δείτε τις επιλογές. Εάν βρείτε ιδιότητες σύνδεσης που είναι χρήσιμες, παρακαλούμε στείλτε ένα email με τις λεπτομέρειες για να erd dot data at noaa dot gov .
- Φτιάξε ένα τραπέζι... Πιθανόν να λάβετε γρηγορότερες απαντήσεις αν λαμβάνετε περιοδικά (Κάθε μέρα; όποτε υπάρχουν νέα δεδομένα;) δημιουργία πραγματικού πίνακα (παρόμοια με το πώς δημιουργήσατε το VIEW) και πες ERDDAP™ να πάρει δεδομένα από τον πίνακα αντί για το VIEW. Δεδομένου ότι οποιοδήποτε αίτημα προς τον πίνακα μπορεί τότε να εκπληρωθεί χωρίς να ΓΙΝΕΙ σε άλλο τραπέζι, η απάντηση θα είναι πολύ πιο γρήγορη.
- Κενώστε τον πίνακα - MySQL και Amazon RDS θα ανταποκριθεί πολύ πιο γρήγορα αν χρησιμοποιήσετε ΠΙΝΑΚΑΣ ΟΠΤΙΜΙΖΕ . Μαρία DB θα ανταποκριθεί πολύ πιο γρήγορα αν χρησιμοποιήσετε ΠΙΝΑΚΑΣ ΟΠΤΙΜΙΖΕ . PostgreSQL θα ανταποκριθεί πολύ πιο γρήγορα αν ΚΑΚΟΥΜ Το τραπέζι. Oracle δεν έχει ούτε χρειάζεται ανάλογη εντολή.
- Μάρκα Δείκτες για τις κοινώς περιορισμένες μεταβλητές -- Μπορείτε να επιταχύνετε πολλά/τα περισσότερα ερωτήματα δημιουργώντας ευρετήρια στη βάση δεδομένων για τις μεταβλητές (τις οποίες καλεί η βάση δεδομένων "στήλες") που συχνά περιορίζονται στο ερώτημα του χρήστη. Γενικά, πρόκειται για τις ίδιες μεταβλητές που προσδιορίζονται από [< subsetVariables >] (#υποκαθορισμένες μεταβλητές) και/ή τις μεταβλητές γεωγραφικού πλάτους, γεωγραφικού μήκους και χρόνου.
Χρήση συγκέντρωσης σύνδεσης
Κανονικά, ERDDAP™ κάνει ξεχωριστή σύνδεση με τη βάση δεδομένων για κάθε αίτημα. Αυτή είναι η πιο αξιόπιστη προσέγγιση. Η ταχύτερη εναλλακτική λύση είναι να χρησιμοποιήσετε ένα DataSource που υποστηρίζει τη συγκέντρωση σύνδεσης. Για να το ρυθμίσετε, προσδιορίστε (για παράδειγμα)
<dataSourceName>java:comp/env/jdbc/postgres/erddap</dataSourceName>
ακριβώς δίπλα στο< sourceUrl >,<οδηγόςName>, και<σύνδεση Ιδιοκτησία>. Και μέσα τομκάτ /conf/context.xml, ορίστε έναν πόρο με τις ίδιες πληροφορίες, για παράδειγμα,
<Resource
name="jdbc/postgres/erddap" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="*jdbc:postgresql://somehost:5432/myDatabaseName*"
username="*myUsername*" password="*myPassword*"
initialSize="0" maxActive="8" minIdle="0" maxIdle="0" maxWait="-1"/>
Γενικές πληροφορίες σχετικά με τη χρήση ενός DataSource είναι στο https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html . Βλέπεις; Πληροφορίες Tomcat DataSource και Παραδείγματα Tomcat DataSource ή να αναζητήσετε τον ιστό για παραδείγματα χρήσης DataSources με άλλους εξυπηρετητές εφαρμογών.
- Αν όλα τα άλλα αποτύχουν, να εξετάσει την αποθήκευση των δεδομένων σε μια συλλογή NetCDF v3 .nc αρχεία (ιδιαίτερα .nc αρχεία που χρησιμοποιούν το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Contigoul Ragged δομές δεδομένων Array και έτσι μπορεί να αντιμετωπιστεί με ERDDAP Σ Πίνακας EDDFromNcCFΑρχεία ) . Αν είναι λογικά οργανωμένοι (το καθένα με δεδομένα για ένα κομμάτι χώρου και χρόνου) , ERDDAP™ μπορεί να εξάγει δεδομένα από αυτά πολύ γρήγορα.
EDDTableFromDatabase σκελετός XML
<dataset type="EDDTableFromDatabase" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<!-- The format varies for each type of database, but will be
something like:
For MariaDB: jdbc:mariadb://xxx.xxx.xxx.xxx:3306/databaseName
For MySql jdbc:mysql://xxx.xxx.xxx.xxx:3306/databaseName
For Amazon RDS: jdbc:mysql://xxx.xxx.xxx.xxx:3306/databaseName
For Oracle: jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:databaseName
For Postgresql: jdbc:postgresql://xxx.xxx.xxx.xxx:5432/databaseName
where xxx.xxx.xxx.xxx is the host computer's numeric IP address
followed by :PortNumber (4 digits), which may be different for your
database. REQUIRED. -->
<driverName\>...</driverName>
<!-- The high-level name of the database driver, for example,
"org.postgresql.Driver". You need to put the actual database
driver .jar file (for example, postgresql.jdbc.jar) in
tomcat/webapps/erddap/WEB-INF/lib. REQUIRED. -->
<connectionProperty name="name">value</connectionProperty>
<!-- The names (for example, "user", "password", and "ssl")
and values of the properties needed for ERDDAP™ to establish
the connection to the database. 0 or more. -->
<dataSourceName>...</dataSourceName> <!-- 0 or 1 -->
<catalogName>...</catalogName>
<!-- The name of the catalog which has the schema which has the
table, default = "". OPTIONAL. Some databases don't use
this. -->
<schemaName>...</schemaName> <!-- The name of the
schema which has the table, default = "". OPTIONAL. -->
<tableName>...</tableName> <!-- The name of the
table, default = "". REQUIRED. -->
<columnNameQuotes><columnNameQuotes> <!-- OPTIONAL. Options:
" (the default), ', \[nothing\]. -->
<orderBy>...</orderBy> <!-- A comma-separated list of
sourceNames to be used in an ORDER BY clause at the end of the
every query sent to the database (unless the user's request
includes an &orderBy() filter, in which case the user's
orderBy is used). The order of the sourceNames is important.
The leftmost (first) sourceName is most important; subsequent
sourceNames are only used to break ties. Only relevant
sourceNames are included in the ORDER BY clause for a given user
request. If this is not specified, the order of the returned
values is not specified. Default = "". OPTIONAL. -->
<sourceCanOrderBy>no(default)|partial|yes</sourceCanOrderBy>
<!-- 0 or 1 -->
<sourceCanDoDistinct>no(default)|partial|yes</sourceCanDoDistinct>
<!-- 0 or 1 -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include a <dataType> tag.
See Database DataTypes.
For database date and timestamp columns, set dataType=double and
units=seconds since 1970-01-01T00:00:00Z -->
</dataset>
Πίνακας EDD από EDDGrid
**Πίνακας EDD από EDDGrid ** σας επιτρέπει να δημιουργήσετε ένα σύνολο δεδομένων EDDTable από οποιοδήποτε EDDGrid Σύστημα δεδομένων.
- Ορισμένοι κοινοί λόγοι γι' αυτό είναι:
- Αυτό επιτρέπει την αναζήτηση του συνόλου δεδομένων OPeNDAP περιορισμοί επιλογής, το οποίο είναι ένας τύπος "κερί ανά αξία" (που μπορεί να ζήτησε ένας χρήστης) .
- Το σύνολο δεδομένων είναι εγγενώς ένα σύνολο δεδομένων πίνακα.
- Η τιμή του παγκόσμιου χαρακτηριστικού "maxAxis0" (συνήθως τύπου="int") , (η προεπιλογή είναι 10) θα χρησιμοποιηθεί για τον περιορισμό του αριθμού του άξονα \[ 0 \] (συνήθως "time" άξονας) τιμές του κλειστού EDDGrid σύνολο δεδομένων που μπορεί να έχει πρόσβαση ανά αίτημα για δεδομένα. Αν δεν θέλετε να υπάρχει κάποιο όριο, προσδιορίστε μια τιμή του 0. Αυτή η ρύθμιση είναι σημαντική γιατί, διαφορετικά, θα ήταν πολύ εύκολο για έναν χρήστη να ζητήσει EDDTableFrom EDDGrid Για να δούμε όλα τα δεδομένα του συνόλου δεδομένων. Αυτό θα πάρει πολύ χρόνο και σχεδόν σίγουρα θα αποτύχει με ένα σφάλμα χρονικού ορίου. Αυτή είναι η ρύθμιση που καθιστά ασφαλές να έχετε EDDTableFrom EDDGrid σύνολα δεδομένων σας ERDDAP χωρίς φόβο ότι θα οδηγήσουν σε μια παράλογη χρήση των υπολογιστικών πόρων.
- Εάν το εσώκλειστο EDDGrid λέ EDDGrid Από τοErddap και του ERDDAP™ είναι το ίδιο ERDDAP , τότε EDDTableFrom EDDGrid θα χρησιμοποιεί πάντα την τρέχουσα διαθέσιμη έκδοση του συνόλου δεδομένων αναφοράς άμεσα. Αυτός είναι ένας πολύ αποτελεσματικός τρόπος για EDDTableFrom EDDGrid για πρόσβαση στα δεδομένα του δικτύου.
- Αυτή η τάξη είναι...<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) Αυτό μετράει. Το εσώκλειστο EDDGrid Σ<reloadEveryNminutes> αγνοείται.
- Εάν μια τιμή για [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) παρέχεται για αυτό το σύνολο δεδομένων, αγνοείται. Το εσώκλειστο EDDGrid Σ<ενημέρωσηEveryNMillis> είναι αυτό που έχει σημασία.
- Δημιουργία συνόλων δεδομένωνXml έχει μια επιλογή για τον τύπο συνόλου δεδομένων=EDDTableFrom EDDGrid που ζητά το URL ενός ERDDAP (συνήθως το ίδιο ERDDAP ) (τέλος σε "/μερίδιο/") και μια κανονική έκφραση. Δημιουργία συνόλων δεδομένων Το Xml θα δημιουργήσει στη συνέχεια το XML για ένα EDDTableFrom EDDGrid σύνολο δεδομένων για κάθε σύνολο δεδομένων με πλέγμα στο ERDDAP™ η οποία έχει datasetID που ταιριάζει με την κανονική έκφραση (χρήση . * για να ταιριάζει με όλα datasetID s για πλέγματα σύνολα δεδομένων) .
Το κομμάτι XML που παράγεται από το GenerateDatasetsXml για κάθε σύνολο δεδομένων περιλαμβάνει:
- Α datasetID η οποία είναι η EDDGrid Σ datasetID Συν "\_AsATable".
- Ένα νέο συνοπτικό παγκόσμιο χαρακτηριστικό που είναι το EDDGrid Περίληψη συν μια νέα πρώτη παράγραφο που περιγράφει τι είναι αυτό το σύνολο δεδομένων.
- Ένα νέο παγκόσμιο χαρακτηριστικό τίτλου που είναι το EDDGrid τίτλος συν ", (Ως πίνακας) ".
- Ένα νέο maxAxis0 παγκόσμιο χαρακτηριστικό με τιμή 10.
Πίνακας EDD από EDDGrid σκελετός XML
<dataset type="EDDTableFromEDDGrid" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDTableFromEDDGrid, this calls lowUpdate() of the underlying
EDDGrid. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1
Any type of EDDGrid dataset. You can even use an
EDDGridFromERDDAP™ to access an independent EDDGrid dataset on
this server. -->
</dataset>
Πίνακας EDD από αρχείοNames
Πίνακας EDD από αρχείοNames δημιουργεί ένα σύνολο δεδομένων από πληροφορίες σχετικά με μια ομάδα αρχείων στο σύστημα αρχείων του διακομιστή, συμπεριλαμβανομένου ενός URL για κάθε αρχείο, έτσι ώστε οι χρήστες να μπορούν να κατεβάσουν τα αρχεία μέσω ERDDAP Σ "files" σύστημα . Σε αντίθεση με όλα τα Πίνακας EDD από αρχεία υποκλάσεις, αυτός ο τύπος συνόλου δεδομένων δεν εξυπηρετεί δεδομένα από τα αρχεία.
- Ο πίνακας EDDFromFileNames είναι χρήσιμος όταν:
- Έχετε μια ομάδα αρχείων που θέλετε να διανείμετε ως ολόκληρα αρχεία επειδή δεν περιέχουν "δεδομένα" με τον ίδιο τρόπο που τα κανονικά αρχεία δεδομένων έχουν δεδομένα. Για παράδειγμα, αρχεία εικόνας, αρχεία βίντεο, έγγραφα Word, αρχεία υπολογιστικών φύλλων Excel, αρχεία παρουσίασης PowerPoint, ή αρχεία κειμένου με μη δομημένο κείμενο.
- Έχετε μια ομάδα αρχείων που έχουν δεδομένα σε μορφή που ERDDAP™ Δεν μπορώ να διαβάσω ακόμα. Για παράδειγμα, μια ειδική, προσαρμοσμένη, δυαδική μορφή έργου.
Πίνακας EDD από αρχείοNames data
- Τα δεδομένα σε έναν πίνακα EDDFromFileNames dataset είναι ένα τραπέζι που ERDDAP™ δημιουργεί on-the-fly με πληροφορίες για μια ομάδα τοπικών αρχείων. Στον πίνακα, υπάρχει σειρά για κάθε αρχείο. Τέσσερα ειδικά χαρακτηριστικά datasets.xml για αυτό το σύνολο δεδομένων καθορίζει ποια αρχεία θα συμπεριληφθούν σε αυτό το σύνολο δεδομένων:
αρχείο Dir
- <αρχείοDir> -- Αυτό καθορίζει τον πηγαίο κατάλογο στο σύστημα αρχείων του διακομιστή με τα αρχεία για αυτό το σύνολο δεδομένων. Τα αρχεία που βρίσκονται πραγματικά στο σύστημα αρχείων του διακομιστή στο<αρχείοDir> θα εμφανιστεί στη στήλη url αυτού του συνόλου δεδομένων μέσα σε έναν εικονικό κατάλογο που ονομάζεταιhttps://serverUrl/erddap/files/datasetID/. Για παράδειγμα, αν datasetID είναι jplMU RSS Τ, και του<αρχείοDir> είναι /home/data/mur/ , και αυτός ο κατάλογος έχει ένα αρχείο που ονομάζεται jplMU RSS T201501003000000.png, τότε το URL που θα εμφανιστεί στους χρήστες για αυτό το αρχείο θα είναι https://serverUrl/erddap/jplMURSST/jplMURSST20150103000000.png.
Εκτός από τη χρήση ενός τοπικού καταλόγου για το<αρχείοDir>, μπορείτε επίσης να καθορίσετε το URL μιας απομακρυσμένης, όπως καταλόγους ιστοσελίδας. Αυτό λειτουργεί με:
- Μη συγκεντρωτικά σύνολα δεδομένων σε ΤΡΙΤΕΣ, π.χ. https://data.nodc.noaa.gov/thredds/catalog/aquarius/nodc\\_binned\\_V3.0/monthly/ \[ 2020-10-21 Αυτός ο εξυπηρετητής δεν είναι πλέον αξιόπιστος. \]
- Μη συγκεντρωτικά σύνολα δεδομένων Hyrax , π.χ., https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/
- Οι περισσότερες λίστες καταλόγων που μοιάζουν με τους Απάτσι, π.χ. https://www1.ncdc.noaa.gov/pub/data/cmb/ersst/v5/netcdf/
απόOnTheFly
\\\*από το OnTheFly -- Για μερικούς τεράστιους κουβάδες S3 (Όπως το Noaa-goes17, το οποίο έχει 26 εκατομμύρια αρχεία) , μπορεί να χρειαστεί ERDDAP™ μέχρι 12 ώρες για να κατεβάσετε όλες τις πληροφορίες σχετικά με το περιεχόμενο του κουβά (και στη συνέχεια υπάρχουν και άλλα προβλήματα) . Για να πάρει γύρω από αυτό, υπάρχει ένας ειδικός τρόπος για να χρησιμοποιήσετε<fileDir> στο EDDTableFromFileNames για να κάνετε ένα σύνολο δεδομένων με τον κατάλογο και τα ονόματα αρχείων από έναν κουβά AWS S3. Το σύνολο δεδομένων δεν θα έχει τη λίστα όλων των καταλόγων του κάδου S3 και τα ονόματα αρχείων που ένας χρήστης μπορεί να αναζητήσει μέσω αιτημάτων στο σύνολο δεδομένων. Αλλά το σύνολο δεδομένων θα πάρει τα ονόματα των καταλόγων και αρχείων on-the-fly αν ο χρήστης διασχίζει την ιεραρχία καταλόγου με το σύνολο δεδομένων του "files" Επιλογή. Έτσι, αυτό επιτρέπει στους χρήστες να περιηγηθούν στην ιεραρχία αρχείων και αρχείων του κουβά S3 μέσω του συνόλου δεδομένων "files" σύστημα. Για να το κάνετε αυτό, αντί να καθορίσετε το URL για τον κουβά S3 ως τον κατάλογο "Εκκίνηση" (στη δημιουργία συνόλων δεδομένων Xml) ή<αρχείοDir> (μέσα datasets.xml ) , χρήση:
\\*\\*\\*fromOnTheFly,*theS3BucketUrl*
για παράδειγμα:
\\*\\*\\*fromOnTheFly,https://noaa-goes17.s3.us-east-1.amazonaws.com/
Βλέπε την τεκμηρίωση για συνεργασία με S3 Buckets in ERDDAP™ , ιδίως την περιγραφή της ειδικής μορφής που πρέπει να χρησιμοποιείται για το URL του κάδου S3. Και δες. αυτές τις λεπτομέρειες και ένα παράδειγμα χρήση\\\Από το OnTheFly.
αναδρομικό
- <αναδρομική> -- Αρχεία σε υποκαταλόγους<αρχείοDir> με ονόματα που ταιριάζουν<αρχείοRegex> θα εμφανιστεί στους ίδιους υποκαταλόγους στο "files" URL αν<recursive> έχει οριστεί σε αλήθεια. Η προεπιλογή είναι ψευδής.
- [<διαδρομήRegex>] (#παθρεγκέξ) -- Αν αναδρομικό=αληθινό, μόνο ονόματα καταλόγου που ταιριάζουν με την διαδρομήRegex (Προκαθορισμένο=".\*") θα γίνει δεκτή. Αν αναδρομική=ψευδής, αυτό αγνοείται. Αυτό σπάνια χρησιμοποιείται, αλλά μπορεί να είναι πολύ χρήσιμο σε ασυνήθιστες συνθήκες. (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
αρχείοRegex
- <αρχείοRegex> -- Μόνο τα ονόματα αρχείων όπου ολόκληρο το όνομα αρχείου (μη συμπερίληψη του ονόματος καταλόγου) ται με το<Το αρχείο Regex> θα συμπεριληφθεί σε αυτό το σύνολο δεδομένων. Για παράδειγμα, jplMU RSS Τ. {14}\.πνγκ. (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
Περιεχόμενα πίνακα δεδομένων ονομάτων αρχείων
Στον πίνακα θα υπάρχουν στήλες με:
-
Ούρ... Το URL που οι χρήστες μπορούν να χρησιμοποιήσουν για να κατεβάσουν το αρχείο μέσω ERDDAP Σ "files" σύστημα .
-
όνομα -- Το όνομα του αρχείου (χωρίς όνομα καταλόγου) .
-
τελευταίαΣυγχρονισμένη-- Την ώρα που το αρχείο τροποποιήθηκε τελευταία φορά (αποθηκεύονται ως διπλάσια με "seconds since 1970-01-01T00:00:00Z" ) . Αυτή η μεταβλητή είναι χρήσιμη επειδή οι χρήστες μπορούν να δουν αν/πότε τα περιεχόμενα ενός δεδομένου αρχείου άλλαξαν τελευταία φορά. Αυτή η μεταβλητή είναι χρόνος Μεταβλητή σφραγίδας , οπότε τα δεδομένα μπορεί να εμφανίζονται ως αριθμητικές τιμές (δευτερόλεπτα από το 1970-01-01T00:00:00Z) ή τιμή συμβολοσειράς (ISO 8601:2004 (E) μορφή) , ανάλογα με την κατάσταση.
-
μέγεθος -- Το μέγεθος του αρχείου σε bytes, αποθηκευμένο ως διπλό. Αποθηκεύονται ως διπλά γιατί κάποια αρχεία μπορεί να είναι μεγαλύτερα από τα int που επιτρέπουν και τα longs δεν υποστηρίζονται σε ορισμένους τύπους αρχείων απόκρισης. Τα διπλά θα δώσουν το ακριβές μέγεθος, ακόμα και για πολύ μεγάλα αρχεία.
-
στήλες προσθέτων που ορίζονται από το ERDDAP™ διαχειριστής με πληροφορίες που εξάγονται από το όνομα αρχείου (για παράδειγμα, ο χρόνος που συνδέεται με τα δεδομένα στο αρχείο) με βάση δύο χαρακτηριστικά που ορίζετε στα μεταδεδομένα για κάθε πρόσθετη στήλη/ dataVariable :
- εκχύλισμαRegex -- Αυτό είναι ένα κανονική έκφραση ( φροντιστήριο ) . Ολόκληρη η regex πρέπει να ταιριάζει με ολόκληρο το όνομα αρχείου (μη συμπερίληψη του ονόματος καταλόγου) . Η regex πρέπει να περιλαμβάνει τουλάχιστον μία ομάδα σύλληψης (ένα τμήμα κανονικής έκφρασης που περικλείεται από παρένθεση) το οποίο ERDDAP™ χρησιμοποιεί για να καθορίσει ποιο τμήμα του ονόματος αρχείου για να εξάγει για να γίνει δεδομένα.
- εκχύλισμα Ομάδα - Αυτός είναι ο αριθμός της ομάδας σύλληψης (#1 είναι η πρώτη ομάδα σύλληψης) στην κανονική έκφραση. Η προεπιλογή είναι 1. Μια ομάδα σύλληψης είναι ένα τμήμα μιας κανονικής έκφρασης που περικλείεται από παρένθεση.
Ακολουθούν δύο παραδείγματα:
<dataVariable>
<sourceName>time</sourceName>
<destinationName>time</destinationName>
<dataType>String</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST(.{14})\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="units">yyyyMMddHHmmss</att>
</addAttributes>
</dataVariable>
<dataVariable>
<sourceName>day</sourceName>
<destinationName>day</destinationName>
<dataType>int</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST.{6}(..).{6}\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="ioos\\_category">Time</att>
</addAttributes>
</dataVariable>
Στην περίπτωση της μεταβλητής ώρας, εάν ένα αρχείο έχει το όνομα jplMU RSS T2015010300000.png, το απόσπασμαRegex θα ταιριάζει με το όνομα αρχείου, εξαγωγή των χαρακτήρων που ταιριάζουν με την πρώτη ομάδα σύλληψης ("201501003000000") Ως dataType= Στρινγκ, τότε χρησιμοποιήστε το μονάδες κατάλληλες για χρόνους συμβολοσειράς για την ανάλυση των συμβολοσειρών σε τιμές δεδομένων χρόνου (2015-01-03T00:00:00Z) .
Στην περίπτωση της μεταβλητής ημέρας, εάν ένα αρχείο έχει το όνομα jplMU RSS T2015010300000.png, το απόσπασμαRegex θα ταιριάζει με το όνομα αρχείου, εξαγωγή των χαρακτήρων που ταιριάζουν με την πρώτη ομάδα σύλληψης ("03") ως [<Τύπος δεδομένων>] (#Τύπος δεδομένων) \=int, με τιμή δεδομένων 3.
Λοιπές πληροφορίες
- Όχι [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) -- Αυτός ο τύπος συνόλου δεδομένων δεν χρειάζεται και δεν μπορεί να χρησιμοποιήσει το<updateEveryNMillis> tag γιατί οι πληροφορίες που εξυπηρετούνται από το EDDTableFromFileNames είναι πάντα απόλυτα ενημερωμένες επειδή ERDDAP™ διερωτάται το σύστημα αρχείων προκειμένου να ανταποκριθεί σε κάθε αίτημα για δεδομένα. Ακόμη και αν υπάρχει ένας τεράστιος αριθμός αρχείων, αυτή η προσέγγιση θα πρέπει να λειτουργήσει αρκετά καλά. Μια απάντηση μπορεί να είναι αργή αν υπάρχει ένας τεράστιος αριθμός αρχείων και το σύνολο δεδομένων δεν έχει queried για ένα χρονικό διάστημα. Αλλά για αρκετά λεπτά μετά από αυτό, το λειτουργικό σύστημα κρατά τις πληροφορίες σε μια κρύπτη, έτσι οι απαντήσεις θα πρέπει να είναι πολύ γρήγορη.
- Μπορείτε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει το datasets.xml κομμάτι για αυτό το είδος συνόλου δεδομένων. Μπορείτε να προσθέσετε/καθορίσετε πρόσθετες στήλες με πληροφορίες που εξάγονται από το όνομα αρχείου, όπως φαίνεται παραπάνω.
EDDTableFromFileNames σκελετός XML
<dataset type="EDDTableFromFileNames" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<fileDir>...</fileDir>
<recursive>...</recursive> <!-- true or false (the default) -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\*") will be accepted. -->
<fileNameRegex>...</fileNameRegex>
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include <dataType> tag. -->
</dataset>
Πίνακας EDD από αρχεία
Πίνακας EDD από αρχεία είναι η σούπερ τάξη όλων των τάξεων EDDTableFrom...Files. Δεν μπορείτε να χρησιμοποιήσετε το EDDTableFromFiles απευθείας. Αντ 'αυτού, χρησιμοποιήστε μια υποκατηγορία του EDDTableFromFiles για να χειριστείτε τον συγκεκριμένο τύπο αρχείου:
- Πίνακας EDD από αρχεία Ascii αθροίζει τα δεδομένα από τα αρχεία δεδομένων ASCII που έχουν χωριστεί από κόμμα, καρτέλα, ημικολόν ή χώρο.
- Πίνακας EDD από αρχεία Audio συγκεντρωτικά δεδομένα από μια ομάδα τοπικών αρχείων ήχου.
- Πίνακας EDD από AwsXmlΑρχεία συγκεντρωτικά δεδομένα από ένα σύνολο Αυτόματων Μετεωρολογικών Σταθμών (AWS) Αρχεία XML.
- Πίνακας EDD από αρχεία ColumnarAscii συγκεντρωτικά δεδομένα από αρχεία δεδομένων ASCII πίνακα με στήλες δεδομένων σταθερού πλάτους.
- Πίνακας EDD από Hyrax Αρχεία (ΙΔΙΑΙΤΕΡΟ) συγκεντρωτικά δεδομένα με διάφορες μεταβλητές, το καθένα με κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) , και εξυπηρετείται από ένα Hyrax OPeNDAP εξυπηρετητής .
- Πίνακας EDD από αρχεία InvalidCRA συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία που χρησιμοποιούν μια συγκεκριμένη, άκυρη, παραλλαγή του CF DSG Contigoul Ragged Array (ΟΜΑΔΑ) αρχεία. Αν και ERDDAP™ υποστηρίζει αυτόν τον τύπο αρχείου, είναι ένας μη έγκυρος τύπος αρχείου που κανείς δεν πρέπει να αρχίσει να χρησιμοποιεί. Ομάδες που χρησιμοποιούν αυτόν τον τύπο αρχείου ενθαρρύνονται έντονα να χρησιμοποιούν ERDDAP™ να δημιουργήσει έγκυρα αρχεία CF DSG CRA και να σταματήσει τη χρήση αυτών των αρχείων.
- Πίνακας EDD από αρχεία JsonlCSV συγκεντρωτικά δεδομένα από JSON Γραμμές αρχείων CSV .
- Πίνακας EDD από αρχεία MultidimNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία με διάφορες μεταβλητές, το καθένα με κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) .
- Πίνακας EDD από αρχείαNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία με διάφορες μεταβλητές, το καθένα με κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) . Είναι καλό να συνεχίσετε να χρησιμοποιείτε αυτόν τον τύπο συνόλου δεδομένων για τα υπάρχοντα σύνολα δεδομένων, αλλά για τα νέα σύνολα δεδομένων συνιστούμε τη χρήση του EDDTableFromMultidimNcFiles αντί.
- Πίνακας EDDFromNcCFΑρχεία συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία που χρησιμοποιούν μία από τις μορφές αρχείων που καθορίζονται από την ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Συμβάσεις. Αλλά για αρχεία που χρησιμοποιούν μια από τις πολυδιάστατες παραλλαγές CF DSG, χρήση Πίνακας EDD από αρχεία MultidimNc Αντ' αυτού.
- Πίνακας EDDFromNccsvFiles συγκεντρωτικά δεδομένα από NCCSV Αρχεία ASCII .csv.
- Πίνακας EDDFromParquetFiles χειρίζεται τα δεδομένα από Παρκέ .
- Πίνακας EDD από τα αρχεία Thredds (ΙΔΙΑΙΤΕΡΟ) συγκεντρωτικά δεδομένα από αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις εξυπηρετούνται από ένα ΤΡΙΤΕΣ OPeNDAP εξυπηρετητής .
- Πίνακας EDD από WFS Αρχεία (ΙΔΙΑΙΤΕΡΟ) κάνει ένα τοπικό αντίγραφο όλων των δεδομένων από ένα ArcGIS Εξυπηρετητής χαρτών WFS διακομιστής έτσι ώστε τα δεδομένα να μπορούν στη συνέχεια να διατηρούνται γρήγορα ERDDAP™ χρήστες.
Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι αρχείων. Αλλά είναι συνήθως σχετικά εύκολο να προσθέσετε υποστήριξη για άλλους τύπους αρχείων. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα. Ή, αν τα δεδομένα σας είναι σε μια παλιά μορφή αρχείου από την οποία θα θέλατε να απομακρυνθείτε, συνιστούμε τη μετατροπή των αρχείων να είναι NetCDF v3 .nc αρχεία (και ιδιαίτερα .nc αρχεία με το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Παράπλευρη δομή δεδομένων Ragled Array -- ERDDAP™ μπορεί να αποσπάσει δεδομένα από αυτά πολύ γρήγορα) . NetCDF είναι μια ευρέως υποστηριζόμενη, δυαδική μορφή, επιτρέπει γρήγορη τυχαία πρόσβαση στα δεδομένα, και υποστηρίζεται ήδη από ERDDAP .
Λεπτομέρειες από αρχεία
Οι ακόλουθες πληροφορίες ισχύουν για όλες τις υποκατηγορίες του EDDTableFromFiles.
Συγκέντρωση
Αυτή η κατηγορία συγκεντρώνει δεδομένα από τοπικά αρχεία. Κάθε αρχείο περιέχει ένα (σχετικά) μικρός πίνακας δεδομένων.
- Το σύνολο δεδομένων που προκύπτει εμφανίζεται σαν να είχαν συνδυαστεί όλοι οι πίνακες του αρχείου (όλες οι σειρές δεδομένων από το αρχείο #1, συν όλες τις σειρές από το αρχείο #2, ...) .
- Τα αρχεία δεν χρειάζεται να έχουν όλες τις καθορισμένες μεταβλητές. Εάν ένα δεδομένο αρχείο δεν έχει καθορισμένη μεταβλητή, ERDDAP™ θα προσθέσει τις τιμές που λείπουν, όπως απαιτείται.
- Οι μεταβλητές σε όλα τα αρχεία ΠΡΕΠΕΙ να έχουν τις ίδιες τιμές για το add\_offset , missing\_value , \_Γέμισε Τιμή , scale\_factor , και μονάδες Χαρακτηριστικά (εάν υπάρχουν) . ERDDAP™ έλεγχοι, αλλά είναι μια ατελής δοκιμή -- αν υπάρχουν διαφορετικές τιμές, ERDDAP δεν ξέρει ποιο είναι σωστό και επομένως ποια αρχεία είναι άκυρα. Εάν αυτό είναι ένα πρόβλημα, μπορεί να είστε σε θέση να χρησιμοποιήσετε NcML ή NCO για να διορθώσω το πρόβλημα.
Συμπιεσμένα αρχεία
Τα αρχεία δεδομένων πηγής για όλες τις υποκλάσεις EDDTableFromFiles μπορούν να συμπιεστούν εξωτερικά (π.χ., .tgz , .tar .gz , .tar .gzip , .gz , .gzip , .zip , .bz2 , ή .Z) . Δείτε το Εξωτερική τεκμηρίωση Συμπιεσμένων αρχείων .
Cached πληροφορίες αρχείου
- Όταν ένα σύνολο δεδομένων EDDTableFromFiles φορτώνεται για πρώτη φορά, το EDDTableFromFiles διαβάζει πληροφορίες από όλα τα σχετικά αρχεία και δημιουργεί πίνακες (μία σειρά για κάθε αρχείο) με πληροφορίες για κάθε έγκυρο αρχείο και κάθε "κακό" (διαφορετικό ή μη έγκυρο) Αρχείο.
- Οι πίνακες αποθηκεύονται επίσης στο δίσκο, όπως NetCDF v3 .nc αρχεία σε bigParentΚατάλογος / σύνολο δεδομένων/ τελευταίο2CharsOfDatasetID / * datasetID * / σε αρχεία που ονομάζονται: dirTable .nc (που περιέχει μια λίστα με μοναδικά ονόματα καταλόγου) , αρχείο Πίνακας .nc (που περιέχει τον πίνακα με τις πληροφορίες κάθε έγκυρου αρχείου) , κακόΑρχεία .nc (που κρατά τον πίνακα με τις πληροφορίες κάθε κακού αρχείου) .
- Για να επιταχύνετε την πρόσβαση σε ένα σύνολο δεδομένων EDDTableFromFiles (αλλά εις βάρος της χρήσης περισσότερης μνήμης) , μπορείτε να χρησιμοποιήσετε
[<Πίνακας αρχείωνInMemory> true</fileTableInMemory>] (#filetableinmemory)
για να πω ERDDAP™ να κρατήσει ένα αντίγραφο των πινάκων πληροφοριών αρχείων στη μνήμη. - Το αντίγραφο των πινάκων πληροφοριών αρχείων στο δίσκο είναι επίσης χρήσιμο όταν ERDDAP™ κλείνει και επανεκκινείται: αποθηκεύει τον πίνακα EDD Από αρχεία από το να πρέπει να ξαναδιαβάσει όλα τα αρχεία δεδομένων.
- Όταν ένα σύνολο δεδομένων επαναφορτώνεται, ERDDAP™ μόνο χρειάζεται να διαβάσει τα δεδομένα σε νέα αρχεία και αρχεία που έχουν αλλάξει.
- Εάν ένα αρχείο έχει διαφορετική δομή από τα άλλα αρχεία (για παράδειγμα, ένας διαφορετικός τύπος δεδομένων για μία από τις μεταβλητές, ή μια διαφορετική τιμή για το - μονάδες " χαρακτηριστικό) , ERDDAP προσθέτει το αρχείο στη λίστα των "κακών" αρχείων. Πληροφορίες σχετικά με το πρόβλημα με το αρχείο θα γραφτεί στο bigParentΚατάλογος Αρχείο /logs/log.txt.
- Δεν χρειάζεται να διαγράψετε ή να δουλέψετε με αυτά τα αρχεία. Μια εξαίρεση είναι: αν εξακολουθείτε να κάνετε αλλαγές σε ένα σύνολο δεδομένων datasets.xml ρύθμιση, ίσως θέλετε να διαγράψετε αυτά τα αρχεία για να πιέσετε ERDDAP™ για να ξαναδιαβάσετε όλα τα αρχεία αφού τα αρχεία θα διαβαστούν/ερμηνευθούν διαφορετικά. Αν χρειαστεί ποτέ να διαγράψετε αυτά τα αρχεία, μπορείτε να το κάνετε όταν ERDDAP™ τρέχει. (Τότε βάλε ένα σημαία να επαναφορτώσει το σύνολο δεδομένων το συντομότερο δυνατόν.) Ωστόσο, ERDDAP™ συνήθως παρατηρεί ότι η datasets.xml οι πληροφορίες δεν ταιριάζουν με το αρχείο Πίνακας πληροφοριών και διαγράφει αυτόματα τους πίνακες αρχείων.
- Αν θέλετε να ενθαρρύνετε ERDDAP™ για την ενημέρωση των αποθηκευμένων πληροφοριών του συνόλου δεδομένων (για παράδειγμα, εάν μόλις προσθέσατε, αφαιρέσατε ή αλλάξατε κάποια αρχεία στον κατάλογο δεδομένων του συνόλου δεδομένων) , χρήση του σύστημα σημαίας στη βία ERDDAP™ για να ενημερώσετε τις πληροφορίες του αρχείου cached.
Αιτήματα χειρισμού
- ERDDAP™ Τα αιτήματα για δεδομένα πίνακα μπορούν να θέσουν περιορισμούς σε οποιαδήποτε μεταβλητή.
- Όταν γίνεται επεξεργασία του αιτήματος ενός πελάτη για δεδομένα, το EDDTableFromFiles μπορεί να κοιτάξει γρήγορα στον πίνακα με τις έγκυρες πληροφορίες αρχείου για να δει ποια αρχεία μπορεί να έχουν σχετικά δεδομένα. Για παράδειγμα, αν κάθε πηγαίο αρχείο έχει τα δεδομένα για μια σημαδούρα σταθερής τοποθεσίας, το EDDTableFromFiles μπορεί να καθορίσει πολύ αποτελεσματικά ποια αρχεία μπορεί να έχουν δεδομένα σε ένα δεδομένο γεωγραφικό εύρος και εύρος γεωγραφικού πλάτους.
- Επειδή ο έγκυρος πίνακας πληροφοριών αρχείων περιλαμβάνει την ελάχιστη και μέγιστη τιμή κάθε μεταβλητής για κάθε έγκυρο αρχείο, το EDDTableFromFiles μπορεί συχνά να χειριστεί άλλα ερωτήματα αρκετά αποτελεσματικά. Για παράδειγμα, αν ορισμένες από τις σημαδούρες δεν έχουν αισθητήρα πίεσης αέρα, και ένας πελάτης ζητά δεδομένα για την πίεση αέρα!=NaN, EDDTableFromFiles μπορεί να καθορίσει αποτελεσματικά ποιες σημαδούρες έχουν δεδομένα πίεσης αέρα.
Ενημέρωση των πληροφοριών αρχείου Cached
Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, οι πληροφορίες του αρχείου σε κρύπτη ενημερώνονται.
- Το σύνολο δεδομένων επαναφορτώνεται περιοδικά, όπως καθορίζεται από το<reloadEveryNMinutes> στις πληροφορίες του συνόλου δεδομένων datasets.xml .
- Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατό, όποτε αυτό είναι δυνατό. ERDDAP™ ανιχνεύει ότι έχετε προσθέσει, αφαιρεθεί, Άγγιξε (για να αλλάξετε το τελευταίο αρχείο Τροποποιημένος χρόνος) ή άλλαξε ένα αρχείο δεδομένων.
- Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατόν αν χρησιμοποιήσετε το σύστημα σημαίας .
Όταν επαναφορτίζεται το σύνολο δεδομένων, ERDDAP™ συγκρίνει τα διαθέσιμα αρχεία με τον πίνακα πληροφοριών cached αρχείων. Νέα αρχεία διαβάζονται και προστίθενται στον έγκυρο πίνακα αρχείων. Τα αρχεία που δεν υπάρχουν πλέον απορρίπτονται από τον έγκυρο πίνακα αρχείων. Τα αρχεία όπου έχει αλλάξει η χρονοσφραγίδα αρχείων διαβάζονται και οι πληροφορίες τους ενημερώνονται. Οι νέοι πίνακες αντικαθιστούν τους παλιούς πίνακες στη μνήμη και στο δίσκο.
Κακά αρχεία
Ο πίνακας των κακών αρχείων και οι λόγοι που τα αρχεία κηρύχθηκαν άσχημα (κατεστραμμένο αρχείο, ελλείπουσες μεταβλητές, λανθασμένες τιμές άξονα κ.λπ.) στέλνεται με email στο email Τα πάντα Στη διεύθυνση email (Μάλλον εσύ.) κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Θα πρέπει να αντικαταστήσετε ή να επισκευάσετε αυτά τα αρχεία το συντομότερο δυνατόν.
Αγνοούμενες μεταβλητές
Αν μερικά από τα αρχεία δεν έχουν κάποια από τα dataVariable s που ορίζονται στα σύνολα δεδομένων datasets.xml Δεν πειράζει. Όταν το EDDTableFromFiles διαβάζει ένα από αυτά τα αρχεία, θα ενεργεί σαν το αρχείο να είχε τη μεταβλητή, αλλά με όλες τις τιμές που λείπουν.
Κοντά σε δεδομένα πραγματικού χρόνου
- EDDTableFromFiles αντιμετωπίζει τις αιτήσεις για πολύ πρόσφατα δεδομένα ως ειδική περίπτωση. Το πρόβλημα: Εάν τα αρχεία που απαρτίζουν το σύνολο δεδομένων ενημερώνονται συχνά, είναι πιθανό ότι το σύνολο δεδομένων δεν θα ενημερώνεται κάθε φορά που ένα αρχείο αλλάζει. Έτσι ο πίνακας EDDFromFiles δεν θα γνωρίζει τα αλλαγμένα αρχεία. (Θα μπορούσες να χρησιμοποιήσεις το σύστημα σημαίας , αλλά αυτό μπορεί να οδηγήσει σε ERDDAP™ επαναφόρτωση του συνόλου δεδομένων σχεδόν συνεχώς. Έτσι, στις περισσότερες περιπτώσεις, δεν το προτείνουμε.) Αντ 'αυτού, EDDTableFromFiles ασχολείται με αυτό με το ακόλουθο σύστημα: Πότε ERDDAP™ λαμβάνει αίτημα για δεδομένα εντός των τελευταίων 20 ωρών (για παράδειγμα, πριν από 8 ώρες μέχρι τώρα) , ERDDAP™ θα ψάξει όλα τα αρχεία που έχουν οποιαδήποτε δεδομένα τις τελευταίες 20 ώρες. Έτσι, ERDDAP™ δεν χρειάζεται να έχει πλήρως ενημερωμένα δεδομένα για όλα τα αρχεία, προκειμένου να βρει τα τελευταία δεδομένα. Θα πρέπει ακόμα να ρυθμίσετε [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) σε εύλογα μικρή τιμή (για παράδειγμα, 60) , αλλά δεν χρειάζεται να είναι μικρό (για παράδειγμα, 3) .
-
Δεν συνιστάται οργάνωση δεδομένων σχεδόν πραγματικού χρόνου στα αρχεία: Εάν, για παράδειγμα, έχετε ένα σύνολο δεδομένων που αποθηκεύει δεδομένα για πολλούς σταθμούς (ή σημαδούρα, ή τροχιά, ...) Για πολλά χρόνια, θα μπορούσατε να κανονίσετε τα αρχεία έτσι ώστε, για παράδειγμα, υπάρχει ένα αρχείο ανά σταθμό. Αλλά μετά, κάθε φορά που έρχονται νέα δεδομένα για ένα σταθμό, πρέπει να διαβάζεις ένα μεγάλο παλιό αρχείο και να γράφεις ένα μεγάλο νέο αρχείο. Και πότε ERDDAP™ επαναφορτώνει το σύνολο δεδομένων, παρατηρεί ότι κάποια αρχεία έχουν τροποποιηθεί, οπότε διαβάζει αυτά τα αρχεία εντελώς. Αυτό είναι αναποτελεσματικό.
-
Συνιστώμενη οργάνωση δεδομένων σχεδόν πραγματικού χρόνου στα αρχεία: Αποθήκευση των δεδομένων σε κομμάτια, για παράδειγμα, όλα τα δεδομένα για ένα σταθμό / buoy / trajectory για ένα έτος (ή ένα μήνα) . Μετά, όταν έρχεται ένα νέο δεδομένο, μόνο ο φάκελος με τα φετινά (ή του μήνα) τα δεδομένα επηρεάζονται.
-
Καλύτερο: Χρήση NetCDF v3 .nc αρχεία με απεριόριστη διάσταση (χρόνος) . Στη συνέχεια, για να προσθέσετε νέα δεδομένα, μπορείτε απλά να προσαρτήσετε τα νέα δεδομένα χωρίς να χρειάζεται να διαβάσετε και να ξαναγράψετε ολόκληρο το αρχείο. Η αλλαγή γίνεται πολύ αποτελεσματικά και ουσιαστικά ατομικά, οπότε το αρχείο δεν είναι ποτέ σε ασυνεπής κατάσταση.
-
Διαφορετικά: Αν δεν / δεν μπορείτε να χρησιμοποιήσετε .nc αρχεία με απεριόριστη διάσταση (χρόνος) , στη συνέχεια, όταν χρειάζεται να προσθέσετε νέα δεδομένα, θα πρέπει να διαβάσετε και να ξαναγράψετε ολόκληρο το επηρεαζόμενο αρχείο (Ελπίζω να είναι μικρό γιατί έχει μόνο ένα χρόνο (ή του μήνα) αξία δεδομένων) . Ευτυχώς, όλα τα αρχεία για τα προηγούμενα χρόνια (ή μήνες) γιατί ο σταθμός παραμένει αμετάβλητος.
-
Και στις δύο περιπτώσεις, όταν ERDDAP™ επαναφορτώνει το σύνολο δεδομένων, τα περισσότερα αρχεία είναι αμετάβλητα· μόνο λίγα, μικρά αρχεία έχουν αλλάξει και πρέπει να διαβαστούν.
Κατάλογοι
Τα αρχεία μπορούν να είναι σε έναν κατάλογο, ή σε έναν κατάλογο και υποκαταλόγους του (αναδρομικά) . Αν υπάρχει μεγάλος αριθμός αρχείων (για παράδειγμα, >1.000) , το λειτουργικό σύστημα (και έτσι EDDTableFromFiles) θα λειτουργήσει πολύ πιο αποτελεσματικά αν αποθηκεύσετε τα αρχεία σε μια σειρά υποκαταστημάτων (μία ανά έτος, ή μία ανά μήνα για σύνολα δεδομένων με πολύ συχνά αρχεία) , έτσι ώστε να μην υπάρχει ποτέ ένας τεράστιος αριθμός αρχείων σε ένα δεδομένο κατάλογο.
Απομακρυσμένοι κατάλογοι και αιτήματα εύρους HTTP
-
Απομακρυσμένοι κατάλογοι και αιτήματα εύρους HTTP (Γνωστός και ως Byte Serving, Αιτείται εύρος Byte) -- EDDGrid Από αρχεία NcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles, και EDDTableFromNcCFFiles, μπορεί μερικές φορές να εξυπηρετήσει τα δεδομένα από .nc αρχεία σε απομακρυσμένους διακομιστές και πρόσβαση μέσω HTTP αν ο διακομιστής υποστηρίζει Υπηρεσία Byte μέσω αιτήσεων εύρους HTTP (τον μηχανισμό HTTP για χρήση byte) . Αυτό είναι δυνατό επειδή το netcdf-java (το οποίο ERDDAP™ χρήση για ανάγνωση .nc αρχεία) υποστηρίζει την ανάγνωση δεδομένων από απομακρυσμένο .nc αρχεία μέσω αιτήσεων εύρους HTTP.
Μην το κάνεις αυτό!
Αντ 'αυτού, χρησιμοποιήστε το [<σύστημα cacheFromUrl>] (#Cachefromurl Από τον ουρανό) .
λανθάνουσα μνήμη
- [ ** <cacheFromUrl> ** ] (#Cachefromurl Από τον ουρανό) - Ναι.
Όλα EDDGrid ΑπόΑρχεία και όλα τα σύνολα δεδομένων EDDTableFromFiles υποστηρίζουν ένα σύνολο ετικετών που λένε ERDDAP™ για να κατεβάσετε και να διατηρήσετε ένα αντίγραφο όλων των αρχείων ενός απομακρυσμένου συνόλου δεδομένων, ή μια κρύπτη μερικών αρχείων (κατεβάστηκε όπως απαιτείται) . Αυτό είναι ένα απίστευτα χρήσιμο χαρακτηριστικό.
-
Η<cacheFromUrl> tag σας επιτρέπει να ορίσετε ένα URL με μια λίστα αρχείων ενός απομακρυσμένου συνόλου δεδομένων από μια απομακρυσμένη λίστα αρχείων.
- Μη συγκεντρωτικά σύνολα δεδομένων σε ΤΡΙΤΕΣ, π.χ. https://data.nodc.noaa.gov/thredds/catalog/aquarius/nodc\\_binned\\_V3.0/monthly/ \[ 2020-10-21 Αυτός ο εξυπηρετητής δεν είναι πλέον αξιόπιστος. \]
- Μη συγκεντρωτικά σύνολα δεδομένων Hyrax , π.χ., https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/
- Οι περισσότερες λίστες καταλόγων που μοιάζουν με τους Απάτσι, π.χ. https://www.ncei.noaa.gov/data/global-precipitation-climatology-project-gpcp-daily/
- Κουβάδες S3, π.χ.
https://noaa-goes17.s3.us-east-1.amazonaws.com/
Ωστόσο, αυτό μπορεί να απαιτεί ένα λογαριασμό AWS και περισσότερες ρυθμίσεις. Βλέπεις; συνεργασία με S3 Buckets in ERDDAP™ . Επίσης, συνήθως δεν χρειάζεται να χρησιμοποιήσετε cache FromUrl με αρχεία σε κουβάδες S3 αν τα αρχεία είναι αρχεία ASCII (π.χ., .csv.) , επειδή ERDDAP™ μπορεί να διαβάσει αποτελεσματικά τα δεδομένα από τον κουβά απευθείας μέσω μιας ροής.
ERDDAP™ θα αντιγράψετε ή λανθάνετε αυτά τα αρχεία στο σύνολο δεδομένων<κατάλογος αρχείωνDir>. Αν χρειάζεστε υποστήριξη για έναν άλλο τύπο απομακρυσμένης λίστας αρχείων (π.χ. FTP) , παρακαλώ στείλτε email το αίτημά σας στον Chris. Ο Τζον στο Νόαγκοβ.
- Η προεπιλεγμένη τιμή<cacheFromUrl> ετικέτα είναι μηδενική. Αν δεν ορίσετε μια τιμή για το<λανθάνουσα μνήμηFromUrl> tag, το σύστημα αντιγράφων / cache δεν θα χρησιμοποιηθεί για αυτό το σύνολο δεδομένων.
- Εάν το σύνολο δεδομένων είναι<αρχείοRegex> ρύθμιση είναι κάτι άλλο από .*, ERDDAP™ θα κατεβάσετε μόνο αρχεία που ταιριάζουν με το αρχείοRegex.
- Εάν το σύνολο δεδομένων είναι<recursive> ρύθμιση είναι αλήθεια και τα απομακρυσμένα αρχεία είναι σε υποκαταλόγους, ERDDAP™ θα εξετάσουμε σε απομακρυσμένες υποκαταστάσεις που ταιριάζουν με του συνόλου δεδομένων [<διαδρομήRegex>] (#παθρεγκέξ) , να δημιουργήσει την ίδια δομή καταλόγου τοπικά, και να θέσει τα τοπικά αρχεία στους ίδιους υποκαταλόγους.
- Δημιουργία συνόλων δεδομένων Xml, αν ορίσετε ένα<τιμή cacheFromUrl>, Δημιουργία Σύνολα δεδομένων Το Xml θα δημιουργήσει το τοπικό<αρχείοDir> κατάλογος και αντίγραφο 1 απομακρυσμένο αρχείο σε αυτό. Δημιουργία συνόλων δεδομένων Το Xml θα δημιουργήσει στη συνέχεια το datasets.xml κομμάτι με βάση το αρχείο του δείγματος (καθορίζει το δείγμα Αρχείο=τίποτα) .
- Εάν η πηγή δεδομένων είναι απομακρυσμένη ERDDAP™ , χρήση EDDGrid Από τοErddap ή EDD TableFromErddap αντί για<cacheFromUrl>. Από εκεί, το τοπικό σας ERDDAP™ θα φαίνεται να έχει το σύνολο δεδομένων αλλά δεν θα χρειαστεί να αποθηκεύσετε κανένα από τα δεδομένα τοπικά. Ο μόνος λόγος για τη χρήση<cacheFromUrl> για λήψη δεδομένων από ένα απομακρυσμένο ERDDAP™ είναι όταν έχετε κάποιο άλλο λόγο γιατί θέλετε να έχετε ένα τοπικό αντίγραφο των αρχείων δεδομένων. Στην περίπτωση αυτή:
- Αυτό το σύνολο δεδομένων θα προσπαθήσει να εγγραφεί στο σύνολο δεδομένων στο απομακρυσμένο ERDDAP ώστε οι αλλαγές σε αυτό το σύνολο δεδομένων να καλέσουν τη σημαία αυτού του συνόλου δεδομένων Url, προκαλώντας αυτό το τοπικό σύνολο δεδομένων να επαναφορτώσει και να κατεβάσει τα αλλαγμένα απομακρυσμένα αρχεία. Έτσι, το τοπικό σύνολο δεδομένων θα είναι ενημερωμένο πολύ σύντομα μετά τις αλλαγές που γίνονται στο απομακρυσμένο σύνολο δεδομένων.
- Θα πρέπει να στείλετε email στον διαχειριστή του τηλεχειριστηρίου ERDDAP™ να ζητήσει την datasets.xml για το απομακρυσμένο σύνολο δεδομένων έτσι ώστε να μπορείτε να κάνετε το σύνολο δεδομένων στο τοπικό σας ERDDAP™ Μοιάζει με το σύνολο δεδομένων στο τηλεχειριστήριο ERDDAP .
- Εάν η πηγή δεδομένων είναι απομακρυσμένη ERDDAP™ , το τοπικό σύνολο δεδομένων θα προσπαθήσει να εγγραφεί στο απομακρυσμένο σύνολο δεδομένων.
- Εάν η συνδρομή επιτύχει, όποτε το απομακρυσμένο ERDDAP επαναφορτώνει και διαθέτει νέα δεδομένα, θα επικοινωνήσει με το flagURL για αυτό το σύνολο δεδομένων, προκαλώντας το να επαναφορτώσει και να κατεβάσει τα νέα ή/και αλλαγμένα αρχεία δεδομένων.
- Σε περίπτωση αποτυχίας της συνδρομής (για οποιονδήποτε λόγο) ή αν απλά θέλετε να διασφαλίσετε ότι το τοπικό σύνολο δεδομένων είναι ενημερωμένο, μπορείτε να ορίσετε ένα σημαία για το τοπικό σύνολο δεδομένων, έτσι θα επαναφορτώσει, έτσι ώστε να ελέγχει για νέα ή/και αλλαγμένα απομακρυσμένα αρχεία δεδομένων.
- Αν η πηγή δεδομένων δεν είναι τηλεχειριστήριο ERDDAP : το σύνολο δεδομένων θα ελέγχει για νέα ή/και αλλαγμένα απομακρυσμένα αρχεία κάθε φορά που επαναφορτώνει. Κανονικά, αυτό ελέγχεται από [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) . Αλλά αν ξέρετε πότε υπάρχουν νέα απομακρυσμένα αρχεία, μπορείτε να ορίσετε ένα σημαία για το τοπικό σύνολο δεδομένων, οπότε θα επαναφορτώσει και θα ελέγξει για νέα ή/και αλλαγμένα απομακρυσμένα αρχεία δεδομένων. Αν αυτό συμβαίνει συνήθως σε μια συγκεκριμένη ώρα της ημέρας (π.χ. στις 7 π.μ.) , μπορείτε να κάνετε μια δουλειά cron για να χρησιμοποιήσετε curl να επικοινωνήσει με τη σημαία Url για αυτό το σύνολο δεδομένων, έτσι θα επαναφορτώσει και να ελέγξετε για νέα ή/και τροποποιημένα απομακρυσμένα αρχεία δεδομένων.
-
Η<Η ετικέτα cheapSizeGB> καθορίζει το μέγεθος της τοπικής λανθάνουσας μνήμης. Πιθανώς χρειάζεται να το χρησιμοποιήσετε μόνο όταν δουλεύετε με συστήματα αποθήκευσης νεφών όπως Αμαζόνιος S3 που είναι ένα κοινώς χρησιμοποιούμενο σύστημα αποθήκευσης που αποτελεί μέρος του Υπηρεσίες διαδικτύου του Amazon (AWS) . Η προεπιλογή είναι -1.
- Εάν η τιμή είναι<=0 (π.χ. η προκαθορισμένη τιμή του -1) ,
ERDDAP™ θα κατεβάσετε και να διατηρήσει ένα πλήρες αντίγραφο όλων των αρχείων του απομακρυσμένου συνόλου δεδομένων στο σύνολο δεδομένων<αρχείοDir>.
- Αυτή είναι η ρύθμιση που συνιστάται όποτε είναι δυνατόν.
- Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, συγκρίνει τα ονόματα, τα μεγέθη και τους τελευταίους τροποποιημένους χρόνους των απομακρυσμένων αρχείων και των τοπικών αρχείων, και κατεβάζει τυχόν απομακρυσμένα αρχεία που είναι νέα ή έχουν αλλάξει.
- Αν ένα αρχείο που ήταν στον απομακρυσμένο εξυπηρετητή εξαφανιστεί, ERDDAP™ δεν θα διαγράψει το αντίστοιχο τοπικό αρχείο (Διαφορετικά, αν κάτι ήταν προσωρινά λάθος με τον απομακρυσμένο εξυπηρετητή, ERDDAP™ μπορεί να διαγράψει κάποια ή όλα τα τοπικά αρχεία!) .
- Με αυτή τη ρύθμιση, συνήθως θα ορίσετε<updateEveryNMillis> to -1, δεδομένου ότι το σύνολο δεδομένων γνωρίζει πότε έχει αντιγράψει νέα αρχεία δεδομένων στη θέση τους.
- Εάν η τιμή είναι >0,
ERDDAP™ θα κατεβάσετε αρχεία από το απομακρυσμένο σύνολο δεδομένων, όπως απαιτείται σε ένα τοπικό κρύπτη (στο σύνολο δεδομένων)<αρχείοDir>) με μέγεθος κατωφλίου του συγκεκριμένου αριθμού GB.
- Η κρύπτη πρέπει να είναι αρκετά μεγάλη ώστε να περιέχει τουλάχιστον αρκετά αρχεία δεδομένων.
- Γενικά, όσο μεγαλύτερη είναι η κρύπτη, τόσο το καλύτερο, γιατί το επόμενο ζητούμενο αρχείο δεδομένων θα είναι πιο πιθανό να είναι ήδη στην κρύπτη.
- Το Caching πρέπει να χρησιμοποιείται μόνο όταν ERDDAP™ εκτελείται σε έναν υπολογιστικό εξυπηρετητή cloud (π.χ., μια AWS υπολογιστική περίπτωση) και τα απομακρυσμένα αρχεία σε ένα σύστημα αποθήκευσης σύννεφο (π.χ. AWS S3) .
- Όταν ο χώρος δίσκων που χρησιμοποιείται από τα τοπικά αρχεία υπερβαίνει την λανθάνουσα μνήμη Μέγεθος GB, ERDDAP™ Θα το κάνω σύντομα. (Ίσως όχι αμέσως.) διαγραφή κάποιων από τα αποθηκευμένα αρχεία (Αυτή τη στιγμή, με βάση το λιγότερο πρόσφατα χρησιμοποιηθεί (LRU) αλγόριθμος) μέχρι ο χώρος του δίσκου που χρησιμοποιείται από τα τοπικά αρχεία είναι<0.75\ * cacheSizeGB (ο στόχος"") . Ναι, υπάρχουν περιπτώσεις όπου η LRU εκτελεί πολύ άσχημα -- δεν υπάρχει τέλειος αλγόριθμος.
- ERDDAP™ δεν θα προσπαθήσει ποτέ να διαγράψει ένα αποθηκευμένο αρχείο που ERDDAP™ άρχισε να χρησιμοποιείται τα τελευταία 10 δευτερόλεπτα. Αυτό είναι ένα ατελές σύστημα για να ασχοληθεί με το σύστημα cache και το σύστημα ανάγνωσης αρχείων δεδομένων είναι μόνο χαλαρά ενσωματωμένο. Εξαιτίας αυτού του κανόνα, ERDDAP™ μπορεί να μην είναι σε θέση να διαγράψετε αρκετά αρχεία για να επιτευχθεί ο στόχος του, στην οποία περίπτωση θα εκτυπώσει μια ΠΡΟΕΙΔΟΠΟΙΗΣΗ στο αρχείο log.txt, και το σύστημα θα χάσει πολύ χρόνο προσπαθώντας να κλαδέψει το cache, και είναι πιθανό ότι το μέγεθος των αρχείων στην cache μπορεί να υπερβαίνει σημαντικά την cacheSizeGB. Αν συμβεί ποτέ αυτό, χρησιμοποιήστε μια μεγαλύτερη ρύθμιση cacheSizeGB για το σύνολο δεδομένων.
- Αυτή τη στιγμή, ERDDAP™ ποτέ δεν ελέγχει αν ο απομακρυσμένος εξυπηρετητής έχει μια νεότερη έκδοση ενός αρχείου που βρίσκεται στην τοπική κρύπτη. Εάν χρειάζεστε αυτό το χαρακτηριστικό, παρακαλούμε να στείλετε email Chris. Ο Τζον στο Νόαγκοβ.
- Αν και η χρήση των ίδιων ονομάτων ετικέτα μπορεί να σημαίνει ότι το σύστημα αντιγραφής και το σύστημα cache χρησιμοποιούν το ίδιο υποκείμενο σύστημα, αυτό δεν είναι σωστό.
- Το σύστημα αντιγράφων εκκινεί προνοητικά εργασίεςThread για να κατεβάσετε νέα και τροποποιημένα αρχεία κάθε φορά που το σύνολο δεδομένων επαναφορτώνεται. Μόνο αρχεία που έχουν πράγματι αντιγραφεί στον τοπικό κατάλογο είναι διαθέσιμα μέσω του ERDDAP™ Σύστημα δεδομένων.
- Το σύστημα cache παίρνει την απομακρυσμένη λίστα αρχείων κάθε φορά που το σύνολο δεδομένων επαναφορτώνεται και προσποιείται ότι όλα αυτά τα αρχεία είναι διαθέσιμα μέσω του ERDDAP™ Σύστημα δεδομένων. Είναι ενδιαφέρον ότι όλα τα απομακρυσμένα αρχεία εμφανίζονται ακόμα και στις σελίδες /files/ web του συνόλου δεδομένων και είναι διαθέσιμα για λήψη (αν και ίσως μόνο μετά από μια καθυστέρηση ενώ το αρχείο μεταφορτώνεται για πρώτη φορά από τον απομακρυσμένο εξυπηρετητή στην τοπική cache.)
- Dataset που χρησιμοποιούν cacheSizeGB μπορεί να επωφεληθεί από τη χρήση ενός nThreads ρύθμιση μεγαλύτερη από 1, επειδή αυτό θα επιτρέψει στο σύνολο δεδομένων να κατεβάσει περισσότερα από 1 απομακρυσμένο αρχείο κάθε φορά.
- Εάν η τιμή είναι<=0 (π.χ. η προκαθορισμένη τιμή του -1) ,
ERDDAP™ θα κατεβάσετε και να διατηρήσει ένα πλήρες αντίγραφο όλων των αρχείων του απομακρυσμένου συνόλου δεδομένων στο σύνολο δεδομένων<αρχείοDir>.
-
Η<cachePartialPathRegex> tag είναι μια σπάνια χρησιμοποιούμενη ετικέτα που μπορεί να καθορίσει μια εναλλακτική λύση για το σύνολο δεδομένων του [<διαδρομήRegex>] (#παθρεγκέξ) . Η προεπιλογή είναι μηδενική.
- Χρησιμοποιήστε αυτό μόνο αν αντιγράφετε ολόκληρο το σύνολο δεδομένων μέσω του προκαθορισμένου<λανθάνουσα τιμή GB> - 1. Με<cheapSizeGB> τιμές του >1, αυτό θα αγνοηθεί επειδή είναι μη-αισθησιακό.
- Βλ. [την τεκμηρίωση<διαδρομήRegex>] (#παθρεγκέξ) για καθοδήγηση σχετικά με τον τρόπο κατασκευής του regex.
- Εάν αυτό καθορίζεται, θα χρησιμοποιείται κάθε φορά που το σύνολο δεδομένων επαναφορτίζεται, εκτός από την πρώτη φορά που ένα σύνολο δεδομένων επαναφορτώνεται στην αρχή ενός μήνα.
- Αυτό είναι χρήσιμο όταν το απομακρυσμένο σύνολο δεδομένων αποθηκεύεται σε έναν λαβύρινθο υποκαταστημάτων και όταν η συντριπτική πλειοψηφία αυτών των αρχείων σπάνια, αν ποτέ, αλλάζει. (<βήχας> NASA<βήχας>) Θα μπορούσατε, για παράδειγμα, να ορίσετε ένα<cachePartialPathRegex> που ταιριάζει με το τρέχον έτος ή τον τρέχοντα μήνα. Αυτές οι regexes είναι πολύ δύσκολο να προσδιοριστεί, επειδή όλα τα ονόματα μερική και πλήρη διαδρομή πρέπει να ταιριάζει με το<cachePartialPathRegex> και επειδή το<cachePartialPathRegex> πρέπει να συνεργαστεί με τις απομακρυσμένες διευθύνσεις URL και τους τοπικούς καταλόγους. Ένα πραγματικό παράδειγμα ζωής είναι:
-
<cacheFromUrl>https://data.nodc.noaa.gov/ghrsst/GDS2/L4/GLOB/JPL/MUR/v4.1/</cacheFromUrl>
\\>!-- \\[2020-10-21 This server is no longer reliably available.\\] For most types of remote directories, omit the filename (e.g., contents.html for Hyrax). -->
<fileDir>/u00/satellite/MUR41/</fileDir>
<fileNameRegex>\\*\\.nc</fileNameRegex>
<recursive>true</recursive>
<pathRegex>.\\*</pathRegex>
<cachePartialPathRegex>.\\*/v4\\.1/(|2018/(|01./))</cachePartialPathRegex>
Το δείγμα URL παραπάνω έχει αρχεία σε υποκαταλόγους με βάση το έτος (επιμ., 2018) και ημέρα του έτους (π.χ. 001, 002, ..., 365 ή 366) . Σημείωση:<cachePartialPathRegex> αρχίζει με \*, στη συνέχεια έχει ένα συγκεκριμένο υποκατάλογο που είναι κοινό στις απομακρυσμένες διευθύνσεις URL και τους τοπικούς καταλόγους, π.χ., /v4\.1/ τότε έχει μια σειρά από φωλιές ομάδες σύλληψης όπου η πρώτη επιλογή δεν είναι τίποτα και η δεύτερη επιλογή είναι μια συγκεκριμένη τιμή.
Το παραπάνω παράδειγμα θα ταιριάζει μόνο με καταλόγους για το δεύτερο δεκαήμερο του 2018, π.χ.,
https://data.nodc.noaa.gov/ghrsst/GDS2/L4/GLOB/JPL/MUR/v4.1/2018/010/ \[ 2020-10-21 Αυτός ο εξυπηρετητής δεν είναι πλέον αξιόπιστος. \]
και ημέρα 011, 012, ..., 019.
(Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
Εάν χρειάζεστε βοήθεια δημιουργία<cachePartialPathRegex>, παρακαλώ στείλτε email στο<cacheFromUrl> στο Chris. Ο Τζον στο Νόαγκοβ.
- Μια κοινή προσέγγιση: Αν θέλετε να χρησιμοποιήσετε<cachePartialPathRegex>, μην το χρησιμοποιήσετε αρχικά, επειδή θέλετε ERDDAP™ για να κατεβάσετε όλα τα αρχεία αρχικά. Μετά ERDDAP™ έχει κατεβάσει όλα τα αρχεία, προσθέστε το στο κομμάτι του συνόλου δεδομένων του datasets.xml .
Χιλιάδες αρχεία
Αν το σύνολο δεδομένων σας έχει πολλές χιλιάδες αρχεία, ERDDAP™ μπορεί να είναι αργή να ανταποκριθεί σε αιτήματα για δεδομένα από το εν λόγω σύνολο δεδομένων. Υπάρχουν δύο ζητήματα εδώ:
- Ο αριθμός των αρχείων ανά κατάλογο. Εσωτερικά, ERDDAP™ λειτουργεί με την ίδια ταχύτητα ανεξάρτητα από το αν n αρχεία είναι σε έναν κατάλογο ή διασκορπίζονται σε διάφορους καταλόγους. Αλλά υπάρχει ένα πρόβλημα: Όσο περισσότερα αρχεία σε έναν δοσμένο κατάλογο, τόσο πιο αργό είναι το λειτουργικό σύστημα στην επιστροφή της λίστας των αρχείων στον κατάλογο (ανά αρχείο) προς ERDDAP . Ο χρόνος απόκρισης μπορεί να είναι 0 (n log n) . Είναι δύσκολο να πούμε πόσα αρχεία σε έναν κατάλογο είναι πάρα πολλά, αλλά 10.000 είναι πιθανώς πάρα πολλά. Έτσι, αν η εγκατάσταση σας παράγει πολλά αρχεία, μια σύσταση εδώ μπορεί να είναι: βάλτε τα αρχεία σε λογικά οργανωμένους υποκαταλόγους (π.χ. σταθμός ή σταθμός/έτος) .
Ένας άλλος λόγος για να χρησιμοποιήσετε subdirectories: αν ένας χρήστης θέλει να χρησιμοποιήσει ERDDAP Σ "files" σύστημα για να βρείτε το όνομα του παλαιότερου αρχείου για το σταθμό Χ, είναι πιο γρήγορο και πιο αποτελεσματικό αν τα αρχεία είναι στο σταθμό / έτος subdirectories, επειδή πολύ λιγότερες πληροφορίες πρέπει να μεταφερθούν.
- Ο συνολικός αριθμός των αρχείων.
Για σύνολα δεδομένων πίνακα, ERDDAP™ παρακολουθεί το εύρος των τιμών για κάθε μεταβλητή σε κάθε αρχείο. Όταν ένας χρήστης κάνει μια αίτηση, ERDDAP™ πρέπει να διαβάσει όλα τα δεδομένα από όλα τα αρχεία που μπορεί να έχουν δεδομένα που ταιριάζουν με το αίτημα του χρήστη. Εάν ο χρήστης ζητήσει δεδομένα από περιορισμένο χρόνο (π.χ. μία ημέρα ή ένα μήνα) , τότε ERDDAP™ Δεν θα χρειαστεί να ανοίξετε πολλά αρχεία στο σύνολο δεδομένων σας. Αλλά υπάρχουν ακραίες περιπτώσεις όπου σχεδόν κάθε αρχείο μπορεί να έχει ταιριαστά δεδομένα (π.χ. όταν νερόTemperature=13.2C) . Από τη στιγμή που παίρνει ERDDAP™ Λίγο χρόνο. (Εν μέρει ο χρόνος αναζήτησης στο HDD, εν μέρει ο χρόνος ανάγνωσης της κεφαλίδας του αρχείου) απλά για να ανοίξετε ένα δεδομένο αρχείο (και περισσότερα αν υπάρχουν πολλά αρχεία στον κατάλογο) , υπάρχει σημαντική χρονική ποινή εάν ο συνολικός αριθμός των αρχείων που ERDDAP™ Πρέπει να ανοίξει είναι πολύ μεγάλο. Ακόμα και το άνοιγμα 1000 αρχείων θέλει σημαντικό χρόνο. Έτσι υπάρχουν οφέλη για την περιοδική ενοποίηση των ημερήσιων αρχείων σε μεγαλύτερα κομμάτια (π.χ., 1 σταθμός για 1 έτος) . Καταλαβαίνω ότι μπορεί να μην θέλετε να το κάνετε αυτό για διάφορους λόγους, αλλά οδηγεί σε πολύ γρηγορότερες απαντήσεις. Σε ακραίες περιπτώσεις (π.χ., ασχολούμαι με ένα σύνολο δεδομένων GTSPP που έχει ~35 εκατομμύρια πηγαία αρχεία) , που εξυπηρετούν τα δεδομένα από έναν τεράστιο αριθμό πηγαίου αρχείου είναι μη πρακτικό επειδή ERDDAP Η απάντηση σε απλά ερωτήματα μπορεί να πάρει ώρες και να χρησιμοποιήσει τόνους μνήμης. Εδραιώνοντας τα αρχεία πηγαίου κώδικα σε μικρότερο αριθμό (Για GTSPP, έχω 720 τώρα, 2 ανά μήνα) , ERDDAP™ μπορεί να ανταποκριθεί αρκετά γρήγορα. Βλέπεις; Εκατομμύρια αρχείων
N.B. Solid State Drives είναι μεγάλη! Ο γρηγορότερος, ευκολότερος, φθηνότερος τρόπος για να βοηθήσει ERDDAP™ να ασχοληθεί με έναν τεράστιο αριθμό (μικρό) αρχεία είναι να χρησιμοποιήσετε μια μονάδα στερεάς κατάστασης. Βλέπεις; Οι Solid State Drives είναι τέλειοι!
Εκατομμύρια αρχείων
-
Μερικά σύνολα δεδομένων έχουν εκατομμύρια πηγαίους φακέλους. ERDDAP™ μπορεί να χειριστεί αυτό, αλλά με ανάμεικτα αποτελέσματα.
- Για αιτήματα που περιλαμβάνουν μόνο μεταβλητές που παρατίθενται στο [< subsetVariables >] (#υποκαθορισμένες μεταβλητές) , ERDDAP™ έχει όλες τις απαραίτητες πληροφορίες που έχουν ήδη εξαχθεί από τα αρχεία δεδομένων και αποθηκεύονται σε ένα αρχείο, έτσι ώστε να μπορεί να ανταποκριθεί πολύ, πολύ γρήγορα.
- Για άλλα αιτήματα, ERDDAP™ μπορεί να σαρώσει το σύνολο δεδομένων λανθάνουσες πληροφορίες αρχείου και να καταλάβω ότι μόνο μερικά από τα αρχεία μπορεί να έχουν δεδομένα που σχετίζονται με το αίτημα και έτσι να ανταποκριθεί γρήγορα.
- Αλλά για άλλα αιτήματα (για παράδειγμα, νερόTemperature=18 degree\_C) όπου οποιοδήποτε αρχείο μπορεί να έχει σχετικά δεδομένα, ERDDAP™ πρέπει να ανοίξει ένα μεγάλο αριθμό αρχείων για να δούμε αν κάθε ένα από τα αρχεία έχει οποιαδήποτε δεδομένα που σχετίζονται με το αίτημα. Τα αρχεία ανοίγουν διαδοχικά. Σε οποιοδήποτε λειτουργικό σύστημα και οποιοδήποτε σύστημα αρχείων (εκτός των δίσκων στερεάς κατάστασης) , αυτό παίρνει πολύ χρόνο (Οπότε... ERDDAP™ ανταποκρίνεται αργά) και πραγματικά συνδέει το σύστημα αρχείων (Οπότε... ERDDAP™ ανταποκρίνεται αργά σε άλλα αιτήματα) .
Ευτυχώς, υπάρχει μια λύση.
- Set του συνόλου δεδομένων σε μη δημόσιο ERDDAP™ (Τον προσωπικό σου υπολογιστή;) .
- Δημιουργία και εκτέλεση σεναρίου που απαιτεί μια σειρά από .nc CF αρχεία, το καθένα με ένα μεγάλο κομμάτι του συνόλου δεδομένων, συνήθως μια χρονική περίοδο (για παράδειγμα, όλα τα δεδομένα για ένα δεδομένο μήνα) . Επιλέξτε το χρονικό διάστημα έτσι ώστε όλα τα αρχεία που προκύπτουν να είναι λιγότερα από 2GB (αλλά ελπίζω μεγαλύτερη από 1GB) . Αν το σύνολο δεδομένων έχει δεδομένα σχεδόν πραγματικού χρόνου, εκτελέστε το σενάριο για την αναγέννηση του αρχείου για την τρέχουσα χρονική περίοδο (π.χ. αυτό το μήνα) συχνά (κάθε 10 λεπτά; Κάθε ώρα;) . Αιτήσεις ERDDAP™ για .nc Τα αρχεία CF δημιουργούν ένα NetCDF v3 .nc αρχείο που χρησιμοποιεί το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Contiguous Ragged Array data constructions).
- Set Πίνακας EDDFromNcCFΑρχεία σύνολο δεδομένων για το κοινό σας ERDDAP™ που λαμβάνει δεδομένα από το .nc (ΚΦ) αρχεία. ERDDAP™ μπορεί να εξάγει δεδομένα από αυτά τα αρχεία πολύ γρήγορα. Και αφού υπάρχουν τώρα δεκάδες ή εκατοντάδες (αντί για εκατομμύρια) των αρχείων, ακόμη και αν ERDDAP™ πρέπει να ανοίξει όλα τα αρχεία, μπορεί να το κάνει γρήγορα.
Ναι, αυτό το σύστημα χρειάζεται λίγο χρόνο και προσπάθεια για να δημιουργηθεί, αλλά λειτουργεί πολύ, πολύ καλά. Τα περισσότερα αιτήματα δεδομένων μπορούν να αντιμετωπιστούν 100 φορές γρηγορότερα από πριν. \[ Ο Μπομπ ήξερε ότι αυτό ήταν μια πιθανότητα, αλλά ήταν ο Κέβιν Ο'Μπράιεν που το έκανε πρώτη φορά και έδειξε ότι λειτουργεί καλά. Τώρα, Ο Bob χρησιμοποιεί αυτό για το σύνολο δεδομένων GTSPP το οποίο έχει περίπου 18 εκατομμύρια αρχεία πηγαίου κώδικα και το οποίο ERDDAP™ τώρα εξυπηρετεί μέσω περίπου 500 .nc (ΚΦ) αρχεία. \]
N.B. Solid State Drives είναι μεγάλη! Ο γρηγορότερος, ευκολότερος, φθηνότερος τρόπος για να βοηθήσει ERDDAP™ να ασχοληθεί με έναν τεράστιο αριθμό (μικρό) αρχεία είναι να χρησιμοποιήσετε μια μονάδα στερεάς κατάστασης. Βλέπεις; Οι Solid State Drives είναι τέλειοι!
Τεράστια αρχεία
- Ένα ενιαίο τεράστιο αρχείο δεδομένων (Ειδικά τεράστια αρχεία δεδομένων ASCII) μπορεί να προκαλέσει ένα OutOf MemoryError. Αν αυτό είναι το πρόβλημα, θα πρέπει να είναι προφανές γιατί ERDDAP™ θα αποτύχει να φορτώσει το σύνολο δεδομένων. Η λύση, εάν είναι εφικτό, είναι η διάσπαση του αρχείου σε πολλαπλά αρχεία. Ιδανικά, μπορείτε να χωρίσετε το αρχείο σε λογικά κομμάτια. Για παράδειγμα, αν το αρχείο έχει δεδομένα αξίας 20 μηνών, χωρίστε το σε 20 αρχεία, το καθένα με δεδομένα αξίας 1 μήνα. Αλλά υπάρχουν πλεονεκτήματα ακόμα και αν το κύριο αρχείο χωρίζεται αυθαίρετα. Αυτή η προσέγγιση έχει πολλαπλά οφέλη: α) Αυτό θα μειώσει τη μνήμη που απαιτείται για να διαβάσετε τα αρχεία δεδομένων σε 1/20th, επειδή μόνο ένα αρχείο διαβάζεται σε μια στιγμή. β) Συχνά, ERDDAP™ μπορεί να ασχοληθεί με τα αιτήματα πολύ πιο γρήγορα, επειδή πρέπει να ψάξει μόνο σε ένα ή μερικά αρχεία για να βρει τα δεδομένα για ένα δεδομένο αίτημα. γ) Αν η συλλογή δεδομένων είναι σε εξέλιξη, τότε τα υπάρχοντα 20 αρχεία μπορούν να παραμείνουν αμετάβλητα, και το μόνο που χρειάζεται είναι να τροποποιήσετε ένα, μικρό, νέο αρχείο για να προσθέσετε τα δεδομένα του επόμενου μήνα στο σύνολο δεδομένων.
Πρόβλημα FTP / Advice
- Εάν FTP νέα αρχεία δεδομένων στο ERDDAP™ εξυπηρετητής κατά τη διάρκεια ERDDAP™ τρέχει, υπάρχει η πιθανότητα ότι ERDDAP™ θα επαναφορτώσει το σύνολο δεδομένων κατά τη διαδικασία FTP. Συμβαίνει πιο συχνά απ' όσο νομίζεις! Αν συμβεί, το αρχείο θα φανεί έγκυρο (έχει έγκυρο όνομα) , αλλά το αρχείο δεν είναι έγκυρο. Εάν ERDDAP™ προσπαθεί να διαβάσει δεδομένα από αυτό το μη έγκυρο αρχείο, το σφάλμα που προκύπτει θα προκαλέσει την προσθήκη του αρχείου στον πίνακα των μη έγκυρων αρχείων. Αυτό δεν είναι καλό. Για να αποφύγετε αυτό το πρόβλημα, χρησιμοποιήστε ένα προσωρινό όνομα αρχείου όταν FTP'ing το αρχείο, για παράδειγμα, ABC2005 .nc \_TEMP . Στη συνέχεια, το αρχείοNameRegex δοκιμή (Βλέπε παρακάτω) θα δείξει ότι αυτό δεν είναι σχετικό αρχείο. Μετά την ολοκλήρωση της διαδικασίας FTP, μετονομάστε το αρχείο στο σωστό όνομα. Η διαδικασία μετονομασίας θα προκαλέσει το αρχείο να γίνει σχετικό σε μια στιγμή.
Εκχυλίσματα ονόματος αρχείου
\[ Αυτό το χαρακτηριστικό είναι ΙΔΙΑΙΤΕΡΟ. Παρακαλείσθε να χρησιμοποιήσετε \\\* αρχείοName pseudo sourceName Αντ' αυτού. \]
Το EDDTableFromFiles διαθέτει ένα σύστημα για την εξαγωγή μιας συμβολοσειράς από κάθε όνομα αρχείου και χρησιμοποιώντας αυτό για να κάνει μια ψεύτικη μεταβλητή δεδομένων. Επί του παρόντος, δεν υπάρχει σύστημα για να ερμηνεύσει αυτές τις συμβολοσειρές ως ημερομηνίες / ώρες. Υπάρχουν αρκετές ετικέτες XML για να ρυθμίσετε αυτό το σύστημα. Εάν δεν χρειάζεστε μέρος ή όλο αυτό το σύστημα, απλά μην ορίσετε αυτές τις ετικέτες ή τις τιμές χρήσης "".
- πρ ExtractRegex είναι ένα κανονική έκφραση ( φροντιστήριο ) χρησιμοποιείται για τον προσδιορισμό κειμένου που θα αφαιρεθεί από την αρχή του ονόματος αρχείου. Η αφαίρεση γίνεται μόνο αν η regex ταυτίζεται. Αυτό συνήθως ξεκινά με "^" για να ταιριάζει με την αρχή του ονόματος αρχείου.
- θέση Το ExtractRegex είναι μια κανονική έκφραση που χρησιμοποιείται για τον προσδιορισμό κειμένου που θα αφαιρεθεί από το τέλος του ονόματος αρχείου. Η αφαίρεση γίνεται μόνο αν η regex ταυτίζεται. Αυτό συνήθως τελειώνει με "$" για να ταιριάζει με το τέλος του ονόματος αρχείου.
- εκχύλισμαRegex Αν υπάρχει, αυτή η κανονική έκφραση χρησιμοποιείται μετά το preExtractRegex και το postExtractRegex για τον προσδιορισμό μιας συμβολοσειράς που θα εξαχθεί από το όνομα αρχείου (Για παράδειγμα, το stationID ) . Αν η regex δεν ταιριάζει, χρησιμοποιείται ολόκληρο το όνομα αρχείου (μείον προεξαγωγή και θέση Εκχύλισμα) . Χρησιμοποιήστε ".\*" για να ταιριάξετε ολόκληρο το όνομα αρχείου που έχει απομείνει μετά το preExtractRegex και το postExtractRegex.
- στήλη NameForExtract είναι το πηγαίο όνομα στήλης δεδομένων για τις εκχυλισμένες συμβολοσειρές. Α dataVariable με αυτό sourceName Πρέπει να είναι στο dataVariable λίστα s (με οποιοδήποτε τύπο δεδομένων, αλλά συνήθως συμβολοσειρά) .
Για παράδειγμα, αν ένα σύνολο δεδομένων έχει αρχεία με ονόματα όπως XYZAble .nc , XYZBaker .nc , XYZCharlie .nc , ..., και θέλετε να δημιουργήσετε μια νέα μεταβλητή ( stationID ) όταν κάθε αρχείο διαβάζεται το οποίο θα έχει τιμές ID σταθμού (Έιμπλ, Μπέικερ, Τσάρλι, ...) εξάγεται από τα ονόματα αρχείων, θα μπορούσατε να χρησιμοποιήσετε αυτές τις ετικέτες:
- <preextractRegex>^XYZ</preextractRegex> Το αρχικό ^ είναι μια κανονική έκφραση ιδιαίτερου χαρακτήρα που αναγκάζει ERDDAP™ για αναζήτηση XYZ στην αρχή του ονόματος αρχείου. Αυτό προκαλεί την αφαίρεση του XYZ, αν βρεθεί στην αρχή του ονόματος αρχείου, (για παράδειγμα, το όνομα αρχείου XYZAble .nc γίνεται ικανή .nc ) .
- <μετά το ExtractRegex>\ .nc $</postExtractRegex> Το $ στο τέλος είναι μια τακτική έκφραση ειδικός χαρακτήρας που αναγκάζει ERDDAP™ να ψάξουν για .nc στο τέλος του ονόματος αρχείου. Δεδομένου ότι . είναι μια τακτική έκφραση ιδιαίτερο χαρακτήρα (που ταιριάζει με οποιονδήποτε χαρακτήρα) , είναι κωδικοποιημένο ως \. Εδώ. (επειδή το 2E είναι ο δεκαεξαδικός αριθμός χαρακτήρων για μια περίοδο) . Αυτό προκαλεί .nc , αν βρεθεί στο τέλος του ονόματος αρχείου, να αφαιρεθεί (για παράδειγμα, το μερικό όνομα αρχείου Ικανός .nc γίνεται ικανή) .
- <εκχύλισμαRegex>.\</extractRegex> Η κανονική έκφραση . ταιριάζει με όλους τους υπόλοιπους χαρακτήρες (για παράδειγμα, το μερικό όνομα αρχείου Το Able γίνεται το απόσπασμα για το πρώτο αρχείο) .
- <στήληNameForExtract> stationID </στήληNameForExtract> Αυτό λέει ERDDAP™ για να δημιουργήσετε μια νέα στήλη πηγής που ονομάζεται stationID κατά την ανάγνωση κάθε αρχείου. Κάθε σειρά δεδομένων για ένα δεδομένο αρχείο θα έχει το κείμενο που εξάγεται από το όνομα αρχείου του (για παράδειγμα, Ικανός) ως η τιμή στο stationID στήλη.
Στις περισσότερες περιπτώσεις, υπάρχουν πολυάριθμες τιμές για αυτές τις ετικέτες εξαγωγής που θα αποφέρουν τα ίδια αποτελέσματα -- οι τακτικές εκφράσεις είναι πολύ ευέλικτες. Αλλά σε μερικές περιπτώσεις, υπάρχει μόνο ένας τρόπος για να πάρουμε τα επιθυμητά αποτελέσματα.
Ψευδώνυμο sourceName α
Κάθε μεταβλητή σε κάθε σύνολο δεδομένων ERDDAP™ έχει ένα [< sourceName >] (#όνομα πηγής) που προσδιορίζει το όνομα της πηγής για τη μεταβλητή. Ο πίνακας EDDFromFiles υποστηρίζει μερικά ψευδο sourceName s που εξάγουν μια τιμή από κάποιο άλλο μέρος (π.χ. το όνομα του αρχείου ή η αξία ενός παγκόσμιου χαρακτηριστικού) και να προωθήσει αυτή την τιμή να είναι μια στήλη των σταθερών τιμών για αυτό το κομμάτι των δεδομένων (π.χ. ο πίνακας των δεδομένων αυτού του αρχείου) . Για αυτές τις μεταβλητές, πρέπει να προσδιορίσετε τον τύπο δεδομένων της μεταβλητής μέσω του [<Τύπος δεδομένων>] (#Τύπος δεδομένων) Ταγκ. Εάν οι εξαχθείσες πληροφορίες είναι μια συμβολοσειρά ημερομηνίαςTime, θα ορίσετε τη μορφή της συμβολοσειράς ημερομηνίαςTime στο χαρακτηριστικό μονάδων . Το ψευδο sourceName οι επιλογές είναι:
παγκόσμιο: sourceName α
Ένα παγκόσμιο χαρακτηριστικό μεταδεδομένων σε κάθε αρχείο δεδομένων πηγής μπορεί να προωθηθεί για να είναι μια στήλη δεδομένων. Εάν μια μεταβλητή είναι< sourceName > έχει τη μορφή
<sourceName>global:*attributeName*</sourceName>
Τότε πότε ERDDAP™ διαβάζει τα δεδομένα από ένα αρχείο, ERDDAP™ θα ψάξουν για ένα παγκόσμιο χαρακτηριστικό αυτού του ονόματος (για παράδειγμα, PI) και να δημιουργήσει μια στήλη γεμάτη με την αξία του χαρακτηριστικού. Αυτό είναι χρήσιμο όταν το χαρακτηριστικό έχει διαφορετικές τιμές σε διαφορετικά πηγαία αρχεία, γιατί διαφορετικά, οι χρήστες θα έβλεπαν μόνο μία από αυτές τις τιμές για ολόκληρο το σύνολο δεδομένων. Για παράδειγμα,
<sourceName>global:PI</sourceName>
Όταν προωθείτε ένα χαρακτηριστικό να είναι τα δεδομένα, ERDDAP™ αφαιρεί το αντίστοιχο χαρακτηριστικό. Αυτό είναι κατάλληλο επειδή η τιμή είναι πιθανώς διαφορετική σε κάθε αρχείο, ενώ στο σύνολο συγκεντρωτικών δεδομένων ERDDAP™ Θα έχει μόνο μία αξία. Αν θέλετε, μπορείτε να προσθέσετε μια νέα τιμή για το χαρακτηριστικό για το σύνολο δεδομένων με την προσθήκη<att name=" χαρακτηριστικό Όνομα "> νέο Τιμή </att> στο παγκόσμιο σύνολο δεδομένων [< addAttributes >] (#Προσθήκες) . Για καθολικά χαρακτηριστικά που ERDDAP™ απαιτεί, για παράδειγμα, ίδρυμα, ΠΡΕΠΕΙ να προσθέσετε μια νέα αξία για το χαρακτηριστικό.
μεταβλητή: sourceName α
Το χαρακτηριστικό μεταδεδομένων μιας μεταβλητής σε κάθε αρχείο μπορεί να προωθηθεί για να είναι μια στήλη δεδομένων. Εάν μια μεταβλητή είναι< sourceName \> έχει τη μορφή
<sourceName>variable:*variableName*:*attributeName*<sourceName>
Τότε πότε ERDDAP™ διαβάζει τα δεδομένα από ένα αρχείο, ERDDAP™ θα αναζητήσει το καθορισμένο χαρακτηριστικό (για παράδειγμα, ID) της καθορισμένης μεταβλητής (για παράδειγμα, μέσο) και να δημιουργήσει μια στήλη γεμάτη με την αξία του χαρακτηριστικού. Η μητρική μεταβλητή (για παράδειγμα, μέσο) Δεν χρειάζεται να είναι ένας από τους dataVariable s που περιλαμβάνονται στον ορισμό του συνόλου δεδομένων ERDDAP . Για παράδειγμα,
<sourceName>variable:instrument:ID</sourceName>
Αυτό είναι χρήσιμο όταν το χαρακτηριστικό έχει διαφορετικές τιμές σε διαφορετικά πηγαία αρχεία, γιατί διαφορετικά, οι χρήστες θα έβλεπαν μόνο μία από αυτές τις τιμές για ολόκληρο το σύνολο δεδομένων.
Όταν προωθείτε ένα χαρακτηριστικό να είναι τα δεδομένα, ERDDAP™ αφαιρεί το αντίστοιχο χαρακτηριστικό. Αυτό είναι κατάλληλο επειδή η τιμή είναι πιθανώς διαφορετική σε κάθε αρχείο, ενώ στο σύνολο συγκεντρωτικών δεδομένων ERDDAP™ Θα έχει μόνο μία αξία. Αν θέλετε, μπορείτε να προσθέσετε μια νέα τιμή για το χαρακτηριστικό για το σύνολο δεδομένων με την προσθήκη<att name=" χαρακτηριστικό Όνομα "> νέο Τιμή </att> στη μεταβλητή του [< addAttributes >] (#Προσθήκες) . Για χαρακτηριστικά που ERDDAP™ απαιτεί, για παράδειγμα, ioos\_category (ανάλογα με την εγκατάσταση σας) , ΠΡΕΠΕΙ να προσθέσετε μια νέα αξία για το χαρακτηριστικό.
αρχείοName sourceName α
Μπορείτε να εξαγάγετε μέρος του αρχείου ενός αρχείουName and promote that to be a column of data. Η μορφή αυτού του ψευδο [< sourceName >] (#όνομα πηγής) λέ
<sourceName>\\*\\*\\*fileName,*regex*,*captureGroupNumber*</sourceName>
Για παράδειγμα,
<sourceName>\\*\\*\\*fileName,A(\\d{12})\\.slcpV1.nc,1</sourceName>
Όταν ο πίνακας EDDFromFiles διαβάζει τα δεδομένα από ένα αρχείο, θα βεβαιωθείτε ότι το αρχείοName (Για παράδειγμα, A201807041442.slcpV1 .nc ) ταιριάζει με την καθορισμένη κανονική έκφραση ("ρέγκεξ") και να εξάγει το καθορισμένο (στην περίπτωση αυτή, η πρώτη) ομάδα σύλληψης (που είναι ένα μέρος που περιβάλλεται από παρένθεση) , για παράδειγμα, "201807041442". (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .) Η regex μπορεί να οριστεί ως συμβολοσειρά με ή χωρίς περιβάλλουσες φράσεις. Εάν η regex ορίζεται ως μια συμβολοσειρά με τα γύρω εισαγωγικά, η συμβολοσειρά πρέπει να είναι συμβολοσειρά τύπου JSON (με ειδικούς χαρακτήρες δραπέτευσαν με χαρακτήρες \) . Ο αριθμός ομάδας σύλληψης είναι συνήθως 1 (η πρώτη ομάδα σύλληψης) Αλλά μπορεί να είναι οποιοσδήποτε αριθμός.
ΔιαδρομήName sourceName α
Μπορείτε να εξαγάγετε μέρος της πλήρους διαδρομής ενός αρχείου Όνομα (/καταλόγους/αρχείοName.ext) και να προωθήσει ότι να είναι μια στήλη δεδομένων. Η μορφή αυτού του ψευδο [< sourceName >] (#όνομα πηγής) λέ
<sourceName>\\*\\*\\*pathName,*regex*,*captureGroupNumber*<sourceName>
Για παράδειγμα,
<sourceName>\\*\\*\\*pathName,/data/myDatasetID/(\\[A-Z0-9\\]\\*)/B(\\d{12}).nc,1</sourceName>
Όταν ο πίνακας EDDFromFiles διαβάζει τα δεδομένα από ένα αρχείο, θα βεβαιωθείτε ότι η πλήρης διαδρομήName (για παράδειγμα, /data/myDatasetID/BAY17/B201807041442 .nc . Για αυτή τη δοκιμή, οι διαχωριστές καταλόγου θα είναι πάντα '/' , ποτέ \ ") ταιριάζει με την καθορισμένη κανονική έκφραση ("ρέγκεξ") και να εξάγει το καθορισμένο (στην περίπτωση αυτή, η πρώτη) ομάδα σύλληψης (που είναι ένα μέρος που περιβάλλεται από παρένθεση) , για παράδειγμα, "BAY17". (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .) Η regex μπορεί να οριστεί ως συμβολοσειρά με ή χωρίς περιβάλλουσες φράσεις. Αν η regex ορίζεται ως μια συμβολοσειρά με τα γύρω εισαγωγικά, η συμβολοσειρά πρέπει να είναι μια συμβολοσειρά τύπου JSON (με ειδικούς χαρακτήρες δραπέτευσαν με χαρακτήρες \) . Ο αριθμός ομάδας σύλληψης είναι συνήθως 1 (η πρώτη ομάδα σύλληψης) Αλλά μπορεί να είναι οποιοσδήποτε αριθμός.
"0 αρχεία" Μήνυμα σφάλματος
- Αν τρέξεις Δημιουργία συνόλων δεδομένωνXml ή ΔΑΠ , ή αν προσπαθήσετε να φορτώσετε ένα EDDTableFrom... Σύνολο δεδομένων αρχείων ERDDAP™ , και μπορείτε να πάρετε ένα "0 αρχεία" μήνυμα σφάλματος που δείχνει ότι ERDDAP™ βρέθηκε 0 ταίριασμα αρχείων στον κατάλογο (όταν νομίζετε ότι υπάρχουν αρχεία που ταιριάζουν σε αυτόν τον κατάλογο) :
- Ελέγξτε ότι τα αρχεία είναι πραγματικά σε αυτόν τον κατάλογο.
- Ελέγξτε την ορθογραφία του ονόματος καταλόγου.
- Ελέγξτε το αρχείοNameRegex. Είναι πολύ εύκολο να κάνεις λάθη με τους Ρέγκες. Για δοκιμαστικούς σκοπούς, δοκιμάστε το regex .\* το οποίο θα πρέπει να ταιριάζει με όλα τα ονόματα αρχείων. (Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο .)
- Ελέγξτε ότι ο χρήστης που τρέχει το πρόγραμμα (π.χ., user=tomcat (♪ ♪) για το Tomcat/ ERDDAP ) έχει "διαβάστε" άδεια για αυτά τα αρχεία.
- Σε ορισμένα λειτουργικά συστήματα (για παράδειγμα, SELinux) και ανάλογα με τις ρυθμίσεις του συστήματος, ο χρήστης που έτρεξε το πρόγραμμα πρέπει να έχει «διαβασμένη» άδεια για όλη την αλυσίδα καταλόγων που οδηγεί στον κατάλογο που έχει τα αρχεία.
Τυποποίηση Τι;
- Όταν οποιαδήποτε υποκατηγορία του EDDTableFromFiles συγκεντρώνει ένα σύνολο αρχείων πηγής, για μια δεδομένη μεταβλητή, όλα τα αρχεία πηγής ΠΡΕΠΕΙ να έχουν πανομοιότυπες τιμές ιδιοτήτων για διάφορες ιδιότητες: scale\_factor , add\_offset , \_Μη υπογεγραμμένο, missing\_value , \_FillValue, και μονάδες). Σκεφτείτε το: αν ένα αρχείο έχει windSpeed units=knots και ένα άλλο έχει windSpeed units=m/s, τότε οι τιμές δεδομένων από τα δύο αρχεία δεν θα πρέπει να περιλαμβάνονται στο ίδιο συγκεντρωτικό σύνολο δεδομένων. Έτσι, όταν το EDDTableFromFiles πρώτα δημιουργεί το σύνολο δεδομένων, διαβάζει τις τιμές ιδιοτήτων από ένα αρχείο, στη συνέχεια απορρίπτει όλα τα αρχεία που έχουν διαφορετικές τιμές για αυτά τα σημαντικά χαρακτηριστικά. Για τις περισσότερες συλλογές αρχείων, αυτό δεν είναι ένα πρόβλημα επειδή τα χαρακτηριστικά όλων των μεταβλητών είναι συνεπή. Ωστόσο, για άλλες συλλογές αρχείων, αυτό μπορεί να οδηγήσει σε 1%, 10%, 50%, 90%, ή ακόμα και 99% των αρχείων που απορρίπτονται ως "κακά" αρχεία. Αυτό είναι πρόβλημα.
EDDTableFrom αρχεία έχει ένα σύστημα για την αντιμετώπιση αυτού του προβλήματος: τυποποίηση Τι; Η τυποποίηση Ποια ρύθμιση λέει στον EDDTableFromFiles να τυποποιήσει τα αρχεία μόλις τα διαβάσει, πριν ο EDDTableFromFiles κοιτάξει τα χαρακτηριστικά για να δει αν είναι συνεπή.
Η άλλη πλευρά είναι: Αν το σύνολο δεδομένων δεν έχει αυτό το πρόβλημα, μην χρησιμοποιήσετε τυποποίηση Τι; Τυποποίηση Τι έχει κάποιους πιθανούς κινδύνους (που αναφέρονται παρακάτω) και ανεπάρκειες. Έτσι, αν δεν χρειάζεστε πραγματικά τα χαρακτηριστικά της τυποποίησης Τι, δεν υπάρχει καμία ανάγκη να αντιμετωπίσει τους πιθανούς κινδύνους και τις ανεπάρκειες. Η μεγαλύτερη αναποτελεσματικότητα είναι: Όταν διάφορες τυποποίηση Ποιες επιλογές χρησιμοποιούνται από ένα σύνολο δεδομένων, συνεπάγεται ότι τα αρχεία πηγής αποθηκεύουν τα δεδομένα με σημαντικά διαφορετικούς τρόπους (π.χ. με διαφορετικό scale\_factor και add\_offset , ή με συμβολοσειρές χρόνου χρησιμοποιώντας διαφορετικές μορφές) . Έτσι, για ένα δεδομένο περιορισμό σε ένα αίτημα χρήστη, δεν υπάρχει τρόπος ERDDAP™ να κάνει έναν περιορισμό σε επίπεδο πηγής που μπορεί να εφαρμοστεί σε όλα τα αρχεία πηγής. Λοιπόν... ERDDAP™ μπορεί να εφαρμόσει μόνο τους επηρεαζόμενους περιορισμούς σε υψηλότερο επίπεδο. Λοιπόν... ERDDAP™ πρέπει να διαβάσει τα δεδομένα από περισσότερα αρχεία πριν από την εφαρμογή των υψηλότερων, επίπεδο προορισμού περιορισμούς. Έτσι αιτήματα για σύνολα δεδομένων που χρησιμοποιούν τυποποίηση Αυτό που παίρνει περισσότερο χρόνο για να επεξεργαστεί.
Για να χρησιμοποιήσετε αυτό το σύστημα, πρέπει να καθορίσετε
<standardizeWhat>*standardizeWhat*</standardizeWhat>
στο datasets.xml για τον πίνακα EDDFrom... Σύνολο δεδομένων αρχείων (εντός της<dataset> tag).
Η Τυποποίηση Τι; Η τιμή καθορίζει ποιες αλλαγές θα πρέπει να προσπαθήσει να εφαρμόσει ο πίνακας EDDFromFiles. Οι αλλαγές είναι το άθροισμα κάποιου συνδυασμού:
- Αποσυσκευασία
Αυτό κάνει πολλές κοινές και ασφαλείς λειτουργίες για την τυποποίηση αριθμητικών στηλών στα αρχεία:
- Εάν scale\_factor ή/και add\_offset Τα χαρακτηριστικά είναι παρόντα, αφαιρέστε τα και εφαρμόστε τα για να ξεπακετάρετε τις τιμές των δεδομένων.
- Αποσυσκευασία συσκευασμένων ιδιοτήτων (π.χ., πραγματικό\_min, πραγματικό\_max, actual\_range , data\_min , data\_max , δεδομένα\_εύρος, valid\_min , valid\_max , valid\_range ) , εάν υπάρχει, εάν η μεταβλητή ήταν συσκευασμένη, και εάν οι τιμές χαρακτηριστικού ήταν συσκευασμένες (Είναι δύσκολο, αλλά αρκετά αξιόπιστο.) .
- Εάν \_FillValue ή/και missing\_value είναι παρόντες, μετατρέπουν αυτές τις τιμές δεδομένων σε ERDDAP ' πρότυπο" ελλείπουσες τιμές: MAX\_VALUE για ακέραιους τύπους (π.χ., 127 για ψηφιολέξεις, 32.767 για σύντομες, και 2.147.483.647 για ints, 9223372036854775807. για μεγάλα χρονικά διαστήματα) και NaN για διπλά και άρματα.
- Αφαιρέστε το παλιό \_FillValue ή/και missing\_value Χαρακτηριστικά (εάν υπάρχουν) , και να τους αντικαταστήσει με απλά \_FillValue= \[ το ERDDAP™ τυπική ελλείπουσα τιμή \] .
- Τυποποίηση Numeric Times Εάν μια αριθμητική στήλη έχει αριθμητικές χρονικές μονάδες τύπου CF (" χρόνοςUnits από Βασικός χρόνος ", π.χ., "ημέρες από 1900-01-01") , αυτό μετατρέπει την ημερομηνία Χρονικές τιμές σε "seconds since 1970-01-01T00:00:00Z" τιμές και αλλαγές του χαρακτηριστικού μονάδων για να το υποδείξει αυτό. Εάν αυτό είναι επιλεγμένο και υπάρχει πιθανότητα αυτή η μεταβλητή να έχει scale\_factor ή add\_offset , # 1 ΠΡΕΠΕΙ να επιλεγεί επίσης.
- Εφαρμογή συμβολοσειράς missing\_value
Εάν μια στήλη συμβολοσειρών έχει \_FillValue ή/και missing\_value χαρακτηριστικά, αυτό μετατρέπει αυτές τις τιμές σε "" και αφαιρεί τα χαρακτηριστικά. - Αναζήτηση αριθμητικού αριθμού missing\_value
Εάν μια αριθμητική στήλη δεν έχει \_FillValue ή missing\_value χαρακτηριστικά, αυτό προσπαθεί να προσδιορίσει ένα μη καθορισμένο αριθμητικό missing\_value (π.χ., -999, 999, 1e37f) και μετατροπή των περιπτώσεων της στις "τυποποιημένες" τιμές (MAX\_VALUE για ακέραιους τύπους, και NAN για διπλά και πλωτήρες) . Αυτή η επιλογή έχει κίνδυνο: εάν η μεγαλύτερη ή μικρότερη έγκυρη τιμή δεδομένων μοιάζει με ελλείπουσα τιμή (π.χ., 999) , τότε αυτές οι έγκυρες τιμές δεδομένων θα μετατραπούν σε ελλείπουσες τιμές (π.χ. NaN) . - Αλλαγή συμβολοσειρά "N/A" σε "" Για κάθε στήλη συμβολοσειρών, μετατρέψετε αρκετές συμβολοσειρές που χρησιμοποιούνται συνήθως για να υποδείξει μια ελλείπουσα τιμή συμβολοσειράς σε "". Αυτή τη στιγμή, αυτό ψάχνει για ",,, "-", "?"?"?"?"????"?"?"?"?"?"?"?"?"?"?"."."."."."."."."." " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "", "",",",",",",",",",",",",." " " " "."." " " " " " " " " " " " "",",", " " " "", " " " " " "",",",", "",",",",",",", " " " " " " " " " " " " " " " " " "", "",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",", Η αναζήτηση συμβολοσειρών είναι αναίσθητη και εφαρμόζεται μετά την περικοπή των συμβολοσειρών. "και"και "άλλη" δεν είναι συγκεκριμένα στη λίστα. Αυτή η επιλογή έχει κίνδυνο: συμβολοσειρές που θεωρείτε έγκυρες τιμές μπορεί να μετατραπούν σε "".
- Τυποποίηση σε συμβολοσειρά ISO 8601 Datetimes Για κάθε στήλη συμβολοσειρών, προσπαθήστε να μετατρέψετε μη-καθαρά-αριθμητική ημερομηνία συμβολοσειράςTimes (π.χ., "Ιαν 2, 2018") στο ISO 8601 Ημερομηνία συμβολοσειράς ("2018-01-02") . Σημείωση ότι όλες οι τιμές δεδομένων για τη στήλη πρέπει να χρησιμοποιούν την ίδια μορφή, διαφορετικά, αυτή η επιλογή δεν θα κάνει καμία αλλαγή σε μια δεδομένη στήλη. Αυτή η επιλογή έχει κίνδυνο: Αν υπάρχει μια στήλη με τιμές συμβολοσειρών που απλά τυχαίνει να μοιάζουν με μια κοινή ημερομηνία Μορφή χρόνου, θα μετατραπούν σε ISO 8601 Ημερομηνία συμβολοσειράςTimes.
- Τυποποίηση Συμπαγείς ημερομηνίες σε ISO 8601 ημερομηνίες Για κάθε στήλη συμβολοσειρών ή ακέραιου τύπου, προσπαθήστε να μετατρέψετε καθαρά αριθμητική ημερομηνία συμβολοσειράςTimes (π.χ., "20180102"") στο ISO 8601 Ημερομηνία συμβολοσειράς ("2018-01-02") . Σημείωση ότι όλες οι τιμές δεδομένων για τη στήλη πρέπει να χρησιμοποιούν την ίδια μορφή, διαφορετικά, αυτή η επιλογή δεν θα κάνει καμία αλλαγή σε μια δεδομένη στήλη. Αυτή η επιλογή έχει κίνδυνο: Αν υπάρχει στήλη με τιμές που δεν είναι συμπαγείς ημερομηνίες Χρόνοι αλλά μοιάζουν με συμπαγείς ημερομηνίες, θα μετατραπούν σε ISO 8601 ημερομηνία συμβολοσειρώνTimes.
- Τυποποίηση μονάδων Αυτό προσπαθεί να τυποποιήσει τη συμβολοσειρά μονάδων για κάθε μεταβλητή. Για παράδειγμα, "μέτρα ανά δευτερόλεπτο", "μέτρο/δευτερόλεπτο", "m.s^-1" , "m s-1" , "m.s-1"" όλα θα μετατραπούν σε "m.s-1". Αυτό δεν αλλάζει τις τιμές των δεδομένων. Αυτό λειτουργεί καλά για έγκυρο UDUNITS μονάδες χορδές, αλλά μπορεί να έχουν προβλήματα με άκυρες ή σύνθετες χορδές. Μπορείτε να αντιμετωπίσετε τα προβλήματα προσδιορίζοντας συγκεκριμένα από-σε ζεύγη<ΤυποποίησηUd units> μέσα ERDDAP Σ \[ τομκάτ \] /webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/messages.xml αρχείο. Παρακαλώ στείλτε email οποιεσδήποτε αλλαγές κάνετε στον Chris. John at noaa.gov ώστε να μπορούν να ενσωματωθούν στα προεπιλεγμένα μηνύματα.xml. Αυτή η επιλογή έχει κίνδυνο: Αυτό μπορεί να παρακάμψει κάποιες πολύπλοκες ή άκυρες μονάδες.Ωστόσο, μπορείτε να χρησιμοποιήσετε το περίγραμμα εργασίας που περιγράφεται παραπάνω για να παρακάμψετε τα προβλήματα εάν εμφανιστούν.
Η προκαθορισμένη τιμή τυποποίησης Τι είναι 0, που δεν κάνει τίποτα.
Αν/όταν αλλάζετε την τιμή του τυποποιημένου Τι, την επόμενη φορά που θα επαναφορτωθεί το σύνολο δεδομένων, ERDDAP™ θα ξαναδιαβάσει όλα τα αρχεία δεδομένων για το σύνολο δεδομένων προκειμένου να ξαναχτιστεί η μίνι βάση δεδομένων με πληροφορίες για κάθε αρχείο. Αν το σύνολο δεδομένων έχει πολλά αρχεία, αυτό θα πάρει πολύ χρόνο.
Σημειώσεις:
- Ένα δύσκολο πράγμα είναι - Η τυποποίηση Ποια ρύθμιση χρησιμοποιείται για όλες τις στήλες του πηγαίου αρχείου. Έτσι, για παράδειγμα, χρησιμοποιώντας το #2048 μπορεί να μετατρέψει επιτυχώς μια στήλη compact String dateTimes σε ISO 8601 String dateTimes, αλλά μπορεί επίσης να μετατρέψει λανθασμένα μια στήλη με συμβολοσειρές που απλά τυχαίνει να μοιάζουν με compact dateTimes.
- datasets.xml και δημιουργία συνόλων δεδομένων Xml - Είναι ιδιαίτερα δύσκολο να διορθώσετε τις ρυθμίσεις datasets.xml να κάνει το σύνολο δεδομένων σας να λειτουργήσει όπως θέλετε να. Η καλύτερη προσέγγιση (όπως πάντα) είναι:
- Χρήση Δημιουργία συνόλων δεδομένωνXml και να καθορίσει την τιμή της τυποποίησης Τι θα θέλατε να χρησιμοποιήσετε.
- Χρήση ΔΑΠ για να εξασφαλιστεί ότι το σύνολο δεδομένων φορτώνει σωστά και αντικατοπτρίζει το πρότυπο Τι ρύθμιση που προσδιόρισες.
- Δοκιμή του συνόλου δεδομένων με το χέρι όταν είναι σε ERDDAP™ να εξασφαλίσει ότι οι επηρεαζόμενες μεταβλητές λειτουργούν όπως αναμένεται.
- Κίνδυνοι - Οι επιλογές #256 και άνω είναι πιο επικίνδυνες, δηλαδή, υπάρχει μεγαλύτερη πιθανότητα ότι ERDDAP™ Θα κάνει μια αλλαγή που δεν πρέπει να γίνει. Για παράδειγμα, η επιλογή #2048 μπορεί κατά λάθος να μετατρέψει μια μεταβλητή με συμβολοσειρές ID σταθμού που όλα απλά τυχαίνει να φαίνονται ISO 8601 " compact" ημερομηνίες (π.χ., 20180102) στο ISO 8601 "extended" Ημερομηνία ("2018-01-02") .
- Αργά μετά από μια αλλαγή... Από την τιμή της τυποποίησης Τι αλλάζει τις τιμές δεδομένων που βλέπει ο πίνακας EDDFromFiles για κάθε αρχείο δεδομένων, αν αλλάξετε την τυποποίηση Ποια ρύθμιση, το EDDTableFromFiles θα πετάξει όλες τις κρυμμένες πληροφορίες για κάθε αρχείο (που περιλαμβάνει το ελάχιστο και το μέγιστο για κάθε μεταβλητή δεδομένων σε κάθε αρχείο) και να ξαναδιαβάσει κάθε αρχείο δεδομένων. Εάν ένα σύνολο δεδομένων έχει ένα μεγάλο αριθμό αρχείων, αυτό μπορεί να είναι πολύ χρονοβόρο, έτσι θα χρειαστεί πολύς χρόνος για το σύνολο δεδομένων να επαναφορτώσει την πρώτη φορά ERDDAP™ το ξαναγεμίζει αφού κάνεις την αλλαγή.
- Ηρωισμός - Επιλογές #256 και πάνω χρησιμοποιούν την ευκρίνεια για να κάνουν τις αλλαγές τους. Εάν συναντήσετε μια κατάσταση όπου η εφορευτική κάνει μια κακή απόφαση, παρακαλούμε στείλτε μου μια περιγραφή του προβλήματος στον Chris. Τζον στο Νόα. gov ώστε να μπορέσουμε να βελτιώσουμε την ευκρίνεια.
- Εναλλακτικές... Εάν μία από τις τυποποιημένες επιλογές δεν λύσει ένα πρόβλημα για ένα δεδομένο σύνολο δεδομένων, μπορεί να είστε σε θέση να λύσετε το πρόβλημα κάνοντας ένα .nc Αρχείο ml να παραλληλίσει κάθε αρχείο δεδομένων και να καθορίσει τις αλλαγές στα πράγματα στα αρχεία έτσι ώστε τα αρχεία να είναι συνεπή. Τότε πες στον πίνακα EDDFrom... Σύνολο δεδομένων αρχείων για τη συγκέντρωση .nc αρχεία ml.
Ή, χρήση NCO να κάνει αλλαγές στα αρχεία έτσι ώστε τα αρχεία να είναι συνεπή.
Ξεχωριστές στήλες για το έτος, μήνας, ημερομηνία, ώρα, λεπτό, δεύτερη
Είναι αρκετά συνηθισμένο για τα αρχεία δεδομένων πίνακα να έχουν ξεχωριστές στήλες για το έτος, μήνα, ημερομηνία, ώρα, λεπτό, δεύτερο. Πριν ERDDAP™ v2.10, η μόνη λύση ήταν να επεξεργαστεί το αρχείο δεδομένων για να συνδυάσει αυτές τις στήλες σε μια ενοποιημένη χρονική στήλη. Με ERDDAP™ 2.10+, μπορείτε να χρησιμοποιήσετε το [< sourceName >= έκφραση < sourceName >] (#όνομα πηγής) για να πω ERDDAP™ πώς να συνδυάσετε τις στήλες πηγής για να κάνετε μια ενοποιημένη στήλη χρόνου, έτσι ώστε να μην χρειάζεται πλέον να επεξεργαστείτε το αρχείο πηγής.
<skipHeaderToRegex>·
- [<skipHeaderToRegex>] (#skipheadertoregex (στα Αγγλικά)) --
Εκλεκτικό. (Για EDDTableFromAsciiFiles και EDDTableFromColumnarAsciiFiles datasets only.)
Όταν το EDDTableFromAsciiFiles διαβάζει ένα αρχείο δεδομένων, θα αγνοεί όλες τις γραμμές μέχρι και τη γραμμή που ταιριάζει με αυτή την κανονική έκφραση. Η προεπιλογή είναι "", η οποία δεν χρησιμοποιεί αυτή την επιλογή. Ένα παράδειγμα είναι
<skipHeaderToRegex>\\\*\\\*\\\* END OF HEADER.\\*<skipHeaderToRegex>
που θα αγνοήσει όλες τις γραμμές μέχρι και συμπεριλαμβανομένης μιας γραμμής που ξεκινά με -\\~ Τέλος επικεφαλή ~
Όταν χρησιμοποιείτε αυτή την ετικέτα,<στήληNamesRow> και<firstDataRow> ενεργούν σαν να έχει αφαιρεθεί η κεφαλίδα πριν από την ανάγνωση του αρχείου. Για παράδειγμα, θα χρησιμοποιούσατε στήληNamesRow=0 αν τα ονόματα στήλης είναι στη σειρά αμέσως μετά την επικεφαλίδα.
Αν θέλετε να χρησιμοποιήσετε την παραγωγή Σύνολα δεδομένων Xml με ένα σύνολο δεδομένων που χρειάζεται αυτή την ετικέτα:
- Κάντε ένα νέο, προσωρινό, δείγμα αρχείο με την αντιγραφή ενός υπάρχοντος αρχείου και την αφαίρεση της κεφαλίδας.
- Εκτέλεση παραγωγής Σύνολα δεδομένων Xml και προσδιορίστε το αρχείο του δείγματος.
- Χειροκίνητα προσθέστε το<skipHeaderToRegex> ετικέτα στο datasets.xml Κομμάτι.
- Διαγράψτε το προσωρινό αρχείο, δείγμα.
- Χρήση του συνόλου δεδομένων ERDDAP .
<skipLinesRegex>·
Εκλεκτικό. (Για EDDTableFromAsciiFiles και EDDTableFromColumnarAsciiFiles datasets only.)
Όταν το EDDTableFromAsciiFiles διαβάζει ένα αρχείο δεδομένων, θα αγνοεί όλες τις γραμμές που ταιριάζουν με αυτή την κανονική έκφραση. Η προεπιλογή είναι "", η οποία δεν χρησιμοποιεί αυτή την επιλογή. Ένα παράδειγμα είναι
<skipLinesRegex>#.\\*<skipLinesRegex>
που θα αγνοήσει όλες τις γραμμές που ξεκινούν με "#".
Όταν χρησιμοποιείτε αυτή την ετικέτα,<στήληNamesRow> και<firstDataRow> ενεργούν σαν να έχουν αφαιρεθεί όλες οι γραμμές που ταιριάζουν πριν από την ανάγνωση του αρχείου. Για παράδειγμα, θα χρησιμοποιούσατε στήληNamesRow=0 ακόμα και αν υπάρχουν αρκετές γραμμές που ξεκινούν με, για παράδειγμα, "#" στην αρχή του αρχείου.
EDDTableFromFiles σκελετός XML
<dataset type="EDDTableFrom...Files" datasetID\="..." active\="..." >
<nDimensions>...</nDimensions> <!-- This was used prior to ERDDAP™
version 1.30, but is now ignored. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDTableFromFiles subclasses, this uses Java's WatchDirectory system
to notice new/deleted/changed files quickly and efficiently. -->
<standardizeWhat>...</standardizeWhat> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<specialMode>mode</specialMode> <-- This rarely-used, OPTIONAL tag
can be used with EDDTableFromThreddsFiles to specify that special,
hard-coded rules should be used to determine which files should
be downloaded from the server. Currently, the only valid mode
is SAMOS which is used with datasets from
https://tds.coaps.fsu.edu/thredds/catalog/samos to download only the
files with the last version number. -->
<sourceUrl>...</sourceUrl> <-- For subclasses like
EDDTableFromHyraxFiles and EDDTableFromThreddsFiles, this is where
you specify the base URL for the files on the remote server.
For subclasses that get data from local files, ERDDAP™ doesn't use
this information to get the data, but does display the
information to users. So I usually use "(local files)". -->
<fileDir>...</fileDir> <-- The directory (absolute) with the data
files. -->
<recursive>true|false</recursive> <!-- 0 or 1. Indicates if
subdirectories of fileDir have data files, too. -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\") will be accepted. -->
<fileNameRegex>...</fileNameRegex> <-- 0 or 1. A regular expression
(tutorial) describing valid data file names, for example,
".\\.nc" for all .nc files. -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<metadataFrom>...</metadataFrom> <-- The file to get metadata
from ("first" or "last" (the default) based on file's
lastModifiedTime). -->
<charset>...</charset>
<!-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
only) This OPTIONAL tag specifies the character set (case
sensitive!) of the source files, for example, ISO-8859-1
(the default) and UTF-8. -->
<skipHeaderToRegex>...</skipHeaderToRegex>
<skipLinesRegex>...</skipLinesRegex>
<columnNamesRow>...</columnNamesRow> <-- (For EDDTableFromAsciiFiles
only) This specifies the number of the row with the column
names in the files. (The first row of the file is "1".
Default = 1.) If you specify 0, ERDDAP™ will not look for
column names and will assign names: Column#1, Column#2, ... -->
<firstDataRow>...</firstDataRow>
<-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
only) This specifies the number of the first row with data in the
files. (The first row of the file is "1". Default = 2.) -->
<dimensionsCSV>...</dimensionsCSV> <-- (For EDDTableFromNcFiles
and EDDTableFromMultidimNcFiles only) This is a comma-separated
list of dimension fullNames. If specified, ERDDAP™ will only read
variables in the source files which use some or all of these
dimensions, plus all of the scalar variables. If a dimension
is in a group, you must specify its fullName,
e.g., "groupName/dimensionName". -->
<-- The next four tags are DEPRECATED. For more information, see
File Name Extracts. -->
<preExtractRegex>...</preExtractRegex>
<postExtractRegex>...</postExtractRegex>
<extractRegex>...</extractRegex>
<columnNameForExtract>...</columnNameForExtract>
<sortedColumnSourceName>...</sortedColumnSourceName>
<-- The sourceName of the numeric column that the data files are
usually already sorted by within each file, for example, "time".
Don't specify this or use an empty string if no variable is
suitable. It is ok if not all files are sorted by this column.
If present, this can greatly speed up some data requests.
For EDDTableFromHyraxFiles, EDDTableFromNcFiles and
EDDTableFromThreddsFiles, this must be the leftmost (first) axis variable.
EDDTableFromMultidimNcFiles ignores this because it has a better
system. -->
<sortFilesBySourceNames>...</sortFilesBySourceNames>
<-- This is a space-separated list of sourceNames
which specifies how the internal list of files should be sorted
(in ascending order), for example "id time".
It is the minimum value of the specified columns in each file
that is used for sorting.
When a data request is filled, data is obtained from the files
in this order. Thus it determines the overall order of the data
in the response. If you specify more than one column name, the
second name is used if there is a tie for the first column; the
third is used if there is a tie for the first and second
columns; ... This is OPTIONAL (the default is
fileDir+fileName order). -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
false (the default)) -->
<cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
<cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<-- For EDDTableFromHyraxFiles, EDDTableFromMultidimNcFiles,
EDDTableFromNcFiles, EDDTableFromNccsvFiles, and
EDDTableFromThreddsFiles, the source's axis variables (for
example, time) needn't be first or in any specific order. -->
</dataset>
Πίνακας EDD από την υπηρεσία Ascii
Πίνακας EDD από την υπηρεσία Ascii είναι ουσιαστικά ένα ξύστρα οθόνης. Προορίζεται να ασχοληθεί με πηγές δεδομένων που έχουν μια απλή υπηρεσία web για την αίτηση δεδομένων (συχνά μια μορφή HTML σε μια ιστοσελίδα) και η οποία μπορεί να επιστρέψει τα δεδομένα σε κάποιο δομημένο μορφότυπο ASCII (για παράδειγμα, μορφή κειμένου ASCII χωρισμένη με κόμμα ή στήλη, συχνά με άλλες πληροφορίες πριν ή/και μετά τα δεδομένα) .
EDDTableFromAsciiService είναι η υπερκατηγορία όλων των EDDTableFromAsciiService... τάξεις. Δεν μπορείτε να χρησιμοποιήσετε το EDDTableFromAsciiService άμεσα. Αντ 'αυτού, χρησιμοποιήστε μια υποκατηγορία EDDTableFromAsciiService για να χειριστείτε συγκεκριμένους τύπους υπηρεσιών:
- Πίνακας EDD από AsciiServiceNOS λήψη δεδομένων από NOAA Υπηρεσίες ASCII της NOS.
Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι υπηρεσιών. Αλλά είναι συνήθως σχετικά εύκολο να υποστηρίξει άλλες υπηρεσίες αν εργάζονται με παρόμοιο τρόπο. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα.
Λεπτομέρειες
Οι ακόλουθες πληροφορίες ισχύουν για όλες τις υποκατηγορίες του EDDTableFromAsciiService.
- Περιορισμοί... ERDDAP™ Τα αιτήματα για δεδομένα πίνακα μπορούν να θέσουν περιορισμούς σε οποιαδήποτε μεταβλητή. Η υποκείμενη υπηρεσία μπορεί ή δεν μπορεί να επιτρέψει περιορισμούς σε όλες τις μεταβλητές. Για παράδειγμα, πολλές υπηρεσίες υποστηρίζουν περιορισμούς μόνο σε ονόματα σταθμών, γεωγραφικό πλάτος, γεωγραφικό μήκος και χρόνο. Έτσι, όταν μια υποκατηγορία του EDDTableFromAsciiService λαμβάνει μια αίτηση για ένα υποσύνολο ενός συνόλου δεδομένων, περνά όσο το δυνατόν περισσότερους περιορισμούς στην υπηρεσία δεδομένων πηγής και στη συνέχεια εφαρμόζει τους υπόλοιπους περιορισμούς στα δεδομένα που επιστρέφει η υπηρεσία, πριν παραδώσει τα δεδομένα στον χρήστη.
- Έγκυρο εύρος -- Σε αντίθεση με πολλούς άλλους τύπους συνόλων δεδομένων, το EDDTableFromAsciiService συνήθως δεν γνωρίζει το εύρος των δεδομένων για κάθε μεταβλητή, οπότε δεν μπορεί να απορρίψει γρήγορα αιτήματα για δεδομένα εκτός του έγκυρου εύρους.
- Ανάλυση της απάντησης κειμένου ASCII -- Όταν το EDDTableFromAsciiService λαμβάνει απάντηση από μια υπηρεσία κειμένου ASCII, πρέπει να επικυρώνει ότι η απάντηση έχει την αναμενόμενη μορφή και πληροφορίες, και στη συνέχεια να εξάγει τα δεδομένα. Μπορείτε να καθορίσετε τη μορφή χρησιμοποιώντας διάφορες ειδικές ετικέτες στο κομμάτι του XML για αυτό το σύνολο δεδομένων:
- <πριν απόData1> μέσω<πρινData10> ετικέτες -- Μπορείτε να καθορίσετε μια σειρά κομματιών κειμένου (όσες θέλεις, μέχρι 10.) ότι ο πίνακας EDDFromAsciiService πρέπει να αναζητήσει στην επικεφαλίδα του κειμένου ASCII που επιστρέφεται από την υπηρεσία με<πριν απόData1> μέσω<πρινData10>. Για παράδειγμα, αυτό είναι χρήσιμο για την επαλήθευση ότι η απόκριση περιλαμβάνει τις αναμενόμενες μεταβλητές χρησιμοποιώντας τις αναμενόμενες μονάδες. Η τελευταία ετικέτα πριν από τα δεδομένα που ορίζετε προσδιορίζει το κείμενο που εμφανίζεται ακριβώς πριν από την έναρξη των δεδομένων.
- <μετά τα δεδομένα> -- Αυτό καθορίζει το κείμενο που θα αναζητήσει το EDDTableFromAsciiService στο κείμενο ASCII που θα επιστραφεί από την υπηρεσία που σημαίνει το τέλος των δεδομένων.
- <χωρίς δεδομένα> -- Εάν το EDDTableFromAsciiService βρει αυτό το κείμενο στο κείμενο ASCII που επέστρεψε από την υπηρεσία, καταλήγει στο συμπέρασμα ότι δεν υπάρχουν δεδομένα που να ταιριάζουν με το αίτημα.
EDDTableFromAsciiService σκελετός XML
<dataset type="EDDTableFromAsciiService..." datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<sourceUrl>...</sourceUrl>
<beforeData1>...<beforeData1> <!-- 0 or 1 -->
...
<beforeData10>...<beforeData10> <!-- 0 or 1 -->
<afterData>...<afterData> <!-- 0 or 1 -->
<noData>...<noData> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
Πίνακας EDD από AsciiServiceNOS
Πίνακας EDD από AsciiServiceNOS κάνει EDDTable σύνολα δεδομένων από τις υπηρεσίες δεδομένων κειμένου ASCII που προσφέρονται από NOAA Σ Εθνική Υπηρεσία Ωκεανού (ΝΟS) . Για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να το χρησιμοποιήσετε, δείτε το superclass αυτής της κατηγορίας Πίνακας EDD από την υπηρεσία Ascii . Είναι απίθανο ότι οποιοσδήποτε άλλος εκτός από τον Μπομπ Σάιμονς θα χρειαστεί να χρησιμοποιήσει αυτή την υποκατηγορία.
Δεδομένου ότι τα δεδομένα εντός της απόκρισης από μια υπηρεσία NOS χρησιμοποιούν μορφή κειμένου στήλης ASCII, οι μεταβλητές δεδομένων πλην του γεωγραφικού πλάτους και του γεωγραφικού μήκους πρέπει να έχουν ειδικό χαρακτηριστικό το οποίο προσδιορίζει ποιοι χαρακτήρες κάθε γραμμής δεδομένων περιέχουν τα δεδομένα της μεταβλητής, για παράδειγμα,
<att name="responseSubstring">17, 25</att>
Πίνακας EDD από όλα τα σύνολα δεδομένων
Πίνακας EDD από όλα τα σύνολα δεδομένων είναι ένα σύνολο δεδομένων υψηλότερου επιπέδου το οποίο έχει πληροφορίες σχετικά με όλα τα άλλα σύνολα δεδομένων που είναι φορτωμένα σήμερα στο σας ERDDAP . Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, δεν υπάρχει καμία προδιαγραφή για το allDatasets σύνολο δεδομένων datasets.xml . ERDDAP™ αυτόματα δημιουργεί ένα σύνολο δεδομένων EDDTableFromAllDatasets (με datasetID = allDatasets ) . Έτσι, allDatasets Το σύνολο δεδομένων θα δημιουργηθεί σε κάθε ERDDAP™ εγκατάσταση και θα λειτουργήσει με τον ίδιο τρόπο σε κάθε ERDDAP™ εγκατάσταση.
Η allDatasets Το σύνολο δεδομένων είναι ένα σύνολο δεδομένων πίνακα. Έχει μια σειρά πληροφοριών για κάθε σύνολο δεδομένων. Έχει στήλες με πληροφορίες για κάθε σύνολο δεδομένων, π.χ., datasetID , προσβάσιμο, ίδρυμα, τίτλος, minLongitude, maxLongitude, minΓεωγραφικό πλάτος, maxΓεωγραφικό πλάτος, minTime, maxTime, κλπ. Γιατί; allDatasets είναι ένα σύνολο δεδομένων πίνακα, μπορείτε να το ανακρίνετε με τον ίδιο τρόπο που μπορείτε να ρωτήσετε οποιοδήποτε άλλο σύνολο δεδομένων πίνακα σε ERDDAP™ , και μπορείτε να καθορίσετε τον τύπο αρχείου για την απάντηση. Αυτό επιτρέπει στους χρήστες να αναζητούν σύνολα δεδομένων ενδιαφέροντος με πολύ ισχυρούς τρόπους.
Πίνακας EDD από αρχεία Ascii
Πίνακας EDD από αρχεία Ascii αθροίζει τα δεδομένα από τα αρχεία δεδομένων ASCII που έχουν χωριστεί από κόμμα, καρτέλα, ημικολόν ή χώρο.
- Πιο συχνά, τα αρχεία θα έχουν τα ονόματα στήλης στην πρώτη σειρά και τα δεδομένα ξεκινώντας από τη δεύτερη σειρά. (Εδώ, η πρώτη σειρά του αρχείου ονομάζεται αριθμός σειράς 1.) Αλλά μπορείτε να χρησιμοποιήσετε<στήληNamesRow> και<πρώτηDataRow> σε σας datasets.xml αρχείο για τον καθορισμό διαφορετικού αριθμού γραμμής.
- ERDDAP™ επιτρέπει στις σειρές δεδομένων να έχουν διαφορετικούς αριθμούς τιμών δεδομένων. ERDDAP™ υποθέτει ότι οι τιμές των δεδομένων που λείπουν είναι οι τελικές στήλες στη σειρά. ERDDAP™ ορίζει τις τυπικές τιμές της ελλείπουσας τιμής για τις ελλείπουσες τιμές δεδομένων. (προστίθεται v1.56)
- Τα αρχεία ASCII είναι εύκολο να χρησιμοποιηθούν, αλλά δεν είναι ο πιο αποτελεσματικός τρόπος για την αποθήκευση / ανάκτηση δεδομένων. Για μεγαλύτερη αποτελεσματικότητα, αποθηκεύστε τα αρχεία ως NetCDF v3 .nc αρχεία (με μία διάσταση, "γραμμή", κοινή από όλες τις μεταβλητές) Αντ' αυτού. Μπορείς. χρήση ERDDAP™ για τη δημιουργία των νέων αρχείων .
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Λόγω της ολικής έλλειψης μεταδεδομένων στα αρχεία ASCII, θα πρέπει πάντα να επεξεργαστείτε τα αποτελέσματα του GenerateDatasetsXml.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Πότε ERDDAP™ διαβάζει αρχεία δεδομένων ASCII, αν βρίσκει κάποιο σφάλμα σε μια δεδομένη γραμμή (π.χ. λανθασμένος αριθμός αντικειμένων) , καταγράφει ένα προειδοποιητικό μήνυμα ("Προειδοποίηση: Κακή γραμμή (α) δεδομένα" ... με κατάλογο των κακών γραμμών σε επόμενες γραμμές) στο αρχείο log.txt και μετά συνεχίζει να διαβάζει το υπόλοιπο αρχείο δεδομένων. Έτσι, είναι δική σας ευθύνη να κοιτάτε περιοδικά (ή να γράψετε ένα σενάριο για να το κάνετε) για το μήνυμα στο ημερολόγιο. txt έτσι ώστε να μπορείτε να διορθώσετε τα προβλήματα στα αρχεία δεδομένων. ERDDAP™ έχει συσταθεί με αυτόν τον τρόπο, ώστε οι χρήστες να μπορούν να συνεχίσουν να διαβάζουν όλα τα διαθέσιμα έγκυρα δεδομένα παρόλο που ορισμένες γραμμές του αρχείου έχουν ελαττώματα.
Πίνακας EDD από AwsXmlΑρχεία
Πίνακας EDD από AwsXmlΑρχεία συγκεντρωτικά δεδομένα από ένα σύνολο Αυτόματων Μετεωρολογικών Σταθμών (AWS) Αρχεία δεδομένων XML που χρησιμοποιούν το API WeatherBug Rest XML (η οποία δεν είναι πλέον ενεργή) .
- Αυτός ο τύπος αρχείου είναι ένας απλός αλλά αναποτελεσματικός τρόπος αποθήκευσης των δεδομένων, επειδή κάθε αρχείο συνήθως φαίνεται να περιέχει την παρατήρηση από ένα μόνο χρονικό σημείο. Έτσι, μπορεί να υπάρχει ένας μεγάλος αριθμός αρχείων. Εάν θέλετε να βελτιώσετε την απόδοση, εξετάστε την ενοποίηση των ομάδων παρατηρήσεων (Μια βδομάδα αξίζει;) μέσα NetCDF v3 .nc αρχεία (καλύτερη: .nc αρχεία με το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Σχηματισμός συρματόπλεγης ) και χρήση Πίνακας EDD από αρχεία MultidimNc (ή Πίνακας EDDFromNcCFΑρχεία ) να εξυπηρετήσει τα δεδομένα. Μπορείς. χρήση ERDDAP™ για τη δημιουργία των νέων αρχείων .
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Πίνακας EDD από αρχεία ColumnarAscii
Πίνακας EDD από αρχεία ColumnarAscii συγκεντρωτικά δεδομένα από αρχεία δεδομένων ASCII πίνακα με στήλες σταθερού πλάτους.
-
Πιο συχνά, τα αρχεία θα έχουν τα ονόματα στήλης στην πρώτη σειρά και τα δεδομένα ξεκινώντας από τη δεύτερη σειρά. Η πρώτη γραμμή/σειρά στο αρχείο ονομάζεται σειρά # 1. Αλλά μπορείτε να χρησιμοποιήσετε<στήληNamesRow> και<πρώτηDataRow> σε σας datasets.xml αρχείο για τον καθορισμό διαφορετικού αριθμού γραμμής.
-
Η< addAttributes > για κάθε< dataVariable > για αυτά τα σύνολα δεδομένων ΠΡΕΠΕΙ να περιλαμβάνουν αυτά τα δύο ειδικά χαρακτηριστικά:
- <att name="startColumn"> ακέραιος <att> -- ορίζει τη στήλη χαρακτήρων σε κάθε γραμμή που είναι η αρχή αυτής της μεταβλητής δεδομένων.
- <att name="stopColumn"> ακέραιος <att> -- προσδιορίζει τη στήλη χαρακτήρων σε κάθε γραμμή που είναι το 1 μετά το τέλος αυτής της μεταβλητής δεδομένων.
Η πρώτη στήλη χαρακτήρων ονομάζεται στήλη # 0. Για παράδειγμα, για αυτό το αρχείο που έχει τιμές χρόνου abutting τιμές θερμοκρασίας:
0 1 2 <-- character column number 10's digit
0123456789012345678901234567 <-- character column number 1's digit
time temp
2014-12-01T12:00:00Z12.3
2014-12-02T12:00:00Z13.6
2014-12-03T12:00:00Z11.0
η μεταβλητή δεδομένων χρόνου θα είχε
<att name="startColumn">0<att>
<att name="stopColumn">20<att>
και η χρονική μεταβλητή δεδομένων θα είχε
<att name="startColumn">20<att>
<att name="stopColumn">24<att>
Αυτά τα χαρακτηριστικά πρέπει να προσδιορίζονται για όλες τις μεταβλητές εκτός σταθερή τιμή και όνομα αρχείου-πηγής μεταβλητές.
- Τα αρχεία ASCII είναι εύκολα στη συνεργασία, αλλά δεν είναι ένας αποτελεσματικός τρόπος για την αποθήκευση / ανάκτηση δεδομένων. Για μεγαλύτερη αποτελεσματικότητα, αποθηκεύστε τα αρχεία ως NetCDF v3 .nc αρχεία (με μία διάσταση, "γραμμή", κοινή από όλες τις μεταβλητές) Αντ' αυτού. Μπορείς. χρήση ERDDAP™ για τη δημιουργία των νέων αρχείων .
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Λόγω της δυσκολίας προσδιορισμού των θέσεων έναρξης και λήξης για κάθε στήλη δεδομένων και της συνολικής έλλειψης μεταδεδομένων στα αρχεία ASCII, θα πρέπει πάντα να επεξεργαστείτε τα αποτελέσματα από το GenerateDatasetsXml.
Πίνακας EDDFromHttpGet
Πίνακας EDD FromHttpGet είναι διαφορετική από όλους τους άλλους τύπους συνόλων δεδομένων σε ERDDAP™ με το ότι έχει ένα σύστημα με το οποίο συγκεκριμένοι "συγγραφείς" μπορούν να προσθέσουν δεδομένα, να αναθεωρήσουν δεδομένα, ή να διαγράψουν δεδομένα από το σύνολο δεδομένων από το κανονικό HTTP GET ή ΠΟΣΤ αιτήματα από ένα πρόγραμμα υπολογιστή, ένα σενάριο ή ένα πρόγραμμα περιήγησης. Το σύνολο δεδομένων είναι ερωτητέο από τους χρήστες με τον ίδιο τρόπο που όλα τα άλλα σύνολα δεδομένων EDDTable είναι ερωτηματικά στο ERDDAP . Δείτε την περιγραφή του superclass αυτής της τάξης, Πίνακας EDD από αρχεία , για να διαβάσετε σχετικά με τα χαρακτηριστικά που κληρονομούνται από την εν λόγω σούπερ τάξη.
Τα μοναδικά χαρακτηριστικά του EDDTableFromHttpGet περιγράφονται παρακάτω. Πρέπει να διαβάσετε όλο αυτό το αρχικό τμήμα και να το καταλάβετε · διαφορετικά, μπορεί να έχετε εξωπραγματικές προσδοκίες ή να μπείτε σε προβλήματα που είναι δύσκολο να διορθωθούν.
Προβλεπόμενη χρήση
Το σύστημα αυτό προορίζεται για:
- Πίνακας (επί τόπου) δεδομένα, όχι κωδικοποιημένα δεδομένα.
- Στοιχεία πραγματικού χρόνου - Στόχος είναι να επιτραπεί σε έναν συγγραφέα (π.χ. ο αισθητήρας, ένα αυτοματοποιημένο σενάριο QC ή ένας συγκεκριμένος άνθρωπος) για να γίνει μια αλλαγή στο σύνολο δεδομένων (μέσω ενός . εισαγωγή ή διαγραφή εντολής ) και να καταστήσει αυτή την αλλαγή προσιτή σε ERDDAP™ χρήστες, όλοι σε λιγότερο από 1 δευτερόλεπτο, και πιθανώς πολύ πιο γρήγορα. Το περισσότερο 1 δευτερόλεπτο είναι ώρα δικτύου. ERDDAP™ μπορεί να επεξεργαστεί το αίτημα σε περίπου 1 ms και τα δεδομένα είναι άμεσα προσβάσιμα στους χρήστες. Αυτό είναι ένα γρήγορα , στιβαρό , και αξιόπιστο σύστημα .
- Σχεδόν κάθε συχνότητα δεδομένων - Αυτό το σύστημα μπορεί να δεχθεί σπάνια δεδομένα (π.χ. καθημερινά) μέσω πολύ συχνών δεδομένων (π.χ. δεδομένα 100 Hz) . Εάν βελτιστοποιήσετε το σύστημα, μπορεί να χειριστεί υψηλότερα δεδομένα συχνότητας (Ίσως 10 KHz δεδομένα αν πάτε στα άκρα) .
- Δεδομένα από έναν αισθητήρα ή μια συλλογή παρόμοιων αισθητήρων.
- Έκδοση / Αναπαραγωγική επιστήμη / DOI Σ... Καταστάσεις όπου πρέπει να είστε σε θέση να κάνετε αλλαγές στα δεδομένα (π.χ. αλλαγή σημαίας ελέγχου ποιότητας) , γνωρίζουν ποιος συγγραφέας έκανε κάθε αλλαγή , γνωρίζουν το χρονικό σημείο του πότε ο συγγραφέας έκανε την αλλαγή , και (κατόπιν αιτήματος) να είναι σε θέση να δει τα αρχικά δεδομένα από πριν γίνει η αλλαγή. Έτσι, αυτά τα σύνολα δεδομένων είναι επιλέξιμα για DOI α . επειδή συναντούν το DOI απαίτηση ότι το σύνολο δεδομένων είναι αμετάβλητο, εκτός από τη συγκέντρωση. Γενικά, τα σύνολα δεδομένων σχεδόν σε πραγματικό χρόνο δεν είναι επιλέξιμα για DOI ιπ επειδή τα δεδομένα αλλάζουν συχνά αναδρομικά (π.χ. για σκοπούς QA/QC) .
Μόλις τα δεδομένα είναι σε ένα σύνολο δεδομένων EDDTableFromHttpGet, κάθε χρήστης μπορεί να ζητήσει δεδομένα με τον ίδιο τρόπο που ζητούν δεδομένα από οποιοδήποτε άλλο σύνολο δεδομένων EDDTable.
Πειραματικό: Πρόσεχε.
Δεδομένου ότι αυτό το σύστημα είναι νέο και δεδομένου ότι τα χαμένα περιβαλλοντικά δεδομένα δεν μπορούν να επανακτηθούν, θα πρέπει να αντιμετωπίσετε το EDDTableFromHttpGet ως πειραματικό. Εάν είστε μετάβαση από ένα άλλο σύστημα, παρακαλούμε εκτελέστε το παλιό σύστημα και το νέο σύστημα παράλληλα μέχρι να είστε σίγουροι ότι το νέο σύστημα λειτουργεί καλά (εβδομάδες ή μήνες, όχι μόνο ώρες ή ημέρες) . Σε όλες τις περιπτώσεις, βεβαιωθείτε ότι το σύστημά σας καταγράφει ξεχωριστά τα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (ακόμη και αν μόνο στα αρχεία των Απάτσι ή / και Tomcat) Τουλάχιστον για λίγο. Και σε όλες τις περιπτώσεις, βεβαιωθείτε ότι τα αρχεία δεδομένων που δημιουργούνται από το EDDTableFromHttpGet dataset σας είναι συνήθως υποστηρίζεται μέχρι και εξωτερικές συσκευές αποθήκευσης δεδομένων. (Σημειώστε ότι rsync . μπορεί να υποστηρίξει τα αρχεία δεδομένων που δημιουργούνται από EDDTableFromHttpGet πολύ αποτελεσματικά.)
. εισαγωγή και . διαγραφή
Για κάθε σύνολο δεδομένων ERDDAP™ , όταν στέλνετε αίτημα ERDDAP™ για ένα υποσύνολο των δεδομένων σε ένα σύνολο δεδομένων, προσδιορίστε τον τύπο αρχείου που θέλετε για την απάντηση, π.χ., .csv, .htmlTable , .nc , .json . Πίνακας EDDFromHttp Πάρτε επεκτείνει αυτό το σύστημα για να υποστηρίξει δύο επιπλέον τύπους "αρχείο" που μπορεί να εισάγει (ή αλλαγή) ή διαγραφή δεδομένων στο σύνολο δεδομένων:
- . αναφορά
- Το αίτημα είναι μορφοποιημένο σαν μια τυπική απόκριση μορφής HTML, με key=αξία ζεύγη, χωρισμένα με '&'. Για παράδειγμα,
https://some.erddap.url/erddap/tabledap/myDataset**.insert**?stationID=46088&time=2016-03-30T12:37:55Z&latitude=10.1&longitude=-150.1&airTemp=17.23&waterTemp=12.3&author=JohnSmith\_someKey1
λέει ERDDAP™ για να προσθέσετε ή να αλλάξετε τα δεδομένα για stationID =46088 για τον καθορισμένο χρόνο. - Συγγραφέας αυτής της αλλαγής είναι ο JohnSmith και το κλειδί είναι κάποιοKey1.
- Το URL πρέπει να περιλαμβάνει έγκυρες τιμές (μη ελλείπουσες τιμές) για όλα τα http Απαιτούμενες μεταβλητές
- Εάν οι τιμές του http Απαιτούνται Μεταβλητές στην αίτηση (π.χ., stationID και ώρα) ταίριασμα των τιμών σε μια γραμμή ήδη στο σύνολο δεδομένων, οι νέες τιμές αντικαθιστούν αποτελεσματικά τις παλιές τιμές (αν και οι παλιές τιμές εξακολουθούν να είναι προσιτές εάν ο χρήστης ζητήσει δεδομένα από προηγούμενο έκδοση του συνόλου δεδομένων) .
- Το . εισάγετε URL δεν πρέπει ποτέ να περιλαμβάνει & χρονοσφραγίδα= ( ERDDAP™ παράγει αυτή την τιμή) ή εντολή= (το οποίο προσδιορίζεται από . (η οποία είναι εντολή=0) ή . διαγράφει (που είναι εντολή= 1) ) .
- Εάν το . inspot URL δεν καθορίζει τιμές για άλλες στήλες που βρίσκονται στο σύνολο δεδομένων, υποτίθεται ότι είναι οι εγγενείς τιμές που λείπουν (MAX\_VALUE για ακέραιους τύπους δεδομένων, NaN για πλωτήρες και διπλά, και "" για συμβολοσειρές) .
- .διαγραφή
- Το αίτημα είναι μορφοποιημένο σαν μια τυπική απόκριση μορφής HTML, με key=αξία ζεύγη, χωρισμένα με '&'. Για παράδειγμα,
https://some.erddap.url/erddap/tabledap/myDataset**.delete**?stationID=46088&time=2016-03-30T12:37:55Z&author=JohnSmith\_someKey1
λέει ERDDAP™ για τη διαγραφή των δεδομένων stationID =46088 την καθορισμένη ώρα. - Συγγραφέας αυτής της αλλαγής είναι ο JohnSmith και το κλειδί είναι κάποιοKey1.
- Το URL πρέπει να προσδιορίζει το http Απαιτούμενες μεταβλητές στην αίτηση (π.χ., stationID και ώρα) . Αν αυτές οι τιμές ταιριάζουν με τις τιμές μιας γραμμής ήδη στο σύνολο δεδομένων (που συνήθως θα) , οι παλιές τιμές διαγράφονται αποτελεσματικά (αν και οι παλιές τιμές είναι ακόμα προσβάσιμες αν ένας χρήστης ζητήσει δεδομένα από προηγούμενο έκδοση του συνόλου δεδομένων) .
- Δεν υπάρχει καμία ανάγκη να οριστούν τιμές για μη-HttpGetRequiredVariables, εκτός του συγγραφέα, η οποία είναι απαραίτητη για την επαλήθευση της αίτησης.
- Το αίτημα είναι μορφοποιημένο σαν μια τυπική απόκριση μορφής HTML, με key=αξία ζεύγη, χωρισμένα με '&'. Για παράδειγμα,
https://some.erddap.url/erddap/tabledap/myDataset**.delete**?stationID=46088&time=2016-03-30T12:37:55Z&author=JohnSmith\_someKey1
- Το αίτημα είναι μορφοποιημένο σαν μια τυπική απόκριση μορφής HTML, με key=αξία ζεύγη, χωρισμένα με '&'. Για παράδειγμα,
https://some.erddap.url/erddap/tabledap/myDataset**.insert**?stationID=46088&time=2016-03-30T12:37:55Z&latitude=10.1&longitude=-150.1&airTemp=17.23&waterTemp=12.3&author=JohnSmith\_someKey1
Λεπτομέρειες:
- .inte και .delete αιτήματα είναι μορφοποιημένες σαν τυποποιημένες απαντήσεις μορφή HTML, με key=αξία ζεύγη, διαχωρίζονται με '&'. Οι τιμές πρέπει να είναι % κωδικοποιημένο . Έτσι, πρέπει να κωδικοποιήσετε ειδικούς χαρακτήρες στη μορφή %HH, όπου HH είναι η δεκαεξαδική τιμή των 2 ψηφίων του χαρακτήρα. Συνήθως, απλά χρειάζεται να μετατρέψετε μερικούς από τους χαρακτήρες στίξης: % σε %25, & σε %26, " σε %22,<σε% 3C, = σε% 3D, > σε% 3E, + σε% 2B, | σε %7C, \[ σε %5B, \] σε% 5D, χώρος σε% 20, και μετατροπή όλων των χαρακτήρων πάνω από # 127 σε μορφή UTF-8 και στη συνέχεια ποσοστό κωδικοποιεί κάθε byte της μορφής UTF-8 σε μορφή %HH (ζητήστε βοήθεια από έναν προγραμματιστή) .
- Η εισαγωγή και η διαγραφή των αιτήσεων πρέπει να περιλαμβάνουν http Απαιτούμενες μεταβλητές , π.χ., stationID και ώρα. Για .να αναφερθούν οι μεταβλητές που δεν προσδιορίζονται στην αίτηση θεωρείται ότι λείπουν τιμές (MAX\_VALUE για ακέραιες μεταβλητές, NaN για πλωτήρες και διπλές μεταβλητές, και μια κενή συμβολοσειρά για μεταβλητές συμβολοσειρών) . Για .διαγραφή αιτημάτων, τιμές για μη-HttpGetRequired Μεταβλητές (εκτός του συγγραφέα, που απαιτείται) αγνοούνται.
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . συντάκτης\_κλειδί ως τελευταία παράμετρος της αίτησης. Η απαίτηση αυτή να είναι τελευταία εξασφαλίζει ότι το σύνολο της αίτησης έχει ληφθεί από ERDDAP . Μόνο ο συγγραφέας (όχι το κλειδί) θα αποθηκευτεί στο αρχείο δεδομένων. Πρέπει να ορίσετε τη λίστα των επιτρεπόμενων συντάκτης\_κλειδί Είναι μέσω του παγκόσμιου χαρακτηριστικού http Λήψη κλειδιών
- . εισαγωγή και . διαγραφή παραμέτρων μπορεί να είναι κλιμακωτή (μόνο) τιμές ή συστοιχίες οποιουδήποτε μήκους με τη μορφή \[ τιμή 1, τιμή 2, τιμή 3,..., τιμή N \] . Για μια δεδομένη αίτηση, όλες οι μεταβλητές με συστοιχίες πρέπει να έχουν συστοιχίες με τον ίδιο αριθμό τιμών (Αλλιώς είναι λάθος.) . Εάν μια αίτηση έχει κλιμακωτές και τιμές συστοιχίας, οι τιμές κλιμάκων αναπαράγονται για να γίνουν συστοιχίες με το ίδιο μήκος με τις καθορισμένες συστοιχίες, π.χ., και stationID =46088 μπορεί να αντιμετωπιστεί ως & stationID = \[ 46088,46088,46088 \] . Οι διατάξεις είναι το κλειδί για υψηλή απόδοση . Χωρίς συστοιχίες, θα είναι δύσκολο να .εισαγάγετε ή . διαγράψετε περισσότερες από 8 σειρές δεδομένων ανά δευτερόλεπτο από έναν απομακρυσμένο συγγραφέα (λόγω όλων των γενικών εξόδων του δικτύου) . Με συστοιχίες, θα είναι εύκολο να εισάγετε ή να διαγράψετε περισσότερες από 1000 σειρές δεδομένων ανά δευτερόλεπτο από έναν απομακρυσμένο αισθητήρα.
- . εισαγωγή και . διαγραφή αποδοχή (χωρίς μήνυμα σφάλματος) αριθμοί κινητής υποδιαστολής όταν αναμένονται ακέραιοι. Σε αυτές τις περιπτώσεις, το σύνολο δεδομένων περιβάλλει τις τιμές σε ακέραιους.
- . εισαγωγή και . διαγραφή αποδοχή (χωρίς μήνυμα σφάλματος) ακέραιοι και αριθμοί κινητής υποδιαστολής που είναι εκτός εύρους του τύπου δεδομένων της μεταβλητής. Σε αυτές τις περιπτώσεις, το σύνολο δεδομένων αποθηκεύει τις τιμές ως ERDDAP εγγενείς τιμές που λείπουν για αυτόν τον τύπο δεδομένων (MAX\_VALUE για ακέραιους τύπους και NaN για πλωτήρες και διπλάσια) .
Ανταπόκριση
Εάν το . instit ή .delete URL επιτύχει, ο κωδικός απόκρισης HTTP θα είναι 200 (Εντάξει.) και η απάντηση θα είναι κείμενο με .json αντικείμενο, π.χ.,
{
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-11-05T22:12:19.517Z",
"numericTimestamp":1.541455939517+E9
}
Σημειώστε ότι οι χρονικές ενδείξεις έχουν ακρίβεια χιλιοστού δευτερολέπτου.
Εάν το . . εισάγετε ή . διαγράψετε URL αποτύχει, θα πάρετε έναν κωδικό απάντησης HTTP εκτός από 200 (Εντάξει.) , π.χ., Σφάλμα 403 Απαγορευμένη αν υποβάλετε λανθασμένη τιμή συγγραφέα\_key. ERDDAP™ στέλνει τον κωδικό απόκρισης HTTP (όχι, π. χ. .json μορφοποιημένο σφάλμα) Γιατί έτσι γίνονται τα πράγματα στο διαδίκτυο και επειδή μπορούν να συμβούν λάθη οπουδήποτε στο σύστημα (π.χ., στο δίκτυο, το οποίο επιστρέφει ένα σφάλμα HTTP) . Εάν το σφάλμα είναι από ERDDAP™ , η απάντηση μπορεί να περιλαμβάνει κάποιο κείμενο (όχι .json ) με λεπτομερέστερη εξήγηση του τι πήγε στραβά, αλλά τον κωδικό απάντησης HTTP (200=Εντάξει, οτιδήποτε άλλο είναι πρόβλημα) είναι ο κατάλληλος τρόπος για να ελεγχθεί αν το . . . . . . . . delete πέτυχε. Εάν ο έλεγχος του κωδικού απόκρισης HTTP δεν είναι δυνατός ή είναι άβολος, αναζητήστε το "status":"επιτυχία" στο κείμενο απάντησης που θα πρέπει να αποτελεί αξιόπιστη ένδειξη επιτυχίας.
Αρχεία καταγραφής
Όταν EDDTableFromHttpGet λαμβάνει . εισαγωγή και διαγραφή εντολών, απλά προσαρτά τις πληροφορίες στο σχετικό αρχείο σε ένα σύνολο αρχείων καταγραφής, καθένα από τα οποία είναι ένας πίνακας αποθηκευμένος σε ένα JSON Αρχείο γραμμών CSV . Όταν ένας χρήστης υποβάλλει αίτημα για δεδομένα, ERDDAP™ γρήγορα διαβάζει τα σχετικά αρχεία καταγραφής, εφαρμόζει τις αλλαγές στο σύνολο δεδομένων στη σειρά που έγιναν, και στη συνέχεια φιλτράρει το αίτημα μέσω των περιορισμών του χρήστη, όπως κάθε άλλο ERDDAP™ αίτηση για δεδομένα. Η κατάτμηση των δεδομένων σε διάφορα αρχεία καταγραφής, η αποθήκευση διαφόρων κομματιών πληροφοριών (π.χ. η χρονοσφραγίδα της εντολής, και αν η εντολή ήταν .inte ή .delete) , και διάφορες πτυχές της εγκατάστασης του συνόλου δεδομένων, όλα καθιστούν δυνατή για ERDDAP να αποθηκεύει δεδομένα και να ανακτά δεδομένα από αυτό το σύνολο δεδομένων πολύ γρήγορα και πολύ αποτελεσματικά.
Ασφάλεια και συγγραφέας
Κάθε εντολή .inte και .delete πρέπει να περιλαμβάνει &author= συντάκτης\_κλειδί ως τελευταία παράμετρος, όπου ο συγγραφέας\_key αποτελείται από το αναγνωριστικό του συγγραφέα (Έχετε επιλέξει: όνομα, αρχικά, ψευδώνυμο, αριθμός) , μια υπογράμμιση, και ένα μυστικό κλειδί. Η ERDDAP™ Ο διαχειριστής θα συνεργαστεί με τους συγγραφείς για να δημιουργήσει τη λίστα των έγκυρων τιμών του συγγραφέα\_key, οι οποίες μπορούν να αλλάξουν ανά πάσα στιγμή. Όταν το EDDTableFromHttpGet λαμβάνει μια εντολή .ender ή .delete, διασφαλίζει ότι το authorID\_key είναι η τελευταία παράμετρος και έγκυρη. Επειδή είναι η τελευταία παράμετρος, δείχνει ότι όλη η γραμμή εντολών έφτασε ERDDAP™ και δεν κατακλύστηκε. Το μυστικό κλειδί εξασφαλίζει ότι μόνο συγκεκριμένοι συγγραφείς μπορούν να εισάγουν ή να διαγράψουν δεδομένα στο σύνολο δεδομένων. ERDDAP™ στη συνέχεια αποσπά το authorID και αποθηκεύει ότι στη μεταβλητή του συγγραφέα, έτσι ώστε ο καθένας μπορεί να δει ποιος ήταν υπεύθυνος για μια δεδομένη αλλαγή στο σύνολο δεδομένων. . εισαγωγή και διαγραφή εντολών μπορεί να γίνει μόνο μέσω https: (ασφαλής) ERDDAP™ URLs (στα Αγγλικά). Αυτό εξασφαλίζει ότι οι πληροφορίες που μεταφέρονται διατηρούνται μυστικές κατά τη διαμετακόμιση.
χρονοσφραγίδα
Ως μέρος του συστήματος καταγραφής, ο πίνακας EDDFromHttpGet προσθέτει μια χρονοσφραγίδα (ο χρόνος που ERDDAP έλαβε την αίτηση) σε κάθε εντολή που αποθηκεύει στα αρχεία καταγραφής. Γιατί; ERDDAP™ παράγει τη χρονοσφραγίδα, όχι τους συγγραφείς, δεν έχει σημασία αν διαφορετικοί συγγραφείς κάνουν αλλαγές από υπολογιστές με ρολόγια ρυθμισμένα σε ελαφρώς διαφορετικές εποχές. Η χρονοσφραγίδα δείχνει αξιόπιστα τον χρόνο κατά τον οποίο έγινε η αλλαγή στο σύνολο δεδομένων.
ΠΟΣΤΟ HTTP
- Τι γίνεται με το HTTP POST;
HTTP ΠΟΣΤ είναι η καλύτερη εναλλακτική λύση (σε σύγκριση με HTTP GET ) για αποστολή πληροφοριών από έναν πελάτη σε έναν εξυπηρετητή HTTP. Εάν μπορείτε, ή αν πραγματικά θέλετε να βελτιώσετε την ασφάλεια, χρησιμοποιήστε POST αντί GET για να στείλετε τις πληροφορίες ERDDAP . POST είναι πιο ασφαλές επειδή: με GET και https , το URL μεταδίδεται με ασφαλή τρόπο, αλλά ολόκληρο το URL (συμπεριλαμβανομένων παραμέτρων, συμπεριλαμβανομένου του συγγραφέα\_key) Θα γραφτεί στους Απάτσι, Τόμκατ, και ERDDAP™ αρχεία καταγραφής, όπου κάποιος θα μπορούσε να τα διαβάσει αν τα αρχεία δεν είναι σωστά ασφαλή. Με το POST, οι παράμετροι μεταδίδονται με ασφαλή τρόπο και δεν γράφονται στα αρχεία καταγραφής. POST είναι λίγο πιο δύσκολο για τους πελάτες να εργαστούν με και δεν υποστηρίζεται τόσο ευρέως από το λογισμικό του πελάτη, αλλά οι γλώσσες προγραμματισμού το υποστηρίζουν. Το περιεχόμενο που στέλνετε στο σύνολο δεδομένων μέσω GET ή POST θα είναι το ίδιο, απλά σχηματοποιημένο με διαφορετικό τρόπο.
http Απαιτούνται Μεταβλητή παγκόσμια ιδιότητα
Ένα ουσιώδες μέρος αυτού που κάνει όλο αυτό το σύστημα να λειτουργεί είναι το απαιτούμενο παγκόσμιο χαρακτηριστικό http Απαιτούνται Μεταβλητές, που είναι μια λίστα χωρισμένη με κόμματα του dataVariable ονόματα πηγής που προσδιορίζουν μοναδικά μια σειρά δεδομένων. Αυτό θα πρέπει να είναι όσο το δυνατόν λιγότερο και θα περιλαμβάνει σχεδόν πάντα τη μεταβλητή του χρόνου. Για παράδειγμα, εδώ είναι τα συνιστώμενα http Απαιτούνται Μεταβλητές για κάθε μία από τις ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) (Φυσικά, τα ονόματα ταυτότητας μπορεί να είναι διαφορετικά στο σύνολο δεδομένων σας.) :
- Για το TimeSeries: stationID , ώρα
- Για τροχιά: τροχιάID, χρόνος
- Για προφίλ: ώρα (υποθέτοντας ότι ο χρόνος είναι το προφίλ\_id) , βάθος
- Για το TimeSeries Προφίλ: stationID , ώρα (υποθέτοντας ότι ο χρόνος είναι το προφίλ\_id) , βάθος
- Για τροχιά Προφίλ: τροχιάID, χρόνος (υποθέτοντας ότι ο χρόνος είναι το προφίλ\_id) , βάθος
Παίρνοντας το TimeSeries ως παράδειγμα: Δόθηκε εντολή . . . stationID =46088 και ώρα=2016-06-23T19:53:00Z (και άλλες τιμές για άλλες μεταβλητές) :
- Εάν δεν υπάρχουν υπάρχοντα δεδομένα για τον εν λόγω σταθμό και εκείνη τη στιγμή, τότε το αποτέλεσμα θα είναι να προστεθούν τα δεδομένα στο σύνολο δεδομένων.
- Εάν υπάρχουν υπάρχοντα δεδομένα για τον εν λόγω σταθμό και εκείνη τη στιγμή, τότε το αποτέλεσμα θα είναι να αντικατασταθεί η υπάρχουσα σειρά δεδομένων με αυτά τα νέα δεδομένα. (Φυσικά, αφού ERDDAP™ διατηρεί το αρχείο καταγραφής κάθε εντολής που λαμβάνει, τα παλιά δεδομένα είναι ακόμα στο αρχείο καταγραφής. Αν ένας χρήστης ζητήσει δεδομένα από μια έκδοση του συνόλου δεδομένων πριν από αυτή την αλλαγή, θα δουν τα παλαιότερα δεδομένα.)
http Λήψη structure
-
http Λήψη καταλόγου Δομή παγκόσμια χαρακτηριστικά και δεδομένα (Καταγραφή) Ονόματα αρχείων
Μέρος αυτού που κάνει όλο αυτό το σύστημα να λειτουργεί αποτελεσματικά είναι ότι ERDDAP™ δημιουργεί ένα σύνολο δεδομένων (καταγραφής) αρχεία, το καθένα με ένα διαφορετικό κομμάτι του συνόλου δεδομένων. Αν αυτά είναι καλά στημένα, ERDDAP™ θα είναι σε θέση να ανταποκριθεί γρήγορα στις περισσότερες αιτήσεις για δεδομένα. Αυτή η ρύθμιση καθορίζεται από το http GetΚατάλογοςΣτρατηγική παγκόσμια χαρακτηριστικό, η οποία είναι μια συμβολοσειρά που μοιάζει με ένα σχετικό όνομα αρχείου, π.χ., " stationID /10 χρόνια", αλλά είναι στην πραγματικότητα μια προδιαγραφή για τη δομή του καταλόγου. Τα μέρη αυτού δείχνουν πώς ο κατάλογος και τα ονόματα αρχείων για τα δεδομένα (καταγραφής) Τα αρχεία θα κατασκευαστούν. -
Αν ένα μέρος είναι ακέραιος (>= 1) συν ένα χρόνοPeriod (χιλιοστό του δευτερολέπτου, δεύτερο, λεπτό, ώρα, ημερομηνία, μήνας, έτος, ή πληθυντικός τους) , π.χ., 10 χρόνια, τότε το σύνολο δεδομένων EDDTableFromHttpGet θα πάρει την τιμή του χρόνου για τη σειρά δεδομένων (π.χ., 2016-06-23T19:53:00Z) , υπολογίστε το χρόνο που κατατάσσεται σε αυτή την ακρίβεια (π.χ., 2010) , και να κάνει ένα φάκελο ή αρχείοName από αυτό.
Ο στόχος είναι να πάρετε ένα αρκετά μεγάλο κομμάτι των δεδομένων σε κάθε αρχείο, αλλά πολύ λιγότερο από 2GB.
- Διαφορετικά, το μέρος των προδιαγραφών πρέπει να είναι dataVariable Σ sourceName , π.χ., stationID . Σε αυτή την περίπτωση, ο πίνακας EDDFromHttpGet θα κάνει ένα φάκελο ή όνομα αρχείου από την τιμή αυτής της μεταβλητής για τη νέα σειρά δεδομένων (π.χ., "46088"1) .
Επειδή τα δεδομένα εντολών . . εισαγωγής και . διαγραφής αποθηκεύονται σε συγκεκριμένα δεδομένα (καταγραφής) αρχεία, EDDTableFromHttpGet συνήθως χρειάζεται μόνο να ανοίξει ένα ή μερικά δεδομένα (καταγραφής) αρχεία για να βρείτε τα δεδομένα για ένα δεδομένο αίτημα χρήστη. Και επειδή κάθε δεδομένα (καταγραφής) αρχείο έχει όλες τις σχετικές πληροφορίες για το κομμάτι του συνόλου δεδομένων, είναι γρήγορη και εύκολη για EDDTableFromHttpGet να κάνει μια συγκεκριμένη έκδοση (ή την τρέχουσα έκδοση) του συνόλου δεδομένων για τα δεδομένα του εν λόγω αρχείου (και δεν χρειάζεται να δημιουργήσει την αιτούμενη έκδοση ολόκληρου του συνόλου δεδομένων) .
Οι γενικές κατευθυντήριες γραμμές βασίζονται στην ποσότητα και τη συχνότητα των δεδομένων. Αν υποθέσουμε 100 bytes ανά σειρά δεδομένων, τότε ...
| Frequency <br>of measurements | Recommended <br>httpGetDirectoryStructure |
| --- | --- |
| \\>=1 per second | *featureID*/1year/1day |
| \\>=1 per minute | *featureID*/2months |
| \\>=1 per hour | *featureID*/10years |
| \\>=1 per day | *featureID* |
Για παράδειγμα, εάν η δομή καταλόγου είναι stationID /2 μήνες και εισάγετε δεδομένα από δύο σταθμούς (46088 και 46155) με τιμές χρόνου από Δεκ 2015 έως Μάιο 2016, EDDTableFromHttp Η Get θα δημιουργήσει καταλόγους με το όνομα 46088 και 46155 και θα δημιουργήσει αρχεία σε κάθε όνομα 2015-11 .json L, 2016-01 .json L, 2016-03 .json L, 2016-05 .json Ι (κάθε εκμετάλλευση δεδομένων αξίας 2 μηνών για τον σχετικό σταθμό) . Σε οποιαδήποτε στιγμή στο μέλλον, εάν χρησιμοποιείτε .inte ή .delete για να αλλάξετε ή να διαγράψετε τα δεδομένα για, για παράδειγμα, σταθμό 46088 στο 2016-04-05T14:45:00Z, EDDTableFromHttp Πάρτε θα προσαρτήσει αυτή την εντολή στο 46088/2016-03 .json Ι, τα σχετικά δεδομένα (καταγραφής) Αρχείο. Και σαφώς, είναι καλό να προσθέσουμε δεδομένα για άλλους σταθμούς ανά πάσα στιγμή στο μέλλον, δεδομένου ότι το σύνολο δεδομένων θα δημιουργήσει απλά πρόσθετους καταλόγους όπως απαιτείται για να κρατηθούν τα δεδομένα από τους νέους σταθμούς.
http Λήψη κλειδιών
Κάθε πίνακας EDD ΑπόHttp Λήψη συνόλου δεδομένων πρέπει να έχει ένα παγκόσμιο χαρακτηριστικό http GetKeys που καθορίζει τη λίστα των επιτρεπόμενων συγγραφέων και των μυστικών κλειδιών τους ως λίστα χωρισμένη με κόμματα συντάκτης\_κλειδί , π.χ. JohnSmith\_κάποιοKey1, HOBOLogger\_κάποιοKey2, QCScript59\_κάποιοKey3.
- οι χαρακτήρες ASCII (#33 - #126, και χωρίς κόμμα, " ή '
- Τα κλειδιά είναι σαν τους κωδικούς πρόσβασης, οπότε ΠΡΕΠΕΙ να είναι >=8 χαρακτήρες, δύσκολο να μαντέψει, και χωρίς εσωτερικές λέξεις λεξικό. Θα πρέπει να τους αντιμετωπίζεις όπως θα αντιμετώπιζες τους κωδικούς πρόσβασης -- κράτα τους μυστικούς.
- Ο πρώτος χαρακτήρας '\' διαχωρίζει τον συγγραφέα από το κλειδί, οπότε το όνομα του συγγραφέα δεν μπορεί να περιλαμβάνει έναν χαρακτήρα '\' (Αλλά ένα κλειδί μπορεί) .
- Οποιοσδήποτε συγγραφέας μπορεί να έχει έναν ή περισσότερους συγγραφείς\_key's, π.χ., JohnSmith\_someth Κλειδί 1, JohnSmith\_κάποιο Κλειδί 7, κλπ.
- Μπορείτε να αλλάξετε την τιμή αυτής της ιδιότητας οποιαδήποτε στιγμή. Οι αλλαγές αρχίζουν να ισχύουν την επόμενη φορά που θα φορτωθεί το σύνολο δεδομένων.
- Οι πληροφορίες αυτές θα αφαιρεθούν από τα παγκόσμια χαρακτηριστικά του συνόλου δεδομένων πριν δημοσιοποιηθούν.
- Κάθε αίτημα στο σύνολο δεδομένων για την εισαγωγή ή τη διαγραφή δεδομένων πρέπει να περιλαμβάνει &author= συντάκτης\_κλειδί παράμετρος. Μετά την επαλήθευση της εγκυρότητας του κλειδιού, ERDDAP™ μόνο αποθηκεύει το μέρος του συγγραφέα (όχι το κλειδί) στο αρχείο δεδομένων.
Set
Εδώ είναι τα συνιστώμενα βήματα για τη δημιουργία ενός συνόλου δεδομένων EDDTableFromHttpGet:
-
Κάντε τον κύριο κατάλογο για να κρατήσετε τα δεδομένα αυτού του συνόλου δεδομένων. Για αυτό το παράδειγμα, ας χρησιμοποιήσουμε /data/testGet/ . Ο χρήστης που τρέχει GenerateDatasetsXml και ο χρήστης που τρέχει ERDDAP™ πρέπει και οι δύο να έχουν πρόσβαση ανάγνωσης-γραφής σε αυτόν τον κατάλογο.
-
Χρήση επεξεργαστή κειμένου για τη δημιουργία δείγματος .json l αρχείο CSV με την επέκταση .json Σε αυτόν τον κατάλογο. Το όνομα δεν είναι σημαντικό. Για παράδειγμα, μπορείς να το πεις δείγμα. .json Ι Κάντε μια γραμμή 2 .json L Αρχείο CSV, με ονόματα στήλης στην πρώτη γραμμή και εικονικές/τυπικές τιμές (του σωστού τύπου δεδομένων) Στη δεύτερη γραμμή. Εδώ είναι ένα αρχείο δείγμα που είναι κατάλληλο για μια συλλογή από featureType =TimeSeries δεδομένα που μετρούσαν τη θερμοκρασία του αέρα και του νερού. \[ Για featureType =Εκτέλεση, μπορεί να αλλάξετε stationID να είναι τροχιά-ID. \]
\[ Για featureType =Προφίλ, μπορεί να αλλάξεις stationID να είναι profileID και να προσθέσετε μια μεταβλητή βάθους. \]\[ " stationID ", "time" , "γεωγραφικό πλάτος ", Γεωγραφικό μήκος ", air air air " water water water ", ", ", ", ", ", ", ", " " " " " " ", ", ", ", ", ", ", ", " " \] \[ "myStation", "2018-06-25T17:00:00Z", 0.0, 0.0, 0.0, 0.0, 0.0, "SomeBody", 0 \]
Σημείωση:
- Οι πραγματικές τιμές δεδομένων δεν έχουν σημασία γιατί τελικά θα διαγράψετε αυτό το αρχείο, αλλά θα πρέπει να είναι του σωστού τύπου δεδομένων. Αξιοσημείωτα, η μεταβλητή χρόνου θα πρέπει να χρησιμοποιεί την ίδια μορφή που θα χρησιμοποιούν τα πραγματικά δεδομένα από την πηγή.
- Για όλες τις μεταβλητές, το sourceName θα είναι ίσο με το destinationName , οπότε χρησιμοποιήστε τις σωστές/τελικές μεταβλητές ονομασίες τώρα, συμπεριλαμβανομένου του χρόνου, του γεωγραφικού πλάτους, του γεωγραφικού μήκους και μερικές φορές του βάθους ή του υψομέτρου εάν θα συμπεριληφθούν μεταβλητές με αυτές τις πληροφορίες.
- Θα υπάρχει σχεδόν πάντα μια μεταβλητή που ονομάζεται χρόνος που καταγράφει το χρόνο που έγινε η παρατήρηση. Μπορεί να είναι dataType συμβολοσειρά με μονάδες κατάλληλες για χρόνους συμβολοσειράς (π.χ., yyyy-MM-dd "T'HH:mm:ss.SSSZ") ή δεδομένα Τύπος διπλού με μονάδες κατάλληλες για αριθμητικούς χρόνους (π.χ., δευτερόλεπτα από το 1970-01-01T00:00:00Z, ή κάποιο άλλο χρόνο βάσης) .
- Τρεις από τις στήλες (συνήθως τα τελευταία τρία) Πρέπει να είναι χρονοσφραγίδα, συγγραφέας, εντολή.
- Η στήλη χρονοσφραγίδων θα χρησιμοποιηθεί από τον πίνακα EDDFromHttpGet για να προσθέσετε μια χρονοσφραγίδα που δείχνει πότε πρόσθεσε μια δεδομένη γραμμή δεδομένων στο αρχείο δεδομένων. Θα έχει δεδομέναType double and units seconds from 1970-01-01T00:00:00Z.
- Η στήλη του συγγραφέα με συμβολοσειρές δεδομένωνType θα χρησιμοποιηθεί για την εγγραφή του οποίου ο εξουσιοδοτημένος συγγραφέας παρείχε τα δεδομένα αυτής της γραμμής. Οι εξουσιοδοτημένοι συγγραφείς προσδιορίζονται από το http GetKeys παγκόσμιο χαρακτηριστικό . Αν και τα κλειδιά προσδιορίζονται ως συντάκτης\_κλειδί και είναι στο "ζητούν" URL σε αυτή τη μορφή, μόνο το μέρος του συγγραφέα αποθηκεύεται στο αρχείο δεδομένων.
- Η στήλη εντολών με byte δεδομένωνType θα δείξει αν τα δεδομένα σε αυτή τη γραμμή είναι μια εισαγωγή (0) ή διαγραφή (1) .
-
Εκτέλεση δημιουργίας συνόλων δεδομένων Xml και πες το
- Ο τύπος συνόλου δεδομένων είναι EDDTableFromHttpGet
- Ο κατάλογος είναι (για αυτό το παράδειγμα) /δεδομένα/δοκιμή Λήψη/
- Το αρχείο δείγματος είναι (για αυτό το παράδειγμα) /δεδομένα/δοκιμή Get/startup .json Ι
- Η http Απαιτούνται Μεταβλητές (για αυτό το παράδειγμα) stationID , ώρα Βλέπε περιγραφή του http Απαιτούμενες μεταβλητές κάτω.
- Εάν τα δεδομένα συλλέγονται κάθε 5 λεπτά, η http GetΚατάλογος Structure για αυτό το παράδειγμα είναι stationID /2 μήνες . Βλέπε περιγραφή του http Λήψη structure κάτω.
- Η http Λήψη κλειδιών
Προσθήκη εξόδου (το κομμάτι του datasets.xml για το σύνολο δεδομένων) προς datasets.xml . 4. Επεξεργασία του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων για να το κάνει σωστό και ολοκληρωμένο. Αξιοσημείωτα, αντικαταστήστε όλα τα ??? με σωστό περιεχόμενο. 5. Για την<Πίνακας αρχείωνInMemory> ρύθμιση:
- Ορίστε αυτό σε αληθή αν το σύνολο δεδομένων θα πάρει συνήθως συχνές .Εισαγωγή ή / και διαγραφή αιτήσεων (π.χ. πιο συχνά από μία φορά κάθε 10 δευτερόλεπτα) . Αυτό βοηθά τον EDDTableFromHttpGet να ανταποκριθεί γρηγορότερα στις αιτήσεις .integr ή/και .delete. Αν το θέσετε αυτό σε αληθή, ο πίνακας EDDFromHttpGet θα εξακολουθεί να αποθηκεύει τον πίνακα αρχείων και τις σχετικές πληροφορίες στο δίσκο περιοδικά (όπως απαιτείται, περίπου κάθε 5 δευτερόλεπτα) .
- Ορίστε αυτό σε λάθος (το προκαθορισμένο) εάν το σύνολο δεδομένων συνήθως παίρνει σπάνια . (π.χ., λιγότερο από μία φορά κάθε 10 δευτερόλεπτα) .
- Σημείωση: Είναι δυνατόν να χρησιμοποιηθεί<cacheFromUrl> και σχετικές ρυθμίσεις στο datasets.xml για τον πίνακα EDD ΑπόHttp Λήψη συνόλων δεδομένων ως τρόπο δημιουργίας και διατήρησης ενός τοπικού αντιγράφου ενός απομακρυσμένου EDDTableFromHttpGet dataset σε ένα άλλο ERDDAP . Ωστόσο, σε αυτή την περίπτωση, αυτό το τοπικό σύνολο δεδομένων θα απορρίψει τυχόν αιτήματα .Εισαγωγή και διαγραφή.
Χρήση πίνακα EDD Από το Http Get Datasets
- Οι συγγραφείς μπορούν να κάνουν "ζητήματα" που εισαγωγή δεδομένων ή διαγραφή δεδομένων από το σύνολο δεδομένων .
- Μετά την εισαγωγή πραγματικών δεδομένων στο σύνολο δεδομένων, μπορείτε και θα πρέπει να διαγράψετε το αρχικό αρχείο δεδομένων δειγμάτων.
- Οι χρήστες μπορούν να ζητήσουν δεδομένα από το σύνολο δεδομένων όπως κάνουν για οποιοδήποτε άλλο σύνολο δεδομένων EDDTable in ERDDAP . Εάν η αίτηση δεν περιλαμβάνει περιορισμό στη στήλη χρονοσφραγίδων, τότε η αίτηση λαμβάνει δεδομένα από την τρέχουσα έκδοση του συνόλου δεδομένων (το αρχείο καταγραφής μετά την επεξεργασία όλων των εντολών εισαγωγής και διαγραφής και την εκ νέου διαλογή από το http Απαιτούμενες μεταβλητές) .
- Οι χρήστες μπορούν επίσης να υποβάλουν αιτήματα που είναι ειδικά για το EDDTableFromHttpGet datasets:
- Εάν η αίτηση περιλαμβάνει<ή<= περιορισμός της στήλης χρονοσφραγίδων, τότε ERDDAP™ επεξεργάζεται τις σειρές του αρχείου καταγραφής μέχρι την καθορισμένη χρονοσφραγίδα. Στην πραγματικότητα, αυτό διαγράφει προσωρινά όλες τις αλλαγές που έγιναν στο σύνολο δεδομένων από εκείνη την τιμή χρονοσφραγίδων. Για περισσότερες πληροφορίες, δείτε Έκδοση .
- Εάν η αίτηση περιλαμβάνει ένα >, >=, ή = περιορισμό της στήλης χρονοσφραγίδα, π.χ., & χρονοσφραγίδα<=0, τότε ERDDAP™ επιστρέφει τα δεδομένα από τα αρχεία δεδομένων όπως είναι, χωρίς την επεξεργασία των εντολών εισαγωγής και διαγραφής.
- Στο μέλλον, οραματιζόμαστε ότι τα εργαλεία θα χτιστούν (Από εμάς; Από σένα;) για τη συνεργασία με αυτά τα σύνολα δεδομένων. Για παράδειγμα, θα μπορούσε να υπάρχει ένα σενάριο που να διαβάζει τα ακατέργαστα αρχεία καταγραφής, να εφαρμόζει μια διαφορετική εξίσωση βαθμονόμησης και να δημιουργεί/ενημερώνει ένα διαφορετικό σύνολο δεδομένων με αυτές τις πληροφορίες που προέρχονται. Σημειώστε ότι το σενάριο μπορεί να πάρει τα αρχικά δεδομένα μέσω ενός αιτήματος για ERDDAP™ (που παίρνει τα δεδομένα σε μορφή αρχείου που είναι ευκολότερο για το σενάριο για να λειτουργήσει με) και να δημιουργήσει/ενημερώσει το νέο σύνολο δεδομένων μέσω. ERDDAP . Το σενάριο δεν χρειάζεται άμεση πρόσβαση στα αρχεία δεδομένων, μπορεί να είναι στον υπολογιστή οποιουδήποτε εξουσιοδοτημένου συγγραφέα.
Λεπτομερείς πληροφορίες για τον πίνακα EDDFromHttpGet
Τα θέματα είναι:
- Μην αλλάζεις το στήσιμο!
- CRUD
- Μη έγκυρες αιτήσεις
- Ταχύτητα
- Ρομπούστ
- Αξιοπιστία συστήματος
- Έκδοση
- Τι γίνεται με το HTTP PUT και DELETE;
- Σημειώσεις
- Χάρη στο CHORDS για τη βασική ιδέα.
Εδώ είναι οι λεπτομερείς πληροφορίες:
Μην αλλάζεις το στήσιμο!
Μόλις δημιουργηθεί το σύνολο δεδομένων και έχετε προσθέσει δεδομένα σε αυτό:
- Μην προσθέσετε ή αφαιρέσετε κανένα dataVariable Σ.
- Μην αλλάξετε το sourceName ή destinationName της dataVariable Σ.
- Μην αλλάξετε τα δεδομένα Τύπος dataVariable Σ. Αλλά μπορείτε να αλλάξετε το dataVariable Είναι μεταδεδομένα.
- Μην αλλάξετε το http Απαιτούνται Μεταβλητές παγκόσμια χαρακτηριστικό.
- Μην αλλάξετε το http GetΚατάλογοςΣτρατηγική παγκόσμια χαρακτηριστικό.
Εάν χρειαστεί να αλλάξετε οποιοδήποτε από αυτά τα πράγματα, κάντε ένα νέο σύνολο δεδομένων και μεταφέρετε όλα τα δεδομένα στο νέο σύνολο δεδομένων.
CRUD
Στην επιστήμη των υπολογιστών, οι τέσσερις θεμελιώδεις εντολές για την εργασία με ένα σύνολο δεδομένων είναι ΔΗΛΩΣΕΙΣ, ΔΙΑΒΑΣΕΙΣ, ΕΝΗΜΕΡΩΘΕΙΣΕΣ, ΔΕΛΕΤΕΣ (CRUD) . Η SQL, η γλώσσα για τη συνεργασία με τις σχετικές βάσεις δεδομένων, έχει το αντίστοιχο σε INSERT, SELECT, UPDATE, και DELETE. Στον πίνακα EDDFromHttpGet,
- .inte είναι ένας συνδυασμός Create και update.
- .διαγραφή είναι DELETE.
- Το κανονικό σύστημα για την αίτηση υποσυνόλων δεδομένων είναι READ.
Έτσι, ο EDDTableFromHttpGet υποστηρίζει όλες τις θεμελιώδεις εντολές για την εργασία με ένα σύνολο δεδομένων.
- .inte or .delete αιτήσεις χωρίς σφάλματα θα επιστρέψει HTTP status code=200 και ένα αντικείμενο JSON, π.χ.,
{
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-03-26T15:34:05.552Z",
"numericTimestamp":1.522078445552E9
}
Οι δύο τιμές timestamp αναφέρονται στο ίδιο χιλιοστό του δευτερολέπτου, το οποίο είναι το χιλιοστό του δευτερολέπτου που θα αποθηκευτεί στη μεταβλητή timestamp για τις σειρές δεδομένων που εισήχθησαν ή διαγράφηκαν. ERDDAP™ δεν θα αλλάξει το όνομα και τη μορφοποίηση αυτών των ζευγών τιμών κλειδιών στο μέλλον. ERDDAP™ μπορεί να προσθέσει πρόσθετα ζεύγη τιμών κλειδιών στο αντικείμενο JSON στο μέλλον.
Μη έγκυρες αιτήσεις
Μη έγκυρη.Εισαγωγή ή διαγραφή αιτημάτων θα επιστρέψει έναν κώδικα κατάστασης σφάλματος HTTP εκτός από την κατάσταση=200 και δεν θα γίνει καμία αλλαγή στο σύνολο δεδομένων. Αυτό περιλαμβάνει αιτήματα με λανθασμένες πληροφορίες συγγραφέα, λανθασμένα ονόματα μεταβλητών, διαφορετικά μήκη συστοιχίας για διαφορετικές μεταβλητές, ελλείπουσες απαιτούμενες μεταβλητές, ελλείπουσες απαιτούμενες μεταβλητές τιμές κ.λπ. Εάν η αίτηση περιλαμβάνει περισσότερα από ένα αρχεία δεδομένων, είναι πιθανό ότι μέρος της αίτησης θα επιτύχει και μέρος θα αποτύχει. Ωστόσο, αυτό δεν θα πρέπει να είναι ένα πρόβλημα αν ο αισθητήρας που στέλνει το αίτημα αντιμετωπίζει οποιαδήποτε αποτυχία ως πλήρη αποτυχία. Για παράδειγμα, αν πεις ERDDAP™ για εισαγωγή (ή διαγραφή) τα ίδια δεδομένα δύο φορές στη σειρά, η χειρότερη περίπτωση είναι ότι οι πληροφορίες αποθηκεύονται δύο φορές, κλείνουν μαζί στο αρχείο καταγραφής. Είναι δύσκολο να δούμε πώς αυτό θα μπορούσε να προκαλέσει προβλήματα.
Ταχύτητα HttpGet
Για . (χωρίς μέτρηση http γενικά) , στοιχεία ballpark η ταχύτητα της .εισαγάγετε ή . διαγράφει είναι
1 ms ανά .
2ms ανά .Εισαγωγή με 10 σειρές δεδομένων σε συστοιχίες ( \[ \] )
3ms ανά .Εισαγωγή με 100 σειρές στοιχείων σε συστοιχίες ( \[ \] )
13 ms ανά . ( \[ \] )
Προφανώς οι συστοιχίες είναι το κλειδί για υψηλή απόδοση . Χωρίς συστοιχίες, θα είναι δύσκολο να .εισαγάγετε ή . διαγράψετε περισσότερες από 8 σειρές δεδομένων ανά δευτερόλεπτο από έναν απομακρυσμένο συγγραφέα (λόγω όλων των γενικών εξόδων του δικτύου) . Με συστοιχίες, θα είναι εύκολο να εισάγετε ή να διαγράψετε περισσότερες από 1000 σειρές δεδομένων ανά δευτερόλεπτο από έναν απομακρυσμένο αισθητήρα.
Με πολύ μεγάλες ποσότητες δεδομένων ανά αίτημα, θα χτυπήσετε το όριο Tomcat στο μέγιστο μήκος ερωτήματος (προεπιλογή είναι 8KB;) , αλλά αυτό μπορεί να αυξηθεί με την επεξεργασία της ρύθμισης maxHttpHeaderSize στη δική σας τομκάτ /conf/server.xml του HTTP/1.1 Είσοδος σύνδεσης.
Πότε ERDDAP™ διαβάζει τα δεδομένα CSV της JSON Lines (καταγραφής) αρχεία, υπάρχει μια μικρή χρονική ποινή σε σύγκριση με την ανάγνωση δυαδικών αρχείων δεδομένων. Νιώθαμε ότι αυτή η ποινή κατά την ανάγνωση ήταν ένα λογικό τίμημα για την ταχύτητα και την ευρωστία του συστήματος κατά την εγγραφή δεδομένων (που είναι πρωταρχικής σημασίας) .
SSD
Για μεγαλύτερη ταχύτητα, χρήση α Μονάδα στερεάς κατάστασης (SSD) για να αποθηκεύσετε τα δεδομένα. Έχουν πολύ πιο γρήγορο χρόνο πρόσβασης αρχείων (<0.1ms) από τους σκληρούς δίσκους (3 - 12 ms) . Έχουν επίσης ένα ταχύτερο ρυθμό μεταφοράς δεδομένων (200 - 2500 MB/s) από τους σκληρούς δίσκους (~200 MB/s) . Το κόστος τους έχει μειωθεί σημαντικά τα τελευταία χρόνια. Αν και το πρώιμο SSD είχε προβλήματα μετά από μεγάλο αριθμό γραπτών σε ένα δεδομένο μπλοκ, αυτό το πρόβλημα τώρα μειώνεται σημαντικά. Αν απλά χρησιμοποιήσετε το SSD για να γράψετε τα δεδομένα μια φορά τότε διαβάστε το πολλές φορές, ακόμη και ένα SSD βαθμού καταναλωτή (το οποίο είναι σημαντικά λιγότερο ακριβό από ένα SSD βαθμού επιχείρησης) Θα κρατήσει πολύ καιρό.
Ρομπούστ
Προσπαθήσαμε να κάνουμε αυτό το σύστημα όσο το δυνατόν πιο εύκολο στη δουλειά.
- Το σύστημα έχει σχεδιαστεί για να έχει πολλαπλά νήματα (π.χ. ο αισθητήρας, ένα αυτοματοποιημένο σενάριο QC και ένας άνθρωπος) ταυτόχρονα εργάζονται στο ίδιο σύνολο δεδομένων και ακόμη και το ίδιο αρχείο. Μεγάλο μέρος αυτού γίνεται δυνατή με τη χρήση μιας προσέγγισης αρχείου καταγραφής για την αποθήκευση των δεδομένων και με τη χρήση ενός πολύ απλού τύπου αρχείου, JSON Γραμμές αρχείων CSV , για να αποθηκεύσετε τα δεδομένα.
- Ένα άλλο τεράστιο πλεονέκτημα για την JSON Lines CSV είναι ότι αν ένα αρχείο γίνεται ποτέ διαφθαρεί (π.χ., άκυρο λόγω σφάλματος σε μια γραμμή) , είναι εύκολο να ανοίξετε το αρχείο σε έναν επεξεργαστή κειμένου και να διορθώσετε το πρόβλημα.
- Ένα άλλο πλεονέκτημα είναι, αν υπάρχει ένα σφάλμα σε μια γραμμή σε ένα αρχείο, το σύστημα μπορεί ακόμα να διαβάσει όλα τα δεδομένα σε γραμμές πριν και μετά τη γραμμή σφάλματος. Και το σύστημα μπορεί ακόμα να καταγράφει πρόσθετες πληροφορίες.
- Ένα τεράστιο πλεονέκτημα της χρήσης admin-προσβάσιμα πρότυπα αρχεία (σε σύγκριση με σχετική βάση δεδομένων ή Κασσάνδρα ή άλλο λογισμικό) : Δεν υπάρχει άλλο λογισμικό που πρέπει να διατηρηθεί και το οποίο πρέπει να εκτελείται για να αποθηκεύσει ή να ανακτήσει δεδομένα. Και είναι εύκολο να υποστηρίξει τα τυποποιημένα αρχεία ανά πάσα στιγμή και με έναν στοιχειώδη τρόπο επειδή τα δεδομένα είναι σε κομμάτια (μετά από λίγο, μόνο το τρέχον αρχείο για κάθε σταθμό θα αλλάζει) . Σε αντίθεση, χρειάζεται σημαντική προσπάθεια και σύστημα κάτω από το χρόνο για να κάνει εξωτερικά αρχεία αντιγράφων ασφαλείας από βάσεις δεδομένων και από την Κασσάνδρα.
Αξιοπιστία συστήματος
Είναι λογικό να περιμένετε έναν εξυπηρετητή με ERDDAP™ να έχει 99,9% uptime -- αυτό είναι περίπου 9 ώρες downtime ανά έτος (Αν και μπορείς να το χρησιμοποιήσεις σε μια άσχημη νύχτα!) . Αν είστε επιμελείς και τυχεροί, μπορεί να πάρετε 99,99% uptime (53 λεπτά downtime ετησίως) , δεδομένου ότι μόνο μερικές επανεκκινήσεις για ενημερώσεις θα πάρει τόσο πολύ χρόνο. Πρέπει να πάρεις ακραία μέτρα. (ξεχωριστό εφεδρικό διακομιστή, αδιάλειπτο τροφοδοτικό, εφεδρικό κλιματισμό, 24x7x365 προσωπικό για την παρακολούθηση της τοποθεσίας κ.λπ.) να έχει μια μικρή πιθανότητα στο 99,999% uptime (5,25 λεπτά downtime ανά έτος) . Ακόμα και τότε, είναι εξαιρετικά απίθανο ότι θα αποκτήσετε 99,999% uptime (ή ακόμα και 99,99%) Γιατί τα προβλήματα συχνά είναι εκτός ελέγχου. Για παράδειγμα, η Amazon Web Service και η Google προσφέρουν εκπληκτικά αξιόπιστες υπηρεσίες web, ωστόσο μεγάλα τμήματα τους είναι μερικές φορές κάτω για ώρες.
Δέξου το, όλοι θέλουν ERDDAP™ να έχουν 100% uptime, ή τουλάχιστον τα στοιχειωμένα "έξι εννιάρια" (99.9999% uptime ισούται με 32 δευτερόλεπτα του χρόνου down time ανά έτος) Αλλά δεν υπάρχει περίπτωση να το πάρεις όσο χρόνο, προσπάθεια και χρήματα ξοδεύεις.
Αλλά... ERDDAP™ Ο χρόνος δεν είναι ο πραγματικός στόχος εδώ. Ο στόχος είναι να οικοδομήσουμε μια αξιόπιστη σύστημα , ένα που δεν χάνει δεδομένα. Αυτό είναι ένα επιλύσιμο πρόβλημα.
Η λύση είναι: οικοδομήσουμε βλάβη-ανοχή στο λογισμικό του υπολογιστή που στέλνει τα δεδομένα ERDDAP . Συγκεκριμένα, αυτό το λογισμικό θα πρέπει να διατηρήσει μια σειρά από δεδομένα που περιμένουν να πάνε στο ERDDAP . Όταν τα δεδομένα προστίθενται στην ουρά, το λογισμικό θα πρέπει να ελέγχει την απόκριση από ERDDAP . Αν η απάντηση δεν περιλαμβάνει δεδομένα που ελήφθησαν. Δεν υπάρχουν λάθη., τότε το λογισμικό θα πρέπει να αφήσει τα δεδομένα στην ουρά. Όταν παράγονται περισσότερα δεδομένα και προστίθενται στην ουρά, το λογισμικό θα πρέπει να προσπαθήσει και πάλι να .εισαγάγει τα δεδομένα στην ουρά (Ίσως με την \[ \] σύστημα) . Θα πετύχει ή θα αποτύχει. Αν αποτύχει, θα προσπαθήσει ξανά αργότερα. Εάν γράψετε το λογισμικό για να λειτουργήσει με αυτόν τον τρόπο και αν το λογισμικό είναι έτοιμο να ουρά λίγες ημέρες αξίας των δεδομένων, έχετε πραγματικά μια καλή πιθανότητα αποστολής 100% των δεδομένων του αισθητήρα σε ERDDAP . Και θα το έχετε κάνει χωρίς να πάτε σε μεγάλη προσπάθεια ή δαπάνη.
\[ Ιστορικό: Δεν το σκεφτήκαμε. Έτσι τα δίκτυα υπολογιστών επιτυγχάνουν αξιοπιστία. Τα δίκτυα υπολογιστών είναι εγγενώς αναξιόπιστα. Έτσι, όταν μεταφέρετε ένα αρχείο από τον έναν υπολογιστή στον άλλο, το λογισμικό αποστολής γνωρίζει / αναμένει ότι κάποια πακέτα μπορεί να χαθούν. Αν δεν λάβει την κατάλληλη αναγνώριση για ένα δεδομένο πακέτο από τον δέκτη, στέλνει εκ νέου το χαμένο πακέτο. Με αυτή την προσέγγιση, σχετικά απλό λογισμικό αποστολέα και δέκτη μπορεί να κατασκευάσει ένα αξιόπιστο σύστημα μεταφοράς αρχείων στην κορυφή ενός αναξιόπιστου δικτύου. \]
Γιατί αρχεία CSV JSON Lines;!
Πίνακας EDDFromHttpGet χρησιμοποιεί JSON Γραμμές αρχείων CSV - για την αποθήκευση των δεδομένων. Οι λόγοι είναι:
- Ο κύριος λόγος είναι: Η απλότητα των αρχείων CSV της JSON Lines προσφέρει ένα γρήγορο, εύκολο και αξιόπιστο τρόπο για να επιτρέψει πολλαπλά νήματα για να γράψετε σε ένα δεδομένο αρχείο (π.χ. συγχρονίζοντας το όνομα αρχείου) .
- Αν ένα αρχείο JSON Lines CSV έγινε ποτέ αλλοιωμένο (π.χ., άκυρο λόγω σφάλματος σε μια γραμμή) , EDDTableFromHttpGet θα μπορούσε ακόμα να διαβάσει όλα τα δεδομένα για όλες τις γραμμές πριν και μετά τη γραμμή σφάλματος. Και το σύστημα . instit και .delete θα μπορούσε να συνεχίσει να προσθέτει νέα δεδομένα στο αρχείο δεδομένων.
- Επειδή τα αρχεία CSV JSON Lines είναι αρχεία ASCII, αν ένα αρχείο έγινε ποτέ αλλοιωμένο, θα ήταν εύκολο να διορθωθεί (σε επεξεργαστή κειμένου) .
- JSON Lines υποστήριξη CSV συμβολοσειρές Unicode.
- JSON Lines CSV υποστηρίζει μεταβλητές συμβολοσειρές μήκους (δεν περιορίζεται σε κάποιο μέγιστο μήκος) .
- JSON Lines CSV υποστηρίζει 64-bit ακέραιους (παραγάδια) .
- Η επίσημη φύση και η επιπλέον σύνταξη της JSON Lines CSV (vs CSV παλιάς σχολής) παρέχει κάποια επιπλέον διαβεβαίωση ότι μια δεδομένη γραμμή δεν έχει αλλοιωθεί.
Αρχικά προσπαθήσαμε να χρησιμοποιήσουμε .nc 3 αρχεία με απεριόριστη διάσταση. Ωστόσο, υπήρχαν προβλήματα:
- Το κύριο πρόβλημα ήταν: Δεν υπάρχει αξιόπιστος τρόπος για να επιτρέψετε πολλαπλές κλωστές για να γράψετε σε .nc 3 αρχείο, ακόμα και αν τα νήματα συνεργάζονται κάνοντας τις γραφές με συγχρονισμένο τρόπο.
- Εάν .nc 3 αρχείο γίνεται κατεστραμμένο, το σύστημα . instit και .delete δεν μπορεί να συνεχίσει να χρησιμοποιεί το αρχείο.
- Γιατί το .nc 3 αρχεία είναι δυαδικά, αν ένα αρχείο γίνει κατεστραμμένο (που κάνουν λόγω του προβλήματος πολλαπλής ανάγνωσης) είναι εξαιρετικά δύσκολο ή αδύνατο να διορθωθούν. Δεν υπάρχουν εργαλεία για την επισκευή.
- Η CF δεν έχει τρόπο να προσδιορίσει την κωδικοποίηση των συμβολοσειρών, επομένως δεν υπάρχει επίσημος τρόπος υποστήριξης της Unicode, π.χ., της κωδικοποίησης UTF-8. Προσπαθήσαμε να πείσουμε την ΚΙ να υποστηρίξει ένα \_Encoding χαρακτηριστικό, αλλά δεν ήταν σε θέση να κάνει καμία πρόοδο. ( Unidata , προς τιμήν τους, υποστηρίζει το χαρακτηριστικό \_Encoding.)
- .nc 3 αρχεία υποστηρίζουν μόνο σταθερές χορδές μήκους. Και πάλι, προσπαθήσαμε να πάρουμε CF και Unidata να υποστηρίξει μεταβλητό μήκος συμβολοσειρών, αλλά δεν ήταν σε θέση να κάνει οποιαδήποτε πρόοδο.
- .nc 3 αρχεία δεν υποστηρίζουν έναν εύκολο τρόπο για να διακρίνετε τις μεταβλητές ενός χαρακτήρα από τις μεταβλητές συμβολοσειρών. Και πάλι, προσπαθήσαμε να πάρουμε CF και Unidata να υποστηρίξει ένα σύστημα διάκρισης αυτών των δύο τύπων δεδομένων, αλλά δεν ήταν σε θέση να σημειώσει πρόοδο.
- .nc 3 αρχεία υποστηρίζουν μόνο 8-bit χαρακτήρες με μια μη καθορισμένη κωδικοποίηση. Και πάλι, προσπαθήσαμε να πάρουμε CF και Unidata να υποστηρίξει ένα σύστημα προσδιορισμού της κωδικοποίησης, αλλά δεν ήταν σε θέση να σημειώσει καμία πρόοδο.
- .nc 3 αρχεία δεν υποστηρίζουν 64-bit ακέραιους (παραγάδια) . Και πάλι, προσπαθήσαμε να πάρουμε CF και Unidata να υποστηρίξει ένα σύστημα για μεγάλο χρονικό διάστημα, αλλά δεν μπόρεσε να σημειώσει καμία πρόοδο.
Έκδοση
Επειδή ο πίνακας EDD ΑπόHttp Αποκτήστε ένα αρχείο καταγραφής όλων των αλλαγών στο σύνολο δεδομένων με τη χρονοσφραγίδα και τον συγγραφέα κάθε αλλαγής, μπορεί γρήγορα να αναδημιουργήσει αυτό το σύνολο δεδομένων από οποιοδήποτε σημείο στο χρόνο. Κατά μία έννοια, υπάρχει μια εκδοχή για οποιοδήποτε χρονικό διάστημα. Εάν το αίτημα του χρήστη για δεδομένα περιλαμβάνει χρονοσφραγίδα<= περιορισμός, π.χ., & χρονόμετρο<=2016-06-23T16:32:22.128Z (ή οποιοδήποτε χρονικό σημείο) , αλλά χωρίς περιορισμούς του συγγραφέα ή της εντολής, ERDDAP™ θα ανταποκριθεί στην αίτηση, δημιουργώντας για πρώτη φορά μια έκδοση του συνόλου δεδομένων από το εν λόγω χρονικό σημείο. Τότε, ERDDAP™ εφαρμόζει τους άλλους περιορισμούς του χρήστη, όπως και κάθε άλλη αίτηση για δεδομένα από ERDDAP . Το EDDTableFromHttpGet είναι σχεδιασμένο έτσι ώστε αυτή η διαδικασία να είναι πολύ γρήγορη και αποτελεσματική, ακόμα και για πολύ μεγάλα σύνολα δεδομένων.
Ομοίως, ένας χρήστης μπορεί να ανακαλύψει πότε το σύνολο δεδομένων ενημερώθηκε για τελευταία φορά ζητώντας ...?timestab×tab=max (χρονοσφραγίδα) &Διακριτικό ()
Και για κάθε αίτημα για δεδομένα, για οποιαδήποτε έκδοση του συνόλου δεδομένων, οι χρήστες μπορούν να δουν ποιος συγγραφέας έκανε τις αλλαγές, και πότε τις έκαναν.
Αυτό το σύστημα έκδοσης επιτρέπει Αναπαραγωγική επιστήμη γιατί οποιοσδήποτε, ανά πάσα στιγμή, μπορεί να ζητήσει δεδομένα από την έκδοση του συνόλου δεδομένων ανά πάσα στιγμή. Αυτή η λεπτόκοκκη έκδοση δεν είναι δυνατή με οποιοδήποτε άλλο σύστημα που γνωρίζουμε. Ο υποκείμενος μηχανισμός είναι πολύ αποτελεσματικός, δεδομένου ότι δεν απαιτείται επιπλέον χώρος αποθήκευσης, και τα γενικά έξοδα επεξεργασίας είναι πραγματικά ελάχιστα.
Δεν έχουν όλοι ανάγκη για αυτού του είδους τις λεπτεπίλεπτες εκδόσεις, αλλά είναι εξαιρετικά χρήσιμες, ίσως απαραίτητες, στο πλαίσιο ενός μεγάλου οργανισμού διαχείρισης δεδομένων (π.χ., OOI, Κύβος Γης, Data One, και NOAA NCEI) όπου ένα σύνολο δεδομένων μπορεί να έχει πολλαπλούς συγγραφείς (π.χ. ο αισθητήρας, ένα αυτοματοποιημένο σενάριο QC και ένας ανθρώπινος επεξεργαστής) .
\[ Ιστορία: Η ανάγκη για αυτό το είδος της έκδοσης ήρθε για μένα (Μπομπ.) κατά την ανάγνωση και τη συζήτηση OOI το 2008. Εκείνη την εποχή, το OOI είχε ένα δυσκίνητο, αργό, αναποτελεσματικό σύστημα έκδοσης βασισμένο στο Git. Git είναι μεγάλη για αυτό που σχεδιάστηκε για, αλλά όχι αυτό. Το 2008, ενώ ήμουν σε μια συζήτηση για την OOI, σχεδίασα ένα εκτεταμένο, αποτελεσματικό εναλλακτικό σύστημα για τη διαχείριση δεδομένων, συμπεριλαμβανομένων πολλών από τα χαρακτηριστικά που έχω προσθέσει σε ERDDAP™ από τότε, και συμπεριλαμβανομένου αυτού του συστήματος έκδοσης. Εκείνη την εποχή και από τότε, ο OOI ήταν αφοσιωμένος στο σύστημα έκδοσής τους και δεν ενδιαφερόταν για εναλλακτικές λύσεις. Το 2016, άλλες πτυχές αυτού του σχεδίου τέθηκαν σε εφαρμογή και άρχισα να το υλοποιώ. Επειδή υπήρχαν πολλές διακοπές για να δουλέψω σε άλλα έργα, δεν τελείωσα μέχρι το 2018. Ακόμα και τώρα, δεν γνωρίζω κανένα άλλο επιστημονικό σύστημα δεδομένων που να προσφέρει τόσο γρήγορη και εύκολη πρόσβαση σε μια έκδοση των δεδομένων από οποιαδήποτε στιγμή, για συχνή αλλαγή συνόλων δεδομένων. Τα απλά συστήματα αρχείων δεν το προσφέρουν αυτό. Οι βάσεις δεδομένων δεν έχουν. Η Κασσάνδρα όχι. \]
Προσθήκη και διαγραφή HTTPS
- Τι γίνεται με το HTTPS PUT και DELETE;
Πρωτόκολλο μεταφοράς υπερκειμένου (HTTP) είναι η βάση του World Wide Web και ο λόγος που web page URLs αρχίζουν με "http://"ή "https://". HTTPS είναι HTTP με ένα επιπλέον στρώμα ασφάλειας. Κάθε μέρα, περιηγητές, σενάρια και προγράμματα υπολογιστών κάνουν δισεκατομμύρια HTTP (Σ) ΦΥΓΕ αιτήματα για λήψη πληροφοριών από απομακρυσμένες πηγές. HTTP (Σ) επίσης περιλαμβάνει και άλλα verbήματα , ιδίως PUT (για να ωθήσει τα δεδομένα στον εξυπηρετητή) και ΔΕΛΕΤΗ (σε δεδομένα DELETE από τον εξυπηρετητή) . Ναι, PUT και DELETE είναι ο κατάλληλος τρόπος για να εισάγετε τα δεδομένα σε, και να διαγράψετε τα δεδομένα από, ένα σύνολο δεδομένων μέσω HTTP (Σ) . GET υποστηρίζεται από κάθε κομμάτι του λογισμικού που μπορεί να λειτουργήσει με HTTP (Σ) . GET είναι πραγματικά εύκολο να συνεργαστεί με. Όλοι ξέρουν ήδη πώς να εργαστούν με GET και πολλοί ξέρουν πώς να χρησιμοποιήσουν POST (που μπορεί να χρησιμοποιηθεί ουσιαστικά με τον ίδιο τρόπο με GET) , έτσι κάναμε EDDTableFromHttpΔουλέψτε με GET και POST. Πολύ λίγοι άνθρωποι (ακόμα και λίγοι προγραμματιστές υπολογιστών) έχουν δουλέψει ποτέ με PUT και DELETE. Το PUT και το DELETE γενικά υποστηρίζονται μόνο από γλώσσες υπολογιστών, οπότε η χρήση τους απαιτεί ένα επιδέξιο πρόγραμμα. Έτσι η PUT και η DELETE είναι συνήθως μια πολύ πιο δυσκίνητη προσέγγιση δεδομένου του τρόπου με τον οποίο έχουν εξελιχθεί τα εργαλεία.
Σημειώσεις HttpGet
- Σημειώσεις
- Όχι. dataVariable μπορεί να έχουν δεδομέναType=char. Χρησιμοποιήστε dataType=String αντ 'αυτού. Αν πραγματικά χρειάζεστε δεδομέναType=char, στείλτε email στον Chris. Ο Τζον στο Νόαγκοβ.
Ευχαριστώ.
- Χάρη στο CHORDS για τη βασική ιδέα.
Η βασική ιδέα για το EDDTableFromHttpGet (Δηλαδή, χρησιμοποιώντας ένα HTTP GET αίτημα για προσθήκη δεδομένων σε ένα σύνολο δεδομένων) είναι από UCAR του (Της NCAR;) Υπηρεσίες δεδομένων σε πραγματικό χρόνο (ΧΡΟΝΟΙ) έργο. Η μορφή των παραμέτρων της αίτησης (επανάληψη όνομα=τιμή , χωρισμένα με &'s) είναι η ίδια τυπική μορφή που χρησιμοποιείται από HTML μορφές σε ιστοσελίδες. Είναι μια απλή και λαμπρή ιδέα και ακόμα περισσότερο επειδή πλέκει τόσο τέλεια με ERDDAP Το υπάρχον σύστημα αντιμετώπισης των δεδομένων πίνακα. Η ιδέα είναι προφανής εκ των υστέρων, αλλά εγώ (Μπομπ.) Δεν το σκέφτηκα. Πίνακας EDDFromHttp Πάρτε χρήσεις αυτή τη βασική ιδέα, σε συνδυασμό με τις ιδέες μας για το πώς να την εφαρμόσει, να κάνει ένα σύστημα ERDDAP™ για αποστολή δεδομένων. Εκτός από τη βασική ιδέα της χρήσης GET για να ωθήσει τα δεδομένα στο σύστημα, η εφαρμογή EDDTableFromHttpGet είναι εντελώς διαφορετική και εντελώς ανεξάρτητη από CHORDS και έχει διαφορετικά χαρακτηριστικά (π.χ., αρχεία καταγραφής, θραύση δεδομένων, διαφορετικό σύστημα ασφαλείας, υποστήριξη CRUD, αναπαραγώγιμα δεδομένα) . Η έκθεσή μας στο CHORDS ήταν απλά ένα webinar. Δεν εξετάσαμε τον κώδικά τους ούτε διαβάσαμε για το έργο τους, διότι αμέσως γνωρίζαμε ότι θέλαμε να εφαρμόσουμε το σύστημα με διαφορετικό τρόπο. Αλλά τους είμαστε ευγνώμονες για τη βασική ιδέα. Η πλήρης αναφορά στο CHORDS είναι Daniels, M. D., Kerkez, B., Chandrasekar, V., Graves, S., Stamps, D. S., Martin, C., Dye, M., Gooch, R., Bartos, M., Jones, J., Keiser, K. (2014) . Υπηρεσίες δεδομένων πραγματικού χρόνου για τις Γεωεπιστήμες (ΧΡΟΝΟΙ) λογισμικό. UCAR/NCAR -- Εργαστήριο Παρακολούθησης Γης. https://doi.org/10.5065/d6v1236q
Πίνακας EDD από Hyrax Αρχεία
Πίνακας EDD από Hyrax Αρχεία (αποξηραμένη) συγκεντρωτικά αρχεία δεδομένων με διάφορες μεταβλητές, το καθένα με μία ή περισσότερες κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) , και εξυπηρετείται από ένα Hyrax OPeNDAP εξυπηρετητής .
- Αυτός ο τύπος συνόλου δεδομένων είναι ΙΔΙΑΙΤΕΡΟ . Η νεότερη και πιο γενική λύση είναι η χρήση του κρύπτη Επιλογή FromUrl για τον πίνακα EDD Από αρχεία (ή παραλλαγή) , που κάνει ένα τοπικό αντίγραφο των απομακρυσμένων αρχείων και εξυπηρετεί τα δεδομένα από τα τοπικά αρχεία. Η<Η επιλογή cacheFromUrl> μπορεί να χρησιμοποιηθεί με οποιοδήποτε τύπο αρχείου δεδομένων πίνακα. **
Αν δεν μπορείς να το κάνεις να δουλέψει για κάποιο λόγο, στείλε email στον Κρις. Ο Τζον στο Νόαγκοβ. Εάν δεν υπάρχουν καταγγελίες πριν από το 2020, ο συγκεκριμένος τύπος συνόλου δεδομένων μπορεί να αφαιρεθεί. ** - Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
- Στις περισσότερες περιπτώσεις, κάθε αρχείο έχει πολλαπλές τιμές για το αριστερότερο (πρώτη) διάσταση, για παράδειγμα, χρόνος.
- Τα αρχεία συχνά (Αλλά δεν χρειάζεται να) έχουν ενιαία τιμή για τις άλλες διαστάσεις (για παράδειγμα, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) .
- Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με μια πρόσθετη διάσταση (Για παράδειγμα, nCharacters) .
- Hyrax Οι εξυπηρετητές μπορούν να αναγνωριστούν από τους "/dods-bin/nph-dods/" ή "/opendap/" στο URL.
- Αυτή η τάξη οθόνη-παραπετάσματα Hyrax ιστοσελίδες με τις λίστες των αρχείων σε κάθε κατάλογο. Λόγω αυτού, είναι πολύ συγκεκριμένη στην τρέχουσα μορφή του Hyrax ιστοσελίδες. Θα προσπαθήσουμε να προσαρμοστούμε ERDDAP™ γρήγορα εάν/όταν μελλοντικές εκδόσεις του Hyrax αλλαγή του τρόπου με τον οποίο παρατίθενται τα αρχεία.
- Η<Η ρύθμιση αρχείουDir> αγνοείται. Δεδομένου ότι αυτή η κατηγορία κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, ERDDAP™ αναγκάζει το αρχείο Dir να είναι bigParentΚατάλογος /αντίγραφο/ * datasetID * /.
- Για< sourceUrl >, χρήση του URL του βασικού καταλόγου του συνόλου δεδομένων στο Hyrax server, για παράδειγμα, < sourceUrl >http://edac-dap.northerngulfinstitute.org/dods-bin/nph-dods/WCOS/nmsp/wcos/</ sourceUrl > (Αλλά βάλε το σε μια γραμμή.) (Λυπάμαι, αυτός ο διακομιστής δεν είναι πλέον διαθέσιμος.) . Η sourceUrl web page έχει συνήθως - OPeNDAP Δείκτης εξυπηρετητή \[ κατάλογοςName \] " στην κορυφή.
- Δεδομένου ότι αυτή η κατηγορία πάντα κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, δεν πρέπει ποτέ να τυλίξετε αυτό το σύνολο δεδομένων EDDTableCopy .
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Δείτε τα παραδείγματα 1D, 2D, 3D και 4D για Πίνακας EDD από αρχείαNc .
Πίνακας EDD από αρχεία InvalidCRA
Πίνακας EDD από αρχεία InvalidCRA συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc αρχεία που χρησιμοποιούν μια συγκεκριμένη, άκυρη, παραλλαγή του CF DSG Contigoul Ragged Array (ΟΜΑΔΑ) αρχεία. Αν και ERDDAP™ υποστηρίζει αυτόν τον τύπο αρχείου, είναι ένας μη έγκυρος τύπος αρχείου που κανείς δεν πρέπει να αρχίσει να χρησιμοποιεί. Ομάδες που χρησιμοποιούν αυτόν τον τύπο αρχείου ενθαρρύνονται έντονα να χρησιμοποιούν ERDDAP™ να δημιουργήσει έγκυρα αρχεία CF DSG CRA και να σταματήσει τη χρήση αυτών των αρχείων.
Λεπτομέρειες: Αυτά τα αρχεία έχουν πολλαπλές μεταβλητές σειράς\_μέγεθος, το καθένα με ένα χαρακτηριστικό δείγμα\_διάσταση. Τα αρχεία είναι μη τυποποιημένα αρχεία επειδή το πολλαπλάσιο δείγμα (obs) Οι διαστάσεις πρέπει να αποκωδικοποιούνται και να σχετίζονται μεταξύ τους με αυτόν τον πρόσθετο κανόνα και υπόσχονται ότι δεν αποτελεί μέρος της προδιαγραφής CF DSG: "μπορείτε να συνδέσετε μια δεδομένη π.χ., τιμή θερμοκρασίας (temp\obs διάσταση) με δοσμένη τιμή βάθους (z\_obs διάσταση, η διάσταση με τις περισσότερες τιμές) , επειδή: η σειρά θερμοκρασίας\_μέγεθος (για δεδομένο γύψο) θα είναι είτε 0 είτε ίση με την αντίστοιχη γραμμή βάθους\_μέγεθος (για τον γύψο) (Αυτός είναι ο κανόνας.) . Έτσι, αν η σειρά θερμοκρασίας\_μέγεθος δεν είναι 0, τότε οι τιμές n θερμοκρασίας για το χυτό αυτό σχετίζονται άμεσα με τις τιμές n βάθους για το χυτό (Αυτή είναι η υπόσχεση.) ."
Ένα άλλο πρόβλημα με αυτά τα αρχεία: το Principal\_Investigator σειρά\_size μεταβλητή δεν έχει ένα χαρακτηριστικό δείγμα\_διάσταση και δεν ακολουθεί τον παραπάνω κανόνα.
Δείγμα αρχείων για αυτόν τον τύπο συνόλου δεδομένων μπορεί να βρεθεί στοhttps://data.nodc.noaa.gov/thredds/catalog/ncei/wod/ \[ 2020-10-21 Αυτός ο εξυπηρετητής δεν είναι πλέον αξιόπιστος \] .
Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Το πρώτο πράγμα GenerateDatasets Το Xml κάνει για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
Πίνακας EDD από αρχεία JsonlCSV
Πίνακας EDD από αρχεία JsonlCSV συγκεντρωτικά δεδομένα από JSON Γραμμές αρχείων CSV . Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Όπως λέει το jsonlines.org, αυτή η μορφή είναι "Καλύτερη από CSV" (Και νομικά, ως ομοσπονδιακός υπάλληλος, δεν μπορώ να συμφωνήσω ή να διαφωνήσω μαζί τους -- πόσο τρελό είναι αυτό;) . Η CSV δεν έχει προσδιοριστεί ποτέ επίσημα και παρεμποδίζεται από τις ιστορικές αποσκευές που σχετίζονται με τη σύνδεσή της με τα αρχικά προγράμματα υπολογιστικών φύλλων. Η JSON Lines CSV, σε σύγκριση, είναι πλήρως καθορισμένη και επωφελείται από τη σύνδεση της με το ευρέως χρησιμοποιούμενο πρότυπο JSON, το οποίο με τη σειρά του επωφελείται από τη σύνδεσή της με την Java Σενάριο και Java . Αξιοσημείωτα, υπάρχει πλήρης υποστήριξη για τους μακρούς ακέραιους χαρακτήρες και για τους χαρακτήρες Unicode σε συμβολοσειρές, και ένας σαφής τρόπος για να συμπεριληφθούν άλλοι ειδικοί χαρακτήρες (κυρίως καρτέλες και νέες γραμμές) μέσα σε χορδές.
Αυτή η μορφή είναι ιδιαίτερα καλή για σύνολα δεδομένων όπου θα πρέπει να προσαρτήσετε περιοδικά πρόσθετες σειρές στο τέλος ενός δεδομένου αρχείου δεδομένων. Για το λόγο αυτό και άλλοι (βλ. παραπάνω) , Πίνακας EDDFromHttpGet χρησιμοποιεί αρχεία Json Lines CSV για αποθήκευση δεδομένων.
- Τα αρχεία εισόδου υποτίθεται ότι είναι κωδικοποιημένα UTF-8. Ωστόσο, δεδομένου του - u δδδδ μορφή κωδικοποίησης ειδικών χαρακτήρων (Π.χ., \u20ac είναι η κωδικοποίηση του χαρακτήρα του ευρώ) , έχετε την επιλογή να γράψετε τα αρχεία έτσι ώστε να περιέχουν μόνο 7-bit χαρακτήρες ASCII χρησιμοποιώντας \u δδδδ να κωδικοποιήσει όλους τους χαρακτήρες πάνω από το #127.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Πότε ERDDAP™ διάβαζε JSON Γραμμές αρχείων δεδομένων CSV, αν βρει κάποιο σφάλμα σε μια δεδομένη γραμμή (π.χ. λανθασμένος αριθμός αντικειμένων) , καταγράφει ένα προειδοποιητικό μήνυμα ("Προειδοποίηση: Κακή γραμμή (α) δεδομένα" ... με κατάλογο των κακών γραμμών σε επόμενες γραμμές) στο αρχείο log.txt και μετά συνεχίζει να διαβάζει το υπόλοιπο αρχείο δεδομένων. Έτσι, είναι δική σας ευθύνη να κοιτάτε περιοδικά (ή να γράψετε ένα σενάριο για να το κάνετε) για το μήνυμα στο ημερολόγιο. txt έτσι ώστε να μπορείτε να διορθώσετε τα προβλήματα στα αρχεία δεδομένων. ERDDAP™ έχει συσταθεί με αυτόν τον τρόπο, ώστε οι χρήστες να μπορούν να συνεχίσουν να διαβάζουν όλα τα διαθέσιμα έγκυρα δεδομένα παρόλο που ορισμένες γραμμές του αρχείου έχουν ελαττώματα.
Πίνακας EDD από αρχεία MultidimNc
Πίνακας EDD από αρχεία MultidimNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία με διάφορες μεταβλητές, το καθένα με μία ή περισσότερες κοινές διαστάσεις. Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με ή χωρίς μια πρόσθετη διάσταση (για παράδειγμα, STRING14) . Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Εάν τα αρχεία είναι πολυδιάστατες παραλλαγές CF DSG, χρησιμοποιήστε αυτόν τον τύπο συνόλου δεδομένων αντί του Πίνακας EDDFromNcCFΑρχεία .
- Για νέα σύνολα δεδομένων πίνακα από .nc αρχεία, χρησιμοποιήστε αυτή την επιλογή πριν δοκιμάσετε τα παλαιότερα Πίνακας EDD από αρχείαNc . Μερικά πλεονεκτήματα αυτής της κατηγορίας είναι:
- Αυτή η κατηγορία μπορεί να διαβάσει περισσότερες μεταβλητές από μια ευρύτερη ποικιλία δομών αρχείων. Εάν ορίσετε διαστάσειςCSV (κατάλογος ονομάτων διαστάσεων χωρισμένων με κόμματα) στη δημιουργία συνόλων δεδομένων Xml (ή<διαστάσειςCSV> datasets.xml πληροφορίες για ένα από αυτά τα σύνολα δεδομένων), τότε ERDDAP™ θα διαβάσει μόνο μεταβλητές στα πηγαία αρχεία που χρησιμοποιούν ορισμένες ή όλες αυτές τις διαστάσεις, συν όλες τις κλιμακωτές μεταβλητές. Εάν μια διάσταση είναι σε μια ομάδα, πρέπει να ορίσετε το πλήρες Name, π.χ., " ομάδαName/διάστασηName ".
- Αυτή η τάξη μπορεί συχνά να απορρίψει αρχεία πολύ γρήγορα αν δεν ταιριάζουν με τους περιορισμούς ενός αιτήματος. Έτσι η ανάγνωση δεδομένων από μεγάλες συλλογές συχνά θα πάει πολύ πιο γρήγορα.
- Αυτή η κατηγορία χειρίζεται πραγματικές μεταβλητές χαρακτήρων (μεταβλητές μη στρινγκ) Σωστά.
- Αυτή η τάξη μπορεί να τελειοποιήσει τις μεταβλητές συμβολοσειρών όταν ο δημιουργός δεν χρησιμοποίησε το κείμενο του Netcdf-java (που προσαρτά το char # 0 για να σηματοδοτήσει το τέλος της συμβολοσειράς) .
- Αυτή η κατηγορία είναι καλύτερη στην αντιμετώπιση μεμονωμένων αρχείων που στερούνται ορισμένες μεταβλητές ή διαστάσεις.
- Αυτή η κλάση μπορεί να αφαιρέσει μπλοκ των γραμμών με τις τιμές που λείπουν, όπως ορίζεται για ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Μη ολοκληρωμένα αρχεία πολλαπλών διαστάσεων Array
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
Ομάδα - Δημιουργία συνόλων δεδομένων Xml θα ζητήσει μια ομάδα". Μπορείτε να μπείτε "" για να το έχετε να ψάχνει οποιαδήποτε/όλες τις ομάδες, " μερικά Ομάδα " ή " κάποια ομάδα/κάποια υποομάδα " να ψάξει μια συγκεκριμένη ομάδα, ή \[ ρίζα \] " να έχει την αναζήτηση μόνο η ομάδα ρίζα. Η "Ομάδα" συμβολοσειρά γίνεται<ομάδα> datasets.xml πληροφορίες για το σύνολο δεδομένων (Αν και... \[ ρίζα \] ~ γίνεται ~) .
ΔιαστάσειςCSV -- Δημιουργία συνόλων δεδομένων Xml θα ζητήσει μια "ΔιαστάσειςCSV" συμβολοσειρά. Αυτή είναι μια λίστα των ονομάτων πηγής ενός συνόλου διαστάσεων χωρισμένη με κόμματα. Δημιουργία συνόλων δεδομένων Xml θα διαβάσει μόνο μεταβλητές δεδομένων στο δείγμα .nc αρχεία που χρησιμοποιούν ορισμένες ή όλες αυτές τις διαστάσεις (και καμία άλλη διάσταση) , συν όλες τις κλιμακωτές μεταβλητές στο αρχείο, και να κάνει το σύνολο δεδομένων από αυτές τις μεταβλητές δεδομένων. Εάν μια διάσταση είναι σε μια ομάδα, πρέπει να ορίσετε το πλήρες Name, π.χ., " ομάδαName/διάστασηName ". Εάν δεν προσδιορίσετε τίποτα (άδεια συμβολοσειρά) , Δημιουργία συνόλων δεδομένων Το Xml θα αναζητήσει τις μεταβλητές με τις περισσότερες διαστάσεις, στη θεωρία ότι θα είναι οι πιο ενδιαφέρουσες, αλλά μπορεί να υπάρχουν φορές που θα θέλετε να φτιάξετε ένα σύνολο δεδομένων από κάποια άλλη ομάδα μεταβλητών δεδομένων που χρησιμοποιεί κάποια άλλη ομάδα διαστάσεων. Αν απλά ορίσετε ένα όνομα διάστασης που δεν υπάρχει (Π.χ., NO\_MATCH) , ERDDAP™ Απλά θα βρείτε όλες τις μεταβλητές. Η stringΔιαστάσειςCSV" συμβολοσειρά γίνεται<διαστάσειςCSV> datasets.xml πληροφορίες για το σύνολο δεδομένων.
θεραπείαΔιαστάσεις
Υπάρχει μια κατηγορία άκυρων .nc αρχεία (Γιατί δεν ακολουθούν τους κανόνες της ΚΙ.) που έχουν πολλαπλές διαστάσεις (π. χ., λατ, lon, χρόνος) όταν θα έπρεπε να έχουν χρησιμοποιήσει μόνο μια διάσταση (π.χ. χρόνος) , για παράδειγμα:
dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
lat = 1437 ;
lon = 1437 ;
variables:
double time(time) ;
double lat(lat) ;
double lon(lon) ;
float temperature(time, depth) ;
EDDTableFromMultidimNcFiles έχει ένα ειδικό χαρακτηριστικό για την αντιμετώπιση αυτών των αρχείων: αν προσθέσετε το παγκόσμιο χαρακτηριστικό "treatDimensas" στα σύνολα δεδομένων παγκόσμια addAttributes , μπορείτε να πείτε ERDDAP™ για τη θεραπεία συγκεκριμένων διαστάσεων (π. χ., lat και lon) σαν να ήταν μια άλλη διάσταση (π.χ. χρόνος) . Η τιμή του χαρακτηριστικού στοιχείου πρέπει να είναι ένας χωριστός κατάλογος κόμμα που να προσδιορίζει τις διαστάσεις "από" και στη συνέχεια τη διάσταση " έως", π.χ.,
Τότε... ERDDAP™ θα διαβάσει το αρχείο σαν να ήταν:
dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
variables:
double time(time) ;
double lat(time) ;
double lon(time) ;
float temperature(time, depth) ;
Φυσικά, το σημερινό μέγεθος καθεμιάς από τις διαστάσεις του καταλόγου πρέπει να είναι το ίδιο· διαφορετικά, ERDDAP™ θα αντιμετωπίσει το αρχείο ως ένα "Κακό Αρχείο".
Σημειώστε ότι αυτά τα αρχεία είναι άκυρα επειδή δεν ακολουθούν τους κανόνες ΚΙ. Έτσι, αν και ERDDAP™ Μπορούμε να τα διαβάσουμε, συνιστούμε θερμά να μην δημιουργήσετε αρχεία όπως αυτό, επειδή άλλα εργαλεία λογισμικού που βασίζονται στην CF δεν θα μπορούν να τα διαβάσουν σωστά. Εάν έχετε ήδη τέτοια αρχεία, σας συνιστούμε να τα αντικαταστήσετε με έγκυρα αρχεία το συντομότερο δυνατό.
Πίνακας EDD από αρχείαNc
Πίνακας EDD από αρχείαNc συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία και Ζαρ αρχεία (από την έκδοση 2.25) με διάφορες μεταβλητές, καθεμία με μία κοινή διάσταση (για παράδειγμα, ο χρόνος) ή περισσότερες από μία κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) . Τα αρχεία πρέπει να έχουν τα ίδια ονόματα διαστάσεων. Ένα δοσμένο αρχείο μπορεί να έχει πολλαπλές τιμές για καθεμία από τις διαστάσεις και οι τιμές μπορεί να είναι διαφορετικές σε διαφορετικά αρχεία πηγής. Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με μια πρόσθετη διάσταση (για παράδειγμα, STRING14) . Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Τα αρχεία Zarr έχουν ελαφρώς διαφορετική συμπεριφορά και απαιτούν είτε το αρχείοNameRegex είτε το μονοπάτιRegex να περιλαμβάνει " zarr".
- Εάν η .nc αρχεία χρησιμοποιούν ένα από τα ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) μορφές αρχείων, προσπαθήστε να χρησιμοποιήσετε Πίνακας EDDFromNcCFΑρχεία πριν δοκιμάσω αυτό.
- Για νέα σύνολα δεδομένων πίνακα από .nc αρχεία, δοκιμάστε το νεότερο Πίνακας EDD από αρχεία MultidimNc Πρώτα.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
ΔιαστάσειςCSV -- Δημιουργία συνόλων δεδομένων Xml θα ζητήσει μια "ΔιαστάσειςCSV" συμβολοσειρά. Αυτή είναι μια λίστα των ονομάτων πηγής ενός συνόλου διαστάσεων χωρισμένη με κόμματα. Δημιουργία συνόλων δεδομένων Xml θα βρείτε τις μεταβλητές δεδομένων στο .nc αρχεία που χρησιμοποιούν ορισμένες ή όλες αυτές τις διαστάσεις, συν όλες τις κλιμακωτές μεταβλητές, και κάνουν το σύνολο δεδομένων από αυτές τις μεταβλητές δεδομένων. Εάν δεν προσδιορίσετε τίποτα (άδεια συμβολοσειρά) , Δημιουργία συνόλων δεδομένων Το Xml θα αναζητήσει τις μεταβλητές με τις περισσότερες διαστάσεις, στη θεωρία ότι θα είναι οι πιο ενδιαφέρουσες, αλλά μπορεί να υπάρχουν φορές που θα θέλετε να φτιάξετε ένα σύνολο δεδομένων από κάποια άλλη ομάδα μεταβλητών δεδομένων που χρησιμοποιεί κάποια άλλη ομάδα διαστάσεων.
- 1D Παράδειγμα: Τα αρχεία 1D είναι κάπως διαφορετικά από τα αρχεία 2D, 3D, 4D, ....
- Μπορεί να έχεις ένα σετ .nc αρχεία δεδομένων όπου κάθε αρχείο έχει δεδομένα αξίας ενός μηνός από μια παρασυρόμενη σημαδούρα.
- Κάθε αρχείο θα έχει 1 διάσταση, για παράδειγμα, χρόνο (μέγεθος = \[ πολλά \] ) .
- Κάθε αρχείο θα έχει μία ή περισσότερες μεταβλητές 1D που χρησιμοποιούν αυτή τη διάσταση, για παράδειγμα, χρόνο, γεωγραφικό μήκος, γεωγραφικό πλάτος, θερμοκρασία αέρα, ....
- Κάθε αρχείο μπορεί να έχει μεταβλητές χαρακτήρα 2D, για παράδειγμα, με διαστάσεις (Χρόνος, χαρακτήρες) .
- Παράδειγμα 2D:
- Μπορεί να έχεις ένα σετ .nc αρχεία δεδομένων όπου κάθε αρχείο έχει δεδομένα αξίας ενός μηνός από μια παρασυρόμενη σημαδούρα.
- Κάθε αρχείο θα έχει 2 διαστάσεις, για παράδειγμα, χρόνο (μέγεθος = \[ πολλά \] ) και id (μέγεθος = 1) .
- Κάθε αρχείο θα έχει 2 1D μεταβλητές με τα ίδια ονόματα με τις διαστάσεις και χρησιμοποιώντας την ίδια διάσταση, για παράδειγμα, χρόνο (χρόνος) , id (id) . Αυτές οι μεταβλητές 1D θα πρέπει να περιλαμβάνονται στον κατάλογο< dataVariable > είναι στο XML του συνόλου δεδομένων.
- Κάθε αρχείο θα έχει μία ή περισσότερες 2D μεταβλητές, για παράδειγμα, γεωγραφικό μήκος, γεωγραφικό πλάτος, θερμοκρασία αέρα, θερμοκρασία νερού, ...
- Κάθε αρχείο μπορεί να έχει 3D μεταβλητές χαρακτήρων, για παράδειγμα, με διαστάσεις (Χρόνος, id,nCharacters) .
- 3D Παράδειγμα:
- Μπορεί να έχεις ένα σετ .nc αρχεία δεδομένων όπου κάθε αρχείο έχει δεδομένα αξίας ενός μηνός από μια σταθερή σημαδούρα.
- Κάθε αρχείο θα έχει 3 διαστάσεις, για παράδειγμα, χρόνο (μέγεθος = \[ πολλά \] ) , λατ (μέγεθος = 1) ςδ (μέγεθος = 1) .
- Κάθε αρχείο θα έχει 3 1D μεταβλητές με τα ίδια ονόματα με τις διαστάσεις και χρησιμοποιώντας την ίδια διάσταση, για παράδειγμα, χρόνο (χρόνος) , λατ (λατ) ίνα (ορ οφ κλ) . Αυτές οι μεταβλητές 1D θα πρέπει να περιλαμβάνονται στον κατάλογο< dataVariable > είναι στο XML του συνόλου δεδομένων.
- Κάθε αρχείο θα έχει μία ή περισσότερες 3D μεταβλητές, για παράδειγμα, θερμοκρασία αέρα, θερμοκρασία νερού, ...
- Κάθε αρχείο μπορεί να έχει μεταβλητές χαρακτήρα 4D, για παράδειγμα, με διαστάσεις (Χρόνος, χρόνος, χρόνος, χρόνος, χρόνος) .
- Το όνομα του αρχείου μπορεί να έχει το όνομα της σημαδούρας στο όνομα του αρχείου.
- Παράδειγμα 4D:
- Μπορεί να έχεις ένα σετ .nc αρχεία δεδομένων όπου κάθε αρχείο έχει δεδομένα αξίας ενός μηνός από έναν σταθμό. Σε κάθε χρονική στιγμή, ο σταθμός λαμβάνει ενδείξεις σε μια σειρά από βάθη.
- Κάθε αρχείο θα έχει 4 διαστάσεις, για παράδειγμα, χρόνο (μέγεθος = \[ πολλά \] ) , βάθος (μέγεθος = \[ πολλά \] ) , λατ (μέγεθος = 1) ςδ (μέγεθος = 1) .
- Κάθε αρχείο θα έχει 4 1D μεταβλητές με τα ίδια ονόματα με τις διαστάσεις και χρησιμοποιώντας την ίδια διάσταση, για παράδειγμα, χρόνο (χρόνος) , βάθος (βάθος) , λατ (λατ) ίνα (ορ οφ κλ) . Αυτές οι μεταβλητές 1D θα πρέπει να περιλαμβάνονται στον κατάλογο< dataVariable > είναι στο XML του συνόλου δεδομένων.
- Κάθε αρχείο θα έχει μία ή περισσότερες 4D μεταβλητές, για παράδειγμα, θερμοκρασία αέρα, θερμοκρασία νερού, ...
- Κάθε αρχείο μπορεί να έχει μεταβλητές χαρακτήρα 5D, για παράδειγμα, με διαστάσεις (Χρόνος, βάθος, πλάτος, μήκος, χαρακτήρες) .
- Το όνομα του αρχείου μπορεί να έχει το όνομα της σημαδούρας στο όνομα του αρχείου.
Πίνακας EDDFromNcCFΑρχεία
Πίνακας EDDFromNcCFΑρχεία συγκεντρωτικά δεδομένα συγκεντρωτικά δεδομένα από NetCDF (v3 ή v4) .nc (ή .nc ml ) αρχεία που χρησιμοποιούν μία από τις μορφές αρχείων που καθορίζονται από την ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Συμβάσεις. Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
Για αρχεία που χρησιμοποιούν μία από τις πολυδιάστατες παραλλαγές CF DSG, χρήση Πίνακας EDD από αρχεία MultidimNc Αντ' αυτού.
Οι συμβάσεις CF DSG καθορίζουν δεκάδες μορφές αρχείων και περιλαμβάνουν πολλές μικρές παραλλαγές. Αυτή η τάξη ασχολείται με όλες τις παραλλαγές που γνωρίζουμε, αλλά μπορεί να έχουμε χάσει ένα (ή περισσότερο) . Έτσι, αν αυτή η κατηγορία δεν μπορεί να διαβάσει τα δεδομένα από τα αρχεία σας CF DSG, παρακαλώ αναζήτηση πρόσθετης υποστήριξης .
Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Πίνακας EDDFromNccsvFiles
Πίνακας EDDFromNccsvFiles συγκεντρωτικά δεδομένα από NCCSV Αρχεία ASCII .csv. Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτόν τον τύπο συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε αν ERDDAP™ μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Πότε ERDDAP™ διαβάζει αρχεία δεδομένων NCCSV, αν βρει ένα σφάλμα σε μια δεδομένη γραμμή (π.χ. λανθασμένος αριθμός αντικειμένων) , καταγράφει ένα προειδοποιητικό μήνυμα ("Προειδοποίηση: Κακή γραμμή (α) δεδομένα" ... με κατάλογο των κακών γραμμών σε επόμενες γραμμές) στο αρχείο log.txt και μετά συνεχίζει να διαβάζει το υπόλοιπο αρχείο δεδομένων. Έτσι, είναι δική σας ευθύνη να κοιτάτε περιοδικά (ή να γράψετε ένα σενάριο για να το κάνετε) για το μήνυμα στο ημερολόγιο. txt έτσι ώστε να μπορείτε να διορθώσετε τα προβλήματα στα αρχεία δεδομένων. ERDDAP™ έχει συσταθεί με αυτόν τον τρόπο, ώστε οι χρήστες να μπορούν να συνεχίσουν να διαβάζουν όλα τα διαθέσιμα έγκυρα δεδομένα παρόλο που ορισμένες γραμμές του αρχείου έχουν ελαττώματα.
Πίνακας EDDFromNOS
Πίνακας EDDFromNOS (ΙΔΙΑΙΤΕΡΟ) χειρίζεται τα δεδομένα από ένα NOAA ΝΟS πηγή, η οποία χρησιμοποιεί SOAP+XML για αιτήματα και απαντήσεις. Είναι πολύ συγκεκριμένο NOAA Το XML της NOS. Δείτε το δείγμα EDDTableFromNOS dataset σε σύνολα δεδομένων2.xml.
Πίνακας EDDFromOBIS
Πίνακας EDDFromOBIS χειρίζεται δεδομένα από ένα Ωκεάνιο Σύστημα Βιογεωγραφικών Πληροφοριών (ΟΒΙΣ) εξυπηρετητής (ήτανhttp://www.iobis.org ) . Είναι πιθανό ότι δεν υπάρχουν πλέον ενεργοί servers που χρησιμοποιούν αυτόν τον πλέον ξεπερασμένο τύπο συστήματος εξυπηρετητή OBIS.
- Οι διακομιστές OBIS αναμένουν ένα αίτημα XML και επιστρέφουν μια απάντηση XML.
- Επειδή όλοι οι διακομιστές OBIS εξυπηρετούν τις ίδιες μεταβλητές με τον ίδιο τρόπο (ήτανhttp://iobis.org/tech/provider/questions) , δεν χρειάζεται να καθορίσετε πολλά για να δημιουργήσετε ένα σύνολο δεδομένων OBIS σε ERDDAP .
- Πρέπει να συμπεριλάβετε ένα - creator\_email " χαρακτηριστικό στο παγκόσμιο addAttributes , δεδομένου ότι οι πληροφορίες αυτές χρησιμοποιούνται εντός της άδειας. Μια κατάλληλη διεύθυνση ηλεκτρονικού ταχυδρομείου μπορεί να βρεθεί διαβάζοντας την απάντηση XML από την πηγήURL.
- Μπορεί ή όχι να μπορείτε να πάρετε το παγκόσμιο χαρακτηριστικό [< subsetVariables >] (#υποκαθορισμένες μεταβλητές) να συνεργαστεί με ένα δοσμένο εξυπηρετητή OBIS. Αν προσπαθήσεις, δοκίμασε μια μεταβλητή. (για παράδειγμα, ScientificName ή Genus) .
Πίνακας EDDFromOBIS σκελετός XML
<dataset type="EDDTableFromOBIS" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<sourceCode>...</sourceCode>
<!-- If you read the XML response from the sourceUrl, the
source code (for example, GHMP) is the value from one of the
<resource><code> tags. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<-- All ...SourceMinimum and Maximum tags are OPTIONAL -->
<longitudeSourceMinimum>...</longitudeSourceMinimum>
<longitudeSourceMaximum>...</longitudeSourceMaximum>
<latitudeSourceMinimum>...</latitudeSourceMinimum>
<latitudeSourceMaximum>...</latitudeSourceMaximum>
<altitudeSourceMinimum>...</altitudeSourceMinimum>
<altitudeSourceMaximum>...</altitudeSourceMaximum>
<-- For timeSource... tags, use yyyy-MM-dd'T'HH:mm:ssZ format. -->
<timeSourceMinimum>...</timeSourceMinimum>
<timeSourceMaximum>...</timeSourceMaximum>
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1. This MUST include
"creator\_email" -->
</dataset>
Πίνακας EDDFromParquetFiles
Πίνακας EDDFromParquetFiles χειρίζεται τα δεδομένα από Παρκέ . Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Parquet έχει σχεδιαστεί για να συμπιέζει πολύ αποτελεσματικά, έτσι μπορεί να σας δώσει μικρότερα μεγέθη αρχείων από άλλες μορφές.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Πότε ERDDAP™ διαβάζει τα αρχεία δεδομένων Parquet, αν βρει ένα σφάλμα σε μια δεδομένη γραμμή (π.χ. λανθασμένος αριθμός αντικειμένων) , καταγράφει ένα προειδοποιητικό μήνυμα ("Προειδοποίηση: Κακή γραμμή (α) δεδομένα" ... με κατάλογο των κακών γραμμών σε επόμενες γραμμές) στο αρχείο log.txt και μετά συνεχίζει να διαβάζει το υπόλοιπο αρχείο δεδομένων. Έτσι, είναι δική σας ευθύνη να κοιτάτε περιοδικά (ή να γράψετε ένα σενάριο για να το κάνετε) για το μήνυμα στο ημερολόγιο. txt έτσι ώστε να μπορείτε να διορθώσετε τα προβλήματα στα αρχεία δεδομένων. ERDDAP™ έχει συσταθεί με αυτόν τον τρόπο, ώστε οι χρήστες να μπορούν να συνεχίσουν να διαβάζουν όλα τα διαθέσιμα έγκυρα δεδομένα παρόλο που ορισμένες γραμμές του αρχείου έχουν ελαττώματα.
Πίνακας EDD από SOS
**Πίνακας EDD από SOS ** χειρίζεται δεδομένα από μια υπηρεσία παρατήρησης αισθητήρων (SWE/ SOS ) Διακομιστής.
- Αυτό το σύνολο δεδομένων τύπου συγκεντρωτικά δεδομένα από μια ομάδα σταθμών που εξυπηρετούνται από ένα SOS Διακομιστής.
- Όλοι οι σταθμοί εξυπηρετούν το ίδιο σύνολο μεταβλητών (αν και η πηγή για κάθε σταθμό δεν χρειάζεται να εξυπηρετεί όλες τις μεταβλητές) .
- SOS Οι διακομιστές αναμένουν ένα αίτημα XML και επιστρέφουν μια απάντηση XML.
- Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο. Δεν είναι εύκολο να δημιουργήσετε το σύνολο δεδομένων XML για SOS σύνολα δεδομένων με το χέρι. Για να βρείτε τις απαραίτητες πληροφορίες, πρέπει να επισκεφθείτε sourceUrl +"? υπηρεσία= SOS & Αίτηση= GetCapabilities " σε ένα πρόγραμμα περιήγησης? Κοιτάξτε το XML? Κάντε ένα αίτημα GetObservation με το χέρι? και δείτε την απάντηση XML στο αίτημα.
- Με την περιστασιακή προσθήκη νέων τύπων SOS servers και αλλαγές στους παλιούς servers, γίνεται όλο και πιο δύσκολο για ERDDAP™ για την αυτόματη ανίχνευση του τύπου εξυπηρετητή από τις απαντήσεις του εξυπηρετητή. Η χρήση<soserverType> (με τιμή IOOS\_NDBC, IOOS\_NOS, OOSTethys , ή WHOI) είναι τώρα ΣΤΡΑΤΗΓΟΣ. Αν έχετε προβλήματα με οποιαδήποτε σύνολα δεδομένων αυτού του τύπου, δοκιμάστε την επανέναρξη GenerateDatasets Xml για το SOS Διακομιστής. Δημιουργία Σύνολα δεδομένων Xml θα σας αφήσει να δοκιμάσετε το διαφορετικό<επιλογές sosServerType> μέχρι να βρείτε τη σωστή για ένα δεδομένο διακομιστή.
- SOS επισκόπηση:
- ΣΟΥΗΔΙΑ (Ενεργοποίηση ιστού αισθητήρων) και SOS (Υπηρεσία παρατήρησης αισθητήρων) είναι Πρότυπα OpenGIS® . Αυτή η ιστοσελίδα έχει τα έγγραφα προτύπων.
- Η OGC Υπηρεσίες Διαδικτύου Κοινή Προδιαγραφή ver 1.1.0 ( OGC 06-121r3) καλύπτει την κατασκευή των ερωτήσεων GET και POST (βλέπε τμήμα 7.2.3 και τμήμα 9) .
- Εάν στείλετε ένα αίτημα getCapapabilities xml σε ένα SOS εξυπηρετητής ( sourceUrl + "; υπηρεσία= SOS & Αίτηση= GetCapabilities ") , μπορείτε να πάρετε ένα αποτέλεσμα xml με μια λίστα των σταθμών και την παρατήρηση Ιδιότητες για τις οποίες έχουν δεδομένα.
- Μια παρατηρούμενη ιδιότητα είναι μια επίσημη αναφορά URI σε ένα ακίνητο. Για παράδειγμα, τεφροδόχος: ogc:φαινόμενο: μήκος: wgs84 ήhttps://mmisw.org/ont/cf/parameter/sea\\_water\\_temperature
- Μια παρατηρούμενη ιδιότητα δεν είναι μεταβλητή.
- Περισσότερες από μία μεταβλητές μπορεί να έχουν την ίδια παρατηρηθεί Ιδιότητα (για παράδειγμα, μέσαTemp και έξω Η θερμοκρασία μπορεί να έχει παρατηρηθεί και οι δύο. Ιδιότηταhttps://mmisw.org/ont/cf/parameter/air\\_temperature) .
- Εάν στείλετε ένα αίτημα getObservation xml σε ένα SOS server, μπορείτε να πάρετε ένα αποτέλεσμα xml με περιγραφές των ονομάτων πεδίου στην απάντηση, μονάδες πεδίου, και τα δεδομένα. Τα ονόματα των πεδίων θα περιλαμβάνουν γεωγραφικό μήκος, γεωγραφικό πλάτος, βάθος (Ίσως) και ώρα.
- Κάθε dataVariable για έναν πίνακα EDDFrom SOS πρέπει να περιλαμβάνει ένα χαρακτηριστικό "παρατηρημένοProperty", το οποίο προσδιορίζει το παρατηρούμενοProperty που πρέπει να ζητηθεί από τον εξυπηρετητή για να πάρει αυτή τη μεταβλητή. Συχνά, αρκετά dataVariable s θα απαριθμήσει το ίδιο σύνθετο παρατηρούμενοProperty.
- Ο τύπος δεδομένων για κάθε dataVariable δεν μπορεί να προσδιοριστεί από τον εξυπηρετητή. Εάν ναι, πρέπει να εξετάσετε τις απαντήσεις των δεδομένων XML από τον εξυπηρετητή και να εκχωρήσετε τις κατάλληλες [<Τύπος δεδομένων>s] (#Τύπος δεδομένων) στο ERDDAP™ σύνολο δεδομένων dataVariable ορισμούς.
- (Κατά τη στιγμή της συγγραφής αυτού) μερικά SOS Οι εξυπηρετητές ανταποκρίνονται σε αιτήματα παρατήρησης για περισσότερες από μία παρατηρήσεις Ιδιοκτησία μόλις επιστρέφοντας τα αποτελέσματα για την πρώτη από τις παρατηρούμενες Ιδιότητες. (Κανένα μήνυμα λάθους!) Δείτε το αίτημα παραμέτρου κατασκευαστή Παρατηρήσαμε τις ιδιότητες ξεχωριστά.
- Πίνακας EDD από SOS αυτόματα προσθέτει
station\_id, longitude, latitude
στα καθολικά χαρακτηριστικά του συνόλου δεδομένων όταν δημιουργείται το σύνολο δεδομένων. - SOS Οι εξυπηρετητές συνήθως εκφράζουν μονάδες με το UCUM σύστημα. Περισσότερο ERDDAP™ διακομιστές εκφράζουν μονάδες με το UDUNITS σύστημα. Εάν πρέπει να μετατρέψετε μεταξύ των δύο συστημάτων, μπορείτε να χρησιμοποιήσετε ERDDAP Υπηρεσία ιστού για τη μετατροπή μονάδων UCUM σε / από UDUNITS .
Πίνακας EDD από SOS σκελετός XML
<dataset type="EDDTableFromSOS" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<sosServerType>...</sosServerType> <!-- 0 or 1, but STRONGLY
RECOMMENDED. This lets you specify the type of SOS server
(so ERDDAP™ doesn't have to figure it out).
Valid values are: IOOS\_NDBC, IOOS\_NOS, OOSTethys, and WHOI. -->
<responseFormat>...</responseFormat> <!-- 0 or 1. Use this only if
you need to override the default responseFormat for the
specified sosServerType. -->
<stationIdSourceName>...</stationIdSourceName> <!-- 0 or 1.
Default="station\_id". -->
<longitudeSourceName>...</longitudeSourceName>
<latitudeSourceName>...</latitudeSourceName>
<altitudeSourceName>...</altitudeSourceName>
<altitudeSourceMinimum>...</altitudeSourceMinimum> <!-- 0 or 1 -->
<altitudeSourceMaximum>...</altitudeSourceMaximum> <!-- 0 or 1 -->
<altitudeMetersPerSourceUnit>...</altitudeMetersPerSourceUnit>
<timeSourceName>...</timeSourceName>
<timeSourceFormat>...</timeSourceFormat>
<!-- timeSourceFormat MUST be either
\* For numeric data: a UDUnits\-compatible string (with the format
"units since baseTime") describing how to interpret
source time values (for example,
"seconds since 1970-01-01T00:00:00Z"), where the
base time is an ISO 8601:2004(E) formatted date time
string (yyyy-MM-dd'T'HH:mm:ssZ).
\* For String date time data: specify
units suitable for string times
describing how to interpret string times (for example, the
ISO8601TZ\_FORMAT "yyyy-MM-dd'T'HH:mm:ssZ"). -->
<observationOfferingIdRegex>...</observationOfferingIdRegex>
<!-- Only observationOfferings with IDs (usually the station names)
which match this regular expression (tutorial) will be included
in the dataset (".+" will catch all station names). -->
<requestObservedPropertiesSeparately>true|false(default)
</requestObservedPropertiesSeparately>
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
\* Each dataVariable MUST include the dataType tag.
\* Each dataVariable MUST include the observedProperty attribute.
\* For IOOS SOS servers, \every\ variable returned in the text/csv
response MUST be included in this ERDDAP™ dataset definition. -->
</dataset>
Πίνακας EDD από τα αρχεία Thredds
Πίνακας EDD από τα αρχεία Thredds (αποξηραμένη) συγκεντρωτικά αρχεία δεδομένων με διάφορες μεταβλητές, το καθένα με μία ή περισσότερες κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) , και εξυπηρετείται από ένα ΤΡΙΤΕΣ OPeNDAP εξυπηρετητής .
- Αυτός ο τύπος συνόλου δεδομένων είναι ΙΔΙΑΙΤΕΡΟ . Η νεότερη και πιο γενική λύση είναι η χρήση του κρύπτη Επιλογή FromUrl για τον πίνακα EDD Από αρχεία (ή παραλλαγή) , που κάνει ένα τοπικό αντίγραφο των απομακρυσμένων αρχείων και εξυπηρετεί τα δεδομένα από τα τοπικά αρχεία. Η<Η επιλογή cacheFromUrl> μπορεί να χρησιμοποιηθεί με οποιοδήποτε τύπο αρχείου δεδομένων πίνακα από οποιαδήποτε διαδικτυακή πηγή που δημοσιεύει μια λίστα αρχείων που μοιάζει με κατάλογο. **
Αν δεν μπορείς να το κάνεις να δουλέψει για κάποιο λόγο, στείλε email στον Κρις. Ο Τζον στο Νόαγκοβ. Εάν δεν υπάρχουν καταγγελίες πριν από το 2020, ο συγκεκριμένος τύπος συνόλου δεδομένων μπορεί να αφαιρεθεί. ** - Σας συνιστούμε να χρησιμοποιήσετε το Δημιουργία συνόλων δεδομένων Πρόγραμμα Xml να κάνει ένα πρόχειρο σχέδιο του datasets.xml κομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.
- Στις περισσότερες περιπτώσεις, κάθε αρχείο έχει πολλαπλές τιμές για το αριστερότερο (πρώτη) διάσταση, για παράδειγμα, χρόνος.
- Τα αρχεία συχνά (Αλλά δεν χρειάζεται να) έχουν ενιαία τιμή για τις άλλες διαστάσεις (για παράδειγμα, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) .
- Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με μια πρόσθετη διάσταση (Για παράδειγμα, nCharacters) .
- Οι εξυπηρετητές THREDDS μπορούν να αναγνωριστούν από τους "/thredds/" στις διευθύνσεις URL. Για παράδειγμα,
https://www.ncei.noaa.gov/thredds/catalog/uv/6h\\_strs\\_agg/catalog.html
- THREDDS servers έχουν καταλόγους σε διάφορα μέρη. Αυτή η κατηγορία ΑΠΑΙΤΕΙΤΑΙ ότι το URL περιλαμβάνει "/thredds/catalog/". Συνήθως μπορείτε να βρείτε αυτή τη μεταβλητή ξεκινώντας από ένα πρόγραμμα περιήγησης στον κατάλογο ρίζας, και στη συνέχεια κάνοντας κλικ μέσα από την επιθυμητή υποκαταλογή.
- Αυτή η τάξη διαβάζει τα αρχεία καταλόγου.xml εξυπηρετείται από THREDDS με τις λίστες του<ΚατάλογοςRefs> (αναφορές σε πρόσθετα υπο-αρχεία καταλόγου.xml) και<σύνολο δεδομένων> s (αρχεία δεδομένων) .
- Η<Η ρύθμιση αρχείουDir> αγνοείται. Δεδομένου ότι αυτή η κατηγορία κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, ERDDAP™ αναγκάζει το αρχείο Dir να είναι bigParentΚατάλογος /αντίγραφο/ * datasetID * /.
- Για< sourceUrl >, χρησιμοποιήστε το URL του αρχείου καταλόγου.xml για το σύνολο δεδομένων στον εξυπηρετητή THREDDS, για παράδειγμα: για αυτό το URL που μπορεί να χρησιμοποιηθεί σε ένα πρόγραμμα περιήγησης ιστού, https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.html \[ 2020-10-21 Αυτός ο εξυπηρετητής δεν είναι πλέον αξιόπιστος. \] , χρήση< sourceUrl >https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.xml</ sourceUrl > (Αλλά βάλε το σε μια γραμμή.) .
- Δεδομένου ότι αυτή η κατηγορία πάντα κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, δεν πρέπει ποτέ να τυλίξετε αυτό το σύνολο δεδομένων EDDTableCopy .
- Αυτός ο τύπος συνόλου δεδομένων υποστηρίζει μια ΕΠΙΛΟΓΗ, σπάνια χρησιμοποιείται, ειδική ετικέτα,<ειδικό mode> λειτουργία </specialMode> το οποίο μπορεί να χρησιμοποιηθεί για να καθορίσει ότι οι ειδικοί, σκληροί-κωδικοποιημένοι κανόνες θα πρέπει να χρησιμοποιούνται για τον καθορισμό των αρχείων που πρέπει να λαμβάνονται από τον εξυπηρετητή. Επί του παρόντος, το μόνο έγκυρο λειτουργία είναι το SAMOS που χρησιμοποιείται με σύνολα δεδομένων απόhttps://tds.coaps.fsu.edu/thredds/catalog/samosγια να κατεβάσετε μόνο τα αρχεία με τον τελευταίο αριθμό έκδοσης.
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
- Δείτε τα παραδείγματα 1D, 2D, 3D και 4D για Πίνακας EDD από αρχείαNc .
Πίνακας EDD από WFS Αρχεία
Πίνακας EDD από WFS Αρχεία (ΙΔΙΑΙΤΕΡΟ) κάνει ένα τοπικό αντίγραφο όλων των δεδομένων από ένα ArcGIS Εξυπηρετητής χαρτών WFS διακομιστής έτσι ώστε τα δεδομένα να μπορούν στη συνέχεια να διατηρούνται γρήγορα ERDDAP™ χρήστες.
- Πρέπει να καθορίσετε ένα ειδικά μορφοποιημένο sourceUrl παγκόσμιο χαρακτηριστικό για να πει ERDDAP™ πώς να ζητήσετε πληροφορίες χαρακτηριστικών από το διακομιστή. Παρακαλώ χρησιμοποιήστε αυτό το παράδειγμα ως πρότυπο:
<att name="sourceUrl">http://*someUrl/dir1/dir2*/MapServer/WFSServer?request=GetFeature&service=WFS&typename=aasg:BoreholeTemperature&format="text/xml;%20subType=gml/3.1.1/profiles/gmlsf/1.0.0/0"</att>
(Αλλά βάλε τα όλα σε μια γραμμή.)
- Πρέπει να προσθέσετε μια ειδική παγκόσμια ιδιότητα για να πει ERDDAP™ πώς να προσδιορίσετε τα ονόματα των κομματιών των δεδομένων που πρέπει να μεταφορτωθούν. Αυτό θα λειτουργήσει πιθανώς για όλα τα EDDTableFrom WFS Σειρά δεδομένων αρχείων:
<att name="rowElementXPath">/wfs:FeatureCollection/gml:featureMember</att>
- Δεδομένου ότι αυτή η κατηγορία πάντα κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, δεν πρέπει ποτέ να τυλίξετε αυτό το σύνολο δεδομένων EDDTableCopy .
- Δες αυτή την τάξη, Πίνακας EDD από αρχεία , για πρόσθετες πληροφορίες σχετικά με τον τρόπο λειτουργίας αυτής της κατηγορίας και τον τρόπο χρήσης της.
Πίνακας EDDAggregateRows
Πίνακας EDDAggregateRows μπορεί να δημιουργήσει ένα σύνολο δεδομένων EDDTable από μια ομάδα "παιδί" σύνολα δεδομένων EDDTable.
- Εδώ είναι μερικές χρήσεις για EDDTableAggregateRows:
- Θα μπορούσατε να φτιάξετε ένα σύνολο δεδομένων EDDTableAggregateRows από δύο διαφορετικά είδη αρχείων ή πηγές δεδομένων, για παράδειγμα, ένα σύνολο δεδομένων με δεδομένα μέχρι το τέλος του περασμένου μήνα αποθηκευμένα σε .nc CF αρχεία και ένα σύνολο δεδομένων με δεδομένα για τον τρέχοντα μήνα αποθηκεύονται σε μια βάση δεδομένων σχέση.
- Μπορείτε να κάνετε ένα σύνολο δεδομένων EDDTableAggregateRows για να αντιμετωπίσετε μια αλλαγή στα αρχεία πηγαίου κώδικα (για παράδειγμα, άλλαξε η μορφή του χρόνου ή άλλαξε ένα μεταβλητό όνομα ή δεδομένα Τύπος/ scale\_factor / add\_offset αλλαγμένο) . Σε αυτή την περίπτωση, το ένα παιδί θα έπαιρνε δεδομένα από αρχεία που έγιναν πριν την αλλαγή και το άλλο παιδί θα έπαιρνε δεδομένα από αρχεία που έγιναν μετά την αλλαγή. Αυτή η χρήση του EDDTableAggregateRows είναι μια εναλλακτική από τη χρήση NcML ή NCO . Εκτός και αν υπάρχει ένα διακριτικό χαρακτηριστικό στα ονόματα αρχείων (ώστε να μπορείτε να χρησιμοποιήσετε<αρχείοNameRegex> για να καθορίσετε σε ποιο αρχείο ανήκει το σύνολο δεδομένων για παιδιά), πιθανότατα πρέπει να αποθηκεύσετε τα αρχεία για τα δύο σύνολα δεδομένων για παιδιά σε διαφορετικούς καταλόγους.
- Θα μπορούσατε να φτιάξετε ένα σύνολο δεδομένων EDDTableAggregateRows το οποίο έχει ένα κοινό υποσύνολο μεταβλητών ενός ή περισσότερων παρόμοιων αλλά διαφορετικών συνόλων δεδομένων, για παράδειγμα, ένα σύνολο δεδομένων που κάνει ένα σύνολο δεδομένων προφίλ από το συνδυασμό ενός συνόλου δεδομένων προφίλ, ένα σύνολο δεδομένων TimeSeriesProfile, και ένα σύνολο δεδομένων TrajectoryProfile (που έχουν κάποιες διαφορετικές μεταβλητές και κάποιες κοινές μεταβλητές -- οπότε θα πρέπει να κάνετε ειδικές παραλλαγές για τα σύνολα δεδομένων παιδιών, με μόνο τις κοινές μεταβλητές) .
- Θα μπορούσατε να έχετε πολλά ανεξάρτητα σύνολα δεδομένων, το καθένα με τον ίδιο τύπο δεδομένων αλλά από διαφορετικό σταθμό. Θα μπορούσατε να αφήσετε αυτά τα σύνολα δεδομένων άθικτα, αλλά και να δημιουργήσετε ένα σύνολο δεδομένων EDDTableAggregateRows το οποίο έχει δεδομένα από όλους τους σταθμούς -- κάθε ένα από τα σύνολα δεδομένων παιδιών θα μπορούσε να είναι ένα απλό EDD TableFromErddap , το οποίο υποδεικνύει ένα από τα υπάρχοντα σύνολα δεδομένων του σταθμού. Εάν το κάνετε αυτό, δώστε σε κάθε ένα από τα σύνολα δεδομένων EDDTableFromErddap ένα διαφορετικό datasetID από τα αρχικά αυτόνομα σύνολα δεδομένων, π.χ. με προσθήκη "Παιδί" στο αρχικό datasetID .
- Καθένα από τα παιδιά<σύνολο δεδομένων> πρέπει να είναι ένα πλήρες σύνολο δεδομένων, σαν να ήταν ένα αυτόνομο σύνολο δεδομένων. Ο καθένας πρέπει να έχει το ίδιο dataVariable α , με την ίδια σειρά, με την ίδια destinationName α , δεδομένα Τύποι , missing\_value α , \_FillValues , και μονάδες . Τα μεταδεδομένα για κάθε μεταβλητή για το σύνολο δεδομένων EDDTableAggregateRows προέρχονται από μεταβλητές στο πρώτο σύνολο δεδομένων παιδιών, αλλά EDDTableAggregateRows θα ενημερώσει το actual\_range μεταδεδομένα να είναι το πραγματικό εύρος για όλα τα παιδιά.
- Σύσταση: Πάρτε κάθε ένα από τα σύνολα δεδομένων παιδί λειτουργεί ως αυτόνομα σύνολα δεδομένων. Στη συνέχεια, προσπαθήστε να κάνετε το σύνολο δεδομένων EDDTableAggregateRows με την κοπή και επικόλληση του datasets.xml κομμάτι για κάθε στο νέο EDDTableAggregate Σειρά δεδομένων.
- Προκαθορισμένη σειρά δεδομένων: Η σειρά των συνόλων δεδομένων παιδιών καθορίζει τη συνολική προκαθορισμένη σειρά των αποτελεσμάτων. Φυσικά, οι χρήστες μπορούν να ζητήσουν μια διαφορετική σειρά για ένα δεδομένο σύνολο αποτελεσμάτων με την προσθήκη & orderBy (" κατάλογος μεταβλητών χωρισμένων με κόμματα ") στο τέλος του ερωτήματός τους.
- Η piηγή" παγκόσμιο Χαρακτηριστικά για το EDDTableAggregateRows είναι το συνδυασμένο παγκόσμιοAtributes από το πρώτο σύνολο δεδομένων για παιδιά. Ο πίνακας EDDAggregate Οι σειρές μπορούν να έχουν ένα παγκόσμιο< addAttributes > να παρέχουν πρόσθετα καθολικά χαρακτηριστικά ή να παρακάμπτουν τα καθολικά χαρακτηριστικά πηγής.
Πίνακας EDD Σκελετός γραμμών XML
<dataset type="EDDTableAggregateRows" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- 1 or more -->
</dataset>
EDDTableCopy
EDDTableCopy μπορεί να κάνει ένα τοπικό αντίγραφο πολλών τύπων συνόλων δεδομένων EDDTable και στη συνέχεια να διατηρήσει τα δεδομένα γρήγορα από το τοπικό αντίγραφο.
- EDDTableCopy (και για δεδομένα δικτύου, EDDGrid Αντιγραφή ) είναι πολύ εύκολο στη χρήση και πολύ αποτελεσματικό λύση σε μερικά από τα μεγαλύτερα προβλήματα με την εξυπηρέτηση δεδομένων από απομακρυσμένες πηγές δεδομένων:
- Η πρόσβαση σε δεδομένα από μια απομακρυσμένη πηγή δεδομένων μπορεί να είναι αργή.
- Μπορεί να είναι αργοί επειδή είναι εγγενώς αργοί (Για παράδειγμα, ένας αναποτελεσματικός τύπος εξυπηρετητή) ,
- επειδή είναι καταβεβλημένοι από πάρα πολλά αιτήματα,
- ή επειδή ο διακομιστής σας ή ο απομακρυσμένος εξυπηρετητής είναι περιορισμένος.
- Το απομακρυσμένο σύνολο δεδομένων είναι μερικές φορές μη διαθέσιμο (και πάλι, για διάφορους λόγους) .
- Βασιζόμενοι σε μια πηγή για τα δεδομένα δεν κλιμακώνεται καλά (για παράδειγμα, όταν πολλοί χρήστες και πολλοί ERDDAP Το χρησιμοποιείς.) .
- Η πρόσβαση σε δεδομένα από μια απομακρυσμένη πηγή δεδομένων μπορεί να είναι αργή.
- Πώς λειτουργεί -- το EDDTableCopy λύνει αυτά τα προβλήματα κάνοντας αυτόματα και διατηρώντας ένα τοπικό αντίγραφο των δεδομένων και εξυπηρετώντας δεδομένα από το τοπικό αντίγραφο. ERDDAP™ μπορεί να εξυπηρετήσει τα δεδομένα από το τοπικό αντίγραφο πολύ, πολύ γρήγορα. Και η δημιουργία και η χρήση ενός τοπικού αντιγράφου ανακουφίζει το βάρος στον απομακρυσμένο εξυπηρετητή. Και το τοπικό αντίγραφο είναι ένα αντίγραφο ασφαλείας του πρωτότυπου, το οποίο είναι χρήσιμο σε περίπτωση που συμβεί κάτι στο πρωτότυπο.
Δεν υπάρχει τίποτα νέο στην κατασκευή ενός τοπικού αντιγράφου ενός συνόλου δεδομένων. Αυτό που είναι καινούργιο εδώ είναι ότι αυτή η τάξη το κάνει\*Ήρεμα.\*να δημιουργήσει και\*διατήρηση\*ένα τοπικό αντίγραφο δεδομένων από ένα\*ποικιλία\*των τύπων απομακρυσμένων πηγών δεδομένων και\*προσθήκη μεταδεδομένων\*αντιγράφοντας τα δεδομένα.
EDDTableCopy έναντι<cacheFromUrl>·
<cacheFromUrl> είναι μια εναλλακτική λύση για EDDTableCopy. Δουλεύουν διαφορετικά.
- Πίνακας EDD Αντιγραφή έργων ζητώντας κομμάτια δεδομένων από μια απομακρυσμένη υπηρεσία και αποθηκεύοντας αυτά τα κομμάτια σε τοπικά αρχεία. Έτσι, το EDDTableCopy είναι χρήσιμο σε ορισμένες περιπτώσεις όπου τα δεδομένα είναι προσβάσιμα μέσω απομακρυσμένης υπηρεσίας.
- [<cacheFromUrl>] (#Cachefromurl Από τον ουρανό) κατεβάζει τα υπάρχοντα αρχεία που αναφέρονται σε μια απομακρυσμένη ιστοσελίδα.<cheapFromUrl> είναι πιο εύκολο στη χρήση και πιο αξιόπιστο, δεδομένου ότι μπορεί εύκολα να πει πότε υπάρχει ένα νέο απομακρυσμένο αρχείο δεδομένων ή πότε ένα απομακρυσμένο αρχείο δεδομένων έχει αλλάξει και έτσι πρέπει να μεταφορτωθεί.
Εάν υπάρχουν καταστάσεις όπου EDDTableCopy ή<μπορεί να χρησιμοποιηθεί, χρήση<cacheFromUrl> επειδή είναι ευκολότερη και πιο αξιόπιστη.
<εκχύλισμαDestination Ονομασίες & gt·
Πίνακας EDD Αντιγραφή κάνει το τοπικό αντίγραφο των δεδομένων ζητώντας κομμάτια δεδομένων από το απομακρυσμένο σύνολο δεδομένων. Πίνακας EDD Αντιγραφή καθορίζει ποια κομμάτια να ζητήσετε από το &distinct () τιμές για το<εξαγωγήDestinationNames> (που καθορίζονται στο datasets.xml , βλέπε παρακάτω) , τα οποία είναι τα ονόματα των μεταβλητών προορισμού χωρισμένου χώρου στο σύνολο απομακρυσμένων δεδομένων. Για παράδειγμα,
<extractDestinationNames>drifter profile</extractDestinationNames>
μπορεί να αποφέρει διακριτές τιμές συνδυασμούς του drinder=tig17,profile=1017, drinder=tig17,profile=1095, ... drinder=une12,profile=1223, drinder=une12,profile=1251, ....
Σε περιπτώσεις όπου μία στήλη (για παράδειγμα, προφίλ) μπορεί να είναι το μόνο που απαιτείται για τον μοναδικό προσδιορισμό μιας ομάδας σειρών δεδομένων, εάν υπάρχει ένας πολύ μεγάλος αριθμός, για παράδειγμα, προφίλ, μπορεί να είναι χρήσιμο να προσδιοριστεί επίσης ένα πρόσθετο απόσπασμα Προορισμός Όνομα (για παράδειγμα, περιπλανώμενος) που χρησιμεύει για να υποδιαιρέσει τα προφίλ. Αυτό οδηγεί σε λιγότερα αρχεία δεδομένων σε ένα δεδομένο κατάλογο, το οποίο μπορεί να οδηγήσει σε ταχύτερη πρόσβαση.
Τοπικά αρχεία
Κάθε κομμάτι δεδομένων αποθηκεύεται σε ένα ξεχωριστό NetCDF αρχείο σε έναν υποκατάλογο bigParentΚατάλογος /αντίγραφο/ * datasetID * / (όπως προσδιορίζεται στο setup.xml ) . Υπάρχει ένα επίπεδο υποκαταλόγου για όλους εκτός από το τελευταίο απόσπασμαDestinationName. Για παράδειγμα, τα δεδομένα για το tig17+1017, θα αποθηκευτούν στο bigParentΚατάλογος /αντιγραφή/δείγμα συνόλου δεδομένων/tig17/1017 .nc . Για παράδειγμα, τα δεδομένα για το une12+1251, θα αποθηκευτούν στο bigParentΚατάλογος /αντιγραφή/δείγμα συνόλου δεδομένων/une12/1251 .nc . Τα ονόματα καταλόγου και αρχείων που δημιουργούνται από τις τιμές δεδομένων τροποποιούνται ώστε να είναι ασφαλή από το όνομα αρχείου (για παράδειγμα, τα κενά αντικαθίστανται από "x20") -- αυτό δεν επηρεάζει τα πραγματικά δεδομένα.
Νέα δεδομένα
Κάθε φορά EDDTable Αντιγραφή επαναφορτώνεται, ελέγχει το απομακρυσμένο σύνολο δεδομένων για να δείτε τι διακριτά κομμάτια είναι διαθέσιμα. Εάν το αρχείο για ένα κομμάτι των δεδομένων δεν υπάρχει ήδη, μια αίτηση για να πάρει το κομμάτι προστίθεται σε μια ουρά. ERDDAP Η εργασίαThread επεξεργάζεται όλα τα αιτήματα ουράς για κομμάτια δεδομένων, ένα προς ένα. Μπορείτε να δείτε στατιστικά στοιχεία για τη δραστηριότητα του έργουThread σχετικά με το Σελίδα κατάστασης και στην Ημερήσια έκθεση . (Ναι. ERDDAP™ θα μπορούσε να αναθέσει πολλαπλές εργασίες σε αυτή τη διαδικασία, αλλά αυτό θα χρησιμοποιούσε πολλά από το εύρος ζώνης της απομακρυσμένης πηγής δεδομένων, τη μνήμη, και το χρόνο ΚΜΕ, και πολλά από τα τοπικά ERDDAP Το εύρος ζώνης, η μνήμη και ο χρόνος ΚΜΕ, καμία από τις οποίες δεν είναι καλή ιδέα.)
ΣΗΜΕΙΩΣΗ: Η πρώτη φορά που ένα EDDTableCopy φορτώνεται, (Αν όλα πάνε καλά) Πολλά αιτήματα για κομμάτια δεδομένων θα προστεθούν στην ουρά του taskThread, αλλά δεν θα έχουν δημιουργηθεί τοπικά αρχεία δεδομένων. Έτσι ο κατασκευαστής θα αποτύχει αλλά taskThread θα συνεχίσει να λειτουργεί και να δημιουργήσει τοπικά αρχεία. Αν όλα πάνε καλά, η εργασίαThread θα κάνει κάποια τοπικά αρχεία δεδομένων και την επόμενη προσπάθεια για την επαναφόρτωση του συνόλου δεδομένων (σε ~15 λεπτά) θα επιτύχει, αλλά αρχικά με πολύ περιορισμένο αριθμό δεδομένων.
ΣΗΜΕΙΩΣΗ: Αφού το τοπικό σύνολο δεδομένων έχει κάποια δεδομένα και εμφανίζεται στο δικό σας ERDDAP , εάν το απομακρυσμένο σύνολο δεδομένων είναι προσωρινά ή μόνιμα μη προσβάσιμο, το τοπικό σύνολο δεδομένων θα εξακολουθεί να λειτουργεί.
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Εάν το απομακρυσμένο σύνολο δεδομένων είναι μεγάλο ή/και ο απομακρυσμένος εξυπηρετητής είναι αργός (Αυτό δεν είναι το πρόβλημα;) , θα πάρει πολύ χρόνο για να κάνει ένα πλήρες τοπικό αντίγραφο. Σε ορισμένες περιπτώσεις, ο χρόνος που απαιτείται θα είναι απαράδεκτος. Για παράδειγμα, διαβίβαση 1 TB δεδομένων σε γραμμή T1 (0.15 GB/s) παίρνει τουλάχιστον 60 ημέρες, υπό τις καλύτερες συνθήκες. Επιπλέον, χρησιμοποιεί πολύ εύρος ζώνης, μνήμης και χρόνου CPU στους απομακρυσμένους και τοπικούς υπολογιστές. Η λύση είναι να στείλετε ένα σκληρό δίσκο στον διαχειριστή του απομακρυσμένου συνόλου δεδομένων έτσι ώστε s/he μπορεί να κάνει ένα αντίγραφο του συνόλου δεδομένων και να στείλει το σκληρό δίσκο πίσω σε σας. Χρησιμοποιήστε αυτά τα δεδομένα ως σημείο εκκίνησης και EDDTableCopy θα προσθέσετε δεδομένα σε αυτό. (Αυτό είναι το πώς EC2 Cloud Service της Amazon χρησιμοποιείται για την αντιμετώπιση του προβλήματος, παρόλο που το σύστημά τους έχει μεγάλο εύρος ζώνης.)
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Εάν ένας δοσμένος συνδυασμός τιμών εξαφανίζεται από ένα απομακρυσμένο σύνολο δεδομένων, το EDDTableCopy ΔΕΝ διαγράφει το τοπικό αντιγραφόμενο αρχείο. Αν θέλετε, μπορείτε να το διαγράψετε μόνοι σας.
ΠίνακαςCopy<ΈλεγχοςSourceData>·
Η datasets.xml για αυτό το σύνολο δεδομένων μπορεί να έχει μια προαιρετική ετικέτα
<checkSourceData>true</checkSourceData>
Η προκαθορισμένη τιμή είναι αληθινή. Αν/όταν το ρυθμίσετε σε ψευδή, το σύνολο δεδομένων δεν θα ελέγξει ποτέ το σύνολο δεδομένων πηγής για να δείτε αν υπάρχουν πρόσθετα διαθέσιμα δεδομένα.
Συνιστώμενη χρήση
- Δημιουργία του<σύνολο δεδομένων> καταχώρηση (ο ντόπιος τύπος, όχι το EDDTableCopy) για την απομακρυσμένη πηγή δεδομένων. Να λειτουργήσει σωστά, συμπεριλαμβανομένων όλων των επιθυμητών μεταδεδομένων.
- Αν είναι πολύ αργό, προσθέστε κώδικα XML για να το τυλίξετε σε ένα σύνολο δεδομένων EDDTableCopy.
- Χρήση διαφορετικής datasetID (Ίσως με την αλλαγή του datasetID των παλαιών datasetID ελαφρά) .
- Αντιγραφή του<προσβάσιμη Στο>,<επαναφόρτωσηEveryNminutes> και<onChange> από το απομακρυσμένο XML του EDDTable στο XML του EDDTableCopy. (Οι τιμές τους για την ύλη EDDTableCopy· οι τιμές τους για το εσωτερικό σύνολο δεδομένων γίνονται άνευ σημασίας.)
- Δημιουργία του<εκχύλισμαDestinationNames> tag (βλ. παραπάνω) .
- <orderExtractBy> είναι μια λίστα μεταβλητών ονομάτων προορισμών. Όταν κάθε κομμάτι δεδομένων μεταφορτώνεται από τον απομακρυσμένο εξυπηρετητή, το κομμάτι θα ταξινομηθεί από αυτές τις μεταβλητές (με την πρώτη μεταβλητή, στη συνέχεια με τη δεύτερη μεταβλητή εάν η πρώτη μεταβλητή είναι δεμένη, ...) . Σε ορισμένες περιπτώσεις, ERDDAP™ θα είναι σε θέση να εξάγει τα δεδομένα γρηγορότερα από τα τοπικά αρχεία δεδομένων, εάν η πρώτη μεταβλητή στη λίστα είναι μια αριθμητική μεταβλητή ( "time" μετρά ως αριθμητική μεταβλητή) . Αλλά επιλέξτε αυτές τις μεταβλητές με τρόπο κατάλληλο για το σύνολο δεδομένων.
- ERDDAP™ θα κάνει και θα διατηρήσει ένα τοπικό αντίγραφο των δεδομένων.
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Το EDDTableCopy υποθέτει ότι οι τιμές δεδομένων για κάθε κομμάτι δεν αλλάζουν ποτέ. Αν/όταν το κάνουν, θα πρέπει να διαγράψετε χειροκίνητα τα αρχεία κομματιών στο bigParentΚατάλογος /αντίγραφο/ * datasetID * / που άλλαξε και σημαία το σύνολο δεδομένων που θα επαναφορτωθεί ώστε να αντικατασταθούν τα διαγραμμένα κομμάτια. Εάν έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα λάβετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά επαναφορτίζει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
- Τροποποίηση μεταδεδομένων -- Εάν χρειαστεί να αλλάξετε κάποια addAttributes ή να αλλάξει τη σειρά των μεταβλητών που συνδέονται με το σύνολο δεδομένων πηγής:
- Αλλαγή του addAttributes για το σύνολο δεδομένων πηγής στο datasets.xml , όπως χρειάζεται.
- Διαγράψτε ένα από τα αντιγραφέντα αρχεία.
- Ορισμός α σημαία να επαναφορτώσει το σύνολο δεδομένων αμέσως. Εάν χρησιμοποιείτε μια σημαία και έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα πάρετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά φορτώνει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
- Το διαγραμμένο αρχείο θα αναγεννηθεί με τα νέα μεταδεδομένα. Εάν το σύνολο δεδομένων πηγής δεν είναι ποτέ διαθέσιμο, το σύνολο δεδομένων EDDTableCopy θα πάρει μεταδεδομένα από το αναγεννημένο αρχείο, δεδομένου ότι είναι το νεότερο αρχείο.
- EDDGrid Αντιγραφή είναι πολύ παρόμοια με EDDTableCopy, αλλά λειτουργεί με πλέγμα σύνολα δεδομένων.
EDDTableCopy σκελετός XML
<dataset type="EDDTableCopy" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<extractDestinationNames>...</extractDestinationNames> <!-- 1 -->
<orderExtractBy>...</orderExtractBy> <!-- 0 or 1 -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or false
(the default)) -->
<checkSourceData>...</checkSourceData> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1 -->
</dataset>
-
- Ναι.
Λεπτομέρειες
Ακολουθούν λεπτομερείς περιγραφές κοινών ετικετών και ιδιοτήτων.
<γωνιακή DegreeUnits>·
- [ ** <angularDegreeUnits> ** ] (#γωνιακές μονάδες μοιρών) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml που περιέχει μια λίστα χωρισμένων με κόμματα συμβολοσειρών μονάδων που ERDDAP™ θα πρέπει να αντιμετωπίζεται ως γωνιακές μονάδες μοιρών. Εάν μια μεταβλητή έχει μία από αυτές τις μονάδες, tabledap Σ orderByMean το φίλτρο θα υπολογίσει το μέσο με ειδικό τρόπο, στη συνέχεια να αναφέρει το μέσο ως τιμή από -180 έως 180. Βλέπεις; ERDDAP Το αρχείο πηγαίου κώδικα EDStatic.java για την τρέχουσα προκαθορισμένη λίστα. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<γωνιακή DegreeTrueUnits>·
- [ ** <γωνιακή ΒαθμόςTrueUnits> ** ] (#γωνιακές μονάδες) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml που περιέχει μια λίστα χωρισμένων με κόμματα συμβολοσειρών μονάδων που ERDDAP™ θα πρέπει να αντιμετωπίζεται ως γωνιακές μοίρες πραγματικές μονάδες. Εάν μια μεταβλητή έχει μία από αυτές τις μονάδες, tabledap Σ orderByMean το φίλτρο θα υπολογίσει τον μέσο όρο με ειδικό τρόπο, και στη συνέχεια θα αναφέρει τον μέσο όρο ως τιμή από 0 έως 360. Βλέπεις; ERDDAP Το πηγαίο αρχείο EDStatic.java για την τρέχουσα προκαθορισμένη λίστα. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<commonStandardNames>·
- [ ** <κοινό πρότυποNames> ** ] (#κοινά τυποποιημένα ονόματα) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για τον καθορισμό μιας λίστας χωρισμένων με κόμματα Τυπικές ονομασίες CF . Π.χ.,
<commonStandardNames>air\\_pressure, ..., wind\\_to\\_direction</commonStandardNames>
Αυτή η λίστα χρησιμοποιείται στο DataProviderForm3.html ως ευκολία για τους χρήστες. Εάν θέλετε να παράσχετε αυτές τις πληροφορίες datasets.xml , ξεκινήστε με αντιγραφή της τρέχουσας προκαθορισμένης λίστας<ΕΠΑΓΓΕΛΜΑΤΙΚΟ\_commonStandardNames> μέσα ERDDAP Σ \[ τομκάτ \] /webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/messages.xml αρχείο.
<λανθάνουσα μνήμηMinutes>·
- [ ** <cheapMinutes> ** ] (#Cachementers) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για τον προσδιορισμό της ηλικίας (σε λεπτά) στα οποία τα αρχεία της λανθάνουσας μνήμης πρέπει να διαγραφούν (προεπιλογή=60) . Π.χ.,
<cacheMinutes>60</cacheMinutes>
Γενικά, μόνο αρχεία εικόνας (γιατί οι ίδιες εικόνες συχνά ζητούνται επανειλημμένα) και .nc αρχεία (επειδή πρέπει να δημιουργηθούν πλήρως πριν από την αποστολή στον χρήστη) είναι κρυμμένες. Αν και μπορεί να φαίνεται ότι ένα δεδομένο αίτημα πρέπει πάντα να επιστρέφει την ίδια απάντηση, αυτό δεν είναι αλήθεια. Για παράδειγμα, α tabledap αίτημα που περιλαμβάνει χρόνο> μερικά Χρόνος θα αλλάξει όταν νέα δεδομένα φτάσουν για το σύνολο δεδομένων. Και ένα αίτημα που περιλαμβάνει \[ τελευταίο \] για τη χρονική διάσταση θα αλλάξει όταν νέα δεδομένα φθάνουν για το σύνολο δεδομένων. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<λανθάνουσα μνήμηClearMinutes>
- [ ** <λανθάνουσα μνήμηClearMinutes> ** ] (#cacheclear λεπτά) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για να καθορίσετε τη συχνότητα για τον έλεγχο των αποθηκευμένων αρχείων και την αφαίρεση παλαιών (σε λεπτά) (προεπιλογή=15) . Π.χ.,
<cacheClearMinutes>15</cacheClearMinutes>
Όταν ο διακομιστής τελειώσει το χειρισμό μιας αίτησης θα ελέγξει πόσο καιρό πριν η τελευταία κρύπτη σαφής ήταν. Αν ήταν πολύ καιρό πριν, θα περιμένει μια εργασία στο TaskThread για να καθαρίσει την κρύπτη. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Αυτό μπορεί να προσδιοριστεί στο setup.xml, αλλά αυτό αποθαρρύνεται.
<μετατροπή InterpolateRequestCSVEXample>·
- [ ** <μετατροπήInterpolateRequestCSVEXample> ** ] (#convert interpolate requestcsvexample) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml \[ αρχίζοντας με ERDDAP™ v2.10 \] που περιέχει ένα παράδειγμα που θα εμφανιστεί στην ιστοσελίδα του μετατροπέα Interpolate. Η προκαθορισμένη τιμή είναι: jplMU RSS T41/αναλύθηκε\_ sst /Bilinear/4 .
<μετατροπήInterpolateDatasetIDVariableList>·
- [ ** <μετατροπήInterpolateDatasetIDVariableList> ** ] (#convertinterpolatedatasetidvarariable list) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml \[ αρχίζοντας με ERDDAP™ v2.10 \] που περιέχει έναν κατάλογο CSV datasetID /μεταβλητή Παραδείγματα ονομάτων που θα χρησιμοποιηθούν ως προτάσεις από την ιστοσελίδα του μετατροπέα Interpolate. Η προκαθορισμένη τιμή είναι: jplMU RSS T41/αναλύθηκε\_ sst .
<μετατροπήToPublicSourceUrl>?
- [ ** <μετατρέπουν σε Δημόσια ΠηγήUrl> ** ] (#μετατροπή σε δημόσια πηγή) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml που περιέχει ένα "από" και ένα " σε" χαρακτηριστικό που καθορίζει πώς να μετατρέψετε ένα αντίστοιχο τοπικό sourceUrl (συνήθως έναν αριθμό IP) σε ένα κοινό sourceUrl (ένα όνομα τομέα) . "από" πρέπει να έχει το έντυπο " \[ Κάτι. \] // \[ Κάτι. \] /". Μπορεί να υπάρχουν 0 ή περισσότερες από αυτές τις ετικέτες. Για περισσότερες πληροφορίες βλ. [< sourceUrl >] (#πηγή) . Για παράδειγμα,
<convertToPublicSourceUrl from="https://192.168.31.18/" to="https://oceanwatch.pfeg.noaa.gov/" />
θα προκαλέσει ένα αντίστοιχο τοπικό sourceUrl (όπωςhttps://192.168.31.18/thredds/dodsC/satellite/BA/ssta/5day)
σε ένα κοινό sourceUrl (https://oceanwatch.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day) .
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
Αλλά, για λόγους ασφαλείας και λόγους που σχετίζονται με το σύστημα συνδρομής, Μην χρησιμοποιείς αυτή την ταγκ!
Αντ 'αυτού, να χρησιμοποιείτε πάντα το όνομα δημόσιου τομέα στο< sourceUrl > ετικέτα και χρήση του Πίνακας /etc/hosts στον server σας για τη μετατροπή τοπικών ονομάτων τομέα σε αριθμούς IP χωρίς τη χρήση ενός διακομιστή DNS. Μπορείτε να ελέγξετε αν ένα όνομα τομέα μετατρέπεται σωστά σε αριθμό IP χρησιμοποιώντας:
ping μερικά.domain.name
δεδομένα: εικόνα/png; base64,
- Όταν ένας χρήστης ζητά .htmlTable ανταπόκριση από ERDDAP™ , εάν τα δεδομένα σε ένα κελί συμβολοσειρών περιέχουν δεδομένα: εικόνα/png; base64, ακολουθούμενη από μια κωδικοποιημένη εικόνα βάσης64.png, ERDDAP™ θα εμφανίσει ένα εικονίδιο (ώστε ο χρήστης να μπορεί να δει την εικόνα αν αιωρούνται από πάνω του) και κουμπιά για να αποθηκεύσετε το κείμενο ή την εικόνα στο πρόχειρο. Αυτό το χαρακτηριστικό προστέθηκε στο ERDDAP™ v2.19 του Μάρκο Άλμπα.
drawLandMask
- ** drawLandMask ** προσδιορίζει την προκαθορισμένη ρύθμιση που ελέγχει πότε και πώς πρέπει να σύρεται η μάσκα εδάφους όταν ERDDAP™ σχεδιάζει ένα χάρτη. Μπορεί να προσδιοριστεί σε τρία διαφορετικά μέρη datasets.xml (που αναφέρονται από τη χαμηλότερη έως την υψηλότερη προτεραιότητα) :
- Εάν drawLandMask ορίζεται εντός<erddapDatasets> (δεν συνδέεται με κανένα συγκεκριμένο σύνολο δεδομένων) , τότε καθορίζει την προκαθορισμένη τιμή του drawLandMask για όλες τις μεταβλητές σε όλα τα σύνολα δεδομένων. Για παράδειγμα,
<drawLandMask>under</drawLandMask>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP ανάγνωση datasets.xml . Αν αυτή η ετικέτα δεν είναι παρούσα, η υποκείμενη προκαθορισμένη τιμή είναι κάτω. 2. Εάν drawLandMask ορίζεται ως ένα παγκόσμιο χαρακτηριστικό ενός δεδομένου συνόλου δεδομένων, στη συνέχεια, καθορίζει την προκαθορισμένη τιμή του drawLandMask για όλες τις μεταβλητές σε αυτό το σύνολο δεδομένων, υπερισχύοντας κάθε ρύθμιση χαμηλότερης προτεραιότητας. Για παράδειγμα,
<att name="drawLandMask">under</att>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ επαναφορτώνει το σύνολο δεδομένων. 3. Εάν drawLandMask καθορίζεται ως χαρακτηριστικό μιας μεταβλητής σε ένα δεδομένο σύνολο δεδομένων, τότε καθορίζει την προκαθορισμένη τιμή του drawLandMask για τη μεταβλητή αυτή στο εν λόγω σύνολο δεδομένων, που υπερισχύει οποιασδήποτε ρύθμισης χαμηλότερης προτεραιότητας. Για παράδειγμα,
<att name="drawLandMask">under</att>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ επαναφορτώνει το σύνολο δεδομένων.
Ένας χρήστης μπορεί να παρακάμψει την προκαθορισμένη (όπου καθορίζεται) επιλέγοντας μια τιμή για "Draw land mask" από μια dropdown λίστα στην ιστοσελίδα του συνόλου δεδομένων Make A Graph, ή με την ενσωμάτωση &.land= τιμή στο URL που ζητά ένα χάρτη από ERDDAP .
Σε όλες τις περιπτώσεις, υπάρχουν 4 πιθανές τιμές για το χαρακτηριστικό γνώρισμα:
- " κάτω από" αντλεί τη μάσκα πριν αντλεί δεδομένα στο χάρτη. Για τα πλέγματα δεδομένων, η γη εμφανίζεται ως ένα σταθερό ανοιχτό γκρι χρώμα. Για τα σύνολα δεδομένων πίνακα, "κάτω- δείχνει τα δεδομένα τοπογραφίας πάνω από τη γη και τους ωκεανούς.
- "Πάνω" -- Για τα πλέγματα σύνολα δεδομένων, "over" αντλεί τη μάσκα της γης αφού αντλεί δεδομένα σε χάρτες, έτσι ώστε να συγκαλύψει οποιαδήποτε δεδομένα πάνω από τη γη. Για τα σύνολα δεδομένων πίνακα, "over" δείχνει λουτρομετρία του ωκεανού και ένα σταθερό φως γκρι όπου υπάρχει γη, και τα δύο σύρονται κάτω από τα δεδομένα.
- "αpiογείωση" αpiοτελεί το piλαίσιο τη μάσκα, των piολιτικών ορίων, των λιμνών και των piοταών.
- "Δεν τραβάει τίποτα.
<ηλεκτρονικό ταχυδρομείοΔιαγνωστικάToErdData>?
- [ ** <emailΔιαγνωστικάToErdData> ** ] (#emaildiagnosticstoerddata) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml . Η τιμή της ετικέτας μπορεί να είναι αληθινή (το προκαθορισμένο) ή λάθος. Αν είναι αλήθεια, ERDDAP™ θα στείλει με email το ίχνος της στοίβας στον Κρις. Τζον στο Νόα. κυβέρνηση (το ERDDAP™ ομάδα ανάπτυξης) . Αυτό θα πρέπει να είναι ασφαλές και ασφαλές, δεδομένου ότι δεν εμπιστευτικές πληροφορίες (π.χ. το αίτημαUrl) περιλαμβάνεται στο email. Αυτό θα πρέπει να κάνει δυνατή την σύλληψη τυχόν ασαφή, εντελώς απροσδόκητα σφάλματα που οδηγούν σε NullPointerExceptions. Διαφορετικά, ο χρήστης βλέπει τις εξαιρέσεις, αλλά η ERDDAP™ Ομάδα ανάπτυξης δεν κάνει (Οπότε δεν ξέρουμε αν υπάρχει πρόβλημα που πρέπει να διορθωθεί.) .
<γράφημαBackgroundColor>
- [ ** <γράφημαBackgroundColor> ** ] (#graphbackgroundcolor) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για να καθορίσετε το προκαθορισμένο χρώμα φόντου στα γραφήματα. Αυτό επηρεάζει σχεδόν όλα τα γραφήματα. Υπάρχουν μερικές καταστάσεις που δεν επηρεάζονται. Το χρώμα προσδιορίζεται ως δεκαεξαδική τιμή 8 ψηφίων με τη μορφή 0xAARRGGBB, όπου AA, RR, GG, και BB είναι τα αδιαφανή, κόκκινα, πράσινα και μπλε συστατικά, αντίστοιχα. "0x" είναι ευαίσθητη περίπτωση, αλλά τα δεκαεξαδικά ψηφία δεν είναι ευαίσθητα περίπτωση. Για παράδειγμα, ένα πλήρως αδιαφανές (ff) πρασινωπό-μπλε χρώμα με κόκκινο=22, πράσινο=88, μπλε=ee θα ήταν 0xff2288ee. Το αδιαφανές λευκό είναι 0xffffffff. Το προεπιλεγμένο είναι αδιαφανές γαλάζιο (0xffccccff (στα Αγγλικά)) , το οποίο έχει το πλεονέκτημα να είναι διαφορετικό από το λευκό, το οποίο είναι ένα σημαντικό χρώμα σε πολλές παλέτες που χρησιμοποιούνται για την κατάρτιση δεδομένων. Για παράδειγμα,
<graphBackgroundColor>0xffffffff</graphBackgroundColor>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<ipAddressMaxRequests>·
- [ ** <ipAddressMaxΑιτήσεις> ** ] (#ipaddressmax αιτήσεις) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη με ERDDAP™ v2.12) μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml Αυτό αποτελεί μέρος ενός συστήματος περιορισμού της ικανότητας υπερβολικά επιθετικών νόμιμων χρηστών και κακόβουλων χρηστών να κάνουν μεγάλο αριθμό ταυτόχρονων αιτημάτων που θα υποβαθμίσουν την απόδοση του συστήματος για άλλους χρήστες. ipΔιεύθυνση Το MaxRequests καθορίζει τον μέγιστο αριθμό ταυτόχρονων αιτημάτων που θα γίνουν αποδεκτά από οποιαδήποτε συγκεκριμένη διεύθυνση IP. Επιπλέον αιτήματα θα λάβουν ένα σφάλμα HTTP 429: Πάρα πολλά αιτήματα. Τα μικρά, στατικά αρχεία σε erddap/download/ και erddap/images/ ΔΕΝ εξαιρούνται από αυτόν τον αριθμό. Η προεπιλογή είναι 15. Το μέγιστο επιτρεπόμενο είναι 1000, το οποίο είναι τρελό ψηλά -- μην το κάνεις! ERDDAP™ δεν θα δεχτεί έναν αριθμό λιγότερο από 6 επειδή πολλοί νόμιμοι χρήστες (κυρίως περιηγητές ιστού και WMS πελάτες) να καλύπτει μέχρι 6 αιτήματα κάθε φορά. Η ERDDAP™ Η Καθημερινή Αναφορά και οι παρόμοιες πληροφορίες που έχουν γραφτεί στο αρχείο log.txt με κάθε Μεγάλη Επαναφόρτωση Dataset, θα περιλαμβάνουν τώρα μια καταμέτρηση των αιτημάτων από αυτές τις διευθύνσεις IP υπό τον τίτλο "Διεύθυνση IP του Requester (Πάρα πολλά αιτήματα) ". Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
Το "Major LoadDatasets Time Series" section of status.html περιλαμβάνει μια "tooΠολλές" στήλη η οποία απαριθμεί τον αριθμό των αιτημάτων που ξεπέρασαν το ipAddressMaxRequets ρύθμιση και έτσι είδε ένα "Too Πολλά αιτήματα" λάθος. Αυτό σας επιτρέπει να δείτε εύκολα όταν υπάρχουν ενεργοί υπερβολικά επιθετικοί νόμιμοι χρήστες και κακόβουλοι χρήστες, ώστε να μπορείτε (προαιρετικά) look in the log.txt file and decise if you want to blacklist those users.
Δεν είναι κακό να το βάλεις σε μεγαλύτερο αριθμό. Από σένα εξαρτάται. Αλλά αυτό επιτρέπει/ενθαρρύνει τους ανθρώπους να δημιουργήσουν συστήματα που χρησιμοποιούν μεγάλο αριθμό κλωστών για να εργαστούν σε έργα και στη συνέχεια δεν τους δίνει καμία ανατροφοδότηση ότι αυτό που κάνουν δεν τους αποφέρει κανένα όφελος.
<ipAddressMaxRequestsActive>?
- [ ** <ipAddressMaxRequestsActive> ** ] (#ipaddressmaxζητώενεργό) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη με ERDDAP™ v2.12) μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml Αυτό αποτελεί μέρος ενός συστήματος περιορισμού της ικανότητας υπερβολικά επιθετικών νόμιμων χρηστών και κακόβουλων χρηστών να κάνουν μεγάλο αριθμό ταυτόχρονων αιτημάτων που θα υποβαθμίσουν την απόδοση του συστήματος για άλλους χρήστες. Το ipAddressMaxRequestsActive καθορίζει τον μέγιστο αριθμό ταυτόχρονων αιτημάτων που θα υποβληθούν σε ενεργή επεξεργασία από οποιαδήποτε συγκεκριμένη διεύθυνση IP. Πρόσθετα αιτήματα θα βρίσκονται σε σειρά αναμονής μέχρις ότου υποβληθούν σε επεξεργασία οι προηγούμενες αιτήσεις. Τα μικρά, στατικά αρχεία σε erddap/download/ και erddap/images/απαλλάσσονται από αυτόν τον αριθμό και τον σχετικό θρόμβο. Η προεπιλογή είναι 2. Το μέγιστο επιτρεπόμενο είναι 100, το οποίο είναι πολύ υψηλό -- μην το κάνεις! Μπορείτε να ρυθμίσετε αυτό στο 1 να είναι αυστηρή, ειδικά αν έχετε προβλήματα με υπερβολικά επιθετικούς ή κακόβουλους χρήστες. Οι χρήστες θα εξακολουθούν να λαμβάνουν γρήγορα όλα τα δεδομένα που ζητούν (Μέχρι ipAddressMaxRequests) , αλλά δεν θα είναι σε θέση να γουρούνι πόρους σύστημα . Δεν συστήνουμε να τεθεί αυτό σε μεγαλύτερο αριθμό επειδή επιτρέπει υπερβολικά επιθετικούς νόμιμους χρήστες και κακόβουλους χρήστες να κυριαρχήσουν ERDDAP Ικανότητα επεξεργασίας. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<ipAddressUnlimited>·
- [ ** <ipAddressUnlimited> ** ] (#ipaddress unlimited) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη με ERDDAP™ v2.12) μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml Αυτό αποτελεί μέρος ενός συστήματος περιορισμού της ικανότητας υπερβολικά επιθετικών νόμιμων χρηστών και κακόβουλων χρηστών να κάνουν μεγάλο αριθμό ταυτόχρονων αιτημάτων που θα υποβαθμίσουν την απόδοση του συστήματος για άλλους χρήστες. ipAddressUnlimited is a comma-χωρισμένη λίστα των διευθύνσεων IP που θέλετε να επιτρέψετε απεριόριστη πρόσβαση σε σας ERDDAP . Κοίτα στο ημερολόγιο σου. txt αρχείο για να δείτε ποια μορφή χρησιμοποιεί ο διακομιστής σας για τις διευθύνσεις IP. Σε κάποιους διακομιστές, οι διευθύνσεις IP θα είναι στη μορφή #.#.#.# (όπου # είναι ακέραιος από 0 έως 255) ; ενώ σε άλλους θα είναι στη μορφή #:#:#:#:#:#:#:#:#:#:#:#:# . Οι αιτούντες σε αυτή τη λίστα δεν υπόκεινται ούτε στις ipAddressMaxRequests ούτε στις ipAddressMaxRequetsActive ρυθμίσεις. Μπορεί να είναι δευτερεύον. ERDDAP™ ή για ορισμένους χρήστες ή εξυπηρετητές στο σύστημά σας. ERDDAP™ πάντα προσθέτει " (άγνωστη διεύθυνση IPAddress) " το οποίο ERDDAP™ χρησιμοποιεί όταν η διεύθυνση IP του αιτούντος δεν μπορεί να προσδιοριστεί, π.χ., για άλλες διεργασίες που εκτελούνται στον ίδιο εξυπηρετητή. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
Αν για κάποιο λόγο όλα τα αιτήματα ενός χρήστη πάρουν το μήνυμα λάθους "Timeout που περιμένει για τα άλλα αιτήματά σας να επεξεργαστούν.", τότε μπορείτε να λύσετε το πρόβλημα προσθέτοντας τη διεύθυνση IP του χρήστη στην λίστα ipAddressUnlimited, εφαρμόζοντας αυτή την αλλαγή, στη συνέχεια, αφαιρώντας το από αυτή τη λίστα.
<φορτίοDatasetsMinutes>
- [ ** <φόρτωσηΣτοιχεία δεδομένωνMinutes> ** ] (#loaddatasetsminminmin λεπτά) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για τον καθορισμό του ελάχιστου χρόνου (σε λεπτά) μεταξύ μεγάλου φορτίου Σύνολα δεδομένων (όταν ERDDAP™ επανεπεξεργασία datasets.xml , συμπεριλαμβανομένου του ελέγχου κάθε συνόλου δεδομένων για να δείτε αν πρέπει να επαναφορτωθεί σύμφωνα με την επαναφόρτωσή του Κάθε ρύθμιση Nminutes, προεπιλογή=15) . Π.χ.,
<loadDatasetsMinMinutes>15</loadDatasetsMinMinutes>
Εάν μια δεδομένη εκτέλεση φορτίωνDatasets παίρνει λιγότερο από αυτή τη φορά, ο φορτωτής απλά εξετάζει επανειλημμένα τον κατάλογο της σημαίας και / ή κοιμάται μέχρι το υπόλοιπο χρόνο έχει περάσει. Η προεπιλογή είναι 15 λεπτά, τα οποία θα είναι εντάξει για σχεδόν όλους. Το μόνο μειονέκτημα για να τεθεί αυτό σε μικρότερο αριθμό είναι ότι θα αυξήσει τη συχνότητα που ERDDAP™ Retries datasets που έχουν σφάλματα που τους εμποδίζουν να φορτωθούν (π.χ., ένας απομακρυσμένος εξυπηρετητής είναι εκτός λειτουργίας) . Εάν υπάρχουν πολλά από αυτά τα σύνολα δεδομένων και επανεξετάζονται συχνά, η πηγή δεδομένων μπορεί να το θεωρήσει ενοχλητική/επιθετική συμπεριφορά. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<ΦορτίοDatasetsMaxMinutes>?
- [ ** <ΦορτίοDatasetsMaxMinutes> ** ] (#loaddatasetsmaxminutes) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml για τον καθορισμό του μέγιστου χρόνου (σε λεπτά) ένα μεγάλο φορτίο Η προσπάθεια Datasets επιτρέπεται να λάβει (πριν από το φορτίο Τα σύνολα νημάτων που έχουν υποστεί επεξεργασία ως "stalled" και διακόπτεται) (προεπιλογή=60) . Π.χ.,
<loadDatasetsMaxMinutes>60</loadDatasetsMaxMinutes>
Σε γενικές γραμμές, αυτό θα πρέπει να οριστεί τουλάχιστον δύο φορές όσο νομίζετε λογικά ότι επαναφόρτωση όλων των συνόλων δεδομένων (σωρευτικά) θα πρέπει να πάρετε (Επειδή οι υπολογιστές και τα δίκτυα μερικές φορές είναι πιο αργά από το αναμενόμενο) Αυτό θα πρέπει πάντα να είναι πολύ μεγαλύτερο από το φορτίοDatasetsMinutes. Η προεπιλογή είναι 60 λεπτά. Μερικοί άνθρωποι θα το ρυθμίσουν περισσότερο. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<logLevel>·
- [ ** <logLevel> ** ] (#loglevel) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml για να καθορίσει πόσα διαγνωστικά μηνύματα αποστέλλονται στο αρχείο log.txt. Μπορεί να ρυθμιστεί η προειδοποίηση. (τα ελάχιστα μηνύματα) , "info" (το προκαθορισμένο) , ή "όλα" (τα περισσότερα μηνύματα) . Π.χ.,
<logLevel>info</logLevel>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<μερική απαίτησηMaxBytes>, και<μερική απαίτησηMaxCells>
- [ ** <μερική απαίτησηMaxBytes> ] (#partial requestmaxbytes-και-partial requestmaxcells) και [ <μερική απαίτησηMaxCells> ** ] (#partial requestmaxbytes-και-partial requestmaxcells) σπανίως χρησιμοποιούνται<erddapDatasets> ετικέτα in datasets.xml . Όταν είναι δυνατόν (και δεν είναι πάντα δυνατόν.) , ERDDAP™ διασπά μεγάλα αιτήματα δεδομένων σε κομμάτια για τη διατήρηση της μνήμης.
Με 32 bit Java , με απλοϊκή έννοια, ο μέγιστος αριθμός ταυτόχρονων μεγάλο Τα αιτήματα είναι περίπου 3/4 της διαθέσιμης μνήμης (η τιμή -Xmx που πέρασε στην Tomcat) διαιρούμενο με το μέγεθος κομματιού (π.χ., 1200 MB / 100 MB => 12 αιτήσεις) . Άλλα πράγματα απαιτούν μνήμη, οπότε ο πραγματικός αριθμός των αιτημάτων θα είναι μικρότερος. Στην πράξη, το κόψιμο δεν είναι πάντα δυνατό. Έτσι, ένα τεράστιο ή μερικά πολύ μεγάλα ταυτόχρονα μη chunkable αιτήματα θα μπορούσε να προκαλέσει προβλήματα σε 32 bit Java .
Με 64 bit Java , η τιμή -Xmx μπορεί να είναι πολύ μεγαλύτερη. Έτσι η μνήμη είναι πολύ λιγότερο πιθανό να είναι ένας περιορισμός.
Μπορείτε να παρακάμψετε το προκαθορισμένο μέγεθος κομματιού ορίζοντας αυτές τις ετικέτες datasets.xml (με διαφορετικές τιμές από αυτές που εμφανίζονται εδώ) : Για πλέγματα:<μερικήΑίτησηMaxBytes>10000000</partialRequestMaxBytes> Για πίνακες:<μερική απαίτησηMaxCells>1000000</μερική απαίτησηMaxCells>
μερικήΑίτησηMaxBytes είναι ο προτιμώμενος μέγιστος αριθμός bytes για ένα μερικό αίτημα δεδομένων καννάβου (ένα κομμάτι της συνολικής αίτησης) . προεπιλογή=10000000 (10^8) . Μεγαλύτερα μεγέθη δεν είναι απαραίτητα καλύτερα (και μην πάτε πάνω από 500 MB επειδή αυτό είναι το προκαθορισμένο όριο του THREDDS για DAP απαντήσεις) . Αλλά μεγαλύτερα μεγέθη μπορεί να απαιτούν λιγότερες προσβάσεις τόνων αρχείων (Σκεφτείτε το ERD 's δορυφορικά δεδομένα με κάθε χρονικό σημείο σε ένα ξεχωριστό αρχείο - είναι καλύτερο να πάρει περισσότερα δεδομένα από κάθε αρχείο σε κάθε μερική αίτηση) .
μερική απαίτησηMaxCells είναι ο προτιμώμενος μέγιστος αριθμός κυττάρων (nRows \* nColumns στον πίνακα δεδομένων) για αίτημα μερικού ΠΙΝΑΚΑΥ (ένα κομμάτι της συνολικής αίτησης) . Προκαθορισμένο = 100000. Τα μεγαλύτερα μεγέθη δεν είναι απαραίτητα καλύτερα. Καταλήγουν σε μεγαλύτερη αναμονή για την αρχική παρτίδα δεδομένων από την πηγή.
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτά προσδιορίζονται στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<αίτησηBlacklist>·
- [ ** <αίτησηBlacklist> ** ] (#Ζητάω μαύρη λίστα) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml που περιέχει μια λίστα χωρισμένων με κόμματα αριθμητικών διευθύνσεων IP που θα εγγραφούν στη μαύρη λίστα. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
- Αυτό μπορεί να χρησιμοποιηθεί για την αντιμετώπιση Άρνηση επίθεσης υπηρεσίας , ένας υπερβολικά ζηλωτής ρομπότ ιστού , ή οποιοδήποτε άλλο είδος ενοχλητικού χρήστη.
- Προβληματικός χρήστης -- Εάν ERDDAP™ επιβραδύνει σε μια συριγμό ή παγώνει / σταματά, η αιτία είναι συχνά ένας ενοχλητικός χρήστης που τρέχει περισσότερα από ένα σενάριο ταυτόχρονα και / ή κάνοντας ένα μεγάλο αριθμό πολύ μεγάλων, εξαιρετικά αναποτελεσματικών, ή άκυρων αιτημάτων, ή ταυτόχρονων αιτημάτων. Κοίτα μέσα. log.txt για να δείτε αν αυτό συμβαίνει και να βρείτε την αριθμητική διεύθυνση IP του προβληματικού χρήστη. Αν αυτό είναι το πρόβλημα, θα πρέπει πιθανώς να μαύρη λίστα ότι ο χρήστης.
Πότε ERDDAP™ παίρνει μια αίτηση από μια μαύρη λίστα IP διεύθυνση, θα επιστρέψει HTTP Σφάλμα 403: Απαγορευμένο. Το συνοδευτικό μήνυμα σφάλματος κειμένου ενθαρρύνει το χρήστη να σας στείλει email, το ERDDAP Διευθυντά, να λύσω τα προβλήματα. Αν έχουν χρόνο να διαβάσουν το μήνυμα σφάλματος (Πολλοί προφανώς όχι.) και να επικοινωνήσετε μαζί τους, μπορείτε στη συνέχεια να συνεργαστείτε μαζί τους για να τους κάνει να τρέξει μόνο ένα σενάριο κάθε φορά, να κάνει πιο αποτελεσματικά αιτήματα, να διορθώσει τα προβλήματα στο σενάριο τους (για παράδειγμα, ζητώντας δεδομένα από ένα απομακρυσμένο σύνολο δεδομένων που δεν μπορούν να ανταποκριθούν πριν από το συγχρονισμό) , ή οτιδήποτε άλλο ήταν η πηγή των προβλημάτων.
Οι χρήστες συχνά αγνοούν απλώς ότι τα αιτήματά τους είναι ενοχλητικά. Συχνά δεν γνωρίζουν τα σφάλματα, τις ακαθάριστες ανεπάρκειες ή άλλα προβλήματα με τα σενάριά τους. Συχνά το πιστεύουν αυτό επειδή εσύ ERDDAP™ προσφέρει δωρεάν δεδομένα, που μπορούν να ζητήσουν όσα δεδομένα θέλουν, π.χ. με την εκτέλεση πολλαπλών σεναρίων ή με τη χρήση πολλαπλών νημάτων ταυτόχρονα.
- Μπορείτε να τους εξηγήσετε ότι ο καθένας ERDDAP™ , τώρα έχει σημασία πόσο μεγάλο και ισχυρό, έχει πεπερασμένους πόρους (CPU χρόνος, σκληρός δίσκος I/O, εύρος ζώνης δικτύου, κλπ.) και δεν είναι δίκαιο αν ένας χρήστης ζητήσει δεδομένα με έναν τρόπο που παραγκωνίζει άλλους χρήστες ή υπερφορτώνει ERDDAP .
- Μόλις ένας χρήστης ξέρει πώς να κάνει 2 ταυτόχρονες αιτήσεις, συχνά δεν βλέπουν κανένα λόγο να μην κάνει 5, 10 ή 20 ταυτόχρονες αιτήσεις, δεδομένου ότι τα πρόσθετα αιτήματα δεν τους κοστίζει τίποτα. Είναι σαν ασύμμετρος πόλεμος: εδώ, τα επιθετικά όπλα έχουν ένα τεράστιο πλεονέκτημα (μηδέν κόστος) πάνω από τα αμυντικά όπλα (μια πεπερασμένη εγκατάσταση με πραγματικό κόστος) .
- Να τους επισημάνετε ότι υπάρχουν μειωμένες αποδόσεις για να κάνουν όλο και πιο ταυτόχρονες αιτήσεις; τα πρόσθετα αιτήματα απλά παρακάμπτουν περαιτέρω τα αιτήματα άλλων χρηστών; δεν παρέχουν μια τεράστια βελτίωση γι 'αυτούς.
- Θύμισέ τους ότι υπάρχουν άλλοι χρήστες (τόσο casual χρήστες όσο και άλλοι χρήστες που εκτελούν σενάρια) , έτσι δεν είναι δίκαιο από αυτούς να γουρούνι όλα ERDDAP Είναι πόροι.
- Να σημειωθεί ότι οι γίγαντες τεχνολογίας έχουν προκαλέσει τους χρήστες να αναμένουν άπειρους πόρους από τις υπηρεσίες ιστού. Ενώ υπάρχουν τρόποι για τη δημιουργία πλέγματα/συσκευές/ομοσπονδίες ERDDAP α για να κάνει ένα ERDDAP™ σύστημα με περισσότερους πόρους, οι περισσότεροι ERDDAP™ Οι διαχειριστές δεν έχουν τα χρήματα ή το ανθρώπινο δυναμικό για να δημιουργήσουν τέτοια συστήματα, και ένα τέτοιο σύστημα θα εξακολουθεί να είναι πεπερασμένο. Στο ERD Για παράδειγμα, υπάρχει ένα άτομο (Εγώ) γραφή ERDDAP™ , χορήγηση δύο ERDDAP α (με τη βοήθεια του αφεντικού μου) , και τη διαχείριση διαφόρων πηγών δεδομένων, όλα με ετήσιο προϋπολογισμό υλικού των $ 0 (βασιζόμαστε σε περιστασιακές επιχορηγήσεις για να πληρώσει για το υλικό) . Αυτό δεν είναι Google, Facebook, Amazon, κλπ με 100's των μηχανικών, και εκατομμύρια δολάρια των εσόδων για την ανακύκλωση σε όλο και μεγαλύτερα συστήματα. Και δεν μπορούμε απλά να μετακινήσουμε ERDDAP™ για παράδειγμα, Amazon AWS, επειδή το κόστος αποθήκευσης δεδομένων είναι μεγάλο και τα τέλη εξόδου δεδομένων είναι μεγάλα και μεταβλητά, ενώ ο προϋπολογισμός μας για εξωτερικές υπηρεσίες είναι ένα σταθερό $ 0.
- Το αίτημά μου προς τους χρήστες είναι: (που είναι μακράν η πιο συνηθισμένη περίπτωση.) , το σύστημά τους θα πρέπει να κάνει μόνο ένα αίτημα κάθε φορά. Εάν τα αιτήματα είναι χρονικά ευαίσθητα (π.χ., πολλαπλά .pngs σε μια ιστοσελίδα, πολλαπλά πλακάκια για ένα WMS πελάτη, κ.λπ.) , τότε ίσως 4 ταυτόχρονες αιτήσεις θα πρέπει να είναι το μέγιστο (και μόνο για ένα πολύ σύντομο χρονικό διάστημα) .
- Εάν εξηγήσετε την κατάσταση στο χρήστη, οι περισσότεροι χρήστες θα καταλάβουν και θα είναι πρόθυμοι να κάνουν τις απαραίτητες αλλαγές ώστε να μπορείτε να αφαιρέσετε τη διεύθυνση IP τους από τη μαύρη λίστα.
- Για τη μαύρη λίστα ενός χρήστη, προσθέστε την αριθμητική διεύθυνση IP τους στη χωρισμένη με κόμματα λίστα διευθύνσεων IP σε<αίτησηBlacklist> στο δικό σας datasets.xml Αρχείο. Για να βρείτε τη διεύθυνση IP του ενοχλητικού χρήστη, ανατρέξτε στο ERDDAP™ bigParentΚατάλογος Αρχείο /logs/log.txt ( bigParentΚατάλογος προσδιορίζεται στο setup.xml ) για να δείτε αν αυτό συμβαίνει και να βρείτε τη διεύθυνση IP του χρήστη. Η διεύθυνση IP για κάθε αίτηση παρατίθεται στις γραμμές που αρχίζουν με "{{{{#" και είναι 4 αριθμοί χωρισμένοι με περιόδους, για παράδειγμα, 123.45.67.8 . Αναζήτηση για "ERROR" θα σας βοηθήσει να βρείτε προβλήματα, όπως άκυρα αιτήματα.
- Μπορείτε επίσης να αντικαταστήσετε τον τελευταίο αριθμό σε μια διεύθυνση IP με\(π.χ. 202.109.200).\) να μπλοκάρει μια σειρά από διευθύνσεις IP, 0-255.
- Μπορείτε επίσης να αντικαταστήσετε τους 2 τελευταίους αριθμούς σε μια διεύθυνση IP με\.\ (για παράδειγμα, 121.204.\.\) να μπλοκάρει ένα ευρύτερο φάσμα διευθύνσεων IP, 0-255.0-255.
- Για παράδειγμα,
<requestBlacklist>98.76.54.321, 202.109.200.\\*, 121.204.\\*.\\*</requestBlacklist>
- Δεν χρειάζεται να επανεκκινήσετε ERDDAP™ για τις αλλαγές<να ζητήσει Blacklist> να τεθεί σε ισχύ. Οι αλλαγές θα ανιχνευθούν την επόμενη φορά ERDDAP™ ελέγχει εάν πρέπει να επαναφορτωθούν οποιαδήποτε σύνολα δεδομένων. Ή, μπορείτε να επιταχύνετε τη διαδικασία με την επίσκεψη σύνολο δεδομένων URL σημαίας για κάθε σύνολο δεδομένων.
- Το δικό σου ERDDAP™ Η ημερήσια έκθεση περιλαμβάνει κατάλογο/τελικό των πιο ενεργών επιτρεπόμενων και αποκλεισμένων αιτούντων.
- Αν θέλετε να καταλάβω τι τομέα / ίδρυμα σχετίζεται με μια αριθμητική διεύθυνση IP, μπορείτε να χρησιμοποιήσετε μια δωρεάν, αντίστροφη υπηρεσία ιστού DNS όπως https://network-tools.com/ .
- Μπορεί να υπάρχουν φορές που έχει νόημα να μπλοκάρουν ορισμένοι χρήστες σε υψηλότερο επίπεδο, για παράδειγμα, κακόβουλοι χρήστες. Για παράδειγμα, μπορείτε να μπλοκάρετε την πρόσβασή τους σε όλα στον server σας, όχι μόνο ERDDAP . Στο Linux, μια τέτοια μέθοδος είναι η χρήση ιπταμπλ . Για παράδειγμα, μπορείτε να προσθέσετε έναν κανόνα που θα μπλοκάρει τα πάντα που προέρχονται από 198.51.100.0 με την εντολή iptables -I INPUT -s 198.51.100.0 - Ι DROP
<αργάDownTroubleMillis>·
- [ ** <αργάDownTroubleMillis> ** ] (#SlowdownRoublemillis) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml που περιέχει ακέραιο προσδιορισμό του αριθμού των χιλιοστό δευτερολέπτων (προεπιλογή=1000) για να σταματήσει όταν ανταποκρίνεται σε όλες τις αποτυχημένες αιτήσεις, π.χ. άγνωστο σύνολο δεδομένων, να ζητήσει πολύ μεγάλο, ο χρήστης στη μαύρη λίστα. Π.χ.,
<slowDownTroubleMillis>2000</slowDownTroubleMillis>
Αν ένα σενάριο κάνει το ένα αίτημα αμέσως μετά το άλλο, τότε μπορεί γρήγορα να κάνει το ένα κακό αίτημα μετά το άλλο. Με αυτή τη ρύθμιση, μπορείτε να επιβραδύνετε ένα αποτυχημένο σενάριο έτσι ERDDAP™ Δεν είναι γεμάτο με κακές απαιτήσεις. Αν ένας άνθρωπος κάνει ένα κακό αίτημα, δεν θα προσέξει καν αυτή την καθυστέρηση. Συστάσεις:
- Αν το πρόβλημα είναι μια Διανεμημένη Άρνηση Υπηρεσίας (ΔΔΟΣ) επίθεση από 100+ επιτιθέμενους, που αυτό σε ένα μικρότερο αριθμό (100;) . Το να τους επιβραδύνει όλους για πολύ καιρό οδηγεί σε πάρα πολλά ενεργά νήματα.
- Εάν το πρόβλημα είναι από 1-10 πηγές, ρυθμίστε αυτό σε 1000 ms (το προκαθορισμένο) , αλλά μεγαλύτερο αριθμό (Περίπου 10000) είναι επίσης λογικό. Αυτό τους επιβραδύνει ώστε να σπαταλήσουν λιγότερους πόρους δικτύου. Επίσης, 1000 ms ή έτσι δεν θα ενοχλήσει τους ανθρώπους χρήστες που κάνουν ένα κακό αίτημα.
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<συνδρομήEmailBlacklist>·
- [ ** <συνδρομή EmailBlacklist> ** ] (#υπογραφήemailblacklist) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml που περιέχει μια λίστα χωρισμένη με κόμματα των διευθύνσεων ηλεκτρονικού ταχυδρομείου οι οποίες είναι αμέσως μαύρη λίστα από το σύστημα συνδρομών , για παράδειγμα
<subscriptionEmailBlacklist>bob@badguy.com, john@badguy.com</subscriptionEmailBlacklist>
Αυτό είναι ένα σύστημα αναίσθητων περιπτώσεων. Εάν προστεθεί διεύθυνση ηλεκτρονικού ταχυδρομείου στη λίστα αυτή, εάν η διεύθυνση ηλεκτρονικού ταχυδρομείου έχει συνδρομές, οι συνδρομές θα ακυρωθούν. Εάν μια διεύθυνση ηλεκτρονικού ταχυδρομείου στη λίστα προσπαθεί να εγγραφεί, η αίτηση θα απορριφθεί. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
Τυποποιημένο κείμενο
-
Τυποποιημένο κείμενο -- Υπάρχουν αρκετές εποπτικές ετικέτες (τα περισσότερα χρησιμοποιούνται σπάνια) μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml για να καθορίσει το κείμενο που εμφανίζεται σε διάφορα μέρη ERDDAP . Αν θέλετε να αλλάξετε το προκαθορισμένο κείμενο, αντιγράψτε την υπάρχουσα τιμή από την ετικέτα του ίδιου ονόματος στο τομκάτ /webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util.messages.xml σε datasets.xml , στη συνέχεια να τροποποιήσει το περιεχόμενο. Το πλεονέκτημα της ύπαρξης αυτών datasets.xml είναι ότι μπορείτε να ορίσετε νέες τιμές ανά πάσα στιγμή, ακόμη και όταν ERDDAP™ τρέχει. Οποιαδήποτε αλλαγή στις τιμές αυτών των ετικετών θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Τα ονόματα ετικετών περιγράφουν το σκοπό τους, αλλά δείτε το προεπιλεγμένο περιεχόμενο στα μηνύματα.xml για μια βαθύτερη κατανόηση.
-
<πρότυποLicense>
-
<πρότυποΕπικοινωνία>
-
<πρότυποDataLicenses>
-
<πρότυποDisclaimerOfEndorsement>
-
<standardDisclaimerOf ExternalLinks>
-
<πρότυποGeneralDisclaimer>
-
<πρότυπο Πολιτική απορρήτου>
-
<ΑρχήHtml5>
-
<startBodyHtml5> είναι μια καλή ετικέτα για να αλλάξετε, προκειμένου να προσαρμόσετε την εμφάνιση της κορυφής κάθε ιστοσελίδας σας ERDDAP . Ιδιαίτερα, μπορείτε να χρησιμοποιήσετε αυτό για να προσθέσετε εύκολα ένα προσωρινό μήνυμα στο ERDDAP™ Αρχική σελίδα (Π.χ., "Ελέγξτε το νέο σύνολο δεδομένων JPL MUR SST v4.1 ..." ή "Αυτό ERDDAP™ θα είναι εκτός σύνδεσης για συντήρηση 2019-05-08T17:00:00 PDT έως 2019-05-08T20:00:00 PDT.") . Μια ιδιοτροπία του να βάλεις αυτή την ετικέτα datasets.xml είναι: όταν κάνετε επανεκκίνηση ERDDAP , το πρώτο αίτημα ERDDAP™ θα επιστρέψει την προκαθορισμένη εκκίνηση BodyHtml5 HTML, αλλά κάθε επακόλουθο αίτημα θα χρησιμοποιήσει την εκκίνησηBodyHtml5 HTML που καθορίζεται στο datasets.xml .
-
<Η σύντομη περιγραφή Html> είναι μια καλή ετικέτα για να αλλάξετε προκειμένου να προσαρμόσετε την περιγραφή σας ERDDAP . Σημειώστε ότι μπορείτε εύκολα να το αλλάξετε αυτό για να προσθέσετε ένα προσωρινό μήνυμα στην αρχική σελίδα (Π.χ., ERDDAP™ θα είναι εκτός σύνδεσης για συντήρηση 2019-05-08T17:00:00 PDT έως 2019-05-08T20:00:00 PDT.") .
-
<ΤέλοςBodyHtml5>
Πριν ERDDAP™ v2.00, αυτά προσδιορίζονται στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<ασυνήθιστη Δραστηριότητα & gt·
- [ ** <ασυνήθιστη δράση> ** ] (#Ασυνήθιστη δραστηριότητα) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για τον καθορισμό του μέγιστου αριθμού αιτήσεων μεταξύ δύο δρομών συνόλων δεδομένων φορτίου που θεωρείται κανονικός (προεπιλογή=10000) . Σε περίπτωση υπέρβασης αυτού του αριθμού, αποστέλλεται ένα email στο email EverythingTo (όπως ορίζεται στο setup.xml) . Π.χ.,
<unusualActivity>10000</unusualActivity>
Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία . Πριν ERDDAP™ v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.
<ενημέρωσηMaxEcents>
- [ ** <ενημέρωσηMaxΕκδηλώσεις> ** ] (#updatemaxevents) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα in datasets.xml για τον καθορισμό του μέγιστου αριθμού συμβάντων αλλαγής αρχείων (προεπιλογή=10) η οποία θα αντιμετωπιστεί από το [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) σύστημα πριν από την αλλαγή για την επαναφόρτωση του συνόλου δεδομένων. Για παράδειγμα,
<updateMaxEvents>10</updateMaxEvents>
Το σύστημα updateEveryNMillis προορίζεται να τρέξει πολύ γρήγορα ακριβώς πριν από την επεξεργασία του αιτήματος ενός χρήστη. Αν υπάρχουν πολλά γεγονότα αλλαγής αρχείων, τότε μάλλον δεν μπορεί να τρέξει γρήγορα, οπότε αντίθετα καλεί το σύνολο δεδομένων να επαναφορτωθεί. Εάν ERDDAP™ ασχολείται με σύνολα δεδομένων που πρέπει να τηρούνται ενημερωμένα ακόμη και όταν υπάρχουν αλλαγές σε ένα μεγάλο αριθμό αρχείων δεδομένων, μπορείτε να ρυθμίσετε αυτό σε ένα μεγαλύτερο αριθμό (100;) .
<χρήστη>·
- [ ** <χρήστης> ** ] (#χρήστης) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml που προσδιορίζει το όνομα χρήστη, τον κωδικό πρόσβασης ενός χρήστη (εάν ταυτοποίηση=custom) , και τους ρόλους (μια λίστα χωρισμένη με κόμματα) . Η χρήση του ονόματος χρήστη και του κωδικού πρόσβασης ποικίλλει ελαφρώς με βάση την τιμή του [<Ταυτοποίηση>] (/docs/server-admin/πρόσθετες-πληροφορίες#authentication) σε σας ERDDAP Το αρχείο setup.xml.
- Αυτό είναι μέρος της ERDDAP Σ σύστημα ασφαλείας για τον περιορισμό της πρόσβασης σε ορισμένα σύνολα δεδομένων σε ορισμένους χρήστες.
- Κάντε ένα ξεχωριστό<user> tag για κάθε χρήστη. Προαιρετικά, αν ταυτοποίηση=oauth2, μπορείτε να ρυθμίσετε δύο<χρήστης> ετικέτες για κάθε χρήστη: μία για όταν ο χρήστης συνδεθεί μέσω Google, ένα για όταν ο χρήστης συνδεθεί μέσω Orcid, πιθανώς με τους ίδιους ρόλους.
- Εάν δεν υπάρχει<user> tag για έναν πελάτη, s/he θα είναι σε θέση να έχουν πρόσβαση μόνο σε σύνολα δημόσιων δεδομένων, δηλαδή, σύνολα δεδομένων που δεν έχουν [<προσιτόTo>] (#προσιτό στο) Ταγκ.
- όνομα χρήστη Για την ταυτοποίηση=custom, το όνομα χρήστη είναι συνήθως ένας συνδυασμός γραμμάτων, ψηφίων, υποδείξεων, και περιόδων. Για ταυτοποίηση=email, το όνομα χρήστη είναι η διεύθυνση ηλεκτρονικού ταχυδρομείου του χρήστη. Μπορεί να είναι οποιαδήποτε διεύθυνση ηλεκτρονικού ταχυδρομείου. Για ταυτοποίηση=google, το όνομα χρήστη είναι η πλήρης διεύθυνση ηλεκτρονικού ταχυδρομείου του χρήστη. Αυτό περιλαμβάνει λογαριασμούς διαχείρισης Google όπως @noaa.gov λογαριασμούς. Για την ταυτοποίηση=ταχυκαρδία, το όνομα χρήστη είναι ο αριθμός λογαριασμού Orcid του χρήστη (με παύλες) . Για ταυτοποίηση=oauth2, το όνομα χρήστη είναι η πλήρης διεύθυνση email του χρήστη Google ή ο αριθμός λογαριασμού Orcid του χρήστη (με παύλες) .
- κωδικός πρόσβασης
Για ταυτοποίηση=email, google, orcid, ή oauth2, μην ορίσετε ένα χαρακτηριστικό κωδικού πρόσβασης.
Για την ταυτοποίηση=custom, πρέπει να ορίσετε ένα χαρακτηριστικό κωδικού πρόσβασης για κάθε χρήστη.
- Οι κωδικοί πρόσβασης που εισάγουν οι χρήστες είναι ευαίσθητοι στην περίπτωση και πρέπει να έχουν 8 ή περισσότερους χαρακτήρες ώστε να είναι πιο δύσκολο να σπάσουν. Στις μέρες μας, ακόμη και 8 χαρακτήρες μπορούν να ραγίσουν γρήγορα και φτηνά με ωμή δύναμη χρησιμοποιώντας ένα σύμπλεγμα υπολογιστών στο AWS. ERDDAP™ μόνο επιβάλλει το ελάχιστο 8 χαρακτήρων όταν ο χρήστης προσπαθεί να συνδεθεί (όχι όταν το<user> tag είναι υπό επεξεργασία, επειδή αυτός ο κωδικός βλέπει μόνο το hash χωνεμένο του κωδικού πρόσβασης, όχι τον κωδικό πρόσβασης απλού κειμένου).
- setup.xml του<κωδικός πρόσβασηςEncoding> καθορίζει πώς αποθηκεύονται οι κωδικοί πρόσβασης στο<χρήστης> ετικέτες σε datasets.xml . Για την αύξηση της ασφάλειας, οι επιλογές είναι:
- MD5 (Μην το χρησιμοποιήσεις αυτό!) -- για το χαρακτηριστικό του κωδικού πρόσβασης, προσδιορίστε το MD5 hash πέψη του κωδικού πρόσβασης του χρήστη.
- UEPMD5 (Μην το χρησιμοποιήσεις αυτό!) -- για το χαρακτηριστικό του κωδικού πρόσβασης, προσδιορίστε το MD5 hash χωνευτικό όνομα χρήστη : ERDDAP : κωδικός πρόσβασης . Το όνομα χρήστη και " ERDDAP " χρησιμοποιούνται για αλάτι η αξία του χασίς, καθιστώντας πιο δύσκολο να αποκωδικοποιηθεί.
- SHA256 (δεν συνιστάται) -- για την ιδιότητα του κωδικού πρόσβασης, προσδιορίστε την χωνεψία SHA-256 του κωδικού πρόσβασης του χρήστη.
- UEPSHA256 (προεπιλεγμένη, συνιστώμενη κωδικοποίηση κωδικού πρόσβασης. Αλλά πολύ καλύτερα: χρησιμοποιήστε το google, ορχιδέα, ή oauth2 επιλογές ταυτοποίησης.) -- για το χαρακτηριστικό του κωδικού πρόσβασης, προσδιορίστε το SHA-256 hash χωνευτικό όνομα χρήστη : ERDDAP : κωδικός πρόσβασης . Το όνομα χρήστη και " ERDDAP " χρησιμοποιούνται για το αλάτι η αξία του χασίς, καθιστώντας πιο δύσκολο να αποκωδικοποιηθεί.
- Στα Windows, μπορείτε να δημιουργήσετε τιμές πέψης κωδικού πρόσβασης MD5 κατεβάζοντας ένα πρόγραμμα MD5 (όπως MD5 ) και χρήση (για παράδειγμα) : md5 -djsmith: ERDDAP : πραγματικός κωδικός πρόσβασης
- Στο Linux/Unix, μπορείτε να δημιουργήσετε τιμές χωνεύματος MD5 χρησιμοποιώντας το ενσωματωμένο πρόγραμμα md5sum (για παράδειγμα) : ηχώ -n "jsmith: ERDDAP : πραγματικός κωδικός πρόσβασης " | md5sum
- Αποθηκευμένοι κωδικοί πρόσβασης απλού κειμένου είναι ευαίσθητη περίπτωση. Οι αποθηκευμένες μορφές των κωδικών πρόσβασης MD5 και UEPMD5 δεν είναι ευαίσθητες στην περίπτωση.
- Για παράδειγμα (με χρήση UEPMD5) , εάν το όνομα χρήστη="jsmith" και password=" myPassword", το<χρήστης> tag είναι:
<user username="jsmith"
password="57AB7ACCEB545E0BEB46C4C75CEC3C30"
roles="JASmith, JASmithGroup" />
όπου δημιουργήθηκε ο αποθηκευμένος κωδικός πρόσβασης md5 -djsmith: ERDDAP - Ο κωδικός μου.
- Οι ρόλοι είναι μια λίστα χωρισμένων rolesόλων για τους οποίους ο χρήστης είναι εξουσιοδοτημένος. Οποιοδήποτε<σύνολο δεδομένων> μπορεί να έχει [<προσιτόTo>] (#προσιτό στο) ετικέτα που απαριθμεί τους ρόλους που επιτρέπεται να έχουν πρόσβαση σε αυτό το σύνολο δεδομένων. Για ένα δεδομένο χρήστη και ένα δεδομένο σύνολο δεδομένων, εάν ένας από τους ρόλους στη λίστα ofόλων του χρήστη ταιριάζει με έναν από τους ρόλους στη λίστα δεδομένων του συνόλου δεδομένων<προσβάσιμοι ρόλοιTo>, τότε ο χρήστης εξουσιοδοτείται να έχει πρόσβαση σε αυτό το σύνολο δεδομένων.
Σε κάθε χρήστη που εισέρχεται δίνεται αυτόματα ο ρόλος \[ Ανίχνευση οποιουδήποτε Μέσα \] , αν υπάρχει<χρήστη> tag για αυτούς in datasets.xml Ή όχι. Έτσι, αν ένα δοσμένο σύνολο δεδομένων έχει
<accessibleTo>\\[anyoneLoggedIn\\]</accessibleTo>
τότε οποιοσδήποτε χρήστης που είναι συνδεδεμένος θα εξουσιοδοτηθεί να έχει πρόσβαση στο σύνολο δεδομένων, ακόμα και αν δεν υπάρχει<χρήστη> tag για αυτούς in datasets.xml .
- Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φορά ERDDAP™ ανάγνωση datasets.xml , συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένων σημαία .
<το pathRegex>·
- [ ** <διαδρομήRegex> ** ] (#παθρεγκέξ) σας επιτρέπει να καθορίσετε μια κανονική έκφραση που περιορίζει τις διαδρομές (οι οποίοι υποκατάλογοι) θα συμπεριληφθεί στο σύνολο δεδομένων. Η προεπιλογή είναι .*, η οποία ταιριάζει σε όλες τις διαδρομές. Αυτή είναι μια σπάνια χρησιμοποιούμενη, σπάνια απαραίτητη, επιλογική ετικέτα για EDDGrid FromFiles datasets, EDDTableFromFiles datasets, και μερικοί άλλοι τύποι συνόλου δεδομένων. Ωστόσο, όταν το χρειάζεσαι, το χρειάζεσαι πραγματικά.
Για να πετύχει αυτό, πρέπει να είσαι πολύ καλός με τις κανονικές εκφράσεις. Δες αυτό. τεκμηρίωση regex και regex φροντιστήριο . Ειδικότερα, πρέπει να γνωρίζετε για τις ομάδες σύλληψης (κάτι μέσα σε παρένθεση) , και το "ή" σύμβολο " | ". Μαζί, αυτά σας επιτρέπουν να καθορίσετε οποιοδήποτε αριθμό επιλογών, π.χ., (επιλογή1 | επιλογή2 | επιλογή3) . Επίσης, οποιαδήποτε από τις επιλογές δεν μπορεί να είναι τίποτα, π.χ., ( | επιλογή2 | επιλογή3) . Επίσης, πρέπει να γνωρίζετε ότι οι ομάδες σύλληψης μπορούν να φωλιάσουν, δηλαδή, οποιαδήποτε επιλογή σε μια ομάδα σύλληψης μπορεί να περιέχει μια άλλη ομάδα σύλληψης, π.χ., ( | επιλογή2 ( | επιλογή2 β | επιλογή2γ) | επιλογή3) η οποία λέει ότι η επιλογή 2 δεν μπορεί να ακολουθηθεί από τίποτα, ή επιλογή 2β, ή επιλογή 2γ. Για pathRegexes, κάθε επιλογή θα είναι ένα όνομα φακέλου ακολουθούμενο από a /, π.χ., bar/ .
Το δύσκολο μέρος της διαδρομήςRegex είναι: ERDDAP™ αναδρομικά κατεβαίνει το δέντρο καταλόγου, το μονοπάτιRegex πρέπει να αποδεχθεί όλα τα μονοπάτια που συναντά στο δρόμο του προς τους καταλόγους με τα δεδομένα. Οι ομάδες σύλληψης των Ρέτζεξ είναι καλός τρόπος για να το αντιμετωπίσουμε.
Παράδειγμα: Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή καταλόγου:
/foo/bar/D0001/a/\\*.nc
/foo/bar/D0001/b/\\*.nc
/foo/bar/D0002/a/\\*.nc
/foo/bar/D0002/b/\\*.nc
...
/foo/bar/E0001/a/\\*.nc
...
και η καθορισμένη αρχειοθήκη είναι /foo/bar /, και απλά θέλουμε το .nc αρχεία στο D \[ 0-9 \] {4}/a/ υποκαταστήματα.
Η λύση είναι να ρυθμίσετε την διαδρομήRegex σε / foo/ bar/ ( | Δ \[ 0-9 \] {4} / ( | α/) )
Αυτό λέει:
Η διαδρομή πρέπει να ξεκινήσει με το /foo/bar/
Αυτό μπορεί να ακολουθείται από τίποτα ή D \[ 0-9 \] {4} /
Αυτό μπορεί να ακολουθείται από τίποτα ή a/
Ναι, το μονοπάτι του Regex μπορεί να είναι απίστευτα δύσκολο να διαμορφωθεί. Αν κολλήσεις, ask έναν προγραμματιστή υπολογιστή. (Το πιο κοντινό πράγμα στον πραγματικό κόσμο σε έναν μάγο που λέει ξόρκια;) ή στείλε ένα email στον Κρις. Τζον στο Νόαγκοβ.
<σύνολο δεδομένων>·
- [ ** <σύνολο δεδομένων> ** ] (Σύνολο δεδομένων) είναι ένα ΠΡΟΑΙΡΕΤΙΚΟ (αλλά πάντα χρησιμοποιούμενη) ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα in datasets.xml ότι (αν περιλαμβάνετε όλες τις πληροφορίες μεταξύ<σύνολο δεδομένων> και</dataset>) περιγράφει πλήρως ένα σύνολο δεδομένων. Για παράδειγμα,
<dataset type="EDDGridFromDap" datasetID="erdPHssta8day" active="true"> ... </dataset>
Μπορεί να υπάρχει οποιοσδήποτε αριθμός ετικετών συνόλου δεδομένων σε σας datasets.xml Αρχείο. Τρία χαρακτηριστικά<dataset> tag:
- τύπος=" α Τύπος " είναι ένα ΑΠΑΙΤΟΥΜΕΝΟ χαρακτηριστικό μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που προσδιορίζει τον τύπο συνόλου δεδομένων (Για παράδειγμα, αν πρόκειται για EDDGrid /Gridded ή EDDTable/Tabular dataset) και η πηγή των δεδομένων (για παράδειγμα, βάση δεδομένων, αρχεία ή τηλεχειριστήριο OPeNDAP εξυπηρετητής) . Δείτε το Κατάλογος τύπων συνόλου δεδομένων .
σύνολο δεδομένων Ταυτότητα
- ** datasetID =" aDatasetID "** είναι ένα ΑΠΑΙΤΟΥΜΕΝΟ χαρακτηριστικό μέσα σε ένα<dataset> tag που αποδίδει μια σύντομη (συνήθως<15 χαρακτήρες), μοναδικοί, αναγνωρίζοντας το όνομα σε ένα σύνολο δεδομένων.
- Η datasetID S ΠΡΕΠΕΙ να είναι ένα γράμμα (Α-Ζ, Α-Ζ) ακολουθούμενη από οποιοδήποτε αριθμό A-Z, a-z, 0-9, και \_ (αλλά καλύτερα αν<32 χαρακτήρες συνολικά).
- Σύνολο δεδομένων Οι ταυτότητες είναι ευαίσθητες στην υπόθεση, αλλά μην δημιουργείς δύο. datasetID οι οποίοι διαφέρουν μόνο με κεφαλαία / κάτω γράμματα. Θα προκαλέσει προβλήματα στους υπολογιστές των Windows (ο δικός σας ή/και ο υπολογιστής ενός χρήστη) .
- Βέλτιστες πρακτικές: Συνιστούμε τη χρήση καμήλα Υπόθεση .
- Βέλτιστες πρακτικές: Συνιστούμε το πρώτο μέρος να είναι ακρωνύμιο ή συντομογραφία του ονόματος του ιδρύματος πηγής και το δεύτερο μέρος να είναι ακρωνύμιο ή συντομογραφία του ονόματος του συνόλου δεδομένων. Όταν είναι δυνατόν, δημιουργούμε ένα όνομα που αντανακλά το όνομα της πηγής για το σύνολο δεδομένων. Για παράδειγμα, χρησιμοποιήσαμε datasetID ="erdPH sst a8ημέρα" για ένα σύνολο δεδομένων από το NOAA NMFS SWFSC Τμήμα Περιβαλλοντικής Έρευνας ( ERD ) που ορίζεται από την πηγή που πρόκειται να είναι δορυφόρος/PH/ sst A/8day (στα Αγγλικά).
- Αν αλλάξετε το όνομα ενός συνόλου δεδομένων, το παλιό σύνολο δεδομένων (με το παλιό όνομα) θα εξακολουθούν να ζουν σε ERDDAP . Αυτό είναι ένα "ορφανό" σύνολο δεδομένων, επειδή η προδιαγραφή για το datasets.xml Έφυγε τώρα. Αυτό πρέπει να αντιμετωπιστεί:
- Για ERDDAP™ V2.19 και αργότερα, δεν χρειάζεται να κάνεις τίποτα. ERDDAP™ θα αφαιρέσει αυτόματα αυτά τα ορφανά σύνολα δεδομένων.
- Για ERDDAP™ v2.18 και νωρίτερα, πρέπει να κάνετε κάτι για να αφαιρέσετε τα ορφανά σύνολα δεδομένων: Κάντε ένα ενεργό="ψευδής" σύνολο δεδομένων, π.χ.,
<dataset type="EDDTableFromNcFiles" datasetID="*theOldName*" active="false" />
Μετά το επόμενο μεγάλο φορτίο Τα σύνολα δεδομένων, Μπορείτε να αφαιρέσετε αυτή την ετικέτα αφού το παλιό σύνολο δεδομένων είναι ανενεργό.
ενεργό
- ενεργός=" βουλεάνη " είναι ένα πιθανό χαρακτηριστικό μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που δηλώνει εάν ένα σύνολο δεδομένων είναι ενεργό (επιλέξιμη για χρήση σε ERDDAP ) Ή όχι.
- Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
- Δεδομένου ότι η προεπιλογή είναι αλήθεια, δεν χρειάζεται να χρησιμοποιήσετε αυτό το χαρακτηριστικό μέχρι να θέλετε να αφαιρέσετε προσωρινά ή μόνιμα αυτό το σύνολο δεδομένων από ERDDAP .
- Αν απλά αφαιρέσετε ένα ενεργό=" true" σύνολο δεδομένων από datasets.xml , το σύνολο δεδομένων θα εξακολουθεί να είναι ενεργό ERDDAP™ Αλλά δεν θα ενημερωθεί ποτέ. Ένα τέτοιο σύνολο δεδομένων θα είναι ένα "ορφανό" και θα αναφέρεται ως τέτοιο στο καθεστώς. html ιστοσελίδα ακριβώς κάτω από τη λίστα των συνόλων δεδομένων που απέτυχε να φορτώσει.
- Εάν ορίσετε ενεργό="ψευδής", ERDDAP™ θα απενεργοποιήσει το σύνολο δεδομένων την επόμενη φορά που θα προσπαθήσει να ενημερώσει το σύνολο δεδομένων. Όταν το κάνεις αυτό, ERDDAP™ δεν πετάει καμία πληροφορία που μπορεί να έχει αποθηκεύσει για το σύνολο δεδομένων και σίγουρα δεν κάνει τίποτα στα πραγματικά δεδομένα.
- Για την αφαίρεση ενός συνόλου δεδομένων από ERDDAP™ , δείτε Εξαναγκασμός αφαίρεσης συνόλου δεδομένων .
** Αρκετές ετικέτες μπορούν να εμφανιστούν μεταξύ των<σύνολο δεδομένων> και</dataset> ετικέτες. **
Υπάρχει κάποια παραλλαγή στην οποία επιτρέπονται ετικέτες με την οποία τύποι συνόλων δεδομένων. Βλέπε την τεκμηρίωση για μια συγκεκριμένη είδος συνόλου δεδομένων για λεπτομέρειες.
<προσβάσιμη To>·
- [ ** <προσβάσιμη Στο> ** ] (#προσιτό στο) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<dataset> tag που καθορίζει μια λίστα χωρισμένη με κόμματα ρόλοι τα οποία επιτρέπεται να έχουν πρόσβαση σε αυτό το σύνολο δεδομένων. Για παράδειγμα,
<accessibleTo>RASmith, NEJones</accessibleTo>- Αυτό είναι μέρος της ERDDAP Σ σύστημα ασφαλείας για τον περιορισμό της πρόσβασης σε ορισμένα σύνολα δεδομένων σε ορισμένους χρήστες.
- Εάν αυτή η ετικέτα δεν είναι παρούσα, όλοι οι χρήστες (Ακόμα κι αν δεν έχουν συνδεθεί) θα έχουν πρόσβαση σε αυτό το σύνολο δεδομένων.
- Εάν αυτή η ετικέτα είναι παρούσα, αυτό το σύνολο δεδομένων θα είναι ορατό και προσβάσιμο μόνο σε συνδεδεμένους χρήστες που έχουν έναν από τους καθορισμένους ρόλους. Αυτό το σύνολο δεδομένων δεν θα είναι ορατό σε χρήστες που δεν είναι συνδεδεμένοι.
- Σε κάθε χρήστη που εισέρχεται δίνεται αυτόματα ο ρόλος \[ Ανίχνευση οποιουδήποτε Μέσα \] , αν υπάρχει<χρήστη> tag για αυτούς in datasets.xml Ή όχι. Έτσι, αν ένα δοσμένο σύνολο δεδομένων έχει
<accessibleTo>\\[anyoneLoggedIn\\]</accessibleTo>
τότε οποιοσδήποτε χρήστης που είναι συνδεδεμένος θα εξουσιοδοτηθεί να έχει πρόσβαση στο σύνολο δεδομένων, ακόμα και αν δεν υπάρχει<χρήστη> tag για αυτούς in datasets.xml .
<γραφήματαAccessableTo>
- [ ** <γραφήματαAccessableTo> ** ] (# γραφές προσβάσιμες σε) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που καθορίζει αν τα γραφικά και τα μεταδεδομένα για το σύνολο δεδομένων είναι διαθέσιμα στο κοινό. Προσφέρει έναν τρόπο για την μερική παράκαμψη του συνόλου δεδομένων [<προσιτόTo>] (#προσιτό στο) Έτοιμοι. Οι επιτρεπόμενες τιμές είναι:
- αυτόματη -- Η τιμή αυτή (ή η απουσία ενός<γραφήματαAccessibleTo> tag για το σύνολο δεδομένων) κάνει την πρόσβαση σε γραφήματα και μεταδεδομένα από το σύνολο δεδομένων μιμείται το σύνολο δεδομένων<προσιτόTo> ρύθμιση. Έτσι, αν το σύνολο δεδομένων είναι ιδιωτικό, τα γραφήματα και τα μεταδεδομένα του θα είναι ιδιωτικά. Και αν το σύνολο δεδομένων είναι δημόσιο, τα γραφήματα και τα μεταδεδομένα του θα είναι δημόσια.
- κοινό -- Αυτή η ρύθμιση καθιστά τα γραφήματα και τα μεταδεδομένα του συνόλου δεδομένων προσβάσιμα σε οποιονδήποτε, ακόμη και σε χρήστες που δεν είναι συνδεδεμένοι, ακόμα και αν το σύνολο δεδομένων είναι κατά τα άλλα ιδιωτικό επειδή έχει ένα<προσιτόTo> tag.
<προσβάσιμη ViaFiles>·
- [ ** <προσβάσιμοViaFiles> ** ] (#accessibleviafiles) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml για EDDGrid ΣυγκέντρωσηΥπάρχουσας διάστασης , EDDGrid Αντιγραφή , EDDGrid Από τον πίνακα EDD , EDDGrid Από τοErddap , EDDGrid Από το Etopo , EDDGrid Από αρχεία (συμπεριλαμβανομένων όλων των υποκατηγοριών) , EDDGrid Παράπλευρο , EDDTableCopy EDD TableFromErddap , Πίνακας EDD από EDDGrid , και Πίνακας EDD από αρχεία (συμπεριλαμβανομένων όλων των υποκατηγοριών) σύνολα δεδομένων. Μπορεί να έχει αξία αληθινή ή ψεύτικη. Για παράδειγμα,
<accessibleViaFiles>true</accessibleViaFiles>
Αν η αξία είναι αληθινή, ERDDAP™ θα το κάνει έτσι ώστε οι χρήστες να μπορούν να περιηγηθούν και να κατεβάσουν τα αρχεία πηγαίων δεδομένων του συνόλου δεδομένων μέσω ERDDAP Σ "files" σύστημα . Δείτε το "files" σύστημα τεκμηρίωση για περισσότερες πληροφορίες.
Η προκαθορισμένη τιμή<προσβάσιμοViaFiles> προέρχεται από<προεπιλεγμένοAccessableViaFiles> μέσα setup.xml . Έχει προεπιλεγμένη τιμή ψευδούς, αλλά σας συνιστούμε να προσθέσετε αυτή την ετικέτα στο setup.xml σας με μια τιμή της αλήθειας.
Σύσταση - Σας συνιστούμε να κάνετε όλα τα σχετικά σύνολα δεδομένων προσβάσιμα μέσω του συστήματος αρχείων με τη ρύθμιση<ΠροεπιλεγμένοAccessableViaFiles> to true in setup.xml επειδή υπάρχει μια ομάδα χρηστών για τους οποίους αυτός είναι ο προτιμώμενος τρόπος για να πάρει τα δεδομένα. Μεταξύ άλλων λόγων, "files" σύστημα καθιστά εύκολο για τους χρήστες να δουν ποια αρχεία είναι διαθέσιμα και πότε άλλαξαν τελευταία, καθιστώντας έτσι εύκολο για έναν χρήστη να διατηρήσει το δικό του αντίγραφο του συνόλου δεδομένων. Αν γενικά δεν θέλετε να κάνετε τα σύνολα δεδομένων προσβάσιμα μέσω του συστήματος αρχείων, που<προεπιλεγμένη AccessibleViaFiles> σε ψευδή. Σε κάθε περίπτωση, απλά χρησιμοποιήστε<προσβάσιμαViaFiles> για τα λίγα σύνολα δεδομένων που αποτελούν εξαιρέσεις στη γενική πολιτική που ορίζεται από<προεπιλεγμένοAccessableViaFiles> (για παράδειγμα, όταν το σύνολο δεδομένων χρησιμοποιεί .nc ml αρχεία, τα οποία δεν είναι πραγματικά χρήσιμα για τους χρήστες) .
<προσβάσιμη Μέσω WMS >
- [ ** <προσβάσιμη Μέσω WMS > ** ] (#προσιτά viawms) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml για όλους EDDGrid υποκλάσεις. Μπορεί να έχει μια αξία αληθινή (το προκαθορισμένο) ή λάθος. Για παράδειγμα,
<accessibleViaWMS>true</accessibleViaWMS>
Αν η αξία είναι ψευδής, ERDDAP Σ WMS Ο εξυπηρετητής δεν θα είναι διαθέσιμος για αυτό το σύνολο δεδομένων. Αυτό χρησιμοποιείται συνήθως για σύνολα δεδομένων που έχουν κάποιες τιμές γεωγραφικού μήκους μεγαλύτερες από 180 (η οποία είναι τεχνικά άκυρη για WMS υπηρεσίες) , και για την οποία προσφέρετε επίσης μια παραλλαγή του συνόλου δεδομένων με τιμές γεωγραφικού μήκους εξ ολοκλήρου στην περιοχή -180 έως 180 μέσω EDDGrid LonPM180 . Αν η αξία είναι αληθινή, ERDDAP™ θα προσπαθήσει να κάνει το σύνολο δεδομένων διαθέσιμο μέσω ERDDAP Σ WMS Διακομιστής. Αλλά αν το σύνολο δεδομένων είναι εντελώς ακατάλληλο για WMS (π.χ., δεν υπάρχουν δεδομένα γεωγραφικού μήκους ή γεωγραφικού πλάτους) , τότε το σύνολο δεδομένων δεν θα είναι διαθέσιμο μέσω ERDDAP Σ WMS server, ανεξάρτητα από αυτή τη ρύθμιση.
<Προσθήκη Μεταβλητές όπου>·
- [<addVariablesWhere>] (#προσθήκες όπου) είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag για όλα τα σύνολα δεδομένων του EDDTable.
Τα αιτήματα σε οποιοδήποτε σύνολο δεδομένων EDDTable μπορούν να περιλαμβάνουν & add Μεταβλητές Πού; (" χαρακτηριστικό Όνομα ~ χαρακτηριστικό Τιμή ") , που λέει ERDDAP™ για να προστεθούν όλες οι μεταβλητές στο σύνολο δεδομένων όπου χαρακτηριστικόName=attributeValue στον κατάλογο των αιτούμενων μεταβλητών. Για παράδειγμα, αν ένας χρήστης προσθέσει & add Μεταβλητές Πού; (" ioos\_category "Γουίντ") σε ένα ερώτημα, ERDDAP θα προσθέσει όλες τις μεταβλητές στο σύνολο δεδομένων που έχουν ioos\_category =Πνευματικό χαρακτηριστικό στον κατάλογο των ζητούμενων μεταβλητών (Για παράδειγμα, άνεμοςSpeed, άνεμοςDirection, άνεμοςGustSpeed) . χαρακτηριστικό Όνομα και χαρακτηριστικό Τιμή είναι ευαίσθητα στις περιπτώσεις.
Μέσα datasets.xml , εάν το κομμάτι του συνόλου δεδομένων.xml για ένα σύνολο δεδομένων έχει
<addVariablesWhere>*attributeNamesCSV*<addVariablesWhere>
για παράδειγμα,
<addVariablesWhere>ioos\\_category,units<addVariablesWhere>
Το έντυπο πρόσβασης δεδομένων (Ιστοσελίδα .html) για το σύνολο δεδομένων θα περιλαμβάνει ένα γραφικό συστατικό (για κάθε χαρακτηριστικόName in the comma-separated list) ακριβώς κάτω από τον κατάλογο των μεταβλητών που επιτρέπει στους χρήστες να καθορίσουν μια τιμή χαρακτηριστικού. Εάν ο χρήστης επιλέξει μια τιμή χαρακτηριστικού για ένα ή περισσότερα από τα ονόματα ιδιοτήτων, θα προστεθούν στην αίτηση μέσω & add Μεταβλητές Πού; (" χαρακτηριστικό Όνομα ~ χαρακτηριστικό Τιμή ") . Έτσι, αυτή η ετικέτα datasets.xml σας επιτρέπει να καθορίσετε τη λίστα των ονομάτων ιδιοτήτων που θα εμφανίζονται στο έντυπο πρόσβασης δεδομένων για το σύνολο δεδομένων και καθιστά εύκολο για τους χρήστες να προσθέσετε & addVariables Όπου λειτουργεί το αίτημα. Η χαρακτηριστικόNamesCSV Η λίστα είναι ευαίσθητη στις περιπτώσεις.
<ΎψοςΜέτραPerSourceUnit>
- [ ** <υψόμετροMetersPerSourceUnit> ** ] (# υψομετρόμετρα ανά πηγή) είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag σε σύνολα δεδομένων. xxml για τον πίνακα EDDFrom SOS σύνολα δεδομένων (Μόνο!) που προσδιορίζει έναν αριθμό ο οποίος πολλαπλασιάζεται με τις τιμές της πηγής υψομέτρου ή βάθους για τη μετατροπή τους σε τιμές υψομέτρου (σε μέτρα πάνω από την επιφάνεια της θάλασσας) . Για παράδειγμα,
<altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>
Αυτή η ετικέτα ΠΡΕΠΕΙ να χρησιμοποιείται αν οι τιμές κάθετου άξονα του συνόλου δεδομένων δεν είναι μέτρα, θετικά = πάνω. Διαφορετικά, είναι ΟΠΤΙΚΟ, δεδομένου ότι η προεπιλεγμένη τιμή είναι 1. Για παράδειγμα,
- Εάν η πηγή έχει ήδη μετρηθεί σε μέτρα πάνω από την επιφάνεια της θάλασσας, χρησιμοποιήστε 1 (ή μην χρησιμοποιήσετε αυτή την ετικέτα, δεδομένου ότι 1 είναι η προκαθορισμένη τιμή) .
- Εάν η πηγή μετράται σε μέτρα κάτω από την επιφάνεια της θάλασσας, χρησιμοποιήστε -1.
<altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>
- Εάν η πηγή μετράται σε χιλιόμετρα πάνω από την επιφάνεια της θάλασσας, χρησιμοποιήστε το 0.001.
<προεπιλεγμέναDataQuery>·
- [ ** <προεπιλεγμέναDataQuery> ** ] (#Προκαθορισμός δεδομένων) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που λέει ERDDAP™ για χρήση του καθορισμένου ερωτήματος (το τμήμα του URL μετά το "?") εάν το αρχείο .html Τύπος (Το έντυπο πρόσβασης δεδομένων) ζητείται χωρίς ερώτηση.
- Πιθανότατα σπάνια θα χρειαστεί να το χρησιμοποιήσετε αυτό.
- Θα πρέπει να XML-κωδικός (όχι %-κωδικός) τα προεπιλεγμένα ερωτήματα δεδομένου ότι βρίσκονται σε έγγραφο XML. Για παράδειγμα, το & γίνεται & ,<γίνεται<, > γίνεται & gt; .
- Παρακαλώ ελέγξτε τη δουλειά σας. Είναι εύκολο να κάνεις ένα λάθος και να μην πάρεις αυτό που θέλεις. ERDDAP™ θα προσπαθήσει να καθαρίσει τα λάθη σας -- αλλά δεν βασίζονται σε αυτό, δεδομένου ότι\*Πώς\*καθαρίζεται μπορεί να αλλάξει.
- Για τα σύνολα δεδομένων griddap, μια κοινή χρήση αυτού είναι ο προσδιορισμός μιας διαφορετικής προεπιλεγμένης τιμής βάθους ή υψομέτρου διάστασης (για παράδειγμα, \[ 0 \] αντί για \[ τελευταίο \] ) . Σε κάθε περίπτωση, θα πρέπει πάντα να απαριθμείτε όλες τις μεταβλητές, πάντα να χρησιμοποιείτε τις ίδιες τιμές διαστάσεων για όλες τις μεταβλητές, και σχεδόν πάντα να χρησιμοποιείτε \[ 0 \] , \[ τελευταίο \] , ή \[ 0:τελευταία \] για τις τιμές διάστασης. Για παράδειγμα:
<defaultDataQuery>u\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\],v\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\]</defaultDataQuery>- Για tabledap σύνολα δεδομένων, αν δεν ορίσετε κάποιο περιορισμό, η αίτηση θα επιστρέψει ολόκληρο το σύνολο δεδομένων, το οποίο μπορεί να είναι πρακτικά μεγάλο, ανάλογα με το σύνολο δεδομένων. Εάν δεν θέλετε να καθορίσετε τυχόν περιορισμούς, αντί να έχετε ένα κενό<προεπιλεγμέναDataQuery> (το οποίο είναι το ίδιο με το μη προσδιορισμό μιας προεπιλογής DataQuery) , θα πρέπει να απαριθμήσετε ρητά όλες τις μεταβλητές που θέλετε να συμπεριλάβετε στο προκαθορισμένοDataQuery.
- Για tabledap σύνολα δεδομένων, η πιο κοινή χρήση αυτού είναι να καθορίσει ένα διαφορετικό προκαθορισμένο χρονικό εύρος (σχετικά με το max (χρόνος) , για παράδειγμα, & time>=max (χρόνος) -1 ημέρα, ή σε σχέση με τώρα, για παράδειγμα, & time>= now- 1 ημέρα) . Θυμηθείτε ότι το να ζητάτε καμία μεταβλητή δεδομένων είναι το ίδιο με τον προσδιορισμό όλων των μεταβλητών δεδομένων, οπότε συνήθως μπορείτε απλά να καθορίσετε το νέο χρονικό περιορισμό. Για παράδειγμα:
<defaultDataQuery>&time>=max(time)-1day</defaultDataQuery>
ή
<defaultDataQuery>&time>=now-1day</defaultDataQuery>
<προεπιλεγμένοGraphQuery>·
- [ ** <προκαθορισμένοGraphQuery> ** ] (#defaultgraphquery) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που λέει ERDDAP™ για χρήση του καθορισμένου ερωτήματος (το τμήμα του URL μετά το "?") εάν το αρχείο .graph Τύπος (Το έντυπο Make A Graph) ζητείται χωρίς ερώτηση.
- Πιθανότατα σπάνια θα χρειαστεί να το χρησιμοποιήσετε αυτό.
- Θα πρέπει να XML-κωδικός (όχι %-κωδικός) τα προεπιλεγμένα ερωτήματα δεδομένου ότι βρίσκονται σε έγγραφο XML. Για παράδειγμα, το & γίνεται & ,<γίνεται<, > γίνεται & gt; .
- Παρακαλώ ελέγξτε τη δουλειά σας. Είναι εύκολο να κάνεις ένα λάθος και να μην πάρεις αυτό που θέλεις. ERDDAP™ θα προσπαθήσει να καθαρίσει τα λάθη σας -- αλλά δεν βασίζονται σε αυτό, δεδομένου ότι\*Πώς\*καθαρίζεται μπορεί να αλλάξει.
- Για τα σύνολα δεδομένων griddap, η πιο κοινή χρήση αυτού είναι ο καθορισμός μιας διαφορετικής προεπιλεγμένης τιμής βάθους ή υψομέτρου διάστασης (για παράδειγμα, \[ 0 \] αντί για \[ τελευταίο \] ) ή/και για να προσδιοριστεί η γραφική παράσταση μιας συγκεκριμένης μεταβλητής. Σε κάθε περίπτωση, θα χρησιμοποιείτε σχεδόν πάντα \[ 0 \] , \[ τελευταίο \] , ή \[ 0:τελευταία \] για τις τιμές διάστασης. Για παράδειγμα:
(Αλλά βάλε τα όλα σε μια γραμμή.)<defaultGraphQuery>temp\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\]&.draw=surface&.vars=longitude|latitude|temp</defaultGraphQuery>- Για tabledap σύνολα δεδομένων, αν δεν καθορίσετε κάποιο περιορισμό, η αίτηση θα γραφική παράσταση ολόκληρο το σύνολο δεδομένων, το οποίο μπορεί να πάρει πολύ χρόνο, ανάλογα με το σύνολο δεδομένων.
- Για tabledap σύνολα δεδομένων, η πιο κοινή χρήση αυτού είναι να καθορίσει ένα διαφορετικό προκαθορισμένο χρονικό εύρος (σχετικά με το max (χρόνος) , για παράδειγμα, & time>=max (χρόνος) -1 ημέρα, ή σε σχέση με τώρα, για παράδειγμα, & time>= now- 1 ημέρα) . Θυμηθείτε ότι το να ζητάτε καμία μεταβλητή δεδομένων είναι το ίδιο με τον προσδιορισμό όλων των μεταβλητών δεδομένων, οπότε συνήθως μπορείτε απλά να καθορίσετε το νέο χρονικό περιορισμό. Για παράδειγμα:
<defaultGraphQuery>&time>=max(time)-1day</defaultGraphQuery>
ή
<defaultGraphQuery>&time>=now-1day</defaultGraphQuery>
<τιμές διάστασηςInMemory>·
-
[ ** <διάσταση Τιμές στη μνήμη> ** ] (#τιμές διάστασης μνήμη) (αλήθεια (το προκαθορισμένο) ή ψευδής) είναι μια ΟΠΤΙΚΗ και σπάνια χρησιμοποιείται ετικέτα εντός του<dataset> tag για οποιαδήποτε EDDGrid σύνολο δεδομένων που λέει ERDDAP™ όπου διατηρούνται οι τιμές πηγής των διαστάσεων (επίσης γνωστή ως axisVariable α) :
- αληθές = στη μνήμη (το οποίο είναι πιο γρήγορο αλλά χρησιμοποιεί περισσότερη μνήμη)
- ψευδές = στο δίσκο (η οποία είναι πιο αργή αλλά δεν χρησιμοποιεί μνήμη)
Για παράδειγμα,
<dimensionValuesInMemory>false</dimensionValuesInMemory>
Θα πρέπει να το χρησιμοποιήσετε μόνο με τη μη προκαθορισμένη τιμή του ψευδούς εάν ERDDAP™ έχει πολλά σύνολα δεδομένων με πολύ μεγάλες διαστάσεις (π.χ., σε εκατομμύρια αξίες, π.χ. EDDGrid Από σύνολα δεδομένων AudioFiles) και ERDDAP Η χρήση μνήμης είναι πάντα πολύ υψηλή. Δείτε τη Μνήμη: αυτή τη στιγμή χρησιμοποιώντας τη γραμμή στο \[ Το Domain σας \] /erddap/status.html για την παρακολούθηση ERDDAP™ χρήση μνήμης.
<Πίνακας αρχείωνInMemory>
-
[ ** <Πίνακας αρχείωνInMemory> ** ] (#filetableinmemory) (αληθές ή ψευδές (το προκαθορισμένο) ) είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag για οποιαδήποτε EDDGrid Από αρχεία και πίνακα EDD Σύνολο δεδομένων FromFiles που λέει ERDDAP™ πού να κρατήσετε τον πίνακα αρχείων (που έχει πληροφορίες για κάθε αρχείο δεδομένων πηγής) :
- αληθές = στη μνήμη (το οποίο είναι πιο γρήγορο αλλά χρησιμοποιεί περισσότερη μνήμη)
- ψευδές = στο δίσκο (η οποία είναι πιο αργή αλλά δεν χρησιμοποιεί μνήμη)
Για παράδειγμα,
<fileTableInMemory>true</fileTableInMemory>
Αν το ρυθμίσετε αυτό σε αληθή για οποιοδήποτε σύνολο δεδομένων, να έχετε ένα μάτι στη μνήμη: αυτή τη στιγμή χρησιμοποιώντας τη γραμμή στο \[ Το Domain σας \] /erddap/status.html για να εξασφαλιστεί ότι ERDDAP™ Ακόμα έχει πολλές ελεύθερες αναμνήσεις.
<fgdcFile>·
- [ ** <fgdcFile> ** ] (#fgdcfile) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που λέει ERDDAP™ για να χρησιμοποιήσετε ένα αρχείο FGDC πριν από τη δημιουργία ERDDAP™ Προσπαθήστε να δημιουργήσετε το αρχείο. Χρήση:
<fgdcFile>*fullFileName*</fgdcFile>
πλήρης ΑρχείοName μπορεί να αναφέρεται σε ένα τοπικό αρχείο (κάπου στο σύστημα αρχείων του διακομιστή) ή το URL ενός απομακρυσμένου αρχείου. Εάν πλήρης ΑρχείοName \="" ή το αρχείο δεν βρίσκεται, το σύνολο δεδομένων δεν θα έχει μεταδεδομένα FGDC. Αυτό είναι επίσης χρήσιμο αν θέλετε να καταστείλετε τα μεταδεδομένα FGDC για ένα συγκεκριμένο σύνολο δεδομένων. Ή, μπορείτε να βάλετε<fgdcActive> ψεύδος</fgdcActive> στο setup.xml για να πει ERDDAP™ να μην προσφέρει μεταδεδομένα FGDC για οποιοδήποτε σύνολο δεδομένων.
<ισο19115 Αρχείο & gt
- [ ** <iso19115Αρχείο> ** ] (Αρχείο #iso19115) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που λέει ERDDAP™ για χρήση προκατασκευασμένου αρχείου ISO 19115 αντί να έχει ERDDAP™ Προσπαθήστε να δημιουργήσετε το αρχείο. Χρήση:
πλήρης ΑρχείοName μπορεί να αναφέρεται σε ένα τοπικό αρχείο (κάπου στο σύστημα αρχείων του διακομιστή) ή το URL ενός απομακρυσμένου αρχείου. Εάν πλήρης ΑρχείοName \=""" ή το αρχείο δεν βρίσκεται, το σύνολο δεδομένων δεν θα έχει μεταδεδομένα ISO 19115. Αυτό είναι επίσης χρήσιμο αν θέλετε να καταστείλετε τα μεταδεδομένα ISO 19115 για ένα συγκεκριμένο σύνολο δεδομένων. Ή, μπορείτε να βάλετε<iso19115Active> false</iso19115Active> σε setup.xml για να πει ERDDAP™ να μην προσφέρουν μεταδεδομένα ISO 19115 για οποιοδήποτε σύνολο δεδομένων.
<iso19115File>*fullFileName*</iso19115File>
<ταίριασμαAxis NDigits>·
- [ ** <ταίριασμαAxisNDigits> ** ] (#matchaxin ψηφία) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα EDDGrid <σύνολο δεδομένων> tag για EDDGrid σύνολα δεδομένων που είναι συγκεντρωτικά, π.χ., σύνολα αρχείων. Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, ERDDAP™ ελέγχει ότι οι τιμές του άξονα κάθε συστατικού του συνόλου είναι οι ίδιες. Η ακρίβεια της δοκιμής καθορίζεται από το ταίριασμαAxisNDigits , ο οποίος καθορίζει τον συνολικό αριθμό ψηφίων που πρέπει να αντιστοιχούν κατά τη δοκιμή των τιμών του διπλού άξονα ακρίβειας, 0 - 18 (το προκαθορισμένο) . Κατά τη δοκιμή των τιμών του άξονα επίπλευσης, η δοκιμή γίνεται με matchAxisNDigits/2 ψηφία. Τιμή 18 ή παραπάνω EDDGrid να κάνω μια ακριβή δοκιμή. Μια τιμή 0 λέει EDDGrid να μην κάνει καμία δοκιμή, η οποία δεν συνιστάται, εκτός από την περιγραφή που περιγράφεται παρακάτω.
Αν και EDDGrid επιτρέπει στα κατασκευαστικά στοιχεία της συγκέντρωσης να έχουν ελαφρώς διαφορετικές τιμές άξονα, μόνο ένα σύνολο τιμών άξονα παρουσιάζεται στο χρήστη. Το σύνολο είναι από το ίδιο συστατικό που παρέχει τα μεταδεδομένα πηγής του συνόλου δεδομένων. Για παράδειγμα, για EDDGrid FromFiles datasets, που καθορίζεται από το<μεταδεδομέναΑπό> ρύθμιση (προεπιλογή=τελευταίο) .
Η χρήση των matchAxisNDigits\=0 αποθαρρύνεται έντονα στις περισσότερες περιπτώσεις, επειδή απενεργοποιεί κάθε έλεγχο. Ακόμη και ο ελάχιστος έλεγχος είναι χρήσιμος επειδή εξασφαλίζει ότι τα συστατικά είναι κατάλληλα για συγκέντρωση. Όλοι υποθέτουμε ότι όλα τα εξαρτήματα είναι κατάλληλα, αλλά δεν είναι πάντα έτσι. Αυτό είναι λοιπόν ένα σημαντικό τεστ λογικής. Ακόμη και οι τιμές των matchAxisNDigits1, 2, 3 ή 4 αποθαρρύνονται επειδή οι διαφορετικές τιμές άξονα συχνά δείχνουν ότι τα συστατικά δημιουργήθηκαν (Να τα πλύνω;) ένας διαφορετικός τρόπος και συνεπώς δεν είναι κατάλληλος για συγκέντρωση.
Υπάρχει μία περίπτωση όπου η χρήση matchAxisNDigits\=0 είναι χρήσιμη και συνιστάται: με συγκεντρώσεις απομακρυσμένων αρχείων, π.χ., δεδομένων σε κουβάδες S3. Σε αυτή την περίπτωση, αν το σύνολο δεδομένων χρησιμοποιεί cacheFromUrl, cacheSizeGB, matchAxisNDigits\=0, και το EDDGrid Σύστημα απόΑρχεία για Συγκέντρωση μέσω Ονόματα αρχείων , τότε EDDGrid δεν χρειάζεται να διαβάσει όλα τα απομακρυσμένα αρχεία για να κάνει τη συγκέντρωση. Αυτό επιτρέπει στα σύνολα δεδομένων που γίνονται από δεδομένα σε κουβάδες S3 να φορτώνουν πολύ γρήγορα (σε αντίθεση με παράλογα αργά αν EDDGrid πρέπει να κατεβάσετε και να διαβάσετε όλα τα αρχεία) .
<nThreads>·
- Ξεκινώντας με ERDDAP™ έκδοση 2.00, όταν οποιαδήποτε υποκατηγορία του EDDTableFromFiles ή EDDGrid διαβάζει δεδομένα από την πηγή του, μπορεί να διαβάσει ένα κομμάτι δεδομένων (π.χ. ένα πηγαίο αρχείο) κάθε φορά (σε ένα νήμα) (Αυτή είναι η προεπιλογή.) ή περισσότερα από ένα κομμάτι δεδομένων (π.χ., 2+ πηγαία αρχεία) κάθε φορά (σε 2 ή περισσότερα νήματα) κατά την επεξεργασία κάθε αίτησης.
-
Κανόνας του αντίχειρα: Για τα περισσότερα σύνολα δεδομένων στα περισσότερα συστήματα, χρησιμοποιήστε nThreads=1, το προεπιλεγμένο. Αν έχετε έναν ισχυρό υπολογιστή (Πολλοί πυρήνες ΚΜΕ, πολλή μνήμη) , στη συνέχεια να εξετάσει ρύθμιση nThreads σε 2, 3, 4, ή υψηλότερο (αλλά ποτέ περισσότερο από τον αριθμό των πυρήνων CPU στον υπολογιστή) για σύνολα δεδομένων που ενδέχεται να ωφεληθούν:
- Τα περισσότερα σύνολα δεδομένων EDDTableFromFiles θα επωφεληθούν.
- Τα σύνολα δεδομένων όπου κάτι προκαλεί καθυστέρηση πριν από ένα κομμάτι δεδομένων μπορούν πραγματικά να επεξεργαστούν θα ωφεληθούν, για παράδειγμα:
- Σειρά δεδομένων με εξωτερική συμπίεση (π.χ., .gz ) δυαδικό (π.χ., .nc ) αρχεία, επειδή ERDDAP™ πρέπει να αποσυμπιέσει ολόκληρο το αρχείο πριν μπορεί να αρχίσει να διαβάζει το αρχείο.
- Συνθέσεις δεδομένων που χρησιμοποιούν λανθάνουσα μνήμηSizeGB , επειδή ERDDAP™ συχνά πρέπει να κατεβάσετε το αρχείο πριν να μπορεί να το διαβάσει.
- Datasets με αρχεία δεδομένων αποθηκευμένα σε ένα παράλληλο σύστημα αρχείων υψηλής ζώνης, επειδή μπορεί να παραδώσει περισσότερα δεδομένα, γρηγορότερα, όταν ζητηθεί. Παραδείγματα παράλληλων συστημάτων αρχείων περιλαμβάνουν ΙΑΒΟΔ , pNFS , Γλουτένη FS , Amazon S3, και Google Cloud Storage.
-
Προειδοποίηση: Όταν χρησιμοποιείτε nThreads>1, να έχετε το νου σας ERDDAP Χρήση μνήμης, χρήση νημάτων και συνολική ανταπόκριση (Βλέπε ERDDAP Σελίδα κατάστασης ) . Βλέπε σχόλια σχετικά με αυτά τα θέματα παρακάτω.
-
Για ένα δεδομένο σύνολο δεδομένων, αυτή η ρύθμιση nThreads μπορεί να προέρχεται από διαφορετικά μέρη:
- Εάν η datasets.xml κομμάτι για ένα σύνολο δεδομένων έχει ένα<nThreads> tag (εντός του<dataset> tag, όχι ως παγκόσμιο χαρακτηριστικό γνώρισμα) με τιμή >= 1, η τιμή του nThreads χρησιμοποιείται. Έτσι, μπορείτε να καθορίσετε έναν διαφορετικό αριθμό για κάθε σύνολο δεδομένων.
- Διαφορετικά, αν datasets.xml έχει ένα<ετικέτα nTableThreads> (για τον πίνακα EDD Από αρχεία συνόλων δεδομένων) ή<ετικέτα nGridThreads> (για EDDGrid σύνολα δεδομένων) με τιμή >= 1, έξω από ένα<dataset> tag, αυτή η τιμή του nThreads χρησιμοποιείται.
- Διαφορετικά, χρησιμοποιείται 1 νήμα, που αποτελεί ασφαλή επιλογή αφού χρησιμοποιεί τη μικρότερη ποσότητα μνήμης.
Για την πρωτότυπο ERDDAP™ εγκατάσταση , χρησιμοποιούμε <nTableThreads> 6</nTableThreads> (Είναι ένας ισχυρός σέρβερ.) Τα δύσκολα αιτήματα τώρα λαμβάνουν το 30% της προηγούμενης φοράς.
Παρακολούθηση χρήσης πόρων
Όταν πειραματίζεστε με διαφορετικές ρυθμίσεις nThreads (και ίσως κάνοντας δύσκολες αιτήσεις δείγμα σας ERDDAP ) , μπορείτε να παρακολουθείτε τη χρήση πόρων του υπολογιστή σας:
- On Macs, use Finder : Εφαρμογές : Utilities : Activity Monitor
- Στο Linux, χρησιμοποιήστε την κορυφή
- Στα Windows 10, χρήση Ctrl + Shift + Esc για να ανοίξετε το διαχειριστή εργασιών
Προειδοποίηση: Μειωμένη ανταπόκριση
Σε απομόνωση, ERDDAP™ θα εκπληρώσει ένα αίτημα σε ένα σύνολο δεδομένων με υψηλότερη ρύθμιση nThreads πιο γρήγορα από ό, τι αν nThreads=1. Αλλά ενώ το αίτημα αυτό υποβάλλεται σε επεξεργασία, άλλα αιτήματα από άλλους χρήστες θα είναι κάπως συνωστισμένα και να πάρει μια πιο αργή απάντηση. Επίσης, όταν ERDDAP™ απαντά σε ένα δεδομένο αίτημα, άλλους υπολογιστικούς πόρους (π.χ., πρόσβαση κίνησης δίσκων, εύρος ζώνης δικτύου) μπορεί να είναι περιοριστική, ειδικά με υψηλότερες ρυθμίσεις nThreads. Έτσι με υψηλότερες ρυθμίσεις nThreads, η συνολική απόκριση του συστήματος θα είναι χειρότερη όταν υπάρχουν πολλαπλά αιτήματα που υποβάλλονται σε επεξεργασία -- αυτό μπορεί να είναι πολύ ενοχλητικό για τους χρήστες! Εξαιτίας αυτού: ποτέ μην ορίσετε nThreads σε περισσότερο από τον αριθμό των πυρήνων CPU στον υπολογιστή. nThreads=1 είναι η δικαιότερη ρύθμιση από κάθε αίτημα (μεταξύ διαφόρων ταυτόχρονων αιτημάτων) θα πάρει ένα ίσο μερίδιο των υπολογιστικών πόρων. Αλλά όσο πιο ισχυρός είναι ο υπολογιστής, τόσο λιγότερο αυτό θα είναι ένα πρόβλημα.
Προειδοποίηση: Ανώτερη μνήμη Χρήση EDDGrid Σύνολα δεδομένων
Χρήση μνήμης ενώ η επεξεργασία αιτημάτων είναι άμεσα ανάλογη με τη ρύθμιση nThreads. Ένας λογικά ασφαλής κανόνας του αντίχειρα είναι: θα πρέπει να ορίσετε ERDDAP settings μνήμης τουλάχιστον 2GB + (2GB \* nThreads) . Μερικά αιτήματα σε κάποια σύνολα δεδομένων θα χρειαστούν περισσότερη μνήμη από αυτό. Για παράδειγμα, η ρύθμιση nThreads=3 για οποιαδήποτε EDDGrid σύνολο δεδομένων σημαίνει ότι η ρύθμιση -Xmx θα πρέπει να είναι τουλάχιστον -Xmx8000M. Αν αυτή η ρύθμιση μνήμης είναι μεγαλύτερη από 3/4 τη φυσική μνήμη του υπολογιστή, μειώστε τη ρύθμιση nThreads έτσι ώστε να μπορείτε να μειώσετε τη ρύθμιση μνήμης.
Η χρήση μνήμης των αιτημάτων επεξεργασίας νημάτων στα σύνολα δεδομένων EDDTable είναι σχεδόν πάντα χαμηλότερη επειδή τα αρχεία είναι συνήθως πολύ μικρότερα. Ωστόσο, εάν ένα δεδομένο σύνολο δεδομένων EDDTable έχει τεράστια (π.χ., >=1 GB) αρχεία δεδομένων, στη συνέχεια, τα παραπάνω σχόλια θα ισχύουν και για αυτά τα σύνολα δεδομένων.
Όποια και αν είναι η ρύθμιση nThreads, να παρακολουθείτε στενά τις στατιστικές χρήσης μνήμης για σας ERDDAP Σελίδα κατάστασης . Δεν θα έπρεπε ποτέ να πλησιάζεις στο να μεγιστοποιήσεις τη χρήση της μνήμης. ERDDAP - διαφορετικά θα υπάρξουν σοβαρά λάθη και αποτυχίες.
Προσωρινά Set στο 1
Αν η τρέχουσα χρήση μνήμης είναι έστω και ελαφρώς υψηλή, ERDDAP™ θα ορίσει nThreads για αυτή την αίτηση σε 1. Έτσι, ERDDAP™ διατηρεί τη μνήμη όταν η μνήμη είναι σπάνια.
Οι Επιστροφές Διαίρεσης
Υπάρχουν μειωμένες αποδόσεις για την αύξηση της ρύθμισης nThreads: 2 νήματα θα είναι πολύ καλύτερα από 1 (Αν αγνοήσουμε τη δυναμική υπερλειτουργία) . Αλλά 3 θα είναι μόνο ένα κομμάτι καλύτερο από 2. Και 4 θα είναι μόνο οριακά καλύτερα από 3.
Σε μια δοκιμή ενός δύσκολου ερωτήματος σε ένα μεγάλο σύνολο δεδομένων EDDTable, ο χρόνος απόκρισης χρησιμοποιώντας 1, 2, 3, 4, 5, 6 νήματα ήταν 38, 36, 20, 18, 13, 11 δευτερόλεπτα. (Τώρα χρησιμοποιούμε το nTableThreads=6 σε αυτόν τον εξυπηρετητή.)
nThreads=2: Αν και, υπάρχει συχνά ένα σημαντικό όφελος για τον προσδιορισμό nThreads=2 αντί του nThreads=1, συχνά δεν θα κάνει μεγάλη διαφορά στο χρόνο clockολογιού που απαιτείται για να ανταποκριθεί σε ένα δεδομένο αίτημα του χρήστη. Ο λόγος είναι: με nThreads=1, οι περισσότερες σύγχρονες CPU θα συχνά δυναμικά πάνω από την ώρα (Τούρμπο ώθηση) να αυξήσει προσωρινά την ταχύτητα του clockολογιού της ΚΜΕ. Έτσι με nThreads=1, ο ένας πυρήνας θα λειτουργεί συχνά με υψηλότερη ταχύτητα clockολογιού από τον καθένα από τους δύο πυρήνες αν χρησιμοποιούσατε nThreads=2. Ανεξάρτητα, εξακολουθούμε να πιστεύουμε ότι είναι καλύτερο να χρησιμοποιούνται nThreads=2 και όχι nThreads=1, δεδομένου ότι η ρύθμιση αυτή θα αποφέρει καλύτερα αποτελέσματα σε μια ευρύτερη ποικιλία καταστάσεων. Και φυσικά, αν ο υπολογιστής σας έχει επαρκείς πυρήνες CPU, μια ακόμη υψηλότερη ρύθμιση nThreads θα πρέπει να αποφέρει καλύτερα αποτελέσματα.
Όπως αναφέρθηκε παραπάνω, πολύ υψηλές ρυθμίσεις nThreads μπορεί να οδηγήσει σε γρηγορότερες απαντήσεις σε ορισμένα αιτήματα, αλλά ο κίνδυνος της συνολικής μείωσης ERDDAP™ ανταπόκριση και χρήση υψηλής μνήμης (όπως αναφέρεται ανωτέρω) Ενώ αυτά τα αιτήματα υποβάλλονται σε επεξεργασία σημαίνει ότι γενικά δεν είναι καλή ιδέα.
ΚΜΕ Πυρήνες
Δεν θα πρέπει ποτέ να ορίσετε nThreads σε έναν αριθμό μεγαλύτερο από τον αριθμό των πυρήνων CPU στην CPU του υπολογιστή. Ουσιαστικά όλες οι σύγχρονες ΚΜΕ έχουν πολλαπλούς πυρήνες (π.χ. 2, 4, ή 8) . Μερικοί υπολογιστές έχουν ακόμα και πολλαπλές CPU (π.χ. 2 ΚΜΕ \* 4 πυρήνες/CPU = 8 πυρήνες ΚΜΕ) . Για να μάθετε πόσες ΚΜΕ και πυρήνες έχει ένας υπολογιστής:
- Στα Mac, χρήση Κλειδί επιλογής : Apple Menu : Πληροφορίες συστήματος
- Στο Linux, χρησιμοποιήστε το cat /proc/cpuinfo
- Στα Windows 10, χρήση Ctrl + Shift + Esc για άνοιγμα Διαχειριστής εργασιών: Επιδόσεις (Λογικοί επεξεργαστές δείχνουν τον συνολικό αριθμό πυρήνων ΚΜΕ)
Ναι, οι περισσότεροι επεξεργαστές αυτές τις μέρες λένε ότι υποστηρίζουν 2 νήματα ανά πυρήνα (μέσω υπερπληθωρισμός ) , αλλά τα 2 νήματα μοιράζονται υπολογιστικούς πόρους , έτσι δεν θα δείτε δύο φορές το πέρασμα σε μια CPU υπό βαρύ φορτίο . Για παράδειγμα, ένας υπολογιστής με μία CPU με 4 πυρήνες μπορεί να ισχυριστεί ότι υποστηρίζει μέχρι 8 νήματα, αλλά δεν πρέπει ποτέ να υπερβαίνει nThreads=4 σε ότι ERDDAP . Να το θυμάσαι αυτό:
- Η ρύθμιση nThreads ERDDAP™ είναι ανά αίτημα. ERDDAP™ συχνά χειρίζεται πολλαπλά αιτήματα ταυτόχρονα.
- ERDDAP™ κάνει πράγματα διαφορετικά από τις αιτήσεις για διαδικασία, π.χ. επαναφόρτωση συνόλων δεδομένων.
- Πότε ERDDAP™ απαντά σε ένα δεδομένο αίτημα, άλλους υπολογιστικούς πόρους (π.χ., πρόσβαση κίνησης δίσκων, εύρος ζώνης δικτύου) Μπορεί να είναι περιοριστική. Όσο ψηλότερα βάζετε nThreads, τόσο πιο πιθανό είναι ότι αυτοί οι άλλοι πόροι θα μεγιστοποιηθεί και θα επιβραδύνει ERDDAP Η γενική ανταπόκριση.
- Το λειτουργικό σύστημα κάνει άλλα πράγματα εκτός από το τρέξιμο ERDDAP .
Έτσι είναι καλύτερα να μην ρυθμίσετε τη ρύθμιση nThreads σε περισσότερα από τον αριθμό των πυρήνων στην CPU του υπολογιστή.
Η Χιλιομετρική σας Μάϊος Βαρύ (ΥΜΜΒ)
Τα αποτελέσματα των διαφορετικών ρυθμίσεων nThreads θα ποικίλουν πολύ για διαφορετικά αιτήματα σε διαφορετικά σύνολα δεδομένων σε διαφορετικά συστήματα. Αν πραγματικά θέλετε να μάθετε το αποτέλεσμα των διαφορετικών ρυθμίσεων nThreads, εκτελέστε ρεαλιστικά τεστ.
Γιατί nThreads ανά αίτημα;
Μπορώ να ακούσω κάποιους από εσάς να σκέφτονται "Γιατί είναι nThreads ανά αίτημα; Αν το κωδικοποιούσα αυτό, θα χρησιμοποιούσα μια μόνιμη δεξαμενή με κλωστή και μια ουρά μηνυμάτων για καλύτερη απόδοση. Το πρόβλημα με τη χρήση μιας δεξαμενής νημάτων και μιας ουράς μηνυμάτων είναι ότι ένα δύσκολο αίτημα θα πλημμυρίσει την ουρά με πολλές αργές εργασίες. Αυτό θα μπλοκάρει αποτελεσματικά ERDDAP™ από την έναρξη των εργασιών για εργασίες σχετικές με άλλα αιτήματα μέχρι την αρχική αίτηση (ουσιαστικά) Τελείωσε. Έτσι, ακόμη και τα απλά επακόλουθα αιτήματα θα ανταποκρίνονταν πολύ αργά. ERDDAP Η χρήση του nThreads ανά αίτημα οδηγεί σε μια πολύ δικαιότερη χρήση των υπολογιστικών πόρων.
nThreads εναντίον πολλαπλών υπολογιστών εργασίας
Δυστυχώς, ERDDAP Το nThreads σύστημα δεν θα είναι ποτέ τόσο αποτελεσματικό όσο η πραγματική παράλληλη μέσω πολλών υπολογιστών εργαζομένων, με κάθε εργασία σε ένα κομμάτι δεδομένων, με τον τρόπο που Hadoop ή Apache Spark χρησιμοποιούνται συνήθως. Όταν η εργασία είναι πραγματικά παράλληλη/διανέμεται σε πολλαπλούς υπολογιστές, κάθε υπολογιστής μπορεί να χρησιμοποιήσει όλους τους πόρους του από την πλευρά του. Με ERDDAP 's nThreads σύστημα, κάθε ένα από τα νήματα ανταγωνίζεται για το εύρος ζώνης του ίδιου υπολογιστή, δίσκους, μνήμη, κλπ. Δυστυχώς, οι περισσότεροι από εμάς δεν έχουν τους πόρους ή τα κεφάλαια για τη δημιουργία ή ακόμη και το ενοίκιο (στο Amazon Web Services (AWS) ή πλατφόρμα Cloud του Google (GCP) ) Τεράστια δίκτυα υπολογιστών. Επίσης, σε αντίθεση με μια βάση δεδομένων που επιτρέπεται να επιστρέψει τις σειρές αποτελεσμάτων με οποιαδήποτε σειρά, ERDDAP™ υπόσχεται να επιστρέψει τις σειρές αποτελεσμάτων με μια συνεπή σειρά. Αυτός ο περιορισμός δημιουργεί ERDDAP nThreads εφαρμογή λιγότερο αποτελεσματική. Αλλά... ERDDAP Το nThreads είναι χρήσιμο σε πολλές περιπτώσεις.
Ωστόσο, υπάρχουν τρόποι να γίνει ERDDAP™ κλίμακα για να χειριστεί ένα τεράστιο αριθμό των αιτήσεων γρήγορα με τη δημιουργία δίκτυο/σύμπλεγμα/ομοσπονδία ERDDAP α .
<παλέτες & gt·
- Ξεκινώντας με ERDDAP™ έκδοση 2.12, datasets.xml μπορεί να περιλαμβάνει ένα<palettes> tag (εντός<erddapDatasets>) που παρακάμπτει το<παλέτες> τιμή ετικέτας από μηνύματα.xml (ή επιστρέφει στα μηνύματα.xml τιμή αν η ετικέτα στο datasets.xml είναι άδειο) . Αυτό σας επιτρέπει να αλλάξετε τη λίστα των διαθέσιμων παλετών ενώ ERDDAP™ τρέχει. Σας επιτρέπει επίσης να κάνετε μια αλλαγή και να έχουν επιμένουν όταν εγκαταστήσετε μια νέα έκδοση του ERDDAP . ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Οι παλέτες που αναφέρονται στο datasets.xml πρέπει να είναι ένα υπερσύνολο των παλετών που αναφέρονται στα μηνύματα.xml· διαφορετικά ERDDAP™ θα ρίξει μια εξαίρεση και να σταματήσει την επεξεργασία datasets.xml . Αυτό εξασφαλίζει ότι όλα ERDDAP™ εγκαταστάσεις τουλάχιστον υποστηρίζουν τις ίδιες παλέτες πυρήνα. ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: ERDDAP™ ελέγχει ότι τα αρχεία παλέτες που καθορίζονται στα μηνύματα.xml υπάρχουν πραγματικά, αλλά δεν ελέγχει τα αρχεία παλέτα που αναφέρονται σε datasets.xml . Είναι δική σας ευθύνη να διασφαλίσετε ότι τα αρχεία είναι παρόντα.
Επίσης, ξεκινώντας με ERDDAP™ έκδοση 2.12, αν κάνετε ένα cptfiles subdirectory στο ERDDAP™ κατάλογο περιεχομένου, ERDDAP™ θα αντιγράψει όλα τα αρχεία \*.cpt σε αυτόν τον κατάλογο στο \[ τομκάτ \] /webapps/erddap/WEB-INF/cptfiles directory κάθε φορά ERDDAP™ Ξεκινάει. Έτσι, αν βάλετε προσαρμοσμένα αρχεία cpt σε αυτόν τον κατάλογο, αυτά τα αρχεία θα χρησιμοποιηθούν από ERDDAP™ , χωρίς επιπλέον προσπάθεια από την πλευρά σας, ακόμη και όταν εγκαταστήσετε μια νέα έκδοση του ERDDAP .
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αν προσθέσετε προσαρμοσμένες παλέτες στις ERDDAP™ και έχεις EDDGrid Από τα σύνολα δεδομένων Erddap ή/και EDDTableFromErddap στα δικά σας ERDDAP™ , τότε οι χρήστες θα δείτε προσαρμοσμένες επιλογές παλέτα σας για το ERDDAP™ Κάντε μια σελίδα γραφήματος, αλλά αν ο χρήστης προσπαθήσει να τις χρησιμοποιήσει, θα πάρει ένα γράφημα με το προκαθορισμένο (συνήθως ουράνιο τόξο) Παλέτα. Αυτό συμβαίνει επειδή η εικόνα γίνεται από το τηλεχειριστήριο ERDDAP™ που δεν έχει την προσαρμοσμένη παλέτα. Οι μόνες λύσεις τώρα είναι να στείλετε email στο απομακρυσμένο ERDDAP™ διαχειριστής για να προσθέσετε τις προσαρμοσμένες παλέτες σας στο / της ERDDAP Ή στείλε email στον Κρις. John at noaa.gov να ζητήσει να προστεθούν οι παλέτες στο πρότυπο ERDDAP™ κατανομή.
<onChange>·
- [ ** <onChange> ** ] (#αλλαγή) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml που ορίζει μια ενέργεια που θα γίνει όταν δημιουργηθεί αυτό το σύνολο δεδομένων (όταν ERDDAP™ επανεκκινήθηκε) και όποτε αυτό το σύνολο δεδομένων αλλάζει με οποιονδήποτε τρόπο.
- Προς το παρόν, για EDDGrid υποκλάσεις, οποιαδήποτε αλλαγή σε μεταδεδομένα ή σε μεταβλητή άξονα (για παράδειγμα, ένα νέο χρονικό σημείο για δεδομένα σχεδόν πραγματικού χρόνου) θεωρείται αλλαγή, αλλά η επαναφόρτωση του συνόλου δεδομένων δεν θεωρείται αλλαγή (από μόνη της) .
- Επί του παρόντος, για υποκλάσεις EDDTable, κάθε επαναφόρτωση του συνόλου δεδομένων θεωρείται αλλαγή.
- Επί του παρόντος, επιτρέπονται μόνο δύο είδη δράσεων:
- "http://"ή "https://"-- Εάν η δράση αρχίζει με "http://"ή "https://", ERDDAP™ θα στείλει ένα HTTP GET αίτηση στο καθορισμένο URL. Η απάντηση θα αγνοηθεί. Για παράδειγμα, το URL μπορεί να πει σε κάποια άλλη υπηρεσία ιστού να κάνει κάτι.
- Αν το URL έχει ένα τμήμα ερωτήματος (μετά το "?") , πρέπει να είναι ήδη % κωδικοποιημένο . Πρέπει να κωδικοποιήσετε ειδικούς χαρακτήρες στους περιορισμούς (εκτός του αρχικού «&» και του κύριου '=' σε περιορισμούς) στη μορφή %HH, όπου HH είναι η δεκαεξαδική τιμή 2 ψηφίων του χαρακτήρα. Συνήθως, απλά χρειάζεται να μετατρέψετε μερικούς από τους χαρακτήρες στίξης: % σε %25, & σε %26, " σε %22,<σε% 3C, = σε% 3D, > σε% 3E, + σε% 2B, | σε %7C, \[ σε %5B, \] σε% 5D, χώρος σε% 20, και μετατροπή όλων των χαρακτήρων πάνω από # 127 σε μορφή UTF-8 και στη συνέχεια ποσοστό κωδικοποιεί κάθε byte της μορφής UTF-8 σε μορφή %HH (ζητήστε βοήθεια από έναν προγραμματιστή) . Για παράδειγμα, & stationID >="41004"" γίνεται & stationID %3E=%2241004%22 Το ποσοστό κωδικοποίησης είναι γενικά απαιτείται όταν έχετε πρόσβαση ERDDAP μέσω λογισμικού άλλου από ένα πρόγραμμα περιήγησης. Οι περιηγητές συνήθως χειρίζονται το ποσοστό κωδικοποίησης για εσάς. Σε ορισμένες περιπτώσεις, θα πρέπει να κωδικοποιήσετε τοις εκατό όλους τους χαρακτήρες εκτός από το A-Za-z0-9\!.~ " () \*, αλλά ακόμα δεν κωδικοποιούν το αρχικό '&' ή το κύριο '=' σε περιορισμούς. Οι γλώσσες προγραμματισμού έχουν εργαλεία για να το κάνουν αυτό (για παράδειγμα, δείτε Java Σ java.net.URLEncoder και Java Το σενάριο είναι...encodeURIComponent()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) ) και υπάρχουν ιστοσελίδες που το ποσοστό κωδικοποιεί / decode για εσάς .
- Από datasets.xml είναι ένα αρχείο XML, ΠΡΕΠΕΙ επίσης &-κωδικοποίησε ΟΛΑ '&', '<', και '>' στο URL ως '&?', '<', και '>?' μετά από το ποσοστό κωδικοποίησης.
- Παράδειγμα: Για ένα URL που μπορείτε να πληκτρολογήσετε σε ένα πρόγραμμα περιήγησης ως:
https://www.company.com/webService?department=R%26D¶m2=value2
Θα πρέπει να ορίσετε<onChange> tag μέσω (σε μία γραμμή)
<onChange>https://www.company.com/webService?department=R%26D&param2=value2</onChange> - mailto: -- Εάν η ενέργεια αρχίζει με "mailto:", ERDDAP™ θα στείλει ένα email στην επόμενη διεύθυνση ηλεκτρονικού ταχυδρομείου που δείχνει ότι το σύνολο δεδομένων έχει ενημερωθεί / αλλάξει. Για παράδειγμα:<onChange>mailto:john.smith@company.com</onChange> Εάν έχετε ένα καλό λόγο για ERDDAP™ για να υποστηρίξει κάποιο άλλο είδος ενέργειας, στείλτε μας ένα email που περιγράφει τι θέλετε.
- "http://"ή "https://"-- Εάν η δράση αρχίζει με "http://"ή "https://", ERDDAP™ θα στείλει ένα HTTP GET αίτηση στο καθορισμένο URL. Η απάντηση θα αγνοηθεί. Για παράδειγμα, το URL μπορεί να πει σε κάποια άλλη υπηρεσία ιστού να κάνει κάτι.
- Αυτό το ταμπελάκι είναι πιθανό. Μπορεί να υπάρχουν όσες από αυτές τις ετικέτες θέλετε. Χρησιμοποιήστε μία από αυτές τις ετικέτες για κάθε ενέργεια που πρόκειται να εκτελεστεί.
- Αυτό είναι ανάλογο με ERDDAP Το σύστημα συνδρομής email/URL, αλλά αυτές οι ενέργειες δεν αποθηκεύονται επίμονα (Δηλαδή, αποθηκεύονται μόνο σε αντικείμενο EDD) .
- Για να αφαιρέσετε μια συνδρομή, απλά αφαιρέστε το<onChange> ετικέτα. Η αλλαγή θα σημειωθεί την επόμενη φορά που θα επαναφορτωθεί το σύνολο δεδομένων.
<επαναφόρτωσηEveryNMinutes>
- [ ** <επαναφόρτωση Κάθε λεπτό> ** ] (#να ξαναγεμίσω κάθε λεπτό) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml όλων σχεδόν των τύπων συνόλου δεδομένων που καθορίζουν πόσο συχνά πρέπει να επαναφορτώνεται το σύνολο δεδομένων. Για παράδειγμα,
<reloadEveryNMinutes>60</reloadEveryNMinutes>-
Γενικά, σύνολα δεδομένων που αλλάζουν συχνά (Για παράδειγμα, πάρτε νέα αρχεία δεδομένων) πρέπει να επαναφορτώνεται συχνά, για παράδειγμα, κάθε 60 λεπτά.
-
Τα σύνολα δεδομένων που αλλάζουν σπάνια θα πρέπει να επαναφορτώνονται σπάνια, για παράδειγμα, κάθε 1440 λεπτά (ημερησίως) ή 10080 λεπτά (εβδομαδιαία) .
-
Αυτή η ετικέτα είναι ΟΠΤΙΚΗ, αλλά συνιστάται. Η προεπιλογή είναι 10080.
-
Ένα παράδειγμα είναι:<επαναφόρτωση όλων των λεπτών>1440<Αναφόρτωση Κάθε λεπτό>
-
Όταν ένα σύνολο δεδομένων επαναφορτώνεται, όλα τα αρχεία στο bigParentΚατάλογος - Ναι. * datasetID * ο κατάλογος διαγράφεται.
-
Ό,τι κι αν είναι αυτό ρυθμισμένο, ένα σύνολο δεδομένων δεν θα φορτώνεται πιο συχνά από ό,τι<φόρτωσηΣτοιχεία δεδομένωνMinutes> (προεπιλογή = 15) , όπως ορίζεται στο setup.xml . Έτσι, αν θέλετε τα σύνολα δεδομένων να επαναφορτώνονται πολύ συχνά, θα πρέπει να ρυθμίσετε και τα δύο reloadEveryNMinutes και loadDatasets Λεπτά λεπτά σε μικρές τιμές.
-
Μην ορίσετε επαναφόρτωσηEveryNMinutes στην ίδια τιμή με το φορτίοDatasets Λεπτά λεπτά, επειδή ο χρόνος που έχει παρέλθει είναι πιθανό να είναι (για παράδειγμα) 14:58 ή 15:02, έτσι ώστε το σύνολο δεδομένων θα επαναφορτιστεί μόνο στο ήμισυ περίπου των μεγάλων επαναφόρτωσης. Αντ 'αυτού, χρησιμοποιήστε ένα μικρότερο (για παράδειγμα, 10) ή μεγαλύτερο (για παράδειγμα, 20) επαναφόρτωση Κάθελεπτήτιμή.
-
Ανεξάρτητα από την επαναφόρτωσηEveryNminutes, μπορείτε να πείτε χειροκίνητα ERDDAP™ να επαναφορτώσει ένα συγκεκριμένο σύνολο δεδομένων το συντομότερο δυνατόν μέσω ενός Αρχείο σημαίας .
-
Για περίεργους προγραμματιστές -- in ERDDAP™ , η επαναφόρτωση όλων των συνόλων δεδομένων γίνεται με δύο νήματα μονής χρήσης. Ένα νήμα ξεκινά μια μικρή επαναφόρτωση αν βρει ένα αρχείο σημαίας ή μια μεγάλη επαναφόρτωση (που ελέγχει όλα τα σύνολα δεδομένων για να δούμε αν πρέπει να επαναφορτωθούν) . Το άλλο νήμα κάνει την πραγματική επαναφόρτωση των συνόλων δεδομένων ένα κάθε φορά. Αυτά τα νήματα λειτουργούν στο παρασκήνιο εξασφαλίζοντας ότι όλα τα σύνολα δεδομένων είναι ενημερωμένα. Το νήμα που κάνει στην πραγματικότητα τις επαναφορτώσεις προετοιμάζει μια νέα έκδοση ενός συνόλου δεδομένων στη συνέχεια το ανταλλάσσει στη θέση του (ουσιαστικά αντικατάσταση της παλαιάς έκδοσης ατομικά) . Έτσι είναι πολύ πιθανό να συμβεί η ακόλουθη ακολουθία γεγονότων (Είναι καλό.) :
- ERDDAP™ εκκίνηση επαναφόρτωσης συνόλου δεδομένων (δημιουργία νέας έκδοσης) Στο βάθος.
- Ο χρήστης 'A' υποβάλλει αίτηση στο σύνολο δεδομένων. ERDDAP™ χρησιμοποιεί την τρέχουσα έκδοση του συνόλου δεδομένων για να δημιουργήσει την απάντηση. (Αυτό είναι καλό. Δεν υπήρξε καμία καθυστέρηση για το χρήστη, και η τρέχουσα έκδοση του συνόλου δεδομένων δεν πρέπει ποτέ να είναι πολύ μπαγιάτικη.)
- ERDDAP™ τελειώνει τη δημιουργία της νέας επαναφορτωμένης έκδοσης του συνόλου δεδομένων και ανταλλάσσει ότι η νέα έκδοση σε παραγωγή. Όλες οι επόμενες νέες αιτήσεις αντιμετωπίζονται από τη νέα έκδοση του συνόλου δεδομένων. Για συνέπεια, το αίτημα του χρήστη Α εξακολουθεί να συμπληρώνεται από την αρχική έκδοση.
- Ο χρήστης 'B' υποβάλλει αίτηση στο σύνολο δεδομένων και ERDDAP™ χρησιμοποιεί τη νέα έκδοση του συνόλου δεδομένων για να δημιουργήσει την απάντηση.
- Τελικά τα αιτήματα του χρήστη Α και του χρήστη Β ολοκληρώνονται (Ίσως Πρώτος ο Α, ίσως ο πρώτος ο Β.) .
-
Ακούω κάποιον να λέει, "Μόνο δύο τριάδες! Χα! Αυτό είναι γελοίο! Θα πρέπει να συσταθεί ότι μέχρι έτσι ώστε η επαναφόρτωση των συνόλων δεδομένων χρησιμοποιεί όσες κλωστές που απαιτούνται, έτσι ώστε όλα να γίνεται γρηγορότερα και με μικρή ή καθόλου καθυστέρηση. Ναι και όχι. Το πρόβλημα είναι ότι η φόρτωση περισσότερων του ενός συνόλων δεδομένων τη φορά δημιουργεί αρκετά σκληρά νέα προβλήματα. Όλα πρέπει να λυθούν ή να αντιμετωπιστούν. Το τρέχον σύστημα λειτουργεί καλά και έχει διαχειρίσιμα προβλήματα (για παράδειγμα, η δυνατότητα υστέρησης πριν από την παρατήρηση μιας σημαίας) . (Αν χρειάζεστε βοήθεια να τους διαχειριστείτε, δείτε μας τμήμα για τη λήψη πρόσθετης υποστήριξης .) Σχετικά ενημέρωση Κάθε NMILIS . σύστημα λειτουργεί μέσα σε νήματα απόκρισης, έτσι ώστε να μπορεί και να οδηγεί σε πολλαπλά σύνολα δεδομένων που ενημερώνονται (όχι την πλήρη επαναφόρτωση) ταυτόχρονα.
Proactive εναντίον Reactive
ERDDAP Το σύστημα επαναφόρτωσης είναι ενεργό -- τα σύνολα δεδομένων επαναφορτίζονται σύντομα μετά την επαναφόρτωσή τους Κάθε λεπτός χρόνος τελειώνει (Δηλαδή, γίνονται "παραμύθι", αλλά ποτέ πολύ μπαγιάτικα) , είτε το σύνολο δεδομένων λαμβάνει αιτήματα από τους χρήστες ή όχι. Λοιπόν... ERDDAP™ Τα σύνολα δεδομένων είναι πάντα ενημερωμένα και έτοιμα για χρήση. Αυτό είναι σε αντίθεση με την αντιδραστική προσέγγιση του THREDDS: το αίτημα ενός χρήστη είναι αυτό που λέει THREDDS να ελέγξει αν ένα σύνολο δεδομένων είναι μπαγιάτικο (Μπορεί να είναι πολύ μπαγιάτικο.) . Αν είναι μπαγιάτικο, το ThREDDS κάνει το χρήστη να περιμένει (συχνά για λίγα λεπτά) ενώ το σύνολο δεδομένων επαναφορτίζεται.
<ενημέρωση Κάθε NMillis>·
- [ ** <ενημέρωσηEveryNMillis> ** ] (# update everynnmillis (στα Αγγλικά)) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag in datasets.xml ορισμένων τύπων συνόλου δεδομένων που βοηθά ERDDAP™ εργασία με σύνολα δεδομένων που αλλάζουν πολύ συχνά (τόσο συχνά όσο περίπου κάθε δευτερόλεπτο) . Σε αντίθεση με αυτό ERDDAP Είναι τακτική, προληπτική, [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) σύστημα για την πλήρη επαναφόρτωση κάθε συνόλου δεδομένων, αυτό το πρόσθετο σύστημα είναι αντιδραστικό (ενεργοποιήθηκε από αίτημα χρήστη) και πιο γρήγορα επειδή είναι αυξητική (απλά ενημέρωση των πληροφοριών που πρέπει να επικαιροποιηθούν) . Για παράδειγμα, εάν ένα αίτημα για EDDGrid Από το σύνολο δεδομένων Dap εμφανίζεται περισσότερο από τον καθορισμένο αριθμό των χιλιοστά του δευτερολέπτου από την τελευταία ενημέρωση, ERDDAP™ Θα δούμε αν υπάρχουν νέες τιμές για το αριστερό (πρώτη, συνήθως "time" ) διάσταση και, αν ναι, απλά κατεβάστε αυτές τις νέες τιμές πριν χειριστείτε το αίτημα του χρήστη. Αυτό το σύστημα είναι πολύ καλό στο να διατηρεί ένα ταχέως μεταβαλλόμενο σύνολο δεδομένων ενημερωμένο με ελάχιστες απαιτήσεις στην πηγή δεδομένων, αλλά με κόστος την ελαφρά επιβράδυνση της επεξεργασίας κάποιων αιτημάτων των χρηστών.
- Για να χρησιμοποιήσετε αυτό το σύστημα, προσθέστε (για παράδειγμα) :
<updateEveryNMillis>1000</updateEveryNMillis>
- Για να χρησιμοποιήσετε αυτό το σύστημα, προσθέστε (για παράδειγμα) :
αμέσως μετά το<επαναφόρτωση όλων των λεπτών> ετικέτα για το σύνολο δεδομένων datasets.xml . Ο αριθμός των χιλιοστά του δευτερολέπτου που θα ορίσετε μπορεί να είναι τόσο μικρός όσο 1 (να διασφαλίζει ότι το σύνολο δεδομένων είναι πάντα ενημερωμένο) . Τιμή 0 (το προκαθορισμένο) ή ένας αρνητικός αριθμός απενεργοποιεί το σύστημα.
- Λόγω της αυξητικής φύσης τους, οι ενημερώσεις θα πρέπει να τελειώσουν πολύ γρήγορα, έτσι ώστε οι χρήστες δεν θα πρέπει ποτέ να περιμένουν πολύ καιρό.
- Εάν μια δεύτερη αίτηση δεδομένων φτάσει πριν ολοκληρωθεί η προηγούμενη ενημέρωση, η δεύτερη αίτηση δεν θα ενεργοποιήσει άλλη ενημέρωση.
- Σε όλη τη διάρκεια της τεκμηρίωσης, θα προσπαθήσουμε να χρησιμοποιήσουμε τη λέξη "επανφόρτωση" για τακτικές, πλήρεις επαναφορτίσεις συνόλου δεδομένων, και "ενημέρωση" για αυτές τις νέες πρόσθετες, μερικές ενημερώσεις.
- Για σκοπούς δοκιμών, ορισμένα διαγνωστικά τυπώνονται για να καταγραφούν.txt εάν [<logLevel>] (#loglevel) μέσα datasets.xml έχει οριστεί να "όλα".
- Εάν χρησιμοποιείτε πρόσθετες ενημερώσεις και ειδικά εάν το πιο αριστερό (πρώτη) , για παράδειγμα, ο χρόνος, ο άξονας είναι μεγάλος, μπορεί να θέλετε να ορίσετε<reloadEveryNMinutes> σε μεγαλύτερο αριθμό (1440;) , έτσι ώστε οι ενημερώσεις κάνουν το μεγαλύτερο μέρος του έργου για να κρατήσει το σύνολο των δεδομένων ενημερωμένα, και οι πλήρεις επαναφορτώσεις γίνονται σπάνια.
- Σημείωση: αυτό το νέο σύστημα ενημέρωσης ενημερώνει μεταδεδομένα (για παράδειγμα, ο χρόνος actual\_range , χρόνος\_κάλυψη\_τέλος, ...) Αλλά δεν ενεργοποιεί την αλλαγή (email ή αφή URL) ή να αλλάξει το RSS ζωοτροφές (Ίσως θα έπρεπε...) .
- Για όλα τα σύνολα δεδομένων που χρησιμοποιούν υποκλάσεις EDDGrid Από αρχεία και Πίνακας EDD από αρχεία :
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: όταν προσθέσετε ένα νέο αρχείο δεδομένων σε ένα σύνολο δεδομένων αντιγράφοντάς το στον κατάλογο που ERDDAP™ Κοίτα, υπάρχει ένας κίνδυνος που ERDDAP™ θα παρατηρήσετε το μερικώς γραπτό αρχείο; προσπαθήστε να το διαβάσετε, αλλά αποτύχετε επειδή το αρχείο είναι ελλιπής; δηλώστε το αρχείο να είναι ένα "κακό" αρχείο και αφαιρέστε το (προσωρινά) από το σύνολο δεδομένων. Για να το αποφύγουμε αυτό, εμείς ΣΤΡΑΤΗΓΙΚΗ ΣΥΣΤΑΣΗ ότι αντιγράφετε ένα νέο αρχείο στον κατάλογο με ένα προσωρινό όνομα (Για παράδειγμα, 20150226 .nc Tmp) που δεν ταιριάζει με το αρχείο συνόλων δεδομένων ΌνομαRegex (~ ~ .nc ) , στη συνέχεια, μετονομασία του αρχείου στο σωστό όνομα (Για παράδειγμα, 20150226 .nc ) . Αν χρησιμοποιήσετε αυτή την προσέγγιση, ERDDAP™ θα αγνοήσει το προσωρινό αρχείο και μόνο παρατηρήσετε το σωστό όνομα αρχείο όταν είναι πλήρης και έτοιμη να χρησιμοποιηθεί.
- Εάν τροποποιήσετε τα υπάρχοντα αρχεία δεδομένων στη θέση τους (για παράδειγμα, να προστεθεί ένα νέο σημείο δεδομένων) ,<ενημέρωσηEveryNMillis> θα λειτουργήσει καλά αν οι αλλαγές εμφανίζονται ατομικά (σε μια στιγμή) και το αρχείο είναι πάντα ένα έγκυρο αρχείο. Για παράδειγμα, η βιβλιοθήκη netcdf-java επιτρέπει τις προσθήκες στην απεριόριστη διάσταση μιας "κλασικής" .nc αρχείο v3 να γίνει ατομικά. <ενημέρωσηEveryNMillis> θα λειτουργήσει άσχημα αν το αρχείο δεν είναι έγκυρο ενώ οι αλλαγές γίνονται.
- <updateEveryNMillis> θα λειτουργήσει καλά για σύνολα δεδομένων όπου ένα ή μερικά αρχεία αλλάζουν σε σύντομο χρονικό διάστημα.
- <ενημέρωσηEveryNMillis> θα λειτουργήσει άσχημα για σύνολα δεδομένων όπου ένας μεγάλος αριθμός αρχείων αλλάζει σε σύντομο χρονικό διάστημα (εκτός εάν οι αλλαγές εμφανίζονται ατομικά) . Για αυτά τα σύνολα δεδομένων, είναι καλύτερο να μην χρησιμοποιούνται<ενημέρωσηEveryNMillis> και να ορίσετε ένα σημαία για να πω ERDDAP™ για να ξαναγεμίσει το σύνολο δεδομένων.
- <ενημέρωσηEveryNMillis> δεν ενημερώνει τις πληροφορίες που σχετίζονται με το [< subsetVariables >] (#υποκαθορισμένες μεταβλητές) . Κανονικά, αυτό δεν είναι ένα πρόβλημα, επειδή η subsetVariables έχουν πληροφορίες για πράγματα που δεν αλλάζουν πολύ συχνά (για παράδειγμα, τον κατάλογο των ονομάτων σταθμών, γεωγραφικά πλάτη και γεωγραφικό μήκος) . Εάν η subsetVariables μεταβολές δεδομένων (για παράδειγμα, όταν ένας νέος σταθμός προστίθεται στο σύνολο δεδομένων) , στη συνέχεια να επικοινωνήσετε με το URL σημαίας για να πει το σύνολο δεδομένων ERDDAP™ για να ξαναγεμίσει το σύνολο δεδομένων. Διαφορετικά, ERDDAP™ δεν θα παρατηρήσετε το νέο υποσύνολο Μεταβλητές πληροφορίες μέχρι την επόμενη φορά που θα επαναφορτωθεί το σύνολο δεδομένων (<reloadEveryNminutes>).
- Η γενική μας σύσταση είναι να χρησιμοποιήσουμε:
<reloadEveryNMinutes>1440</reloadEveryNMinutes>
<updateEveryNMillis>10000</updateEveryNMillis>- Πρόβλημα; Σε υπολογιστές Linux, αν χρησιμοποιείτε<ενημέρωσηEveryNMillis> με EDDGrid FromFiles ή EDDTableFromFiles τάξεις, μπορείτε να δείτε ένα πρόβλημα όπου ένα σύνολο δεδομένων αποτυγχάνει να φορτώσει (περιστασιακά ή με συνέπεια) με το μήνυμα λάθους: "IOException: όριο χρήστη των περιπτώσεων ακινητοποίησης που έχουν επιτευχθεί ή πάρα πολλά ανοικτά αρχεία. Η αιτία μπορεί να είναι ένα σφάλμα Java το οποίο προκαλεί την ανακοπή των περιπτώσεων που δεν συλλέγονται σκουπίδια. Αυτό το πρόβλημα αποφεύγεται ERDDAP™ v1.66 και ψηλότερα. Έτσι η καλύτερη λύση είναι να αλλάξετε την τελευταία έκδοση του ERDDAP .
Αν αυτό δεν λύσει το πρόβλημα (δηλαδή, αν έχετε ένα πραγματικά μεγάλο αριθμό συνόλων δεδομένων χρησιμοποιώντας<updateEveryNMillis>), μπορείτε να διορθώσετε αυτό το πρόβλημα καλώντας:
sudo sysctl fs.inotify.max\\_user\\_watches=65536
sudo sysctl fs.inotify.max\\_user\\_instances=1024
sudo sysctl -p
Ή, χρησιμοποιήστε υψηλότερους αριθμούς αν το πρόβλημα επιμένει. Η προεπιλογή για ρολόγια είναι 8192. Η προεπιλογή για περιπτώσεις είναι 128.
- Μπορείς να το βάλεις.<ενημέρωσηMaxΕκδηλώσεις>10</updateMaxevents> μέσα datasets.xml (σε με τις άλλες ρυθμίσεις κοντά στην κορυφή) για την αλλαγή του μέγιστου αριθμού αλλαγών αρχείων (προεπιλογή=10) που θα επεξεργαστεί από το σύστημα updateEveryNMillis. Ένας μεγαλύτερος αριθμός μπορεί να είναι χρήσιμος για το σύνολο δεδομένων όπου είναι πολύ σημαντικό να τηρούνται πάντα ενημερωμένοι. Δείτε το ενημέρωση τεκμηρίωσης Maxevents .
- Για τους περίεργους προγραμματιστές -- αυτές οι πρόσθετες ενημερώσεις, σε αντίθεση με ERDDAP Είναι γεμάτο. επαναφόρτωση όλων των λεπτών σύστημα, να συμβεί μέσα από τα νήματα αίτημα χρήστη. Έτσι, κάθε αριθμός συνόλων δεδομένων μπορεί να ενημερώνεται ταυτόχρονα. Υπάρχει κώδικας. (και μια κλειδαριά) για να εξασφαλιστεί ότι μόνο ένα νήμα εργάζεται σε μια ενημέρωση για οποιοδήποτε δεδομένο σύνολο δεδομένων ανά δεδομένη στιγμή. Η δυνατότητα πολλαπλών ταυτόχρονων ενημερώσεων ήταν εύκολη· επιτρέποντας πολλαπλές ταυτόχρονες πλήρεις επαναφορτίσεις θα ήταν δυσκολότερη.
<πηγή μπορεί να περιορίσει StringEQNE>·
- [ ** <πηγή μπορεί να περιορίσει StringEQNE> ** ] (#Πηγή μπορεί να συγκρατήσειstringeqne) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<σύνολο δεδομένων> tag in datasets.xml που προσδιορίζει εάν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με τους φορείς εκμετάλλευσης = και !=.
- Για τον πίνακα EDDFromDapSequence, αυτό ισχύει μόνο για τις μεταβλητές συμβολοσειράς εξωτερικής ακολουθίας. Εικάζεται ότι η πηγή δεν μπορεί να χειριστεί περιορισμούς στις εσωτερικές μεταβλητές ακολουθίας.
- Αυτό το ταμπελάκι είναι πιθανό. Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
- Για τον πίνακα EDDFromDapSequence OPeNDAP Διακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε αληθή (το προκαθορισμένο) .
- Για τον πίνακα EDDFromDapSequence Σέρβερς, αυτό θα πρέπει να ρυθμιστεί σε λάθος.
- Ένα παράδειγμα είναι:
<sourceCanConstrainStringEQNE>true</sourceCanConstrainStringEQNE>
<πηγήCanConstrainStringGTLT>·
- [ ** <πηγήΜπορεί να περιορίσει StringGTLT> ** ] (#Πηγή μπορεί να συγκρατήσειstringgtttt) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<dataset> tag που καθορίζει εάν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με το<,<=, > και >= χειριστές.
- Για τον πίνακα EDDFromDapSequence, αυτό ισχύει μόνο για τις μεταβλητές συμβολοσειράς εξωτερικής ακολουθίας. Εικάζεται ότι η πηγή δεν μπορεί να χειριστεί περιορισμούς στις εσωτερικές μεταβλητές ακολουθίας.
- Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
- Αυτό το ταμπελάκι είναι πιθανό. Η προεπιλογή είναι αλήθεια.
- Για τον πίνακα EDDFromDapSequence OPeNDAP Διακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε αληθή (το προκαθορισμένο) .
- Για τον πίνακα EDDFromDapSequence Σέρβερς, αυτό θα πρέπει να ρυθμιστεί σε λάθος.
- Ένα παράδειγμα είναι:
<sourceCanConstrainStringGTLT>true</sourceCanConstrainStringGTLT>
<πηγήCanConstrengRegex>·
- [ ** <πηγήΜπορεί να περιορίσει StringRegex> ** ] (#πηγή μπορεί να constringregex) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<dataset> tag που καθορίζει αν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με κανονικές εκφράσεις, και αν ναι, τι είναι ο φορέας εκμετάλλευσης.
- Οι έγκυρες τιμές είναι "=
" (το DAP πρότυπο) , "=" (λανθασμένα υποστηρίζεται από πολλούς DAP εξυπηρετητές) , ή " (υποδεικνύοντας ότι η πηγή δεν υποστηρίζει κανονικές εκφράσεις) . - Αυτό το ταμπελάκι είναι πιθανό. Η προεπιλογή είναι...
- Για τον πίνακα EDDFromDapSequence OPeNDAP Διακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε "" (το προκαθορισμένο) .
- Για τον πίνακα EDDFromDapSequence Διακομιστές Dapper, αυτό θα πρέπει να ρυθμιστεί σε "" (το προκαθορισμένο) .
- Ένα παράδειγμα είναι:
- Οι έγκυρες τιμές είναι "=
<sourceCanConstrainStringRegex>=~</sourceCanConstrainStringRegex>
<πηγήCanDoDistinct>·
- [ ** <πηγή CanDoDistinct> ** ] (#πηγήκαντοδιακριτικό) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDDFromDatabase<dataset> ετικέτα που καθορίζει αν η βάση δεδομένων πηγής θα πρέπει να χειριστεί &distinct () περιορισμοί στις ερωτήσεις των χρηστών.
- Αυτό το ταμπελάκι είναι πιθανό. Οι έγκυρες τιμές είναι όχι ( ERDDAP™ λαβές διακριτές· η προεπιλογή) , μερική (η πηγή χειρίζεται διακριτά και ERDDAP™ Το χειρίζεται ξανά.) , και ναι (η πηγή χειρίζεται διακριτά) .
- Εάν χρησιμοποιείτε όχι και ERDDAP™ εξαντλείται η μνήμη όταν χειρίζεστε διακριτά, χρησιμοποιήστε ναι.
- Αν χρησιμοποιείτε το ναι και η βάση δεδομένων πηγής χειρίζεται διακριτά πολύ αργά, χρησιμοποιήστε το όχι.
- μερική σας δίνει το χειρότερο και από τα δύο: είναι αργή επειδή ο χειρισμός της βάσης δεδομένων του διακριτού είναι αργή και μπορεί να ξεμείνει από τη μνήμη στο ERDDAP .
- Οι βάσεις δεδομένων ερμηνεύουν το DISTINCT ως αίτημα μόνο για μοναδικές σειρές αποτελεσμάτων, ενώ ERDDAP™ Το ερμηνεύει ως αίτημα για έναν ταξινομημένο κατάλογο μοναδικών σειρών αποτελεσμάτων. Αν το ρυθμίσετε σε μερική ή ναι, ERDDAP™ αυτόματα λέει επίσης στη βάση δεδομένων να ταξινομήσει τα αποτελέσματα.
- Μια μικρή διαφορά στα αποτελέσματα: Με όχι | μερική, ERDDAP™ will κατά την έναρξη των αποτελεσμάτων (πριν από μη-"" συμβολοσειρές) . Με ναι, η βάση δεδομένων μπορεί (Τα Postgres θα το κάνουν) είδος "" στο τέλος των αποτελεσμάτων (μετά από μη-" συμβολοσειρές) . Υποθέτω ότι αυτό θα επηρεάσει επίσης τη διαλογή των σύντομων λέξεων σε σχέση με τις μακρύτερες λέξεις που ξεκινούν με τη σύντομη λέξη. Για παράδειγμα, ERDDAP™ θα ταξινομήσει " Simon" πριν " Simons".
- Ένα παράδειγμα είναι:
<sourceCanDoDistinct>yes</sourceCanDoDistinct>
<πηγήCanOrderBy>
- [ ** <πηγή CanOrderBy> ** ] (#Η πηγή μπορεί να διατάξει) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDDFromDatabase<dataset> ετικέτα που καθορίζει αν η βάση δεδομένων πηγής θα πρέπει να χειριστεί & orderBy (...) περιορισμοί στις ερωτήσεις των χρηστών.
- Αυτό το ταμπελάκι είναι πιθανό. Οι έγκυρες τιμές είναι όχι ( ERDDAP™ Λαβές orderBy (...) · η προεπιλογή) , μερική (οι λαβές πηγής orderBy και ERDDAP™ Το χειρίζεται ξανά.) , και ναι (οι λαβές πηγής orderBy (...) ) .
- Εάν χρησιμοποιείτε όχι και ERDDAP™ τελειώνει η μνήμη κατά το χειρισμό orderBy (...) , χρησιμοποίησε ναι.
- Εάν χρησιμοποιείτε ναι και η βάση δεδομένων πηγής χειρίζεται orderBy (...) Πολύ αργά, χρησιμοποίησε όχι.
- μερική σας δίνει το χειρότερο και από τα δύο: είναι αργή επειδή ο χειρισμός της βάσης δεδομένων orderBy (...) είναι αργή και μπορεί να ξεμείνει από μνήμη σε ERDDAP .
- Μια μικρή διαφορά στα αποτελέσματα: Με όχι | μερική, ERDDAP™ will κατά την έναρξη των αποτελεσμάτων (πριν από μη-"" συμβολοσειρές) . Με ναι, η βάση δεδομένων μπορεί (Τα Postgres θα το κάνουν) είδος "" στο τέλος των αποτελεσμάτων (μετά από μη-" συμβολοσειρές) . Αυτό μπορεί επίσης να επηρεάσει τη διαλογή των σύντομων λέξεων έναντι των μακρύτερων λέξεων που ξεκινούν με τη σύντομη λέξη. Για παράδειγμα, ERDDAP™ θα ταξινομήσει " Simon" πριν " Simons", αλλά δεν είμαι σίγουρος για το πώς μια βάση δεδομένων θα τα ταξινομήσει.
- Ένα παράδειγμα είναι:
<sourceCanOrderBy>yes</sourceCanOrderBy>
<ΠηγήΧρειάζεταιΕπέκταση του FP\_EQ>
- [ ** <ΠηγήΧρειάζεται Διευρυμένο FP\_EQ> ** ] (#Η πηγή χρειάζεται επέκτασηfp_eq) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<σύνολο δεδομένων> ετικέτα που καθορίζει (αλήθεια (το προκαθορισμένο) ή ψευδής) εάν η πηγή χρειάζεται βοήθεια με ερωτήματα<αριθμητικό Μεταβλητή>=<πλωτό PointValue> (και !=, >=,<=). Για παράδειγμα,
<sourceNeedsExpandedFP\\_EQ>false</sourceNeedsExpandedFP\\_EQ>- Για ορισμένες πηγές δεδομένων, αριθμητικά ερωτήματα που περιλαμβάνουν =, !=,<=, ή >= δεν μπορεί να λειτουργήσει όπως επιθυμεί με αριθμούς κινητής υποδιαστολής. Για παράδειγμα, μια αναζήτηση για γεωγραφικό μήκος=220.2 μπορεί να αποτύχει εάν η τιμή αποθηκεύεται ως 220.20000000000001.
- Αυτό το πρόβλημα προκύπτει επειδή οι αριθμοί κινητής υποδιαστολής είναι δεν εκπροσωπείται ακριβώς μέσα σε υπολογιστές .
- Εάν η πηγήΧρειάζεται Επέκταση του FP\_EQ έχει οριστεί για την αλήθεια (το προκαθορισμένο) , ERDDAP™ τροποποιεί τα ερωτήματα που αποστέλλονται στην πηγή δεδομένων για να αποφευχθεί αυτό το πρόβλημα. Είναι πάντα ασφαλές και καλό να το αφήνουμε αυτό να ισχύει.
< sourceUrl >
- [ ** < sourceUrl > ** ] (#πηγή) είναι μια κοινή ετικέτα μέσα στο παγκόσμιο σύνολο δεδομένων< addAttributes > ετικέτα που καθορίζει το URL που είναι η πηγή των δεδομένων.
- Ένα παράδειγμα είναι:
(Αλλά βάλε τα όλα σε μια γραμμή.)<sourceUrl>https://oceanwatch.pfeg.noaa.gov/thredds/dodsC/satellite/VH/chla/1day</sourceUrl>- Μέσα ERDDAP™ , όλα τα σύνολα δεδομένων θα έχουν ένα - sourceUrl " στα συνδυασμένα παγκόσμια χαρακτηριστικά που εμφανίζονται στους χρήστες.
- Για τους περισσότερους τύπους συνόλου δεδομένων, αυτή η ετικέτα είναι REQUIRED. Δείτε την περιγραφή του τύπου συνόλου δεδομένων για να μάθετε αν αυτό είναι ΑΠΑΙΤΕΙΤΑΙ ή όχι.
- Για ορισμένα σύνολα δεδομένων, το ξεχωριστό< sourceUrl > ετικέτα δεν επιτρέπεται. Αντ 'αυτού, θα πρέπει να παρέχουν ένα - sourceUrl " παγκόσμιο χαρακτηριστικό , συνήθως στο παγκόσμιο -> addAttributes <. Αν δεν υπάρχει πραγματικό URL πηγής (για παράδειγμα, εάν τα δεδομένα αποθηκεύονται σε τοπικά αρχεία) , αυτό το χαρακτηριστικό συχνά έχει απλά μια αξία χρήστη, για παράδειγμα,<att name="name"> (τοπικά αρχεία) </att> .
- Για τα περισσότερα σύνολα δεδομένων, αυτή είναι η βάση του URL που χρησιμοποιείται για να ζητήσει δεδομένα. Για παράδειγμα, για DAP servers, αυτό είναι το URL στο οποίο .dods, .das, .dds, ή .html θα μπορούσε να προστεθεί.
- Από datasets.xml είναι ένα αρχείο XML, ΠΡΕΠΕΙ επίσης να κωδικοποιήσει '&', '<', και '>' στο URL ως '&?', '<«, και «>».
- Για τους περισσότερους τύπους συνόλου δεδομένων, ERDDAP™ προσθέτει το αρχικό sourceUrl (η τοπική πηγήUrl" στον πηγαίο κώδικα) στο καθολικά χαρακτηριστικά (όπου γίνεται το "publicSourceUrl" στον πηγαίο κώδικα) . Όταν η πηγή δεδομένων είναι τοπικά αρχεία, ERDDAP™ προσθέτει sourceUrl =" (τοπικά αρχεία) " στα παγκόσμια χαρακτηριστικά ως προφύλαξη ασφαλείας. Όταν η πηγή δεδομένων είναι μια βάση δεδομένων, ERDDAP™ προσθέτει sourceUrl =" (βάση δεδομένων πηγής) " στα παγκόσμια χαρακτηριστικά ως προφύλαξη ασφαλείας. Εάν κάποια σύνολα δεδομένων σας χρησιμοποιούν μη δημόσια sourceUrl Σ (συνήθως επειδή ο υπολογιστής τους είναι στο DMZ σας ή σε ένα τοπικό LAN) μπορείτε να χρησιμοποιήσετε [<μετατροπή σε PublicSourceUrl>] (#μετατροπή σε δημόσια πηγή) ετικέτες για να καθορίσετε πώς να μετατρέψετε το τοπικό sourceUrl ιπ δημόσια sourceUrl Σ.
- Α sourceUrl μπορεί να ξεκινήσει με http:// , https:// , ftp://, και ίσως άλλα προθέματα. https οι συνδέσεις διαβάζουν και ελέγχουν το ψηφιακό πιστοποιητικό της πηγής για να διασφαλίσουν ότι η πηγή είναι αυτή που λένε ότι είναι. Σε σπάνιες περιπτώσεις, αυτός ο έλεγχος μπορεί να αποτύχει με το σφάλμα "javax.net.ssl.SSLProtocolException: Συναγερμός χειραψίας: μη αναγνωρισμένο\_name". Αυτό πιθανώς οφείλεται στο όνομα τομέα στο πιστοποιητικό που δεν ταιριάζει με το όνομα τομέα που χρησιμοποιείτε. Μπορείτε και θα πρέπει να διαβάσετε τις λεπτομέρειες του sourceUrl Πιστοποιητικό στο πρόγραμμα περιήγησης ιστού σας, κυρίως, η λίστα των "DNS Name"s στην ενότητα "Subject Alternative Name".
Σε ορισμένες περιπτώσεις, η sourceUrl η χρήση μπορεί να είναι ψευδώνυμο του ονόματος τομέα στο πιστοποιητικό. Για παράδειγμα, https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/Θα ρίξει αυτό το λάθος, αλλά https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/, η οποία χρησιμοποιεί το όνομα τομέα στο πιστοποιητικό, δεν θα. Η λύση σε αυτές τις περιπτώσεις είναι επομένως να βρεθεί και να χρησιμοποιηθεί το όνομα τομέα στο πιστοποιητικό. Εάν δεν μπορείτε να το βρείτε στο πιστοποιητικό, επικοινωνήστε με τον πάροχο δεδομένων.
Σε άλλες περιπτώσεις, το όνομα τομέα στο πιστοποιητικό μπορεί να είναι για μια ομάδα ονομάτων. Εάν αυτό συμβεί ή το πρόβλημα είναι αλλιώς άλυτο, παρακαλούμε στείλτε email στον Chris. Ο John στο noa.gov να αναφέρει το πρόβλημα.
<addAttributes>
- [ ** < addAttributes > ** ] (#Προσθήκες) είναι μια επιλογή ετικέτας για κάθε σύνολο δεδομένων και για κάθε μεταβλητή που επιτρέπει ERDDAP Οι διαχειριστές ελέγχουν τα χαρακτηριστικά μεταδεδομένων που σχετίζονται με ένα σύνολο δεδομένων και τις μεταβλητές του.
- ERDDAP™ συνδυάζει τα χαρακτηριστικά από την πηγή του συνόλου δεδομένων (" χαρακτηριστικά πηγής") και το - addAttributes " την οποία ορίζεις datasets.xml (που έχουν προτεραιότητα) να κάνει τα "συνδυασμένα Χαρακτηριστικά", που είναι τι ERDDAP™ οι χρήστες βλέπουν. Έτσι, μπορείτε να χρησιμοποιήσετε addAttributes για να επαναπροσδιορίσει τις τιμές της πηγήςAtributes, να προσθέσει νέα χαρακτηριστικά, ή να αφαιρέσει χαρακτηριστικά.
- Η< addAttributes > ετικέτα περικλείει 0 ή περισσότερο ** <att> ** subtags, τα οποία χρησιμοποιούνται για τον προσδιορισμό των επιμέρους ιδιοτήτων.
- Κάθε χαρακτηριστικό αποτελείται από ένα όνομα και μια τιμή (που έχει ένα συγκεκριμένο τύπο δεδομένων, για παράδειγμα, διπλό) .
- Μπορεί να υπάρχει μόνο ένα χαρακτηριστικό με ένα δοσμένο όνομα. Αν υπάρχουν περισσότερα, το τελευταίο έχει προτεραιότητα.
- Η τιμή μπορεί να είναι μια ενιαία τιμή ή ένας χωρισμένος με χώρο κατάλογος τιμών.
- Σύνταξη
- Η διάταξη της<att> subtags μέσα addAttributes δεν είναι σημαντικό.
- Η<att> μορφή subtag είναι
<att name="*name*" \\[type="*type*"\\] >*value*</att>- Το όνομα προορισμού όλων των ιδιοτήτων ΠΡΕΠΕΙ να ξεκινά με ένα γράμμα (Α-Ζ, Α-Ζ) και ΠΡΕΠΕΙ να περιέχει μόνο τους χαρακτήρες A-Z, a-z, 0-9, ή '\_'.
- Εάν<att> subtag δεν έχει καμία τιμή ή μια τιμή του μηδενικού, το χαρακτηριστικό αυτό θα αφαιρεθεί από τα συνδυασμένα χαρακτηριστικά. Για παράδειγμα,<Το att name θα αφαιρέσει τις σειρές από τα συνδυασμένα χαρακτηριστικά. Για παράδειγμα,<att name="συντεταγμένες">null</att> θα αφαιρέσει τις συντεταγμένες από τα συνδυασμένα χαρακτηριστικά.
χαρακτηριστικό Τύπος
- [Η ΠΡΟΣΕΓΓΙΣΤΙΚΗ τιμή τύπου<att> subtags] (#χαρακτηριστικό) αναφέρει τον τύπο δεδομένων για τις τιμές. Ο προκαθορισμένος τύπος είναι String. Ένα παράδειγμα ενός χαρακτηριστικού συμβολοσειράς είναι:
<att name="creator\\_name">NASA/GSFC OBPG</att>- Οι έγκυροι τύποι για μεμονωμένες τιμές είναι byte (Ακέραιος 8-bit) , σύντομη (16-bit υπογεγραμμένος ακέραιος) , το (32-bit υπογεγραμμένος ακέραιος) , μακρύ (64-bit υπογεγραμμένος ακέραιος) , επιπλέουν (32-bit κινητήριο σημείο) , διπλά (Σημείο πλεύσης 64 bit) , char, και String. Για παράδειγμα,
<att name="scale\\_factor" type="float">0.1</att>
- Οι έγκυροι τύποι για μεμονωμένες τιμές είναι byte (Ακέραιος 8-bit) , σύντομη (16-bit υπογεγραμμένος ακέραιος) , το (32-bit υπογεγραμμένος ακέραιος) , μακρύ (64-bit υπογεγραμμένος ακέραιος) , επιπλέουν (32-bit κινητήριο σημείο) , διπλά (Σημείο πλεύσης 64 bit) , char, και String. Για παράδειγμα,
Δείτε αυτές τις σημειώσεις για το τύπος δεδομένων χαρακτήρων . Δείτε αυτές τις σημειώσεις για το μακροσκελής τύπος δεδομένων .
- Έγκυροι τύποι για διαστημικούς χωριστούς καταλόγους τιμών (ή μεμονωμένες τιμές) είναι byteList, shortList, unsignedShortList, charList, intList, longList, floatList, διπλό Λίστα. Για παράδειγμα,
<att name="actual\\_range" type="doubleList">10.34 23.91</att>
Ένα ανυπόγραφοShortList σας επιτρέπει να καθορίσετε μια λίστα των ανυπόγραφων σορτς, αλλά θα μετατραπούν σε μια λίστα των αντίστοιχων χαρακτήρων Unicode (π.χ., "65 67 69"" θα μετατραπεί σε "A C E". Εάν ορίσετε μια charList, κωδικοποιήστε τυχόν ειδικούς χαρακτήρες (π.χ. χώρος, διπλά εισαγωγικά, backslash,<#32, ή >#127) όπως θα τους κωδικοποιούσατε στο τμήμα δεδομένων ενός αρχείου NCCSV (Π.χ., ", "" ή """",\\\",",",",",",",",",",",",", " " " " " " " " " " " " " " " " " " "\\\\\\\\\\\\\\\\ "\\ "\\\\\\\\\\\\\\\\\\\\\\\\\\"","",",",",",",",",",",",",",",",\",",",",\\\\\\\\\",\\",\\\",",\",",",",",",",",",",",",\",",",",",\\",",\",",",",",",",",",",",",",",",",",",",",",", \n " , \ \ \ u20ac") . Δεν υπάρχει λίστα συμβολοσειρών. Αποθήκευση των τιμών συμβολοσειρών ως πολυγραμμική συμβολοσειρά. Για παράδειγμα,
<att name="history">2011-08-05T08:55:02Z ATAM - made CF-1.6 compliant.
2012-04-08T08:34:58Z ATAM - Changed 'height' from double to float.</att>
Παγκόσμια Χαρακτηριστικά
-
[ ** Παγκόσμια Χαρακτηριστικά / Παγκόσμια< addAttributes > ** ] (#Παγκόσμια χαρακτηριστικά) -- < addAttributes > είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag που χρησιμοποιείται για την αλλαγή ιδιοτήτων που ισχύουν για ολόκληρο το σύνολο δεδομένων.
- ** Χρήση του παγκόσμιου< addAttributes > να αλλάξει τα καθολικά χαρακτηριστικά του συνόλου δεδομένων. ** ERDDAP™ συνδυάζει τα καθολικά χαρακτηριστικά από την πηγή του συνόλου δεδομένων (** Χαρακτηριστικά πηγής ) και το παγκόσμιο addAttributes το οποίο ορίζεις datasets.xml (που έχουν προτεραιότητα) να κάνει το παγκόσμιο συνδυασμένα Χαρακτηριστικά ** , που είναι τι ERDDAP™ οι χρήστες βλέπουν. Έτσι, μπορείτε να χρησιμοποιήσετε addAttributes για να επαναπροσδιορίσει τις τιμές της πηγήςAtributes, να προσθέσει νέα χαρακτηριστικά, ή να αφαιρέσει χαρακτηριστικά.
- Δείτε το [ ** < addAttributes > πληροφορίες] (#Προσθήκες) που ισχύει για το παγκόσμιο και μεταβλητό < addAttributes > ** .
- FGDC και ISO 19115-2/19139 Μεταδεδομένα -- Κανονικά, ERDDAP™ θα παράγει αυτόματα ISO 19115-2/19139 και FGDC (FGDC-STD-001-1998) Αρχεία μεταδεδομένων XML για κάθε σύνολο δεδομένων χρησιμοποιώντας πληροφορίες από τα μεταδεδομένα του συνόλου δεδομένων. Λοιπόν... καλή μεταδεδομένα σύνολο δεδομένων οδηγεί σε καλό ERDDAP -δημιουργήθηκαν μεταδεδομένα ISO 19115 και FGDC. Παρακαλούμε σκεφτείτε να αφιερώσετε πολύ χρόνο και προσπάθεια στη βελτίωση των μεταδεδομένων των συνόλων δεδομένων σας (Το οποίο είναι καλό, ούτως ή άλλως.) . Τα περισσότερα από τα χαρακτηριστικά μεταδεδομένων συνόλου δεδομένων που χρησιμοποιούνται για την παραγωγή των μεταδεδομένων ISO 19115 και FGDC είναι από το Πρότυπο μεταδεδομένων ACDD και σημειώνονται έτσι παρακάτω.
- Πολλά παγκόσμια χαρακτηριστικά είναι ιδιαίτερα σε ότι ERDDAP™ τα ψάχνει και τα χρησιμοποιεί με διάφορους τρόπους. Για παράδειγμα, μια σύνδεση με το infoUrl περιλαμβάνεται σε ιστοσελίδες με λίστες συνόλων δεδομένων, και άλλα μέρη, έτσι ώστε οι χρήστες μπορούν να μάθουν περισσότερα για το σύνολο δεδομένων.
- Όταν ένας χρήστης επιλέγει ένα υποσύνολο δεδομένων, τα παγκόσμια χαρακτηριστικά που σχετίζονται με το γεωγραφικό μήκος, το γεωγραφικό πλάτος, το υψόμετρο της μεταβλητής (ή βάθος) , και χρονικά διαστήματα (Για παράδειγμα, Southernmost\_Northing, Northernmost\_Northing, time\_coverage\_start, time\_coverage\_end) δημιουργούνται ή ενημερώνονται αυτόματα.
- Ένα απλό παγκόσμιο δείγμα< addAttributes > είναι:
<addAttributes>
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
<att name="infoUrl">https://coastwatch.pfeg.noaa.gov/infog/PH\\_ssta\\_las.html</att>
<att name="institution">NOAA CoastWatch, West Coast Node</att>
<att name="title">SST, Pathfinder Ver 5.0, Day and Night, Global</att>
<att name="cwhdf\\_version" />
</addAttributes>
Το κενό χαρακτηριστικό cwhdf\_version προκαλεί το χαρακτηριστικό cwhdf\_version (εάν υπάρχουν) να αφαιρεθεί από τον τελικό, συνδυασμένο κατάλογο χαρακτηριστικών.
- Η παροχή αυτών των πληροφοριών βοηθά ERDDAP™ κάνει μια καλύτερη δουλειά και βοηθά τους χρήστες να κατανοήσουν τα σύνολα δεδομένων. Τα καλά μεταδεδομένα κάνουν ένα σύνολο δεδομένων χρήσιμο. Ανεπαρκή μεταδεδομένα καθιστά ένα σύνολο δεδομένων άχρηστο. Παρακαλώ αφιερώστε χρόνο για να κάνετε καλή δουλειά με τα χαρακτηριστικά μεταδεδομένων.
Ειδικά καθολικά χαρακτηριστικά ERDDAP™
αναγνώριση
- αναγνώριση και αναγνώριση (από την ACDD πρότυπο μεταδεδομένων) είναι ένας συνιστώμενος τρόπος αναγνώρισης της ομάδας ή των ομάδων που παρείχαν στήριξη (Ειδικότερα, οικονομικά) για το έργο που δημιούργησε αυτά τα δεδομένα. Για παράδειγμα,
<att name="acknowledgment">AVISO</att>
Σημειώστε ότι τα ACDD 1.0 και 1.1 χρησιμοποίησαν την ορθογραφία "αναγνώριση" (που είναι η συνηθισμένη ορθογραφία στις ΗΠΑ.) , αλλά ACDD 1.3 άλλαξε αυτό σε "αναγνώριση" (που είναι η συνηθισμένη ορθογραφία στο Ηνωμένο Βασίλειο.) . Κατανοώ ότι η αλλαγή ήταν ουσιαστικά ατύχημα και ότι σίγουρα δεν αναγνώρισαν τις επιπτώσεις της αλλαγής. Τι χάλι! Τώρα υπάρχουν εκατομμύρια αρχεία δεδομένων σε όλο τον κόσμο που έχουν -αναγνωρίσει- και εκατομμύρια που έχουν -αναγνώριση. Αυτό τονίζει την ανοησία των "απλών" αλλαγών σε ένα πρότυπο, και τονίζει την ανάγκη για σταθερότητα στα πρότυπα. Επειδή το ACDD 1.3 (που είναι η έκδοση του ACDD ότι ERDDAP™ υποστηρίγματα) λέει "αναγνώριση", αυτό είναι ό, τι ERDDAP™ (Ειδικά η δημιουργία συνόλων δεδομένων Xml) Ενθαρρύνει.
cdm\_υψόμετρο\_προσέγγιση
- cdm\_υψόμετρο\_προσέγγιση είναι μόνο για σύνολα δεδομένων EDDTable που δεν έχουν μια μεταβλητή υψομέτρου ή βάθους αλλά έχουν μια μεταβλητή που είναι ένας πληρεξούσιος για το υψόμετρο ή το βάθος (για παράδειγμα, πίεση, σίγμα, φιάλη Αριθμός) , μπορείτε να χρησιμοποιήσετε αυτό το χαρακτηριστικό για την αναγνώριση αυτής της μεταβλητής. Για παράδειγμα,
<att name="cdm\\_altitude\\_proxy">pressure</att>
Εάν η cdm\_data\_type είναι Προφίλ ή TrajectoryProfile και δεν υπάρχει καμία μεταβλητή υψομέτρου ή βάθους, cdm\_altitude\_proxy ΠΡΕΠΕΙ να ορίζεται. Εάν ορίζεται cdm\_υψόμετρο\_proxy, ERDDAP™ θα προσθέσει τα ακόλουθα μεταδεδομένα στη μεταβλητή: \_Συντονισμός AxisType=Ύψος και άξονας=Z.
cdm\_data\_type
- cdm\_data\_type (από την ACDD πρότυπο μεταδεδομένων) είναι ένα παγκόσμιο χαρακτηριστικό που δείχνει το Unidata Κοινό μοντέλο δεδομένων τύπος δεδομένων για το σύνολο δεδομένων. Για παράδειγμα,
<att name="cdm\\_data\\_type">Point</att>
Το CDM εξακολουθεί να εξελίσσεται και μπορεί να αλλάξει ξανά. ERDDAP™ συμμορφώνεται με το σχετικό και πιο λεπτομερή Διακριτές γεωμετρίες δειγματοληψίας (DSG) Κεφάλαιο του CF 1.6 συμβάσεις μεταδεδομένων (προηγουμένως καλούμενες συμβάσεις παρατήρησης σημείων ΚΙ) .
- Είτε το σύνολο δεδομένων είναι παγκόσμιο Χαρακτηριστικά πηγής ή της παγκόσμιας< addAttributes > ΠΡΕΠΕΙ να περιλαμβάνει το χαρακτηριστικό cdm\_data\_type. Μερικοί τύποι συνόλου δεδομένων (όπως ο πίνακας EDD Από το Obis) θα το ρυθμίσετε αυτόματα.
- Για EDDGrid Τα σύνολα δεδομένων, οι επιλογές cdm\_data\_type είναι Grid (η προεπιλογή και μακράν ο πιο κοινός τύπος για EDDGrid σύνολα δεδομένων) , MovingGrid, Άλλα, Point, Προφίλ, RadialSweep, TimeSeries, TimeSeriesProfile, Swath, Trajectory, και TrajectoryProfile. Προς το παρόν, EDDGrid δεν απαιτεί να προσδιορίζονται τα σχετικά μεταδεδομένα, ούτε ελέγχει ότι τα δεδομένα ταιριάζουν με τον τύπο cdm\data\. Αυτό μάλλον θα αλλάξει στο εγγύς μέλλον.
- Ο πίνακας EDDTable χρησιμοποιεί το cdm\_data\_type με αυστηρό τρόπο, ακολουθώντας τις προδιαγραφές DSG της CF και όχι το CDM, το οποίο για κάποιο λόγο δεν έχει ενημερωθεί ώστε να συνάδει με το DSG. Εάν τα μεταδεδομένα ενός συνόλου δεδομένων δεν συμμορφώνονται με το ERDDAP Απαιτήσεις τύπου CDm\_data (Βλέπε παρακάτω) , το σύνολο δεδομένων θα αποτύχει να φορτώσει και θα δημιουργήσει ένα Μήνυμα σφάλματος . (Αυτό είναι ένα καλό πράγμα, με την έννοια ότι το μήνυμα λάθους θα σας πει τι είναι λάθος έτσι ώστε να μπορείτε να το διορθώσετε.) Και αν τα δεδομένα του συνόλου δεδομένων δεν ταιριάζουν με τη ρύθμιση μεταδεδομένων του συνόλου δεδομένων (π.χ., εάν υπάρχουν περισσότερες από μία τιμές γεωγραφικού πλάτους για δεδομένο σταθμό σε σύνολο δεδομένων χρονοσειρών) , ορισμένες αιτήσεις για δεδομένα θα επιστρέψουν λανθασμένα δεδομένα στην απάντηση. Γι' αυτό σιγουρέψου ότι θα τα κάνεις όλα σωστά.
Για όλα αυτά τα σύνολα δεδομένων, στις συμβάσεις και Metadata\_Conventions καθολικά χαρακτηριστικά, παρακαλούμε ανατρέξτε στο CF-1,6 (όχι CF-1.0, 1.1, 1.2, 1.3, 1.4, ή 1.5) , δεδομένου ότι το CF-1.6 είναι η πρώτη έκδοση που περιλαμβάνει τις αλλαγές που σχετίζονται με τη Διακριτή Γεωμετρία Δειγματοληψίας (DSG) Συμβάσεις.
- ** ERDDAP™ έχει μια μη απλή σχέση με το CF DSG**
- ERDDAP™ μπορεί να κάνει ένα έγκυρο σύνολο δεδομένων DSG από ένα σύνολο δεδομένων πηγής που είναι ήδη ένα έγκυρο αρχείο DSG (α) , ή από ένα σύνολο δεδομένων πηγής που δεν έχει συσταθεί για DSG αλλά μπορεί να γίνει έτσι μέσω αλλαγών στα μεταδεδομένα (μερικά από τα οποία είναι ERDDAP -ειδική προκειμένου να παρέχει μια γενικότερη προσέγγιση για τον προσδιορισμό της εγκατάστασης DSG) .
- ERDDAP™ κάνει πολλές δοκιμές εγκυρότητας όταν φορτώνει ένα σύνολο δεδομένων. Εάν το σύνολο δεδομένων που έχει cdm\_data\_type (ή featureType ) χαρακτηριστικό με επιτυχία τα φορτία στο ERDDAP™ , τότε ERDDAP™ λέει ότι το σύνολο δεδομένων πληροί τις απαιτήσεις DSG (διαφορετικά, ERDDAP™ θα ρίξει μια εξαίρεση εξηγώντας το πρώτο πρόβλημα που βρήκε) . ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ένα επιτυχώς φορτωμένο σύνολο δεδομένων φαίνεται να πληροί τις απαιτήσεις DSG (έχει τον κατάλληλο συνδυασμό ιδιοτήτων) , αλλά και πάλι μπορεί να συσταθεί λανθασμένα, οδηγώντας σε λανθασμένα αποτελέσματα .nc ΚΙ και .nc Αρχεία απόκρισης CFMA. (Το λογισμικό είναι έξυπνο κατά κάποιο τρόπο και ανίδεο σε άλλους.)
- Όταν κοιτάξετε τα μεταδεδομένα του συνόλου δεδομένων ERDDAP™ , το σύνολο δεδομένων DSG φαίνεται να είναι στο ERDDAP Εσωτερική μορφή (ένα γιγαντιαίο τραπέζι σαν βάση δεδομένων) . Δεν είναι σε μια από τις μορφές DSG (π.χ., οι διαστάσεις και τα μεταδεδομένα δεν είναι σωστά) , αλλά οι πληροφορίες που απαιτούνται για την αντιμετώπιση του συνόλου δεδομένων ως συνόλου δεδομένων DSG είναι στα μεταδεδομένα (για παράδειγμα, cdm\_data\_type=TimeSeries και cdm\_timeseries\_Variables= aCsvListOfStationΣχετικάVarables στα παγκόσμια μεταδεδομένα και cf\_role=timeseries\_id για κάποια μεταβλητή) .
- Εάν ένας χρήστης ζητήσει ένα υποσύνολο του συνόλου δεδομένων σε ένα .nc ΚΦ (α .nc αρχείο σε μορφή αρχείου DSG Contigoul Ragged Array) ή .nc Αρχείο CFMA (α .nc αρχείο σε μορφή αρχείου πολλαπλών διαστάσεων Array του DSG) , ότι το αρχείο θα είναι ένα έγκυρο αρχείο CF DSG. ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Ωστόσο, εάν το σύνολο δεδομένων δημιουργήθηκε λανθασμένα (ώστε οι υποσχέσεις των μεταδεδομένων να μην είναι αληθινές.) , τότε το αρχείο απάντησης θα είναι τεχνικά έγκυρο, αλλά θα είναι λανθασμένο κατά κάποιο τρόπο.
Πίνακας EDD
- Για τα σύνολα δεδομένων EDDTable, οι επιλογές cdm\_data\_type (και σχετικές απαιτήσεις ERDDAP ) είναι
Σημείο
- Σημείο -- είναι για ένα σύνολο μετρήσεων που λαμβάνονται σε άσχετους χρόνους και τοποθεσίες.
- Όπως συμβαίνει με όλα τα cdm\_data\_types εκτός των άλλων, τα σύνολα δεδομένων σημείων πρέπει να έχουν γεωγραφικό μήκος, γεωγραφικό πλάτος και χρονικές μεταβλητές.
Προφίλ
-
Προφίλ -- είναι ένα σύνολο μετρήσεων που λαμβάνονται ταυτόχρονα, σε μια γεωγραφική θέση γεωγραφικού πλάτους, αλλά σε περισσότερο από ένα βάθος (ή υψόμετρο) . Το σύνολο δεδομένων μπορεί να είναι μια συλλογή από αυτά τα Προφίλ, για παράδειγμα, 7 προφίλ από διαφορετικές τοποθεσίες. Αυτό το cdm\_data\_type δεν συνεπάγεται κάποια λογική σύνδεση μεταξύ οποιουδήποτε προφίλ.
-
Μία από τις μεταβλητές (για παράδειγμα, προφίλ\_αριθμός) ΠΡΕΠΕΙ να έχει τη μεταβλητή ιδιότητα cf\_role=profile\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τα προφίλ.
<att name="cf\\_role">profile\\_id</att>
Εάν καμία άλλη μεταβλητή δεν είναι κατάλληλη, εξετάστε τη χρήση της μεταβλητής χρόνου.
cdm\_profile\_μεταβλητή
- Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το παγκόσμιο χαρακτηριστικό cdm\_profile\_μεταβλητή , όπου η τιμή είναι ένας κατάλογος χωρισμένος με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε προφίλ. Για ένα δεδομένο προφίλ, οι τιμές αυτών των μεταβλητών ΠΡΕΠΕΙ να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_profile\\_variables">profile\\_number,time,latitude,longitude</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=profile\_id και όλες τις άλλες μεταβλητές με πληροφορίες για το προφίλ, και το χρόνο, το γεωγραφικό πλάτος και το γεωγραφικό μήκος. Ο κατάλογος δεν θα περιλαμβάνει ποτέ το υψόμετρο, το βάθος ή οποιεσδήποτε μεταβλητές παρατήρησης.
\[ Γνώμη: το cdm\_data\_type=Profile θα πρέπει σπάνια να χρησιμοποιείται. Στην πράξη, ένα δεδομένο σύνολο δεδομένων είναι συνήθως είτε ένα TimeSeriesProfile (προφίλ σε σταθερή θέση) ή ένα TrajectoryProfile (προφίλ κατά μήκος τροχιάς) , και έτσι θα πρέπει να προσδιοριστεί κατάλληλα ως τέτοια. \]
Σειρά ώρας
- Σειρά ώρας -- είναι μια ακολουθία μετρήσεων (π.χ. θερμοκρασία θαλασσινού νερού) λαμβάνονται σε ένα, σταθερό, γεωγραφικό πλάτος, γεωγραφικό μήκος, βάθος (ή υψόμετρο) τοποθεσία. (Σκέψου το σαν σταθμό.) Το σύνολο δεδομένων μπορεί να είναι μια συλλογή αυτών των TimeSeries, για παράδειγμα, μια ακολουθία από κάθε μία από 3 διαφορετικές τοποθεσίες.
- Μία από τις μεταβλητές (για παράδειγμα, σταθμός\_id) ΠΡΕΠΕΙ να έχει τη μεταβλητή ιδιότητα cf\_role=timeseries\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τους σταθμούς.
<att name="cf\\_role">timeseries\\_id</att>
cdm\_timeseries\_μεταβλητές
- Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το παγκόσμιο χαρακτηριστικό cdm\_timeseries\_μεταβλητές , όπου η τιμή είναι ένας κατάλογος χωρισμένος με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε σταθμό. Για ένα δεδομένο σταθμό, οι τιμές αυτών των μεταβλητών πρέπει να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_timeseries\\_variables">station\\_id,station\\_type,latitude,longitude</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=timeseries\_id και όλες τις άλλες μεταβλητές με πληροφορίες για το σταθμό, η οποία σχεδόν πάντα περιλαμβάνει γεωγραφικό πλάτος και μήκος (και ύψος ή βάθος, εάν υπάρχει) . Ο κατάλογος δεν θα περιλαμβάνει ποτέ το χρόνο ή τυχόν μεταβλητές παρατήρησης.
- Για ορισμένους προσδεδεμένους σημαντήρες, ένα σύνολο δεδομένων μπορεί να έχει δύο σειρές μεταβλητών γεωγραφικού πλάτους και μήκους:
- Ένα ζεύγος τιμών γεωγραφικού πλάτους και γεωγραφικού μήκους που είναι σταθερές (Δηλαδή, η σταθερή θέση της αγκυροβολίας) . Μέσα ERDDAP™ , να δώσει αυτές τις μεταβλητές destinationName s του γεωγραφικού πλάτους και του γεωγραφικού μήκους, και περιλαμβάνουν αυτές τις μεταβλητές στον κατάλογο των cdm\_timeseries\_Variables.
- Ακριβείς τιμές γεωγραφικού πλάτους και μήκους που συνδέονται με κάθε παρατήρηση. Μέσα ERDDAP™ , δίνουν αυτές τις μεταβλητές διαφορετικές destinationName α (π.χ., ακριβής και ακριβής Λον) και δεν περιλαμβάνουν αυτές τις μεταβλητές στη λίστα των cdm\_timeseries\_Variables. Το σκεπτικό για αυτό είναι: από θεωρητική άποψη, για ένα σύνολο δεδομένων DSG TimeSeries, το γεωγραφικό πλάτος και το γεωγραφικό μήκος (και ύψος ή βάθος, εάν υπάρχει) Η θέση του σταθμού πρέπει να είναι σταθερή.
ΧρόνοςSeriesProfile
- ΧρόνοςSeriesProfile -- είναι για μια σειρά προφίλ που λαμβάνονται σε ένα, σταθερό, γεωγραφικό πλάτος. Κάθε προφίλ είναι ένα σύνολο μετρήσεων που λαμβάνονται σε πολλαπλά υψόμετρα ή βάθη. Το σύνολο δεδομένων μπορεί να είναι μια συλλογή αυτών των TimeSeriesProfiles, για παράδειγμα, μια σειρά προφίλ που λαμβάνονται σε κάθε μια από 12 διαφορετικές τοποθεσίες.
- Μία από τις μεταβλητές (για παράδειγμα, σταθμός\_id) ΠΡΕΠΕΙ να έχει τη μεταβλητή ιδιότητα cf\_role=timeseries\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τους σταθμούς.
<att name="cf\\_role">timeseries\\_id</att>
- Μία από τις μεταβλητές (για παράδειγμα, προφίλ\_αριθμός) ΠΡΕΠΕΙ να έχει τη μεταβλητή ιδιότητα cf\_role=profile\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τα προφίλ.
(Ένα δεδομένο προφίλ\_id πρέπει να είναι μοναδικό μόνο για μια δεδομένη χρονοσειρά\_id.) Εάν καμία άλλη μεταβλητή δεν είναι κατάλληλη, εξετάστε τη χρήση της μεταβλητής χρόνου.
<att name="cf\\_role">profile\\_id</att> - Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το globalAtribute cdm\_timeseries\_Variables, όπου η τιμή είναι μια λίστα χωρισμένη με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε σταθμό. Για ένα δεδομένο σταθμό, οι τιμές αυτών των μεταβλητών πρέπει να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_timeseries\\_variables">station\\_id,station\\_type,latitude,longitude</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=timeseries\_id και όλες τις άλλες μεταβλητές με πληροφορίες για το σταθμό, που σχεδόν πάντα περιλαμβάνει γεωγραφικό πλάτος και μήκος. Ο κατάλογος δεν θα περιλαμβάνει ποτέ το χρόνο, το υψόμετρο, το βάθος ή οποιεσδήποτε μεταβλητές παρατήρησης.
- Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το cdm\_profile\_Variables, όπου η τιμή είναι μια λίστα χωρισμένη με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε προφίλ. Για ένα δεδομένο προφίλ, οι τιμές αυτών των μεταβλητών ΠΡΕΠΕΙ να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_profile\\_variables">profile\\_number,time</att>
Η λίστα ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=profile\_id και όλες τις άλλες μεταβλητές με πληροφορίες για το προφίλ, η οποία σχεδόν πάντα περιλαμβάνει χρόνο. Ο κατάλογος δεν περιλαμβάνει ποτέ το γεωγραφικό πλάτος, το γεωγραφικό μήκος, το υψόμετρο, το βάθος ή οποιεσδήποτε μεταβλητές παρατήρησης.
Τροχιά
- Τροχιά -- είναι μια αλληλουχία μετρήσεων που λαμβάνονται κατά μήκος μιας τροχιάς (ένα μονοπάτι μέσα στο χώρο και το χρόνο) (π.χ., θάλασσα\_νερό\_θερμοκρασία που λαμβάνεται από πλοίο καθώς κινείται μέσα από το νερό) . Το σύνολο δεδομένων μπορεί να είναι μια συλλογή αυτών των τροχιών, για παράδειγμα, μια ακολουθία από καθένα από 4 διαφορετικά πλοία.
- Μία από τις μεταβλητές (για παράδειγμα, πλοίο\_id) ΠΡΕΠΕΙ να έχει το χαρακτηριστικό cf\_role=trajectory\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τις τροχιές.
<att name="cf\\_role">trajectory\\_id</att>
cdm\_trajectory\_μεταβλητές
- Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το παγκόσμιο χαρακτηριστικό cdm\_trajectory\_μεταβλητές , όπου η τιμή είναι ένας κατά κόμμα χωρισμένος κατάλογος των μεταβλητών που έχουν τις πληροφορίες για κάθε τροχιά. Για μια δεδομένη τροχιά, οι τιμές αυτών των μεταβλητών ΠΡΕΠΕΙ να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_trajectory\\_variables">ship\\_id,ship\\_type,ship\\_owner</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=trajectory\_id και όλες τις άλλες μεταβλητές με πληροφορίες για την τροχιά. Ο κατάλογος δεν θα περιλαμβάνει ποτέ το χρόνο, το γεωγραφικό πλάτος, το γεωγραφικό μήκος ή οποιεσδήποτε μεταβλητές παρατήρησης.
ΤροχιάProfile
- ΤροχιάProfile -- είναι μια αλληλουχία προφίλ που λαμβάνονται κατά μήκος μιας τροχιάς. Το σύνολο δεδομένων μπορεί να είναι μια συλλογή αυτών των TrajectoryProfiles, για παράδειγμα, μια ακολουθία προφίλ που λαμβάνονται από 14 διαφορετικά πλοία.
- Μία από τις μεταβλητές (για παράδειγμα, πλοίο\_id) ΠΡΕΠΕΙ να έχει το μεταβλητό χαρακτηριστικό cf\_role=trajectory\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τις τροχιές.
<att name="cf\\_role">trajectory\\_id</att> - Μία από τις μεταβλητές (για παράδειγμα, προφίλ\_αριθμός) ΠΡΕΠΕΙ να έχει τη μεταβλητή ιδιότητα cf\_role=profile\_id για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τα προφίλ.
(Ένα δεδομένο προφίλ\_id πρέπει να είναι μοναδικό μόνο για μια δεδομένη τροχιά\_id.) Εάν καμία άλλη μεταβλητή δεν είναι κατάλληλη, εξετάστε τη χρήση της μεταβλητής χρόνου.
<att name="cf\\_role">profile\\_id</att> - Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το globalAtribute cdm\_trajectory\_variables, όπου η τιμή είναι μια λίστα χωρισμένη με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε τροχιά. Για μια δεδομένη τροχιά, οι τιμές αυτών των μεταβλητών ΠΡΕΠΕΙ να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_trajectory\\_variables">ship\\_id,ship\\_type,ship\\_owner</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=trajectory\_id και όλες τις άλλες μεταβλητές με πληροφορίες για την τροχιά. Ο κατάλογος δεν θα περιλαμβάνει ποτέ μεταβλητές σχετικές με το προφίλ, χρόνο, γεωγραφικό πλάτος, γεωγραφικό μήκος ή οποιεσδήποτε μεταβλητές παρατήρησης.
- Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το cdm\_profile\_Variables, όπου η τιμή είναι μια λίστα χωρισμένη με κόμματα των μεταβλητών που έχουν τις πληροφορίες για κάθε προφίλ. Για ένα δεδομένο προφίλ, οι τιμές αυτών των μεταβλητών ΠΡΕΠΕΙ να είναι σταθερές. Για παράδειγμα,
<att name="cdm\\_profile\\_variables">profile\\_number,time,latitude,longitude</att>
Ο κατάλογος ΠΡΕΠΕΙ να περιλαμβάνει τη μεταβλητή cf\_role=profile\_id και όλες τις άλλες μεταβλητές με πληροφορίες για το προφίλ, η οποία περιλαμβάνει σχεδόν πάντα χρόνο, γεωγραφικό πλάτος και γεωγραφικό μήκος. Ο κατάλογος δεν θα περιλαμβάνει ποτέ το υψόμετρο, το βάθος ή οποιεσδήποτε μεταβλητές παρατήρησης.
Άλλα
- Άλλα -- δεν έχει απαιτήσεις. Χρησιμοποιήστε το αν το σύνολο δεδομένων δεν ταιριάζει σε μία από τις άλλες επιλογές, ιδίως, αν το σύνολο δεδομένων δεν περιλαμβάνει μεταβλητές γεωγραφικού πλάτους, γεωγραφικού μήκους και χρόνου.
Σχετικές σημειώσεις
- Όλα τα σύνολα δεδομένων EDDTable με ένα cdm\_data\_type διαφορετικό από "Άλλα" ΠΡΕΠΕΙ να έχουν γεωγραφικό μήκος, γεωγραφικό πλάτος και χρονικές μεταβλητές.
- Τα σύνολα δεδομένων με προφίλ πρέπει να έχουν μεταβλητή υψομέτρου, μεταβλητή βάθους ή cdm\_υψόμετρο\_προσέγγιση Μεταβλητή.
- Εάν δεν μπορείτε να κάνετε ένα σύνολο δεδομένων συμμορφώνονται με όλες τις απαιτήσεις για το ιδανικό cdm\_data\_type, χρήση "Point" (που έχει ελάχιστες απαιτήσεις) ή "Άλλα" (που δεν έχει απαιτήσεις) Αντ' αυτού.
- Η πληροφορία αυτή χρησιμοποιείται από ERDDAP™ Συζητήσεις του Ευρωπαϊκού Κοινοβουλίου .nc Αρχεία CF ( .nc αρχεία που συμμορφώνονται με τις Contigoul Ragged Representations που σχετίζονται με το cdm\_data\_type του συνόλου δεδομένων) και .nc Αρχεία CFMA ( .nc αρχεία που συμμορφώνονται με τις πολυδιάστατες αναπαραστάσεις Array που σχετίζονται με το cdm\_data\_type του συνόλου δεδομένων) όπως ορίζεται στο Διακριτές γεωμετρίες δειγματοληψίας (DSG) Κεφάλαιο του ΚΦ συμβάσεις μεταδεδομένων, οι οποίες ονομάστηκαν προηγουμένως "CF Point Observation Conventions".
- Υπόδειξη: Για αυτά τα σύνολα δεδομένων, η σωστή ρύθμιση για subsetVariables είναι συνήθως ο συνδυασμός όλων των μεταβλητών που αναφέρονται στο cdm\_...\_διαφορετικά χαρακτηριστικά. Για παράδειγμα, για το TimeSeriesProfile, χρησιμοποιήστε το cdm\_timeseries\_Variables συν το cdm\_profile\_Variables.
contributor\_name
- ** contributor\_name ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΣΤΑΤΙΚΟΣ τρόπος αναγνώρισης προσώπου, οργανισμού ή έργου που συνέβαλε σε αυτό το σύνολο δεδομένων (Για παράδειγμα, ο αρχικός δημιουργός των δεδομένων, πριν επεξεργαστεί εκ νέου από τον δημιουργό αυτού του συνόλου δεδομένων) . Για παράδειγμα,
<att name="contributor\\_name">NOAA OceanWatch - Central Pacific</att>
Εάν ο "συντελεστής" δεν ισχύει πραγματικά σε ένα σύνολο δεδομένων, παραλείπεται αυτό το χαρακτηριστικό. Σε σύγκριση με creator\_name , αυτό μερικές φορές επικεντρώνεται περισσότερο στην πηγή χρηματοδότησης.
contributor\_role
- ** contributor\_role ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΣΤΑΤΙΚΟΣ τρόπος προσδιορισμού του ρόλου της contributor\_name . Για παράδειγμα,
<att name="contributor\\_role">Source of Level 2b data</att>
Εάν ο "συντελεστής" δεν ισχύει πραγματικά σε ένα σύνολο δεδομένων, παραλείπεται αυτό το χαρακτηριστικό.
Συμβάσεις
- Συμβάσεις (από την ΚΦ πρότυπο μεταδεδομένων) ΠΡΟΤΕΙΝΕΤΑΙ ΣΤΡΑΤΗΓΙΚΗ. (Μπορεί να Απαιτείται στο μέλλον.) Η τιμή είναι ένας κατά κόμμα χωρισμένος κατάλογος προτύπων μεταδεδομένων που ακολουθεί αυτό το σύνολο δεδομένων. Για παράδειγμα:
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
Οι κοινές συμβάσεις μεταδεδομένων που χρησιμοποιούνται στην ERDDAP™ είναι:
- COARDS Συμβάσεις είναι ο πρόδρομος της ΚΙ.
- Κλίμα και Πρόβλεψη (ΚΦ) Συμβάσεις είναι η πηγή πολλών από τα συνιστώμενα και απαιτούμενα χαρακτηριστικά στο ERDDAP . Η τρέχουσα έκδοση του CF αναγνωρίζεται ως "CF-1,6".1.
- Η NetCDF Σύμβαση χαρακτηριστικών για την ανακάλυψη συνόλου δεδομένων (ACDD) είναι η πηγή πολλών από τα συνιστώμενα και απαιτούμενα χαρακτηριστικά στο ERDDAP . Η αρχική έκδοση 1.0 του ACDD (ένα λαμπρό έργο του Ethan Davis) , αναγνωρίστηκε ως Unidata Ανακάλυψη συνόλου δεδομένων v1.0 Το τρέχον (που αρχίζει το 2015) 1.3 η έκδοση του ACDD αναγνωρίζεται ως ACDD-1,3 . Εάν τα σύνολα δεδομένων σας έχουν χρησιμοποιηθεί Unidata Dataset Discovery v1.0, σας ενθαρρύνουμε να αλλάξτε τα σύνολα δεδομένων σας για να χρησιμοποιήσετε το ACDD-1,3 .
Εάν το σύνολο δεδομένων σας ακολουθεί κάποιο πρόσθετο πρότυπο μεταδεδομένων, παρακαλούμε προσθέστε το όνομα στη λίστα CSV στο χαρακτηριστικό Συμβάσεων.
coverage\_content\_type
- ** coverage\_content\_type ** (από την ISO 19115 πρότυπο μεταδεδομένων) είναι ο τρόπος που ΣΥΣΤΑΘΗΚΕ για τον προσδιορισμό του τύπου των δεδομένων με πλέγμα (μέσα EDDGrid σύνολα δεδομένων) . Για παράδειγμα,
<att name="coverage\\_content\\_type">modelResult</att>
Οι μόνες επιτρεπόμενες τιμές είναι βοηθητικέςΠληροφορίες, εικόνα, μοντέλοResult, φυσικές Μέτρηση (το προκαθορισμένο όταν παράγονται μεταδεδομένα ISO 19115) , ποιότηταΠληροφορίες, αναφοράΠληροφορίες, και θεματική Κλάση. (Μην χρησιμοποιείτε αυτή την ετικέτα για σύνολα δεδομένων του EDDTable.)
creator\_name
- ** creator\_name ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΣΤΑΜΕΝΟΣ τρόπος αναγνώρισης του προσώπου, της οργάνωσης ή του έργου (εάν όχι συγκεκριμένο πρόσωπο ή οργάνωση) , υπεύθυνος για τη δημιουργία (ή πιο πρόσφατη επανεπεξεργασία) των δεδομένων αυτών. Για παράδειγμα,
<att name="creator\\_name">NOAA NMFS SWFSC ERD</att>
Εάν τα δεδομένα είχαν επανεπεξεργαστεί εκτενώς (για παράδειγμα, δορυφορικά δεδομένα από επίπεδο 2 έως επίπεδο 3 ή 4) , στη συνέχεια, συνήθως ο επανεπεξεργαστής αναφέρεται ως ο δημιουργός και ο αρχικός δημιουργός καταγράφεται μέσω contributor\_name . Σε σύγκριση με έργο , αυτό είναι πιο ευέλικτο, δεδομένου ότι μπορεί να αναγνωρίσει ένα πρόσωπο, έναν οργανισμό, ή ένα έργο.
creator\_email
- ** creator\_email ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΝΙΣΤΑΜΕΝΟς τρόπος αναγνώρισης μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου (σωστά μορφοποιημένο) που παρέχει έναν τρόπο να επικοινωνήσετε με τον δημιουργό. Για παράδειγμα,
<att name="creator\\_email">erd.data@noaa.gov</att>
creator\_url
- ** creator\_url ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΝΙΣΤΑΜΕΝΟς τρόπος αναγνώρισης ενός URL για την οργάνωση που δημιούργησε το σύνολο δεδομένων, ή ένα URL με τις πληροφορίες του δημιουργού σχετικά με αυτό το σύνολο δεδομένων (Αλλά αυτός είναι περισσότερο ο σκοπός του infoUrl ) . Για παράδειγμα,
<att name="creator\\_url">https://www.pfeg.noaa.gov</att>
date\_created
- ** date\_created ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο συνιστώμενος τρόπος προσδιορισμού της ημερομηνίας κατά την οποία δημιουργήθηκαν για πρώτη φορά τα δεδομένα (για παράδειγμα, επεξεργασία σε αυτή τη μορφή) , σε μορφή ISO 8601. Για παράδειγμα,
<att name="date\\_created">2010-01-30</att>
Εάν τα δεδομένα προστίθενται περιοδικά στο σύνολο δεδομένων, αυτή είναι η πρώτη ημερομηνία που τα αρχικά δεδομένα διατέθηκαν.
date\_modified
- ** date\_modified ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο τρόπος προσδιορισμού της ημερομηνίας κατά την οποία τα δεδομένα τροποποιήθηκαν τελευταία φορά (για παράδειγμα, όταν ένα σφάλμα καθορίστηκε ή όταν προστέθηκαν τα τελευταία δεδομένα) , σε μορφή ISO 8601. Για παράδειγμα,
<att name="date\\_modified">2012-03-15</att>
date\_issued
- ** date\_issued ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο συνιστώμενος τρόπος προσδιορισμού της ημερομηνίας κατά την οποία τα δεδομένα τέθηκαν για πρώτη φορά στη διάθεση άλλων, σε μορφή ISO 8601, για παράδειγμα, 2012-03-15. Για παράδειγμα,
<att name="date\\_issued">2010-07-30</att>
Για παράδειγμα, το σύνολο δεδομένων μπορεί να έχει date\_created του 2010-01-30, αλλά δημοσιοποιήθηκε μόνο το 2010-07-30. date\_issued χρησιμοποιείται λιγότερο συχνά από date\_created και date\_modified . Εάν date\_issued δεν υπάρχει, θεωρείται ότι είναι το ίδιο με το date\_created .
παγκόσμιο drawLandMask
- ** drawLandMask ** -- Αυτό είναι ένα ΟΠΤΙΚΟ παγκόσμιο χαρακτηριστικό που χρησιμοποιείται από ERDDAP™ (και χωρίς πρότυπα μεταδεδομένων) η οποία καθορίζει την προκαθορισμένη τιμή για την επιλογή "Draw Land Mask" στη φόρμα Make A Graph του συνόλου δεδομένων ( * datasetID * . γράφημα) και για την παράμετρο &.land σε ένα URL ζητώντας ένα χάρτη των δεδομένων. Για παράδειγμα,
<att name="drawLandMask">over</att>
Δείτε το drawLandMask επισκόπηση .
featureType
- ** featureType ** (από την ΚΦ πρότυπο μεταδεδομένων) είναι ΑΓΝΩΣΤΟ ή/ και ΑΝΑΚΛΕΙΜΕΝΟ. Εάν το σύνολο δεδομένων είναι cdm\_data\_type είναι σκόπιμο, ERDDAP™ θα το χρησιμοποιήσετε αυτόματα για να δημιουργήσετε ένα featureType χαρακτηριστικό γνώρισμα. Έτσι δεν υπάρχει λόγος να το προσθέσετε.
Ωστόσο, εάν χρησιμοποιείτε Πίνακας EDDFromNcCFΑρχεία για να δημιουργήσετε ένα σύνολο δεδομένων από αρχεία που ακολουθούν το ΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) πρότυπο , τα ίδια τα αρχεία πρέπει να έχουν featureType Ορίστηκε σωστά, έτσι ώστε ERDDAP™ μπορεί να διαβάσει τα αρχεία σωστά. Αυτό αποτελεί μέρος των απαιτήσεων CF DSG για αυτόν τον τύπο αρχείου.
ιστορικό
- ιστορικό (από την ΚΦ και ACDD πρότυπα μεταδεδομένων) είναι ένα συνολικό χαρακτηριστικό συμβολοσειράς πολλαπλών γραμμών με γραμμή για κάθε στάδιο επεξεργασίας που έχει υποβληθεί. Για παράδειγμα,
<att name="history">2011-08-05T08:55:02Z CMOR: Rewrote data to comply with CF standards.
2012-04-08T08:34:58Z CMOR: Converted 'height' type from 'd' to 'f'.</att>
- Ιδανικά, κάθε γραμμή έχει ISO 8601:2004 (E) μορφοποιημένη ημερομηνία+ώραZ (για παράδειγμα, 2011-08-05T08:55:02Z) ακολουθούμενη από περιγραφή του σταδίου επεξεργασίας.
- ERDDAP™ Δημιουργεί αυτό αν δεν υπάρχει ήδη.
- Αν υπάρχει ήδη, ERDDAP™ θα προσαρτήσει νέες πληροφορίες στις υπάρχουσες πληροφορίες.
- Η ιστορία είναι σημαντική επειδή επιτρέπει στους πελάτες να οπισθοχωρήσουν στην αρχική πηγή των δεδομένων.
infoUrl
- ** infoUrl ** είναι ένα REQUIRED παγκόσμιο χαρακτηριστικό με το URL μιας ιστοσελίδας με περισσότερες πληροφορίες για αυτό το σύνολο δεδομένων (συνήθως στην ιστοσελίδα του ιδρύματος προέλευσης) . Για παράδειγμα,
<att name="infoUrl">http://www.globec.org/</att>
- Είτε το σύνολο δεδομένων είναι παγκόσμιο Χαρακτηριστικά πηγής ή της παγκόσμιας< addAttributes > ΠΡΕΠΕΙ να περιλαμβάνει αυτό το χαρακτηριστικό.
- infoUrl είναι σημαντικό επειδή επιτρέπει στους πελάτες να μάθουν περισσότερα για τα δεδομένα από την αρχική πηγή.
- ERDDAP™ εμφανίζει ένα σύνδεσμο με το infoUrl στο έντυπο πρόσβασης δεδομένων του συνόλου δεδομένων ( * datasetID * .html) , Κάντε μια ιστοσελίδα γραφήματος ( * datasetID * . γράφημα) , και άλλες ιστοσελίδες.
- Αν το URL έχει ένα τμήμα ερωτήματος (μετά το "?") , πρέπει να είναι ήδη % κωδικοποιημένο . Πρέπει να κωδικοποιήσετε ειδικούς χαρακτήρες στους περιορισμούς (εκτός του αρχικού «&» και του κύριου '=' , εάν υπάρχει) στη μορφή %HH, όπου HH είναι η δεκαεξαδική τιμή 2 ψηφίων του χαρακτήρα. Συνήθως, απλά χρειάζεται να μετατρέψετε μερικούς από τους χαρακτήρες στίξης: % σε %25, & σε %26, " σε %22,<σε% 3C, = σε% 3D, > σε% 3E, + σε% 2B, | σε %7C, \[ σε %5B, \] σε% 5D, χώρος σε% 20, και μετατροπή όλων των χαρακτήρων πάνω από # 127 σε μορφή UTF-8 και στη συνέχεια ποσοστό κωδικοποιεί κάθε byte της μορφής UTF-8 σε μορφή %HH (ζητήστε βοήθεια από έναν προγραμματιστή) .
Για παράδειγμα, & stationID >="41004""
γίνεται & stationID %3E=%2241004%22
Το ποσοστό κωδικοποίησης είναι γενικά απαιτείται όταν έχετε πρόσβαση ERDDAP μέσω λογισμικού άλλου από ένα πρόγραμμα περιήγησης. Οι περιηγητές συνήθως χειρίζονται το ποσοστό κωδικοποίησης για εσάς.
Σε ορισμένες περιπτώσεις, θα πρέπει να κωδικοποιήσετε τοις εκατό όλους τους χαρακτήρες εκτός από το A-Za-z0-9\!.~ " () \*, αλλά ακόμα δεν κωδικοποιούν το αρχικό '&' ή το κύριο '=' .
Οι γλώσσες προγραμματισμού έχουν εργαλεία για να το κάνουν αυτό (για παράδειγμα, δείτε Java Σ java.net.URLEncoder
και Java Το σενάριο είναι...encodeURIComponent()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) ) και υπάρχουν ιστοσελίδες που το ποσοστό κωδικοποιεί / decode για εσάς . - Από datasets.xml είναι ένα αρχείο XML, ΠΡΕΠΕΙ επίσης &-κωδικοποίησε ΟΛΑ '&', '<', και '>' στο URL ως '&?', '<', και '>?' μετά από το ποσοστό κωδικοποίησης.
- infoUrl είναι μοναδική σε ERDDAP . Δεν προέρχεται από κανένα πρότυπο μεταδεδομένων.
ίδρυμα
- ίδρυμα (από την ΚΦ και ACDD πρότυπα μεταδεδομένων) είναι ένα REQUIRED παγκόσμιο χαρακτηριστικό με τη σύντομη έκδοση του ονόματος του ιδρύματος που είναι η πηγή των δεδομένων αυτών (συνήθως ένα ακρωνύμιο, συνήθως<20 χαρακτήρες). Για παράδειγμα,
<att name="institution">NASA GSFC</att>
- Είτε το σύνολο δεδομένων είναι παγκόσμιο Χαρακτηριστικά πηγής ή της παγκόσμιας< addAttributes > ΠΡΕΠΕΙ να περιλαμβάνει αυτό το χαρακτηριστικό.
- ERDDAP™ εμφανίζει το ίδρυμα όποτε εμφανίζει μια λίστα συνόλων δεδομένων. Εάν το όνομα ενός ιδρύματος εδώ είναι μεγαλύτερο από 20 χαρακτήρες, μόνο οι πρώτοι 20 χαρακτήρες θα είναι ορατοί στη λίστα των συνόλων δεδομένων (αλλά ολόκληρο το ίδρυμα μπορεί να φανεί με την τοποθέτηση του δρομέα του ποντικιού πάνω από το διπλανό "?" εικονίδιο) .
- Εάν προσθέσετε το ίδρυμα στη λίστα των< categoryAttributes > μέσα ERDDAP Σ setup.xml αρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων από το ίδιο ίδρυμα μέσω ERDDAP S " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα.
λέξεις κλειδιά
- λέξεις κλειδιά (από την ACDD πρότυπο μεταδεδομένων) είναι ένας κατάλογος λέξεων και σύντομων φράσεων που χωρίζονται από κόμματα (για παράδειγμα, GCMD Λέξεις-κλειδιά της επιστήμης ) που περιγράφουν το σύνολο δεδομένων με γενικό τρόπο και δεν υποθέτουν οποιαδήποτε άλλη γνώση του συνόλου δεδομένων (για παράδειγμα, για τα ωκεανογραφικά δεδομένα, περιλαμβάνονται ο ωκεανός) . Για παράδειγμα,
<att name="keywords">ano, circulation, coastwatch, currents, derived, Earth Science > Oceans > Ocean Circulation > Ocean Currents, eastward, eastward\\_sea\\_water\\_velocity, experimental, hf radio, meridional, noaa, northward, northward\\_sea\\_water\\_velocity, nuevo, ocean, oceans, radio, radio-derived, scan, sea, seawater, velocity, water, zonal</att>
Από datasets.xml είναι ένα έγγραφο XML, οι χαρακτήρες &,<, και > σε ένα χαρακτηριστικό όπως λέξεις-κλειδιά (π.χ. οι > χαρακτήρες στις λέξεις-κλειδιά επιστήμης GCMD) πρέπει να κωδικοποιείται ως &·<, και & gt;, αντίστοιχα. Όταν ένα σύνολο δεδομένων φορτώνεται ERDDAP ,
- "Earth Science > " προστίθεται στην αρχή κάθε GCMD λέξη κλειδί που στερείται.
- Οι λέξεις κλειδιά GCMD μετατρέπονται σε περίπτωση τίτλου (Δηλαδή, τα πρώτα γράμματα κεφαλαιοποιούνται) .
- Οι λέξεις-κλειδιά αναδιατάσσονται σε ταξινομημένη σειρά και τυχόν χαρακτήρες newline αφαιρούνται.
keywords\_vocabulary
- ** keywords\_vocabulary ** (από την ACDD πρότυπο μεταδεδομένων) είναι ένα συνιστώμενο χαρακτηριστικό: εάν ακολουθείτε μια κατευθυντήρια γραμμή για τις λέξεις/φράσεις στο χαρακτηριστικό λέξεων-κλειδιών σας (Για παράδειγμα, GCMD Science Λέξεις κλειδιά) , βάλε εδώ το όνομα αυτής της κατευθυντήριας γραμμής. Για παράδειγμα,
<att name="keywords\\_vocabulary">GCMD Science Keywords</att>
άδεια
- άδεια (από την ACDD πρότυπο μεταδεδομένων) είναι ένα ισχυρό συνιστώμενο παγκόσμιο χαρακτηριστικό με τους περιορισμούς της άδειας χρήσης ή/και χρήσης. Για παράδειγμα,
<att name="license">\\[standard\\]</att>
- Εάν " \[ πρότυπο \] " εμφανίζεται στην τιμή γνώρισμα, θα αντικατασταθεί από το πρότυπο ERDDAP™ άδεια από το<πρότυποLicense> ετικέτα στο ERDDAP Σ \[ τομκάτ \] /webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/messages.xml αρχείο.
Metadata\_Conventions
- ** Metadata\_Conventions ** είναι από το ξεπερασμένο ACDD 1,0 (το οποίο ταυτοποιήθηκε στο Metadata\_Conventions ως " Unidata Σύνολο δεδομένων Discovery v1.0") πρότυπο μεταδεδομένων. Η τιμή του χαρακτηριστικού ήταν ένας κατά κόμμα χωρισμένος κατάλογος συμβάσεων μεταδεδομένων που χρησιμοποιήθηκαν από αυτό το σύνολο δεδομένων. Εάν ένα σύνολο δεδομένων χρησιμοποιεί το ACDD 1.0, το χαρακτηριστικό αυτό είναι ΣΤΡΑΤΗΓΙΚΟΣ ΣΥΣΤΑΤΙΚΟΣ, για παράδειγμα,
<att name="Metadata\\_Conventions">COARDS, CF-1.6, Unidata Dataset Discovery v1.0</att>
Αλλά... ERDDAP™ τώρα συνιστά ACDD-1.3. Εάν έχετε αλλάξατε τα σύνολα δεδομένων σας για να χρησιμοποιήσετε το ACDD-1,3 , χρήση του Metadata\_Conventions είναι ΣΤΡΑΤΙΩΤΙΚΑ ΔΙΑΘΑΛΛΑΣΜΕΝΟ: μόνο χρήση [<Συμβάσεις>] (#συμβάσεις) Αντ' αυτού.
processing\_level
- ** processing\_level ** (από την ACDD πρότυπο μεταδεδομένων) είναι μια ΣΥΣΤΑΤΙΚΗ Κείμενο περιγραφή της επεξεργασίας (για παράδειγμα, Επίπεδα επεξεργασίας δεδομένων συστήματος παρατήρησης και πληροφοριών της NASA , για παράδειγμα, επίπεδο 3) ή επίπεδο ποιοτικού ελέγχου (για παράδειγμα, η ποιότητα της επιστήμης) των δεδομένων. Για παράδειγμα,
<att name="processing\\_level">3</att>
έργο
- έργο (από την ACDD πρότυπο μεταδεδομένων) είναι ένα πιθανό χαρακτηριστικό για τον προσδιορισμό του έργου στο οποίο εντάσσεται το σύνολο δεδομένων. Για παράδειγμα,
<att name="project">GTSPP</att>
Αν το σύνολο δεδομένων δεν είναι μέρος ενός έργου, μην χρησιμοποιήσετε αυτό το χαρακτηριστικό. Σε σύγκριση με creator\_name , αυτό επικεντρώνεται στο έργο (όχι ένα πρόσωπο ή έναν οργανισμό, ο οποίος μπορεί να συμμετέχει σε πολλαπλά έργα) .
publisher\_name
- ** publisher\_name ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΣΤΑΤΙΚΟΣ τρόπος αναγνώρισης του προσώπου, της οργάνωσης ή του έργου που δημοσιεύει αυτό το σύνολο δεδομένων. Για παράδειγμα,
<att name="publisher\\_name">JPL</att>
Για παράδειγμα, είστε ο εκδότης αν ένα άλλο πρόσωπο ή ομάδα δημιουργήθηκε το σύνολο δεδομένων και είστε απλά re-serving μέσω ERDDAP . Εάν "ο εκδότης" δεν ισχύει πραγματικά σε ένα σύνολο δεδομένων, παραλείπετε αυτό το χαρακτηριστικό. Σε σύγκριση με creator\_name , ο εκδότης πιθανόν να μην τροποποίησε σημαντικά ή να επανεπεξεργάστηκε τα δεδομένα· ο εκδότης απλώς καθιστά τα δεδομένα διαθέσιμα σε ένα νέο χώρο.
publisher\_email
- ** publisher\_email ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΝΙΣΤΑΜΕΝΟς τρόπος αναγνώρισης μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου (σωστή μορφοποίηση, για παράδειγμα, john\_smith@great.org) που παρέχει έναν τρόπο να επικοινωνήσετε με τον εκδότη. Για παράδειγμα,
<att name="publisher\\_email">john\\_smith@great.org</att>
Εάν "ο εκδότης" δεν ισχύει πραγματικά σε ένα σύνολο δεδομένων, παραλείπετε αυτό το χαρακτηριστικό.
publisher\_url
- ** publisher\_url ** (από την ACDD πρότυπο μεταδεδομένων) είναι ο ΣΥΝΙΣΤΑΜΕΝΟς τρόπος αναγνώρισης ενός URL για τον οργανισμό που δημοσίευσε το σύνολο δεδομένων, ή ένα URL με τις πληροφορίες του εκδότη σχετικά με αυτό το σύνολο δεδομένων (Αλλά αυτός είναι περισσότερο ο σκοπός του infoUrl ) . Για παράδειγμα,
<att name="publisher\\_url">https://podaac.jpl.nasa.gov</att>
Εάν "ο εκδότης" δεν ισχύει πραγματικά σε ένα σύνολο δεδομένων, παραλείπετε αυτό το χαρακτηριστικό.
real\_time
- ** real\_time ** είναι ένα παγκόσμιο χαρακτηριστικό συμβολοσειράς (όχι από οποιοδήποτε πρότυπο) υποδεικνύοντας αν πρόκειται για σύνολο δεδομένων πραγματικού χρόνου. Για παράδειγμα,
<att name="real\\_time">true</att>
Αν αυτό είναι λάθος (το προκαθορισμένο) , ERDDAP™ θα κρύπτη απαντήσεις σε αιτήματα για τύπους αρχείων όπου ολόκληρο το αρχείο πρέπει να δημιουργηθεί πριν ERDDAP™ μπορεί να αρχίσει να στέλνει την απάντηση στο χρήστη και να τα επαναχρησιμοποιεί για περίπου 15 λεπτά (π.χ., .nc , .png) . Αν αυτό είναι αλήθεια, ERDDAP™ ποτέ cache τα αρχεία απόκρισης και θα επιστρέψει πάντα νέα αρχεία.
sourceUrl χαρακτηριστικό
- ** sourceUrl ** είναι ένα παγκόσμιο χαρακτηριστικό με το URL της πηγής των δεδομένων. Για παράδειγμα,
<att name="sourceUrl">https://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS</att>
(Αλλά βάλε τα όλα σε μια γραμμή.)
- ERDDAP™ συνήθως δημιουργεί αυτό το παγκόσμιο χαρακτηριστικό αυτόματα. Δύο εξαιρέσεις είναι EDDTableFrom Hyrax Αρχεία και EDDTableFromThreddsFiles.
- Εάν η πηγή είναι τοπικά αρχεία και τα αρχεία δημιουργήθηκαν από τον οργανισμό σας, χρησιμοποιήστε
<att name="sourceUrl">(local files)</att>
- Εάν η πηγή είναι τοπική βάση δεδομένων και τα δεδομένα δημιουργήθηκαν από τον οργανισμό σας, χρησιμοποιήστε
<att name="sourceUrl">(local database)</att>
- sourceUrl είναι σημαντικό επειδή επιτρέπει στους πελάτες να οπισθοχωρήσουν στην αρχική πηγή των δεδομένων.
- sourceUrl είναι μοναδική σε ERDDAP . Δεν προέρχεται από κανένα πρότυπο μεταδεδομένων.
standard\_name\_vocabulary
- ** standard\_name\_vocabulary ** (από την ACDD πρότυπο μεταδεδομένων) είναι ένα συνιστώμενο χαρακτηριστικό για τον προσδιορισμό της ονομασίας του ελεγχόμενου λεξιλογίου από το οποίο είναι μεταβλητή standard\_name Είναι πιασμένα. Για παράδειγμα,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v77</att>
για την έκδοση 77 της Πίνακας τυποποιημένων ονομάτων CF .
subsetVariables
- ** subsetVariables ** (μόνο για σύνολα δεδομένων EDDTable) είναι ένα ΣΥΣΤΑΤΙΚΟ παγκόσμιο χαρακτηριστικό που σας επιτρέπει να καθορίσετε έναν κατάλογο χωρισμένο με κόμματα [< dataVariable >] (#μεταβλητή δεδομένων) destinationName s για τον προσδιορισμό μεταβλητών που έχουν περιορισμένο αριθμό τιμών (ένας άλλος τρόπος: μεταβλητές για τις οποίες κάθε μία από τις τιμές έχει πολλά αντίγραφα) . Για παράδειγμα,
<att name="subsetVariables">station\\_id, longitude, latitude</att>
Εάν αυτή η ιδιότητα είναι παρούσα, το σύνολο δεδομένων θα έχει * datasetID * . subset ιστοσελίδα (και ένα σύνδεσμο σε κάθε λίστα δεδομένων) που επιτρέπει στους χρήστες να επιλέγουν γρήγορα και εύκολα διάφορα υποσύνολα των δεδομένων.
- Κάθε φορά που ένα σύνολο δεδομένων φορτώνεται, ERDDAP Φορτία και αποθηκεύει στο δίσκο έναν πίνακα με όλα τα διακριτά () συνδυασμοί του υποσύνολου Τιμές μεταβλητής. ERDDAP™ μπορεί να διαβάσει ότι subsetVariables τραπέζι και επεξεργασία πολύ γρήγορα (ιδιαίτερα σε σύγκριση με την ανάγνωση πολλών αρχείων δεδομένων ή τη λήψη δεδομένων από μια βάση δεδομένων ή άλλη εξωτερική υπηρεσία) .
- Αυτό επιτρέπει ERDDAP™ να κάνει 3 πράγματα:
- Επιτρέπει ERDDAP™ να θέσει μια λίστα των πιθανών τιμών σε μια αναπτυσσόμενη λίστα στη φόρμα πρόσβασης δεδομένων, να κάνει μια ιστοσελίδα γραφήματος, και . subset ιστοσελίδες.
- Επιτρέπει ERDDAP™ να προσφέρει μια σελίδα . subset για αυτό το σύνολο δεδομένων. Αυτή η σελίδα είναι ενδιαφέρουσα γιατί καθιστά εύκολο να βρείτε έγκυρους συνδυασμούς των τιμών αυτών των μεταβλητών, η οποία για ορισμένα σύνολα δεδομένων και ορισμένες μεταβλητές είναι πολύ, πολύ δύσκολο (σχεδόν αδύνατο.) . Στη συνέχεια, όλοι οι χρήστες ζητούν διακριτά () υποσύνολο Τα μεταβλητά δεδομένα θα είναι πολύ γρήγορα.
- Εάν υπάρχει αίτημα χρήστη που αναφέρεται μόνο σε ένα υποσύνολο αυτών των μεταβλητών, ERDDAP™ μπορεί να διαβάσει γρήγορα το subsetVariables τραπέζι, και να απαντήσει στο αίτημα. Αυτό μπορεί να σώσει έναν τόνο χρόνου και προσπάθειας για ERDDAP .
- Η διάταξη της destinationName ο καθορισμός της σειράς ταξινόμησης * datasetID * . subset ιστοσελίδα, έτσι θα ορίσετε συνήθως τις πιο σημαντικές μεταβλητές πρώτα, τότε το λιγότερο σημαντικό. Για παράδειγμα, για σύνολα δεδομένων με δεδομένα χρονοσειρών για διάφορους σταθμούς, θα μπορούσατε να χρησιμοποιήσετε, για παράδειγμα,
<att name="subsetVariables">station\\_id, longitude, latitude</att>
έτσι ώστε οι τιμές να ταξινομούνται ανά σταθμό\_id.
- Προφανώς, είναι επιλογή σας ποιες μεταβλητές να συμπεριλάβετε στην subsetVariables λίστα, αλλά η προτεινόμενη χρήση είναι:
Γενικά, συμπεριλάβετε μεταβλητές για τις οποίες θέλετε ERDDAP™ για την εμφάνιση μιας αναπτυσσόμενης λίστας επιλογών στη φόρμα πρόσβασης δεδομένων του συνόλου δεδομένων (.html) και Make-A-Graph (. γράφημα) ιστοσελίδες.
Γενικά, περιλαμβάνουν μεταβλητές με πληροφορίες σχετικά με τα χαρακτηριστικά του συνόλου δεδομένων (τους σταθμούς, τα προφίλ και/ή τις τροχιές, ιδίως από cdm\_timeseries\_μεταβλητές , cdm\_profile\_μεταβλητή , cdm\_trajectory\_μεταβλητές ) . Υπάρχουν μόνο μερικές διαφορετικές τιμές για αυτές τις μεταβλητές έτσι ώστε να λειτουργούν καλά με drop-down λίστες.
Μην συμπεριλάβετε ποτέ μεταβλητές δεδομένων που σχετίζονται με μεμονωμένες παρατηρήσεις (π.χ. χρόνος, θερμοκρασία, αλατότητα, ταχύτητα ρεύματος) στο subsetVariables Λίστα. Υπάρχουν πάρα πολλές διαφορετικές τιμές για αυτές τις μεταβλητές, έτσι μια drop-down λίστα θα ήταν αργή να φορτώσει και να είναι δύσκολο να εργαστεί με (ή όχι εργασία) .
- Εάν ο αριθμός των διακριτών συνδυασμών αυτών των μεταβλητών είναι μεγαλύτερος από περίπου 1.000.000, θα πρέπει να εξετάσει τον περιορισμό της subsetVariables να προσδιορίσετε να μειώσετε τον αριθμό των διακριτών συνδυασμών σε κάτω από 1.000.000, διαφορετικά, * datasetID * . subset ιστοσελίδες μπορεί να δημιουργηθεί αργά. Σε ακραίες περιπτώσεις, το σύνολο δεδομένων μπορεί να μην φορτώνει ERDDAP™ επειδή η δημιουργία της λίστας των διαφορετικών συνδυασμών χρησιμοποιεί πάρα πολύ μνήμη. Εάν ναι, ΠΡΕΠΕΙ ΝΑ αφαιρέσετε ορισμένες μεταβλητές από το subsetVariables Λίστα.
- Εάν ο αριθμός των διακριτών τιμών οποιασδήποτε μεταβλητής υποσύνολο είναι μεγαλύτερος από περίπου 20.000, θα πρέπει να εξετάσει το ενδεχόμενο να μην συμπεριλάβει αυτή τη μεταβλητή στον κατάλογο των subsetVariables , ειδάλλως, χρειάζεται πολύς χρόνος για να μεταδοθεί η * datasetID * ...υποσύνολο, * datasetID * και * datasetID * .html ιστοσελίδες. Επίσης, σε ένα Mac, είναι πολύ δύσκολο να κάνετε επιλογές από μια αναπτυσσόμενη λίστα με περισσότερα από 500 αντικείμενα λόγω της έλλειψης μιας γραμμής κύλισης. Ένας συμβιβασμός είναι: αφαιρέστε τις μεταβλητές από τη λίστα όταν οι χρήστες δεν είναι πιθανό να επιλέξουν τιμές από μια αναπτυσσόμενη λίστα.
- Θα πρέπει να ελέγξετε κάθε σύνολο δεδομένων για να δείτε αν το subsetVariables Η ρύθμιση είναι εντάξει. Εάν ο εξυπηρετητής πηγαίων δεδομένων είναι αργός και παίρνει πολύ χρόνο (ή αποτυγχάνει) να κατεβάσετε τα δεδομένα, είτε να μειώσετε τον αριθμό των μεταβλητών που καθορίζονται ή να αφαιρέσετε το subsetVariables Παγκόσμια ιδιότητα.
- Υποσύνολο Οι μεταβλητές είναι πολύ χρήσιμες. Έτσι, αν το σύνολο δεδομένων σας είναι κατάλληλο, παρακαλώ δημιουργήστε ένα subsetVariables χαρακτηριστικό γνώρισμα.
- Πίνακας EDD από SOS αυτόματα προσθέτει
<att name="subsetVariables">station\\_id, longitude, latitude</att>
όταν δημιουργείται το σύνολο δεδομένων.
- Πιθανή προειδοποίηση: εάν ένας χρήστης χρησιμοποιεί το * datasetID * . υποσύνολο ιστοσελίδα επιλέγει μια τιμή η οποία έχει μια μεταφοράΕπιστροφή ή newline χαρακτήρα, * datasetID * .υποκατάσταση θα αποτύχει. ERDDAP™ δεν μπορεί να λειτουργήσει γύρω από αυτό το θέμα λόγω κάποιων λεπτομερειών HTML. Σε κάθε περίπτωση, είναι σχεδόν πάντα μια καλή ιδέα για την αφαίρεση της μεταφοράςΕπιστροφή και newline χαρακτήρες από τα δεδομένα. Για να σας βοηθήσει να διορθώσετε το πρόβλημα, αν ο πίνακας EDD. subsetVariables Μέθοδος πίνακα δεδομένων ERDDAP ανιχνεύει τις τιμές των δεδομένων που θα προκαλέσουν πρόβλημα, θα στείλει μια προειδοποίηση με μια λίστα των προσβλητικών τιμών στο email Τα πάντα Στις διευθύνσεις email που καθορίζονται στο setup.xml. Έτσι, ξέρεις τι πρέπει να διορθωθεί.
- Προ-δημιουργημένοι πίνακες. Κανονικά, όταν ERDDAP™ φορτώνει ένα σύνολο δεδομένων, απαιτεί το διακριτό () υποσύνολο πίνακα δεδομένων μεταβλητών από την πηγή δεδομένων, μόνο μέσω ενός κανονικού αιτήματος δεδομένων. Σε ορισμένες περιπτώσεις, αυτά τα δεδομένα δεν είναι διαθέσιμα από την πηγή δεδομένων ή η ανάκτηση από την πηγή δεδομένων μπορεί να είναι δύσκολο στον εξυπηρετητή πηγής δεδομένων. Εάν ναι, μπορείτε να παράσχετε έναν πίνακα με τις πληροφορίες σε .json αρχείο . csv με το όνομα τομκάτ /περιεχόμενο/μερίδιο/υποσύνολο/ * datasetID * .json (ή .csv) . Εάν υπάρχει, ERDDAP™ θα το διαβάσει μία φορά όταν φορτωθεί το σύνολο δεδομένων και θα το χρησιμοποιήσει ως πηγή των δεδομένων υποσύνολο.
- Αν υπάρχει κάποιο σφάλμα κατά την ανάγνωση του, το σύνολο δεδομένων θα αποτύχει να φορτώσει.
- Πρέπει να έχει ακριβώς τα ίδια ονόματα στήλης (για παράδειγμα, η ίδια περίπτωση) ως< subsetVariables >, αλλά οι στήλες μπορεί να είναι με οποιαδήποτε σειρά.
- Μπορεί να έχει επιπλέον στήλες (Θα αφαιρεθούν και οι νέες σειρές θα αφαιρεθούν.) .
- Οι τιμές που λείπουν θα πρέπει να είναι τιμές που λείπουν (όχι ψεύτικοι αριθμοί όπως -99) .
- .json αρχεία μπορεί να είναι λίγο πιο δύσκολο να δημιουργήσετε, αλλά ασχολούνται με τους χαρακτήρες Unicode καλά. .json αρχεία είναι εύκολο να δημιουργήσετε αν τα δημιουργήσετε με ERDDAP .
- Τα αρχεία .csv είναι εύκολα στη δουλειά, αλλά κατάλληλα μόνο για χαρακτήρες ISO 8859-1. Τα αρχεία .csv ΠΡΕΠΕΙ να έχουν ονόματα στήλης στην πρώτη γραμμή και δεδομένα στις επόμενες σειρές.
- Για τεράστια σύνολα δεδομένων ή πότε< subsetVariables > παραμορφώνεται, ο πίνακας συνδυασμών τιμών μπορεί να είναι αρκετά μεγάλος για να προκαλέσει πάρα πολλά δεδομένα ή λάθη OutOfMemory. Η λύση είναι να αφαιρεθούν οι μεταβλητές από τη λίστα των< subsetVariables > για τις οποίες υπάρχει μεγάλος αριθμός τιμών ή να καταργηθούν οι μεταβλητές, όπως απαιτείται, έως ότου το μέγεθος του εν λόγω πίνακα είναι εύλογο. Ανεξάρτητα από το σφάλμα, τα μέρη του ERDDAP™ που χρησιμοποιούν το subsetVariables σύστημα δεν λειτουργεί καλά (π.χ., οι ιστοσελίδες φορτώνουν πολύ αργά) όταν υπάρχουν πάρα πολλές σειρές (π.χ. περισσότερο από ένα εκατομμύριο) σε εκείνο το τραπέζι.
- subsetVariables δεν έχει καμία σχέση με τον προσδιορισμό των μεταβλητών που μπορούν να χρησιμοποιήσουν οι χρήστες σε περιορισμούς, δηλαδή πώς οι χρήστες μπορούν να ζητήσουν υποσύνολα του συνόλου δεδομένων. ERDDAP™ πάντα επιτρέπει στους περιορισμούς να αναφέρονται σε οποιαδήποτε από τις μεταβλητές.
Μονάδες χρόνου
Χρόνος και χρονική σφραγίδα οι στήλες πρέπει να έχουν ISO 8601:2004 (E) μορφοποιημένη ημερομηνία+ώρα συμβολοσειρές Z (για παράδειγμα, 1985-01-31T15:31:00Z) .
περίληψη
- περίληψη (από την ΚΦ και ACDD πρότυπα μεταδεδομένων) είναι ένα ΑΠΑΙΤΕΙΤΑΙ παγκόσμιο χαρακτηριστικό με μια μακρά περιγραφή του συνόλου δεδομένων (συνήθως<500 χαρακτήρες). Για παράδειγμα,
<att name="summary">VIIRSN Level-3 Standard Mapped Image, Global, 4km, Chlorophyll a, Daily. The Visible and Infrared Imager/Radiometer Suite (VIIRS) is a multi-disciplinary instrument that flies on the National Polar-orbiting Operational Environmental Satellite System (NPOESS) series of spacecraft, including the NPOESS Preparatory Project (NPP).</att>
- Είτε το σύνολο δεδομένων είναι παγκόσμιο Χαρακτηριστικά πηγής ή της παγκόσμιας< addAttributes > ΠΡΕΠΕΙ να περιλαμβάνει αυτό το χαρακτηριστικό.
- περίληψη είναι πολύ σημαντικό επειδή επιτρέπει στους πελάτες να διαβάσουν μια περιγραφή του συνόλου δεδομένων που έχει περισσότερες πληροφορίες από τον τίτλο και έτσι γρήγορα να κατανοήσουν τι είναι το σύνολο δεδομένων.
- Συμβουλή: παρακαλούμε γράψτε την περίληψη ώστε να λειτουργήσει για να περιγράψει το σύνολο δεδομένων σε κάποιο τυχαίο άτομο που συναντάτε στο δρόμο ή σε έναν συνάδελφο. Θυμηθείτε να συμπεριλάβετε το Πέντε W και ένα H : Ποιος δημιούργησε το σύνολο δεδομένων; Τι πληροφορίες συλλέχθηκαν; Πότε συλλέχθηκαν τα δεδομένα; Πού συλλέχθηκε; Γιατί συλλέχθηκε; Πώς συλλέχθηκε;
- ERDDAP™ εμφανίζει την περίληψη στη φόρμα πρόσβασης του συνόλου δεδομένων ( * datasetID * .html) , Κάντε μια ιστοσελίδα γραφήματος ( * datasetID * . γράφημα) , και άλλες ιστοσελίδες. ERDDAP™ χρησιμοποιεί την περίληψη κατά τη δημιουργία εγγράφων FGDC και ISO 19115.
testOutOfDate
- ** testOutOfDate ** (προαιρετικό ERDDAP -ειδικό παγκόσμιο χαρακτηριστικό μεταδεδομένων, όχι από οποιοδήποτε πρότυπο) προσδιορίζει, με απλοϊκό τρόπο, πότε τα δεδομένα για ένα σύνολο δεδομένων σε σχεδόν πραγματικό χρόνο θεωρούνται ξεπερασμένα, που προσδιορίζονται ως now- nUnits , για παράδειγμα, now- 2 ημέρες για δεδομένα που συνήθως εμφανίζονται 24-48 ώρες μετά την τιμή του χρόνου. Για τα δεδομένα πρόβλεψης, χρησιμοποιήστε τώρα + nUnits , για παράδειγμα, τώρα + 6 ημέρες για τα δεδομένα πρόβλεψης που είναι, το πολύ, 8 ημέρες στο μέλλον. (Δείτε το now- nUnits Συντακτική περιγραφή .) Εάν η μέγιστη τιμή χρόνου για το σύνολο δεδομένων είναι πιο πρόσφατη από τον καθορισμένο χρόνο, το σύνολο δεδομένων θεωρείται ενημερωμένο. Εάν η μέγιστη χρονική τιμή είναι μεγαλύτερη από τον καθορισμένο χρόνο, το σύνολο δεδομένων θεωρείται ενημερωμένο. Για τα ξεπερασμένα σύνολα δεδομένων, υπάρχει πιθανώς ένα πρόβλημα με την πηγή δεδομένων, έτσι ERDDAP™ δεν έχει πρόσβαση σε δεδομένα από πιο πρόσφατα χρονικά σημεία.
Η testOutOfDate Η τιμή εμφανίζεται ως στήλη στην allDatasets σύνολο δεδομένων σε σας ERDDAP . Χρησιμοποιείται επίσης για τον υπολογισμό του δείκτη outOfDate, ο οποίος είναι μια άλλη στήλη στην allDatasets Σύστημα δεδομένων. Εάν ο δείκτης είναι<1, το σύνολο δεδομένων θεωρείται ενημερωμένο. Εάν ο δείκτης είναι<=1, το σύνολο δεδομένων θεωρείται παρωχημένο. Εάν ο δείκτης είναι<=2, το σύνολο δεδομένων θεωρείται πολύ ξεπερασμένο.
Η testOutOfDate η τιμή χρησιμοποιείται επίσης από ERDDAP™ για την παραγωγή τουhttps://yourDomain/erddap/outOfDateDatasets.htmlΙστοσελίδα ( παράδειγμα ) που δείχνει τα σύνολα δεδομένων που έχουν< testOutOfDate > ετικέτες, με τα σύνολα δεδομένων που κατατάσσονται από το πόσο ξεπερασμένες είναι. Αν αλλάξετε τον τύπο αρχείου (από .html έως .csv, .jsonlCSV , .nc , .tsv , ...) , μπορείτε να πάρετε αυτές τις πληροφορίες σε διαφορετικές μορφές αρχείων.
Όταν είναι δυνατόν, Δημιουργία συνόλων δεδομένωνXml προσθέτει α testOutOfDate χαρακτηριστικό στο παγκόσμιο addAttributes ενός συνόλου δεδομένων. Αυτή η τιμή είναι μια πρόταση που βασίζεται στις πληροφορίες που είναι διαθέσιμες στο GenerateDatasetsXml. Αν η αξία δεν είναι κατάλληλη, αλλάξτε την.
Εδώ είναι πολύ διαφορετικό από [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) , η οποία ασχολείται με το πόσο ενημερωμένη ERDDAP Η γνώση του συνόλου δεδομένων είναι. Η< testOutOfDate > σύστημα υποθέτει ότι ERDDAP Η γνώση του συνόλου δεδομένων είναι ενημερωμένη. Το ερώτημα< testOutOfDate > ασχολείται με: φαίνεται να υπάρχει κάτι λάθος με την πηγή των δεδομένων, προκαλώντας πιο πρόσφατα δεδομένα να μην είναι προσβάσιμα από ERDDAP ♪ ♪
τίτλος
- τίτλος (από την ΚΦ και ACDD πρότυπα μεταδεδομένων) είναι ένα REQUIRED παγκόσμιο χαρακτηριστικό με τη σύντομη περιγραφή του συνόλου δεδομένων (συνήθως<=95 χαρακτήρες). Για παράδειγμα,
<att name="title">VIIRSN Level-3 Mapped, Global, 4km, Chlorophyll a, Daily</att>
- Είτε το σύνολο δεδομένων είναι παγκόσμιο Χαρακτηριστικά πηγής ή της παγκόσμιας< addAttributes > ΠΡΕΠΕΙ να περιλαμβάνει αυτό το χαρακτηριστικό.
- ο τίτλος είναι σημαντικός επειδή κάθε κατάλογος συνόλων δεδομένων που παρουσιάζονται από ERDDAP (εκτός από τα αποτελέσματα αναζήτησης) παραθέτει τα σύνολα δεδομένων με αλφαβητική σειρά, ανά τίτλο. Έτσι, αν θέλετε να καθορίσετε τη σειρά των συνόλων δεδομένων, ή να έχετε κάποια σύνολα δεδομένων ομαδοποιημένα μαζί, θα πρέπει να δημιουργήσετε τίτλους με αυτό κατά νου. Πολλές λίστες συνόλων δεδομένων (για παράδειγμα, σε απάντηση σε αναζήτηση κατηγορίας) , εμφάνιση ενός υποσύνολο της πλήρους λίστας και με διαφορετική σειρά. Έτσι ο τίτλος για κάθε σύνολο δεδομένων θα πρέπει να στέκεται μόνος του.
- Εάν ο τίτλος περιέχει τη λέξη "DE ΙΔΙΑΙΤΕΡΗ" (όλα τα κεφαλαία γράμματα) , τότε το σύνολο δεδομένων θα πάρει μια χαμηλότερη κατάταξη στις αναζητήσεις.
< axisVariable >
- [ ** < axisVariable > ** ] (#Αξιομεταβλητή) χρησιμοποιείται για να περιγράψει μια διάσταση (Επίσης ονομάζεται "άξονας") .
Για EDDGrid σύνολα δεδομένων, ένα ή περισσότερα axisVariable Οι ετικέτες είναι ΑΠΑΙΤΕΙΤΑΙ, και όλα dataVariable α πάντα μοιράζονται/χρησιμοποιούν όλες τις μεταβλητές άξονα. ( Γιατί; Κι αν δεν το κάνουν; )
Πρέπει να υπάρχει μεταβλητή άξονα για κάθε διάσταση των μεταβλητών δεδομένων. Οι μεταβλητές του άξονα ΠΡΕΠΕΙ να προσδιορίζονται με τη σειρά που τις χρησιμοποιούν οι μεταβλητές δεδομένων. (Τα σύνολα δεδομένων του πίνακα EDD δεν μπορούν να χρησιμοποιηθούν< axisVariable > ετικέτες.) Ένα σαρκώδες παράδειγμα είναι:
<axisVariable>
<sourceName\>MT</sourceName>
<destinationName\>time</destinationName>
<addAttributes>
<att name="units">days since 1902-01-01T12:00:00Z</att>
</addAttributes>
</axisVariable>
< axisVariable > υποστηρίζει τις ακόλουθες ετικέτες:
< sourceName \>,
- [< sourceName \>] (#όνομα πηγής) -- το όνομα της πηγής δεδομένων για τη μεταβλητή. Αυτό είναι το όνομα που ERDDAP™ χρησιμοποιείται όταν ζητούνται δεδομένα από την πηγή δεδομένων. Αυτό είναι το όνομα που ERDDAP™ θα ψάξουν για όταν τα δεδομένα επιστρέφονται από την πηγή δεδομένων. Είναι ευαίσθητη υπόθεση. Αυτό είναι ΑΠΑΙΤΕΙΤΑΙ.
< destinationName \>,
- [< destinationName \>] (#Όνομα προορισμού) είναι το όνομα της μεταβλητής που θα εμφανίζεται και θα χρησιμοποιείται από ERDDAP™ χρήστες.
- Αυτό είναι πιθανό. Σε περίπτωση απουσίας, η sourceName χρησιμοποιείται.
- Αυτό είναι χρήσιμο γιατί σας επιτρέπει να αλλάξετε μια κρυπτογραφική ή παράξενη sourceName .
- destinationName είναι ευαίσθητη περίπτωση.
- destinationName S ΠΡΕΠΕΙ να ξεκινήσει με ένα γράμμα (Α-Ζ, Α-Ζ) και ΠΡΕΠΕΙ να ακολουθείται από 0 ή περισσότερους χαρακτήρες (Α-Ζ, Α-Ζ, 0-9, και \_) . ("-" είχε επιτραπεί πριν ERDDAP™ έκδοση 1.10.) Αυτός ο περιορισμός επιτρέπει τα ονόματα μεταβλητών αξόνων να είναι τα ίδια σε ERDDAP™ , στα αρχεία απόκρισης, και σε όλο το λογισμικό όπου θα χρησιμοποιηθούν αυτά τα αρχεία, συμπεριλαμβανομένων των γλωσσών προγραμματισμού (Όπως Python , Matlab , και Java Σενάριο) όταν υπάρχουν παρόμοιοι περιορισμοί στις μεταβλητές ονομασίες.
- Μέσα EDDGrid σύνολα δεδομένων, γεωγραφικό μήκος, γεωγραφικό πλάτος, υψόμετρο, βάθος και χρόνος οι μεταβλητές άξονα είναι ειδικές.
axisVariable <addAttributes>
- [< addAttributes >] (#μεταβλητή-προσθήκη) ορίζει ένα ΟΠΤΙΚΟ σύνολο χαρακτηριστικών ( όνομα = τιμή ) τα οποία προστίθενται στα χαρακτηριστικά της πηγής για μια μεταβλητή, για να γίνουν τα συνδυασμένα χαρακτηριστικά για μια μεταβλητή. Εάν η μεταβλητή είναι Χαρακτηριστικά πηγής ή< addAttributes > περιλαμβάνουν scale\_factor ή/και add\_offset χαρακτηριστικά, οι τιμές τους θα χρησιμοποιηθούν για την αποσυσκευασία των δεδομένων από την πηγή πριν από τη διανομή στον πελάτη (αποτέλεσμα Τιμή = πηγή Τιμή \* scale\_factor + add\_offset ) . Η μη αποσυσκευασμένη μεταβλητή θα είναι του ίδιου τύπου δεδομένων (για παράδειγμα, πλωτήρα) ως η scale\_factor και add\_offset τιμές.
< dataVariable >
- [ ** < dataVariable > ** ] (#μεταβλητή δεδομένων) είναι ΑΠΑΙΤΟΥΜΕΝΟ (για όλα σχεδόν τα σύνολα δεδομένων) ετικέτα εντός του<dataset> tag που χρησιμοποιείται για να περιγράψει μια μεταβλητή δεδομένων. Πρέπει να υπάρχουν 1 ή περισσότερες περιπτώσεις αυτής της ετικέτας. Ένα σαρκώδες παράδειγμα είναι:
<dataVariable>
<sourceName\>waterTemperature</sourceName>
<destinationName\>sea\_water\_temperature</destinationName>
<dataType>float</dataType>
<addAttributes>
<att name="ioos\_category">Temperature</att>
<att name="long\_name">Sea Water Temperature</att>
<att name="standard\_name">sea\_water\_temperature</att>
<att name="units">degree\_C</att>
</addAttributes>
</dataVariable>
< dataVariable > υποστηρίζει τις ακόλουθες ετικέτες:
< sourceName >
- [< sourceName >] (#όνομα πηγής) -- το όνομα της πηγής δεδομένων για τη μεταβλητή. Αυτό είναι το όνομα που ERDDAP™ χρησιμοποιείται όταν ζητούνται δεδομένα από την πηγή δεδομένων. Αυτό είναι το όνομα που ERDDAP™ θα ψάξουν για όταν τα δεδομένα επιστρέφονται από την πηγή δεδομένων. Είναι ευαίσθητη υπόθεση. Αυτό είναι ΑΠΑΙΤΕΙΤΑΙ.
Ομάδες
Η CF πρόσθεσε υποστήριξη για ομάδες με CF v1.8. Ξεκινώντας από ~2020, NetCDF εργαλεία υποστήριξης τοποθέτηση μεταβλητών σε ομάδες σε ένα .nc Αρχείο. Στην πράξη, αυτό σημαίνει ότι οι μεταβλητές έχουν ένα μακρύ όνομα που προσδιορίζει την ομάδα (α) και τη μεταβλητή ονομασία, για παράδειγμα, group1a/group2c/varName ). ERDDAP™ υποστηρίζει ομάδες με τη μετατροπή των "/" στη μεταβλητή< sourceName > σε "\_" σε μεταβλητές< destinationName >, για παράδειγμα, ομάδα1a\_ομάδα2c\_varName . (Όταν το βλέπετε αυτό, θα πρέπει να συνειδητοποιήσετε ότι οι ομάδες δεν είναι τίποτα περισσότερο από μια συντακτική σύμβαση.) Όταν οι μεταβλητές αναφέρονται σε ERDDAP™ , όλες οι μεταβλητές σε μια ομάδα θα εμφανιστούν μαζί, μιμούμενοι την υποκείμενη ομάδα. \[ Εάν ERDDAP™ , ιδίως GenerateDatasets Xml, δεν εκτελεί όσο καλά θα μπορούσε με πηγαία αρχεία που έχουν ομάδες, παρακαλώ στείλτε email ένα αρχείο δείγμα στον Chris. Ο Τζον στο Νόαγκοβ. \]
EDDTableFromFiles datasets μπορούν να χρησιμοποιήσουν κάποια ειδικά κωδικοποιημένα, ψευδο sourceName s για τον καθορισμό νέων μεταβλητών δεδομένων, π.χ. για την προώθηση ενός παγκόσμιου χαρακτηριστικού ως μεταβλητής δεδομένων. Βλέπεις; τα εν λόγω έγγραφα .
HDF Δομές
Ξεκινώντας με ERDDAP™ v2.12, EDDGrid Από αρχεία και EDDGrid Από αρχείαNc Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε .nc 4 και .hdf Τέσσερα αρχεία. Για τον προσδιορισμό μιας μεταβλητής που είναι από μια δομή, η< sourceName > πρέπει να χρησιμοποιούν το μορφότυπο: πλήρης δομήName | μέλοςName , για παράδειγμα ομάδα1/myStruct | Το μέλος μου.
Πηγή σταθερής αξίαςNames
Σε ένα σύνολο δεδομένων EDDTable, αν θέλετε να δημιουργήσετε μια μεταβλητή (με μία μόνο, σταθερή αξία) Αυτό δεν είναι στο σύνολο δεδομένων πηγής, χρήση:
<sourceName>=*fixedValue*</sourceName>
Το αρχικό σύμβολο ίσον λέει ERDDAP™ ότι ένα σταθερό Η αξία θα ακολουθήσει.
- Για αριθμητικές μεταβλητές, η σταθερή τιμή πρέπει να είναι μια ενιαία πεπερασμένη τιμή ή NaN (περίπτωση αναισθησίας, π.χ., \=NaN) .
- Για τις μεταβλητές συμβολοσειράς, η σταθερή τιμή πρέπει να είναι ενιαία, συμβολοσειρά τύπου JSON (με ειδικούς χαρακτήρες δραπέτευσαν με χαρακτήρες \) , π.χ. , \= " My \ " Special Special \ \ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " .
- Για μια μεταβλητή χρονοσφραγίδων, προσδιορίστε τη σταθερή τιμή ως αριθμό "seconds since 1970-01-01T00:00:00Z" και χρήση μονάδες=δευτερόλεπτα από 1970-01-01T00:00Z .
Οι άλλες ετικέτες για το< dataVariable > εργασία σαν να ήταν μια τακτική μεταβλητή. Για παράδειγμα, για να δημιουργήσετε μια μεταβλητή που ονομάζεται υψόμετρο με σταθερή τιμή 0,0 (πλωτήρας) , χρήση:
<sourceName>=0</sourceName>
<destinationName\>altitude</destinationName>
<dataType>float</dataType>
Για ασυνήθιστες καταστάσεις, μπορείτε ακόμη να καθορίσετε actual\_range addAtribute, η οποία θα παρακάμψει τις αναμενόμενες τιμές προορισμούMin και προορισμούMax (που διαφορετικά θα ισοδυναμούσε με το σταθερό Τιμή) .
Πηγή σεναρίουNames/Derived Variables
Ξεκινώντας με ERDDAP™ v2.10, σε α Πίνακας EDD από αρχεία , Πίνακας EDD από τη βάση δεδομένων , ή Πίνακας EDD από αρχείοNames σύνολο δεδομένων, το< sourceName > μπορεί να είναι έκφραση (μια εξίσωση που αξιολογεί μια ενιαία τιμή) , χρησιμοποιώντας τη μορφή
<sourceName>=*expression*</sourceName>
ή σενάριο (μια σειρά δηλώσεων που επιστρέφει μία μόνο τιμή) , χρησιμοποιώντας τη μορφή
<sourceName>=*script*</sourceName>
ERDDAP™ βασίζεται στην Το σχέδιο των Απάτσι Java Γλώσσα έκφρασης (ΤΖΕΞΛ) (άδεια: Απάτσι ) να αξιολογήσει τις εκφράσεις και να τρέξει τα σενάρια. Ο υπολογισμός μιας δεδομένης νέας μεταβλητής γίνεται μέσα σε μία σειρά από τα αποτελέσματα, επανειλημμένα για όλες τις σειρές. Οι εκφράσεις και τα σενάρια χρησιμοποιούν Java - και Java Σενάριο-όπως σύνταξη και μπορεί να χρησιμοποιήσει οποιοδήποτε από τα χειριστές και μέθοδοι που ενσωματώνονται στο JEXL . Τα σενάρια μπορούν επίσης να χρησιμοποιήσουν μεθόδους (λειτουργίες) από αυτές τις τάξεις:
- Ημερολόγιο2 , το οποίο αποτελεί περιτύλιγμα για ορισμένες από τις στατικές, χρονο- και ημερολογιακές μεθόδους που σχετίζονται με com.cohort.util.Calendar2 ( άδεια ) . Για παράδειγμα, Ημερολόγιο2.parseToEpochΔευτέρες ( sourceTime, ημερομηνία ΧρόνοςFormat ) θα αναλύσει την πηγή Χρονική συμβολοσειρά μέσω της συμβολοσειράς dateTimeFormat και επιστροφή a "seconds since 1970-01-01T00:00:00Z" (Εποχή δευτερόλεπτα) διπλή τιμή.
- Μαθηματικά , η οποία είναι ένα περιτύλιγμα για σχεδόν όλες τις στατικές, μαθηματικές μεθόδους Τζάβα. Λανγκ. Μαθηματικά . Για παράδειγμα, Math.atan2 ( y, x ) λαμβάνει σε ορθογώνιες συντεταγμένες (y, x) και επιστρέφει πολικές συντεταγμένες (μια σειρά από διπλάσια με \[ r, θήτα \] ) .
- Μαθηματικά2 , το οποίο είναι ένα περιτύλιγμα για σχεδόν όλες τις στατικές, μαθηματικές μεθόδους σε com.cohort.util. Μαθηματικά2 ( άδεια ) . Για παράδειγμα, Μαθηματικά2. γύρος ( δ, μέρη ) στρογγυλοποιείται δ προς τον καθορισμένο αριθμό ψηφίων στα δεξιά του δεκαδικού σημείου.
- String, το οποίο σας δίνει πρόσβαση σε όλες τις στατικές, σχετιζόμενες με String μεθόδους Τζάβα. Λανγκ. Στρινγκ . Αντικείμενα συμβολοσειράς ERDDAP™ εκφράσεις και σενάρια μπορούν να χρησιμοποιήσουν οποιοδήποτε από τα σχετικά Java μέθοδοι, όπως περιγράφονται στο java.lang. Τεκμηρίωση εγχόρδων. Για παράδειγμα, String.valueOf (δ) θα μετατρέψει τη διπλή τιμή d σε μια συμβολοσειρά (αν και μπορείτε επίσης να χρησιμοποιήσετε ""+δ) .
- Στρινγκ 2color , το οποίο είναι ένα περιτύλιγμα για το μεγαλύτερο μέρος των στατικών, String- και συστοιχίας που σχετίζονται με τις μεθόδους com.cohort.util.String2 ( άδεια ) . Για παράδειγμα, String2 .z eroPad ( αριθμός, nDigits ) θα προσθέσει 0's στα αριστερά του αριθμού συμβολοσειρών έτσι ώστε ο συνολικός αριθμός ψηφίων είναι nDigits (π.χ. String2 .z eroPad ("6",2) θα επιστρέψει "06") .
- γραμμή , η οποία έχει μη-στατικές μεθόδους για την πρόσβαση στα δεδομένα από τις διάφορες στήλες στην τρέχουσα σειρά του πίνακα δεδομένων πηγής. Για παράδειγμα, γραμμή. columnString (" έτος") διαβάζει την τιμή από τη στήλη " έτος" ως συμβολοσειρά, ενώ, σειρά.στήλη Το (" έτος") διαβάζει την τιμή από τη στήλη " έτος" ως ακέραιο.
Για λόγους ασφαλείας, εκφράσεις και σενάρια δεν μπορούν να χρησιμοποιήσουν άλλες τάξεις εκτός από αυτές 6. ERDDAP™ επιβάλλει αυτόν τον περιορισμό δημιουργώντας μια προκαθορισμένη μαύρη λίστα (που περιλαμβάνει όλες τις κατηγορίες) και μετά μια λευκή λίστα (που επιτρέπει ειδικά τις 6 κατηγορίες που περιγράφονται παραπάνω) . Εάν χρειάζεστε άλλες μεθόδους ή/και άλλες τάξεις για να κάνετε τη δουλειά σας, παρακαλούμε στείλτε email τα αιτήματά σας στον Chris. Ο Τζον στο Νόαγκοβ.
Απόδοση
Για τα σύνολα δεδομένων EDDTableFromFiles, υπάρχει μόνο ένα πολύ, πολύ ελάχιστο (Μάλλον δεν είναι αισθητή.) επιβράδυνση των αιτήσεων για δεδομένα από αυτές τις μεταβλητές. Για EDDTableFromDatabase, υπάρχει τεράστια ποινή ταχύτητας για αιτήματα που περιλαμβάνουν περιορισμούς σε αυτές τις μεταβλητές (π.χ., (&μήκος 0360>30&μήκος0360)<40) επειδή οι περιορισμοί δεν μπορούν να περάσουν στη βάση δεδομένων, έτσι η βάση δεδομένων πρέπει να επιστρέψει πολύ περισσότερα δεδομένα ERDDAP™ (η οποία είναι πολύ χρονοβόρα) Έτσι ώστε ERDDAP™ μπορεί να δημιουργήσει τη νέα μεταβλητή και να εφαρμόσει τον περιορισμό. Για να αποφύγει τη χειρότερη περίπτωση (όπου δεν υπάρχουν περιορισμοί που μεταβιβάζονται στη βάση δεδομένων) , ERDDAP™ ρίχνει ένα μήνυμα σφάλματος έτσι ώστε η βάση δεδομένων να μην χρειάζεται να επιστρέψει ολόκληρο το περιεχόμενο του πίνακα. (Αν θέλετε να παρακάμψετε αυτό, προσθέστε έναν περιορισμό σε μια μη-script στήλη που θα είναι πάντα αληθής, π.χ., & χρόνο<3000-01-01.) Για το λόγο αυτό, με το EDDTableFromDatabase, είναι πάντα καλύτερο να δημιουργήσετε μια παράγωγη στήλη στη βάση δεδομένων και όχι να χρησιμοποιήσετε sourceName =σενάριο ERDDAP .
Επισκόπηση του πώς μια έκφραση (Ή σενάριο) Χρησιμοποιείται:
Σε απάντηση στο αίτημα ενός χρήστη για δεδομένα πίνακα, ERDDAP™ παίρνει δεδομένα από μια σειρά πηγαίων αρχείων. Κάθε πηγαίο αρχείο θα δημιουργήσει έναν πίνακα ακατέργαστων (κατευθείαν από την πηγή) δεδομένα. ERDDAP™ στη συνέχεια, θα περάσει από τον πίνακα των ακατέργαστων δεδομένων, σειρά-σειρά, και να αξιολογήσει την έκφραση ή το σενάριο μία φορά για κάθε σειρά, προκειμένου να δημιουργήσετε μια νέα στήλη που έχει αυτή την έκφραση ή το σενάριο ως ένα sourceName .
Δημιουργία συνόλων δεδομένωνXml
Σημειώστε ότι η δημιουργία συνόλων δεδομένων Xml είναι εντελώς άγνοια όταν υπάρχει ανάγκη για τη δημιουργία μιας μεταβλητής με< sourceName >= έκφραση </ sourceName >. Πρέπει να δημιουργήσετε τη μεταβλητή στο datasets.xml Με το χέρι.
Παραδείγματα έκφρασης:
Εδώ είναι μερικά πλήρη παραδείγματα μεταβλητών δεδομένων που χρησιμοποιούν μια έκφραση για να δημιουργήσουν μια νέα στήλη δεδομένων. Αναμένουμε ότι αυτά τα παραδείγματα (και παραλλαγές τους) θα καλύψει περίπου το 95% της χρήσης όλων των εκφραζομένων sourceName Σ.
Συνδυάζοντας ξεχωριστή ημερομηνία" και "time" στήλες σε ενοποιημένη χρονική στήλη:
<dataVariable>
<sourceName>=Calendar2.parseToEpochSeconds(row.columnString("date") + "T" +
row.columnString("time") + "Z", "yyyy-MM-dd'T'HH:mm:ss'Z'")</sourceName>
<destinationName>time</destinationName>
<dataType>double</dataType>
<addAttributes>
<att name="units">seconds since 1970-01-01</att>
</addAttributes>
</dataVariable>
Αυτό... sourceName έκφραση κάνει ένα νέο "time" στήλη με τη συμπύκνωση των τιμών συμβολοσειράς από την ημερομηνία "" ( yyyy-MM-dd ) και "time" (HH:mm:ss) στήλες σε κάθε σειρά του πηγαίου αρχείου, και με τη μετατροπή της συμβολοσειράς σε ένα "seconds since 1970-01-01" (Εποχή δευτερόλεπτα) διπλή τιμή.
Ή φυσικά, θα πρέπει να προσαρμόσετε τη συμβολοσειρά μορφή χρόνου για την αντιμετώπιση της συγκεκριμένης μορφής στην ημερομηνία πηγής και τις στήλες του συνόλου δεδομένων, δείτε το τεκμηρίωση μονάδων χρόνου .
Τεχνικά, δεν χρειάζεται να χρησιμοποιήσεις Ημερολόγιο2.parseToEpochΔευτέρες () για να μετατρέψει τη συνδυασμένη ημερομηνία + ώρα σε εποχή Seconds. Θα μπορούσατε απλά να περάσετε την ημερομηνία + ώρα συμβολοσειρά σε ERDDAP™ και προσδιορίζει τη μορφή (π.χ., yyyy-MM-dd 'T'HH:mm:ss'Z') μέσω του χαρακτηριστικού μονάδων. Αλλά υπάρχουν σημαντικά πλεονεκτήματα για τη μετατροπή σε εποχή Seconds -- κυρίως, EDDTableFromFiles μπορεί τότε εύκολα να παρακολουθεί το εύρος των τιμών του χρόνου σε κάθε αρχείο και τόσο γρήγορα να αποφασίσει αν θα εξετάσει σε ένα δεδομένο αρχείο όταν ανταποκρίνεται σε ένα αίτημα που έχει χρονικούς περιορισμούς.
Ένα σχετικό πρόβλημα είναι η ανάγκη δημιουργίας μιας ενοποιημένης στήλης ημερομηνίας+ώρας από μια πηγή με ξεχωριστό έτος, μήνα, ημερομηνία, ώρα, λεπτό, δεύτερο. Η λύση είναι πολύ παρόμοια, αλλά θα πρέπει συχνά να μηδέν-pad πολλά από τα πεδία, έτσι ώστε, για παράδειγμα, μήνα (1 - 12) και ημερομηνία (1 - 31) Πάντα έχει 2 ψηφία. Εδώ είναι ένα παράδειγμα με το έτος, μήνα, ημερομηνία:
<sourceName>=Calendar2.parseToEpochSeconds(row.columnString("year") +
String2.zeroPad(row.columnString("month"), 2) +
String2.zeroPad(row.columnString("date"), 2), "yyyyMMdd")</sourceName>
Ένα σχετικό πρόβλημα είναι η ανάγκη δημιουργίας μιας ενοποιημένης στήλης γεωγραφικού πλάτους ή γεωγραφικού μήκους συνδυάζοντας τα δεδομένα στις χωριστές μοίρες, λεπτά και δευτερόλεπτα των στηλών του πηγαίου πίνακα, η καθεμία αποθηκευμένη ως ακέραιοι. Για παράδειγμα,
<sourceName>=row.columnInt("deg") + row.columnInt("min")/60.0 +
row.columnInt("sec")/3660.0</sourceName>
Μετατροπή στήλης με όνομα "lon" με τιμές γεωγραφικού μήκους από 0 - 360° σε στήλη με όνομα " μήκος" με τιμές από -180 - 180°
<dataVariable>
<sourceName>=Math2.anglePM180(row.columnDouble("lon"))</sourceName>
<destinationName>longitude</destinationName>
<dataType>double</dataType>
<addAttributes>
<att name="units">degrees\\_east</att>
</addAttributes>
</dataVariable>
Αυτό... sourceName έκφραση κάνει μια νέα " Γεωγραφικό μήκος" στήλη με τη μετατροπή της διπλής τιμής από τη "lon" στήλη σε κάθε σειρά του πηγαίου αρχείου (Πιθανώς με τιμές 0 - 360) , και με τη μετατροπή του σε -180 σε 180 διπλή αξία.
Αν αντίθετα θέλετε να μετατρέψετε τις τιμές γεωγραφικού μήκους πηγής -180 - 180° σε 0 - 360°, χρησιμοποιήστε
<sourceName>=Math2.angle0360(row.columnDouble("lon"))</sourceName>
Ονομάζοντας τις Μεταβλητές Δύο Γεωγραφικό μήκος: Εάν το σύνολο δεδομένων θα έχει 2 μεταβλητές γεωγραφικού μήκους, συνιστούμε τη χρήση destinationName = μήκος για τη μεταβλητή -180 - 180° και destinationName =μακρύ μήκος0360 (και longName=\ Γεωγραφικό μήκος 0-360°") για τη μεταβλητή 0 - 360°. Αυτό είναι σημαντικό επειδή οι χρήστες χρησιμοποιούν μερικές φορές Advanced Search για αναζήτηση δεδομένων μέσα σε ένα συγκεκριμένο γεωγραφικό εύρος. Αυτή η αναζήτηση θα λειτουργήσει καλύτερα αν το γεωγραφικό μήκος έχει σταθερά -180 - 180° τιμές για όλα τα σύνολα δεδομένων. Επίσης, τα γεωχωρικά χαρακτηριστικά του συνόλου δεδομένων\_lon\_min, geospatial\_lon\_max, Westernmost\_Easting και Easternmost\_Eastings θα οριστούν με συνεπή τρόπο (με τιμές γεωγραφικού μήκους -180 έως 180°) ;
Μετατροπή μιας στήλης με όνομα "tempF" με τιμές θερμοκρασίας σε βαθμό\_ F σε μια στήλη που ονομάζεται "tempC" με θερμοκρασίες σε βαθμό\_ Γ:
<dataVariable>
<sourceName>=(row.columnFloat("tempF")-32)\\*5/9</sourceName>
<destinationName>tempC</destinationName>
<dataType>float</dataType>
<addAttributes>
<att name="units">degrees\\_C</att>
</addAttributes>
</dataVariable>
Αυτό... sourceName έκφραση κάνει μια νέα "tempC" στήλη με τη μετατροπή του βαθμού πλωτήρα\_ Τιμή F από τη στήλη "tempF" σε κάθε σειρά του πηγαίου αρχείου σε βαθμό float\_ Τιμή C.
Σημειώστε ότι το σύνολο δεδομένων σας μπορεί να έχει τόσο την αρχική θερμοκρασία F μεταβλητή και η νέα θερμοκρασία Μεταβλητή C με άλλη μεταβλητή
<sourceName>tempF</sourceName>
Μετατροπή του ανέμου "ταχύτητα" και "κατεύθυνση" στήλες σε δύο στήλες με τα στοιχεία u,v
- Για να κάνετε μια μεταβλητή u, χρήση
<sourceName>=row.columnFloat("speed") \\* Math.cos(row.columnFloat("direction"))</sourceName>
- Για να κάνετε μια v μεταβλητή, χρησιμοποιήστε
<sourceName>=row.columnFloat("speed") \\* Math.sin(row.columnFloat("direction"))</sourceName>
Ή, δεδομένου u,v:
- Για να κάνετε μια μεταβλητή ταχύτητα, χρησιμοποιήστε
<sourceName>=Math.atan2(row.columnDouble("v"), row.columnDouble("u"))\\[0\\]</sourceName>
- Για να κάνετε μια μεταβλητή κατεύθυνση, χρησιμοποιήστε
<sourceName>=Math.toDegrees(Math.atan2(row.columnDouble("v"), row.columnDouble("u"))\\[1\\])</sourceName>
Παράδειγμα σεναρίου:
Εδώ είναι ένα παράδειγμα της χρήσης ενός σεναρίου, όχι μόνο μια έκφραση, ως sourceName . Περιμένουμε ότι τα σενάρια, σε αντίθεση με τις εκφράσεις, δεν θα χρειάζονται συχνά. Σε αυτή την περίπτωση ο στόχος είναι να επιστρέψει μια μη-NaN ελλείπουσα τιμή (-99) για τιμές θερμοκρασίας εκτός συγκεκριμένου εύρους. Σημειώστε ότι το σενάριο είναι το μέρος μετά το "=".
<dataVariable>
<sourceName>=var tc=row.columnFloat("tempC"); return tc>35 || tc<-5? -99.0f : tc\\*9/5+32;</sourceName>
<destinationName>tempF</destinationName>
<dataType>float</dataType>
<addAttributes>
<att name="units">degrees\\_F</att>
</addAttributes>
</dataVariable>
Σκληρή σημαία
Εάν αλλάξετε την έκφραση ή το σενάριο που ορίζεται σε ένα sourceName , θα πρέπει να ορίσετε ένα σκληρή σημαία για το σύνολο δεδομένων, έτσι ώστε η ERDDAP™ διαγράφει όλες τις κρυμμένες πληροφορίες για το σύνολο δεδομένων και ξαναδιαβάζει κάθε αρχείο δεδομένων (χρησιμοποιώντας τη νέα έκφραση ή το σενάριο) την επόμενη φορά που θα φορτώσει το σύνολο δεδομένων. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε ΔΑΠ το οποίο ισοδυναμεί με την τοποθέτηση σκληρής σημαίας.
Κωδικός ποσοστού
Αυτό είναι μόνο σπάνια σχετικό: Επειδή οι εκφράσεις και τα σενάρια είναι γραμμένα σε datasets.xml , το οποίο είναι ένα έγγραφο XML, θα πρέπει να κωδικοποιήσετε τοις εκατό οποιοδήποτε<, \>, και & χαρακτήρες στις εκφράσεις και σενάρια ως<, >, και & .
Κοινά Προβλήματα
Ένα κοινό πρόβλημα είναι ότι δημιουργείτε μια μεταβλητή με sourceName = έκφραση αλλά η στήλη των δεδομένων που προκύπτει έχει απλώς ελλείπουσες τιμές. Εναλλακτικά, κάποιες σειρές της νέας στήλης έχουν χαμένες τιμές και νομίζετε ότι δεν πρέπει. Το βασικό πρόβλημα είναι ότι κάτι δεν πάει καλά με την έκφραση και ERDDAP μετατρέπει αυτό το σφάλμα σε μια χαμένη τιμή. Για να λύσω το πρόβλημα,
- Κοίτα την έκφραση για να δεις ποιο είναι το πρόβλημα.
- Κοίτα μέσα. log.txt , η οποία θα εμφανίσει το πρώτο μήνυμα σφάλματος που δημιουργήθηκε κατά τη δημιουργία κάθε νέας στήλης.
Συχνές αιτίες είναι:
- Χρησιμοποίησες λάθος υπόθεση. Οι εκφράσεις και τα σενάρια είναι ευαίσθητα στην υπόθεση.
- Παρέλειψες το όνομα της τάξης. Για παράδειγμα, θα πρέπει να χρησιμοποιήσετε Math.abs () , όχι μόνο κοιλιακούς () .
- Δεν έκανες μετατροπές τύπου. Για παράδειγμα, αν ο τύπος δεδομένων μιας τιμής παραμέτρου είναι String και έχετε διπλή τιμή, θα πρέπει να μετατρέψετε ένα διπλό σε ένα String μέσω ""+d.
- Το όνομα στήλης στην έκφραση δεν ταιριάζει ακριβώς με το όνομα στήλης στο αρχείο (ή το όνομα μπορεί να είναι διαφορετικό σε κάποια αρχεία) .
- Υπάρχει ένα συντακτικό λάθος στην έκφραση (π.χ., λείπει ή επιπλέον») «).
Αν κολλήσεις ή χρειαστείς βοήθεια, Παρακαλώ συμπεριλάβετε τις λεπτομέρειες και δείτε μας τμήμα για τη λήψη πρόσθετης υποστήριξης .
< destinationName >
- [< destinationName >] (#Όνομα προορισμού) -- το όνομα της μεταβλητής που θα εμφανιστεί και θα χρησιμοποιηθεί από ERDDAP™ χρήστες.
- Αυτό είναι πιθανό. Σε περίπτωση απουσίας, η sourceName χρησιμοποιείται.
- Αυτό είναι χρήσιμο γιατί σας επιτρέπει να αλλάξετε μια κρυπτογραφική ή παράξενη sourceName .
- destinationName είναι ευαίσθητη περίπτωση.
- destinationName S ΠΡΕΠΕΙ να ξεκινήσει με ένα γράμμα (Α-Ζ, Α-Ζ) και ΠΡΕΠΕΙ να ακολουθείται από 0 ή περισσότερους χαρακτήρες (Α-Ζ, Α-Ζ, 0-9, και \_) . ("-" είχε επιτραπεί πριν ERDDAP™ έκδοση 1.10.) Αυτός ο περιορισμός επιτρέπει τα ονόματα μεταβλητών δεδομένων να είναι τα ίδια σε ERDDAP™ , στα αρχεία απόκρισης, και σε όλο το λογισμικό όπου θα χρησιμοποιηθούν αυτά τα αρχεία, συμπεριλαμβανομένων των γλωσσών προγραμματισμού (Όπως Python , Matlab , και Java Σενάριο) όταν υπάρχουν παρόμοιοι περιορισμοί στις μεταβλητές ονομασίες.
- Σε σύνολα δεδομένων EDDTable, γεωγραφικό μήκος, γεωγραφικό πλάτος, υψόμετρο (ή βάθος) , και ώρα Οι μεταβλητές δεδομένων είναι ειδικές.
<δεδομένα Τύπος & gt·
- [<Τύπος δεδομένων>] (#Τύπος δεδομένων) -- προσδιορίζει τον τύπο δεδομένων που προέρχεται από την πηγή. (Σε ορισμένες περιπτώσεις, για παράδειγμα, κατά την ανάγνωση δεδομένων από αρχεία ASCII, καθορίζει τον τρόπο αποθήκευσης των δεδομένων που προέρχονται από την πηγή.)
- Αυτό είναι ΑΠΑΙΤΕΙΤΑΙ από ορισμένους τύπους σύνολο δεδομένων και IGNORED από άλλους. Τύποι συνόλου δεδομένων που το απαιτούν αυτό για τους dataVariable ίνα είναι: EDDGrid Από αρχεία Xxx, πίνακας EDDΑπό αρχεία Xxx, πίνακας EDDFromM WFS , πίνακας EDDFromNOS, πίνακας EDDFrom SOS . Άλλοι τύποι συνόλου δεδομένων αγνοούν αυτή την ετικέτα επειδή παίρνουν τις πληροφορίες από την πηγή.
- Οι έγκυρες τιμές είναι οποιαδήποτε από τα πρότυπα ERDDAP™ Τύποι δεδομένων συν boolean (Βλέπε παρακάτω) . Τα ονόματα τύπου δεδομένων είναι ευαίσθητα στην περίπτωση.
δυαδικά δεδομένα
- "Βουλεάν" είναι ειδική περίπτωση.
- Εσωτερικά, ERDDAP™ δεν υποστηρίζει ένα δυαδικό τύπο επειδή οι booleans δεν μπορούν να αποθηκεύσουν τις τιμές που λείπουν και οι περισσότεροι τύποι αρχείων δεν υποστηρίζουν booleans. Επίσης, DAP δεν υποστηρίζει τις booleans, οπότε δεν θα υπήρχε ένας συνηθισμένος τρόπος να αναρωτηθούν οι boolean μεταβλητές.
- Προσδιορίζοντας "boolean" για τα δεδομένα Τύπος datasets.xml θα προκαλέσει δυαδικές τιμές να αποθηκευτούν και να αναπαρασταθούν ως bytes: 0=ψευδής, 1=αληθινός, 127= missing\_value .
- Οι χρήστες μπορούν να καθορίσουν περιορισμούς χρησιμοποιώντας τις αριθμητικές τιμές (Για παράδειγμα, "είναι Alive=1") .
- ERDDAP™ Οι διαχειριστές μερικές φορές χρειάζεται να χρησιμοποιούν τα "boolean" δεδομένα Τύπος datasets.xml για να πω ERDDAP™ Πώς να αλληλεπιδράσετε με την πηγή δεδομένων (π.χ., να διαβάσει τις δυαδικές τιμές από μια βάση δεδομένων και να τις μετατρέψει σε 0, 1, ή 127) .
- Αν θέλετε να αλλάξετε μια μεταβλητή δεδομένων από το dataType στα αρχεία πηγής (για παράδειγμα, σύντομη) σε ορισμένα άλλα δεδομένα Τύπος του συνόλου δεδομένων (Π.χ.) , μην χρησιμοποιείτε<dataType> για να καθορίσετε τι θέλετε. (Λειτουργεί για ορισμένους τύπους συνόλων δεδομένων, αλλά όχι για άλλους.) Αντ' αυτού:
- Χρήση<dataType> για να καθορίσετε τι υπάρχει στα αρχεία (για παράδειγμα, σύντομη) .
- Στο< addAttributes > για τη μεταβλητή, προσθέστε a scale\_factor χαρακτηριστικό γνώρισμα με τα νέα δεδομένα Τύπος (Π.χ.) και τιμή 1, για παράδειγμα,
<att name="scale\\_factor" type="int">1</att>
dataVariable <addAttributes>
- [< addAttributes >] (#μεταβλητή-προσθήκη) -- ορίζει ένα σύνολο ιδιοτήτων ( όνομα = τιμή ) τα οποία προστίθενται στα χαρακτηριστικά της πηγής για μια μεταβλητή, για να γίνουν τα συνδυασμένα χαρακτηριστικά για μια μεταβλητή. Αυτό είναι πιθανό. Εάν η μεταβλητή είναι Χαρακτηριστικά πηγής ή< addAttributes > περιλαμβάνουν scale\_factor ή/και add\_offset χαρακτηριστικά, οι τιμές τους θα χρησιμοποιηθούν για την αποσυσκευασία των δεδομένων από την πηγή πριν από τη διανομή στον πελάτη. Η μη αποσυσκευασμένη μεταβλητή θα είναι του ίδιου τύπου δεδομένων (για παράδειγμα, πλωτήρα) ως η scale\_factor και add\_offset τιμές.
Μεταβλητή<addAttributes>
-
[ ** Μεταβλητά Χαρακτηριστικά / Μεταβλητή< addAttributes > ** ] (#μεταβλητή-προσθήκη) --< addAttributes > είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα< axisVariable > ή< dataVariable > ετικέτα που χρησιμοποιείται για την αλλαγή των ιδιοτήτων της μεταβλητής.
- ** Χρήση μεταβλητών< addAttributes > να αλλάξει τα χαρακτηριστικά της μεταβλητής. ** ERDDAP™ συνδυάζει τα χαρακτηριστικά μιας μεταβλητής από την πηγή του συνόλου δεδομένων (** Χαρακτηριστικά πηγής ) και της μεταβλητής addAttributes το οποίο ορίζεις datasets.xml (που έχουν προτεραιότητα) για να κάνει της μεταβλητής - συνδυασμένα Χαρακτηριστικά ** " που είναι το τι ERDDAP™ οι χρήστες βλέπουν. Έτσι, μπορείτε να χρησιμοποιήσετε addAttributes για να επαναπροσδιορίσει τις τιμές της πηγήςAtributes, να προσθέσει νέα χαρακτηριστικά, ή να αφαιρέσει χαρακτηριστικά.
- Δείτε το [ ** < addAttributes > πληροφορίες] (#Προσθήκες) που ισχύει για το παγκόσμιο και μεταβλητό < addAttributes > ** .
- ERDDAP™ ψάχνει και χρησιμοποιεί πολλά από αυτά τα χαρακτηριστικά με διάφορους τρόπους. Για παράδειγμα, οι τιμές του colorBar απαιτούνται για να γίνει μια μεταβλητή διαθέσιμη μέσω WMS , έτσι ώστε οι χάρτες μπορούν να γίνουν με συνεπή χρώμαBars.
- Το γεωγραφικό μήκος, το γεωγραφικό πλάτος, το υψόμετρο (ή βάθος) , και χρονικές μεταβλητές αυτόματη λήψη πολλών κατάλληλων μεταδεδομένων (για παράδειγμα, μονάδες ) .
- Δείγμα< addAttributes > για μια μεταβλητή δεδομένων είναι:
<addAttributes>
<att name="actual\_range" type="doubleList">10.34 23.91</att>
<att name="colorBarMinimum" type="double">0</att>
<att name="colorBarMaximum" type="double">32</att>
<att name="ioos\_category">Temperature</att>
<att name="long\_name">Sea Surface Temperature</att>
<att name="numberOfObservations" />
<att name="units">degree\_C</att>
</addAttributes>
Ο κενός αριθμόςOfObservations χαρακτηριστικό προκαλεί τον πηγαίο αριθμόOfObservations χαρακτηριστικό (εάν υπάρχουν) να αφαιρεθεί από τον τελικό, συνδυασμένο κατάλογο χαρακτηριστικών.
- Η παροχή αυτών των πληροφοριών βοηθά ERDDAP™ κάνει μια καλύτερη δουλειά και βοηθά τους χρήστες να κατανοήσουν τα σύνολα δεδομένων. Τα καλά μεταδεδομένα κάνουν ένα σύνολο δεδομένων χρήσιμο. Ανεπαρκή μεταδεδομένα καθιστά ένα σύνολο δεδομένων άχρηστο. Παρακαλώ αφιερώστε χρόνο για να κάνετε καλή δουλειά με τα χαρακτηριστικά μεταδεδομένων.
Σχόλια σχετικά με μεταβλητές ιδιότητες που είναι ειδικές σε ERDDAP :
actual\_range
- ** actual\_range ** είναι ένα συνιστώμενο μεταβλητό χαρακτηριστικό. Για παράδειγμα,
<att name="actual\_range" type="floatList"\>0.17 23.58</att>
- Αυτό το χαρακτηριστικό είναι από το ΚΕΕΛΠΝΟ COARDS και CF 1.7+ πρότυπα μεταδεδομένων.
- Εάν υπάρχει, πρέπει να είναι μια σειρά δύο τιμών του ίδιου τύπου δεδομένων με τον τύπο των δεδομένων προορισμού της μεταβλητής, προσδιορίζοντας την πραγματική (όχι το θεωρητικό ή το επιτρεπόμενο) ελάχιστες και μέγιστες τιμές των δεδομένων για τη μεταβλητή αυτή.
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , actual\_range πρέπει να έχουν αποσυσκευασμένες τιμές και να είναι του ίδιου τύπου δεδομένων με τις αποσυσκευασμένες τιμές.
- Για ορισμένες πηγές δεδομένων (για παράδειγμα, όλο το EDDTableFrom... Συνθέσεις δεδομένων αρχείων) , ERDDAP™ καθορίζει το actual\_range της κάθε μεταβλητής και θέτει το actual\_range χαρακτηριστικό γνώρισμα. Με άλλες πηγές δεδομένων (Για παράδειγμα, οι σχετικές βάσεις δεδομένων, Κασσάνδρα, DAP ΑΝΑ, Hyrax ) , θα μπορούσε να είναι ενοχλητικό ή επιβαρυντικό για την πηγή να υπολογίσει το εύρος, έτσι ERDDAP™ Δεν το ζητάει. Σε αυτή την περίπτωση, είναι καλύτερο να μπορείτε να ορίσετε actual\_range (ειδικά για τις μεταβλητές γεωγραφικού μήκους, γεωγραφικού πλάτους, ύψους, βάθους και χρόνου) με την προσθήκη ενός actual\_range χαρακτηριστικό σε κάθε μεταβλητή [< addAttributes >] (#Προσθήκες) για αυτό το σύνολο δεδομένων datasets.xml , για παράδειγμα,
<att name="actual\_range" type="doubleList"\>-180 180</att>
- Για αριθμητικούς αριθμούς μεταβλητές χρόνου και χρονοσφραγίδας , οι προσδιοριζόμενες τιμές θα πρέπει να είναι η σχετική πηγή (μη προορισμός) αριθμητικές τιμές. Για παράδειγμα, αν οι τιμές του χρόνου πηγής αποθηκεύονται ως ημέρες από το 1985-01-01", τότε το actual\_range πρέπει να προσδιορίζονται σε ημέρες από το 1985-01-01".1 Και αν θέλετε να αναφέρετε το NOW ως τη δεύτερη τιμή για τα δεδομένα σχεδόν σε πραγματικό χρόνο που ενημερώνεται περιοδικά, θα πρέπει να χρησιμοποιήσετε το NaN . Για παράδειγμα, να καθορίσει ένα εύρος δεδομένων 1985-01-17 μέχρι NOW, χρήση
<att name="actual\_range" type="doubleList"\>16 NaN</att>
- Εάν actual\_range είναι γνωστή (είτε από ERDDAP™ υπολογισμός ή με την προσθήκη του μέσω< addAttributes >), ERDDAP™ θα το εμφανίσει στον χρήστη στη φόρμα πρόσβασης δεδομένων ( * datasetID * .html) και να κάνει ένα γράφημα ιστοσελίδες ( * datasetID * . γράφημα) για το σύνολο δεδομένων και να το χρησιμοποιήσετε κατά την παραγωγή των μεταδεδομένων FGDC και ISO 19115. Επίσης, οι τελευταίες 7 ημέρες του χρόνου actual\_range χρησιμοποιούνται ως προκαθορισμένο υποσύνολο χρόνου.
- Εάν actual\_range είναι γνωστό, οι χρήστες μπορούν να χρησιμοποιήσουν το λεπτά () και max () λειτουργίες σε αιτήματα, το οποίο είναι συχνά πολύ χρήσιμο.
- Για όλους τους πίνακες EDD... σύνολα δεδομένων, αν actual\_range είναι γνωστή (είτε με τον καθορισμό του είτε με ERDDAP™ υπολογισμός του) , ERDDAP™ θα είναι σε θέση να απορρίψει γρήγορα τυχόν αιτήσεις για δεδομένα εκτός αυτού του εύρους. Για παράδειγμα, εάν η χαμηλότερη χρονική τιμή του συνόλου δεδομένων αντιστοιχεί στο 1985-01-17, τότε μια αίτηση για όλα τα δεδομένα από το 1985-01-01 έως το 1985-01-16 θα απορριφθεί αμέσως με το μήνυμα σφάλματος "Το ερώτημά σας δεν προκάλεσε αποτελέσματα που ταιριάζουν." Αυτό κάνει actual\_range ένα πολύ σημαντικό κομμάτι μεταδεδομένων, καθώς μπορεί να σώσει ERDDAP™ πολλή προσπάθεια και να σώσει τον χρήστη πολύ χρόνο. Και αυτό τονίζει ότι η actual\_range οι τιμές δεν πρέπει να είναι μικρότερες από το πραγματικό εύρος των δεδομένων· διαφορετικά, ERDDAP™ μπορεί λανθασμένα να πει " Δεν υπάρχουν ταιριαστά δεδομένα" όταν στην πραγματικότητα υπάρχουν σχετικά δεδομένα.
- Όταν ένας χρήστης επιλέγει ένα υποσύνολο δεδομένων και ζητά έναν τύπο αρχείου που περιλαμβάνει μεταδεδομένα (για παράδειγμα, .nc ) , ERDDAP™ Τροπολογίες actual\_range στο αρχείο απόκρισης για να αντανακλά το εύρος του υποσύνολου.
- Βλέπε επίσης data\_min και data\_max , που είναι ένας εναλλακτικός τρόπος για να προσδιοριστεί η actual\_range . Ωστόσο, αυτά έχουν υποτιμηθεί τώρα που actual\_range ορίζεται από το CF 1.7+.
Χαρακτηριστικά γραμμής χρωμάτων
Υπάρχουν αρκετές μεταβλητές ιδιότητες που καθορίζουν τις προτεινόμενες προεπιλεγμένες ιδιότητες για μια γραμμή χρωμάτων (χρησιμοποιείται για τη μετατροπή των τιμών δεδομένων σε χρώματα στις εικόνες) για αυτή τη μεταβλητή.
-
Εάν υπάρχουν, οι πληροφορίες αυτές χρησιμοποιούνται ως προεπιλεγμένες πληροφορίες από griddap και tabledap κάθε φορά που ζητάτε μια εικόνα που χρησιμοποιεί μια γραμμή χρωμάτων.
-
Για παράδειγμα, όταν το πλάτος-μεγέθους grided δεδομένα σχεδιάζεται ως κάλυψη σε ένα χάρτη, η γραμμή χρώματος καθορίζει πώς οι τιμές δεδομένων μετατρέπονται σε χρώματα.
-
Η λήψη αυτών των τιμών επιτρέπει ERDDAP™ για να δημιουργήσετε εικόνες που χρησιμοποιούν μια συνεπή γραμμή χρωμάτων σε διαφορετικές αιτήσεις, ακόμη και όταν ο χρόνος ή άλλες τιμές διάστασης ποικίλλουν.
-
Αυτά τα ονόματα ιδιοτήτων δημιουργήθηκαν για χρήση σε ERDDAP . Δεν είναι από ένα πρότυπο μεταδεδομένων.
-
Τα χαρακτηριστικά που σχετίζονται με τη γραμμή χρωμάτων είναι:
- ** colorBarMinimum ** καθορίζει την ελάχιστη τιμή στη μπάρα χρώματος. Για παράδειγμα,
<att name="colorBarMinimum" type="double"\>-5</att>
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , να καθορίσει το colorBarMinimum ως αποσυσκευασμένη αξία.
- Τιμές δεδομένων χαμηλότερες από colorBarMinimum αντιπροσωπεύονται από το ίδιο χρώμα με colorBarMinimum τιμές.
- Το χαρακτηριστικό θα πρέπει να είναι τύπος="διπλό" , ανεξάρτητα από τον τύπο της μεταβλητής δεδομένων.
- Η τιμή είναι συνήθως ένας ωραίος στρογγυλός αριθμός.
- Βέλτιστες πρακτικές: Συνιστούμε μια τιμή ελαφρώς υψηλότερη από την ελάχιστη τιμή δεδομένων.
- Δεν υπάρχει προκαθορισμένη τιμή.
-
** colorBarMaximum ** καθορίζει τη μέγιστη τιμή στη μπάρα χρώματος. Για παράδειγμα,
<att name="colorBarMaximum" type="double"\>5</att>
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , να καθορίσει το colorBarMinimum ως αποσυσκευασμένη αξία.
- Τιμές δεδομένων υψηλότερες από colorBarMaximum αντιπροσωπεύονται από το ίδιο χρώμα με colorBarMaximum τιμές.
- Το χαρακτηριστικό θα πρέπει να είναι τύπος="διπλό" , ανεξάρτητα από τον τύπο της μεταβλητής δεδομένων.
- Η τιμή είναι συνήθως ένας ωραίος στρογγυλός αριθμός.
- Βέλτιστες πρακτικές: Συνιστούμε μια τιμή ελαφρώς χαμηλότερη από τη μέγιστη τιμή δεδομένων.
- Δεν υπάρχει προκαθορισμένη τιμή.
- χρώμα Μπαρπαλέτα καθορίζει την παλέτα για τη μπάρα χρώματος. Για παράδειγμα,
<att name="colorBarPalette">WhiteRedBlack</att>
- Όλα ERDDAP™ εγκαταστάσεις υποστηρίζουν αυτές τις τυποποιημένες παλέτες: BlackBlueWhite, BlackRedWhite, BlackWhite, BlueWhiteRed, LightRainbow, Ocean, OceanDepth, Rainbow, RedWhiteBlue, ReverseRainbow, Τοπογραφία, ΤοπογραφίαDepth \[ προστίθεται στο v1.74 \] Λευκό Μαύρο, Λευκό Μπλε Μαύρο και Λευκό Κόκκινο Μαύρο.
- Εάν έχετε εγκαταστήσει πρόσθετες παλέτες , μπορείτε να αναφερθείτε σε ένα από αυτά.
- Εάν αυτή η ιδιότητα δεν είναι παρούσα, η προεπιλογή είναι BlueWhiteRed αν \-1\* colorBarMinimum = colorBarMaximum ; διαφορετικά η προεπιλογή είναι Rainbow.
- μπάρα χρώματοςScale καθορίζει την κλίμακα για τη μπάρα χρώματος. Για παράδειγμα,
<att name="colorBarScale">Log</att>
- Οι έγκυρες τιμές είναι Linear και Log.
- Αν η τιμή είναι Log, colorBarMinimum Πρέπει να είναι μεγαλύτερο από 0.
- Αν αυτή η ιδιότητα δεν είναι παρούσα, η προεπιλογή είναι Γραμμική.
- χρώμα ΜπαρΣυνεχές καθορίζει αν το colorBar έχει μια συνεχή παλέτα χρωμάτων, ή αν το colorBar έχει μερικά διακριτά χρώματα. Για παράδειγμα,
<att name="colorBarContinuous">false</att>
- Οι έγκυρες τιμές είναι αληθείς και ψευδείς.
- Αν αυτό το χαρακτηριστικό δεν είναι παρόν, η προεπιλογή είναι αλήθεια.
- μπάρα χρώματοςNενότητες καθορίζει τον προκαθορισμένο αριθμό τμημάτων στη μπάρα χρώματος. Για παράδειγμα,
<att name="colorBarNSections" type="int">6</att>
- Οι έγκυρες τιμές είναι θετικοί ακέραιοι.
- Αν αυτή η ιδιότητα δεν είναι παρούσα, η προεπιλογή είναι \-1, η οποία λέει ERDDAP™ για να επιλέξετε τον αριθμό των τμημάτων με βάση το εύρος της μπάρας χρώματος.
WMS
Οι κύριες απαιτήσεις για την πρόσβαση μιας μεταβλητής μέσω ERDDAP Σ WMS εξυπηρετητής είναι:
- Το σύνολο δεδομένων πρέπει να είναι EDDGrid ...το σύνολο δεδομένων.
- Η μεταβλητή δεδομένων ΠΡΕΠΕΙ να είναι μια μεταβλητή με πλέγμα.
- Η μεταβλητή δεδομένων ΠΡΕΠΕΙ να έχει μεταβλητές γεωγραφικού μήκους και γεωγραφικού πλάτους. (Άλλες μεταβλητές άξονα είναι οι εποπτικές.)
- Πρέπει να υπάρχουν κάποιες τιμές γεωγραφικού μήκους μεταξύ -180 και 180.
- Η colorBarMinimum και colorBarMaximum Τα χαρακτηριστικά πρέπει να προσδιορίζονται. (Άλλα χαρακτηριστικά της ράβδου χρώματος είναι ΠΡΟΑΙΡΕΤΙΚΑ.)
data\_min και data\_max
- ** data\_min ** και ** data\_max ** -- Αυτά είναι αποσβεσμένα μεταβλητά χαρακτηριστικά που ορίζονται στο Πείραμα Παγκόσμιας Κυκλοφορίας του Ωκεανού (ΓΟΚ) περιγραφή μεταδεδομένων. Για παράδειγμα,
<att name="data\_min" type="float"\>0.17</att>
<att name="data\_max" type="float"\>23.58</att>
- Σας συνιστούμε να χρησιμοποιήσετε actual\_range , αντί data\_min και data\_max , επειδή actual\_range ορίζεται πλέον από τις προδιαγραφές του ΚΙ.
- Εάν υπάρχουν, πρέπει να είναι του ίδιου τύπου δεδομένων με τον τύπο των δεδομένων προορισμού της μεταβλητής και να προσδιορίζουν την πραγματική (όχι το θεωρητικό ή το επιτρεπόμενο) ελάχιστες και μέγιστες τιμές των δεδομένων για τη μεταβλητή αυτή.
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , data\_min και data\_max πρέπει να αποσυσκευάζονται οι τιμές χρησιμοποιώντας τον τύπο των δεδομένων που έχουν αποσυσκευασθεί.
μεταβλητή drawLandMask
- ** drawLandMask ** -- Αυτό είναι ένα εποπτικό μεταβλητό χαρακτηριστικό που χρησιμοποιείται από ERDDAP™ (και χωρίς πρότυπα μεταδεδομένων) η οποία καθορίζει την προκαθορισμένη τιμή για την επιλογή "Draw Land Mask" στη φόρμα Make A Graph του συνόλου δεδομένων ( * datasetID * . γράφημα) και για την παράμετρο &.land σε ένα URL ζητώντας ένα χάρτη των δεδομένων. Για παράδειγμα,
<att name="drawLandMask">under</att>
Δείτε το drawLandMask επισκόπηση .
Κωδικοποίηση
- \_ Κωδικοποίηση
- Αυτό το χαρακτηριστικό γνώρισμα μπορεί να χρησιμοποιηθεί μόνο με τις μεταβλητές συμβολοσειρών .
- Το χαρακτηριστικό αυτό συνιστάται έντονα.
- Αυτό το χαρακτηριστικό είναι από το NetCDF Οδηγός χρήστη (NUG) .
- Εσωτερικά ERDDAP™ , συμβολοσειρές είναι μια ακολουθία των χαρακτήρων 2-byte που χρησιμοποιούν το Σύνολο χαρακτήρων Unicode UCS-2 .
- Πολλοί τύποι αρχείων υποστηρίζουν μόνο 1-byte χαρακτήρες σε συμβολοσειρές και έτσι χρειάζεται αυτό το χαρακτηριστικό για την αναγνώριση ενός συνδεδεμένου σύνολο χαρακτήρων (AKA σελίδα κώδικα) που ορίζει τον τρόπο χαρτογράφησης των 256 πιθανών τιμών σε ένα σύνολο 256 χαρακτήρων που αντλήθηκαν από το σύνολο χαρακτήρων UCS-2 ή/και το σύστημα κωδικοποίησης, π.χ. UTF-8 (που απαιτεί από 1 έως 4 ψηφιολέξεις ανά χαρακτήρα) .
- Οι τιμές για \_Η κωδικοποίηση είναι αναίσθητες.
- Θεωρητικά, ERDDAP™ θα μπορούσε να υποστηρίξει \_ Κωδικοποίηση αναγνωριστικών από αυτή τη λίστα IANA , αλλά στην πράξη, ERDDAP™ προς το παρόν μόνο υποστηρίζει
- ISO-8859-1 (Σημειώστε ότι έχει παύλες, όχι υποδείκτες) , το οποίο έχει το πλεονέκτημα ότι είναι πανομοιότυπο με τους πρώτους 256 χαρακτήρες του Unicode, και
- UTF-8.
- Κατά την ανάγνωση των πηγαίων αρχείων, η προκαθορισμένη τιμή είναι ISO-8859-1, εκτός από τα αρχεία netcdf-4, όπου η προκαθορισμένη είναι UTF-8.
- Αυτό είναι ένα συνεχιζόμενο πρόβλημα, επειδή πολλά αρχεία πηγαίου κώδικα χρησιμοποιούν charsets ή κωδικοποιήσεις που είναι διαφορετικές από το ISO-8859-1, αλλά δεν προσδιορίζουν το charset ή την κωδικοποίηση. Για παράδειγμα, πολλά αρχεία δεδομένων πηγαίου κώδικα έχουν κάποια μεταδεδομένα που αντιγράφονται και επικολλώνται από το Microsoft Word στα Windows και έτσι έχουν φανταχτερά hyphens και αποτροπές από ένα συγκεκριμένο charset Windows αντί για ASCII hyphens και αποστροφές. Αυτοί οι χαρακτήρες εμφανίζονται ως παράξενοι χαρακτήρες ή '?' in ERDDAP .
Βάση πρόσβασης αρχείουUrl
- ** Βάση πρόσβασης αρχείουUrl και αρχείο AccessSuffix** είναι πολύ σπάνια χρησιμοποιούνται χαρακτηριστικά που δεν είναι από οποιοδήποτε πρότυπο. Αν μια στήλη EDDTable έχει ονόματα αρχείων προσβάσιμων στο διαδίκτυο αρχείων (π.χ. αρχεία εικόνας, βίντεο ή ήχου) , μπορείτε να προσθέσετε
<att name="fileAccessBaseUrl">*someBaseURL*</a>
για τον καθορισμό του URL βάσης (τέλος με /) έπρεπε να κάνουν τα ονόματα αρχείων σε πλήρη URL. Σε ασυνήθιστες περιπτώσεις, όπως όταν μια στήλη έχει αναφορές σε .png αρχεία, αλλά οι τιμές δεν ".png", μπορείτε να προσθέσετε
<att name="fileAccessSuffix">*someSuffix*</a>
(για παράδειγμα,<att name="fileAccessSuffix">.png</α>) για τον καθορισμό ενός επιθήματος που θα προστεθεί για να γίνουν τα ονόματα αρχείων σε πλήρη URL. Τότε για .htmlTable απαντήσεις, ERDDAP™ θα εμφανίζει το όνομα αρχείου ως σύνδεσμο στο πλήρες URL (η βάση Url συν το όνομα αρχείου συν το επίθημα) .
Αν θέλεις ERDDAP™ για την εξυπηρέτηση των σχετικών αρχείων, κάντε ένα ξεχωριστό Πίνακας EDD από αρχείοNames σύνολο δεδομένων για αυτά τα αρχεία (μπορεί να είναι ένα ιδιωτικό σύνολο δεδομένων) .
Αρχείο AccessArchive Ουρλ
- Αρχείο AccessArchive Ουρλ είναι ένα πολύ σπάνια χρησιμοποιούμενο χαρακτηριστικό που δεν είναι από οποιοδήποτε πρότυπο. Αν μια στήλη EDDTable έχει ονόματα αρχείων προσβάσιμων στο διαδίκτυο αρχείων (π.χ. αρχεία εικόνας, βίντεο ή ήχου) τα οποία είναι προσβάσιμα μέσω αρχείου (π.χ., .zip αρχείο) πρόσβαση μέσω URL, χρήση<att name="fileAccessArchiveUrl"> ΘΕΟΥLΛ </att> για να καθορίσετε το URL για την αρχειοθήκη.
Αν θέλεις ERDDAP™ για την εξυπηρέτηση του αρχείου αρχειοθήκης, κάντε ένα ξεχωριστό Πίνακας EDD από αρχείοNames σύνολο δεδομένων για το αρχείο (μπορεί να είναι ένα ιδιωτικό σύνολο δεδομένων) .
ioos\_category
-
** ioos\_category ** -- Αυτό είναι ένα ΑΠΑΙΤΟΥΜΕΝΟ μεταβλητό χαρακτηριστικό εάν<μεταβλητέςMustHaveIoosCategory> έχει οριστεί για την αλήθεια (το προκαθορισμένο) μέσα setup.xml - κατά τα άλλα, είναι εποπτικό. Για παράδειγμα,<att name=" ioos\_category ">Ισότητα</att> Οι κατηγορίες είναι από NOAA Ολοκληρωμένο σύστημα παρατήρησης του ωκεανού (ΙΩΔ) .
-
(Από τη συγγραφή αυτού) Δεν γνωρίζουμε επίσημους ορισμούς αυτών των ονομάτων.
-
Τα βασικά ονόματα είναι από το .ppt του Zdenka Willis " Ολοκληρωμένο Σύστημα Παρατήρησης Ωκεανού (ΙΩΔ) NOAA Προσέγγιση για την οικοδόμηση μιας αρχικής επιχειρησιακής ικανότητας - και από την ΜΑΣ ΙΟΙ (Σελίδα 1-5) .
-
Είναι πιθανό ότι ο κατάλογος αυτός θα αναθεωρηθεί στο μέλλον. Αν έχετε αιτήματα, παρακαλούμε στείλτε email στον Κρις. Τζον στο Νόαγκοβ.
-
ERDDAP™ υποστηρίζει μια μεγαλύτερη λίστα κατηγοριών από ό, τι IOOS κάνει επειδή Bob Simons πρόσθεσε επιπλέον ονόματα (κυρίως με βάση τα ονόματα επιστημονικών πεδίων, για παράδειγμα, Βιολογία, Οικολογία, Μετεωρολογία, Στατιστική, Ταξινομία) για άλλους τύπους δεδομένων.
-
Οι τρέχουσες έγκυρες τιμές σε ERDDAP™ είναι Bathymetry, Biology, Bottom Character, CO2, Colored Dissolved Organic Matter, Contaminants, Currents, Dissolved Nutrients, Dissolved O2, Ecology, Fish Abundance, Fish Species, Heat Flux, Hydrology, Ice Distribution, Identifier, Location, Meteorology, Ocean Color, Optical Properties, Other, Pathogens, Phytoplankton Species, Pressure, Productivity, Quality, Salinity, Sea Level, Statistics, Stream Flow, Surface Waves, Taxonomy, Tempera, Time, Total Suspended Matter, Unknown, Wind, Zoplankton Species, and Zoplankton Abundance.
-
Υπάρχει κάποια αλληλεπικάλυψη και ασάφεια μεταξύ διαφορετικών όρων -- κάντε το καλύτερο που μπορείτε.
-
Αν προσθέσετε ioos\_category στον κατάλογο των< categoryAttributes > μέσα ERDDAP Σ setup.xml αρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων με παρόμοια δεδομένα μέσω ERDDAP S " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα. Δοκιμάστε να χρησιμοποιήσετε ioos\_category αναζήτηση συνόλων δεδομένων ενδιαφέροντος.
-
Υπήρχε. συζήτηση σχετικά με ERDDAP™ και ioos\_category στο ERDDAP™ Ομάδα Google.
Μπορεί να μπείτε στον πειρασμό να ορίσετε<μεταβλητέςMustHaveIoosCategory> σε ψευδή έτσι ώστε αυτή η ιδιότητα δεν απαιτείται. ("Πφφτ! Τι με νοιάζει εμένα;) Μερικοί λόγοι για να το αφήσει να ισχύει (το προκαθορισμένο) και χρήση ioos\_category είναι:
- Εάν setup.xml του<μεταβλητέςMustHaveIoosCategory> είναι αλήθεια, Δημιουργία συνόλων δεδομένωνXml πάντα δημιουργεί / προτείνει ένα ioos\_category χαρακτηριστικό για κάθε μεταβλητή σε κάθε νέο σύνολο δεδομένων. Τότε γιατί δεν το αφήνεις μέσα;
- ERDDAP™ επιτρέπει στους χρήστες να αναζητούν σύνολα δεδομένων ενδιαφέροντος ανά κατηγορία. ioos\category είναι μια πολύ χρήσιμη κατηγορία αναζήτησης γιατί οι κατηγορίες ioos\ (για παράδειγμα, θερμοκρασία) είναι αρκετά ευρεία. Αυτό κάνει ioos\_category πολύ καλύτερα για το σκοπό αυτό από ό, τι, για παράδειγμα, η πολύ λεπτότερη grained CF standard\_name α (τα οποία δεν είναι τόσο καλά για το σκοπό αυτό, λόγω όλων των συνώνυμων και ελαφρών παραλλαγών, για παράδειγμα, θάλασσα\_επιφάνεια\_θερμοκρασία έναντι θάλασσα\_νερό\_θερμοκρασία) . (Χρήση ioos\_category για το σκοπό αυτό ελέγχεται από< categoryAttributes > στο αρχείο setup.xml.) Δοκιμάστε να χρησιμοποιήσετε ioos\_category αναζήτηση συνόλων δεδομένων ενδιαφέροντος.
- Αυτές οι κατηγορίες είναι από NOAA Ολοκληρωμένο σύστημα παρατήρησης του ωκεανού (ΙΩΔ) . Αυτές οι κατηγορίες είναι θεμελιώδεις για την περιγραφή της αποστολής της IOOS. Εάν είστε μέσα NOAA , υποστήριξη ioos\_category είναι ένα καλό Ένα... NOAA Αυτό να κάνω. (Κοίτα αυτό. Ένα NOAA βίντεο Και να εμπνέεσαι!) Αν είστε σε κάποια άλλη αμερικανική ή διεθνή υπηρεσία, ή να συνεργαστείτε με κυβερνητικές υπηρεσίες, ή να συνεργαστείτε με κάποιο άλλο Ocean Observing System, δεν είναι καλή ιδέα να συνεργαστείτε με το γραφείο των ΗΠΑ;
- Αργά ή γρήγορα, μπορεί να θέλεις κι άλλο. ERDDAP™ για σύνδεση με τα σύνολα δεδομένων σας μέσω EDDGrid Από τοErddap και EDD TableFromErddap . Εάν το άλλο ERDDAP™ απαιτεί ioos\_category , τα σύνολα δεδομένων σας πρέπει να έχουν ioos\_category προκειμένου για EDDGrid Από το Erddap και το EDDTableFromErddap στη δουλειά.
- Είναι ψυχολογικά πολύ πιο εύκολο να συμπεριληφθεί ioos\_category όταν δημιουργείτε το σύνολο δεδομένων (Είναι απλά ένα άλλο πράγμα που ERDDAP™ απαιτεί την προσθήκη του συνόλου δεδομένων ERDDAP ) , από το να το προσθέσετε μετά το γεγονός (αν αποφασίσετε να το χρησιμοποιήσετε στο μέλλον) .
long\_name
- ** long\_name ** ( COARDS , ΚΦ και ACDD πρότυπα μεταδεδομένων) είναι ένα ΣΥΣΤΑΤΙΚΟ μεταβλητό χαρακτηριστικό στο ERDDAP . Για παράδειγμα,
<att name="long\\_name">Eastward Sea Water Velocity</att>
- ERDDAP™ χρησιμοποιεί το long\_name για την επισήμανση αξόνων σε γραφήματα.
- Βέλτιστες πρακτικές: Κεφαλαιοποίηση των λέξεων στο long\_name σαν να ήταν τίτλος (κεφαλαιοποίησε την πρώτη λέξη και όλες τις μη-σωματικές λέξεις) . Μην συμπεριλάβετε τις μονάδες στο long\_name . Το μακρύ όνομα δεν θα πρέπει να είναι πολύ μεγάλο (συνήθως<20 χαρακτήρες), αλλά θα πρέπει να είναι πιο περιγραφικό από το destinationName , η οποία είναι συχνά πολύ συνοπτική.
- Εάν " long\_name " δεν ορίζεται στη μεταβλητή Χαρακτηριστικά πηγής ή< addAttributes >, ERDDAP™ θα δημιουργήσει με τον καθαρισμό του standard\_name (εάν υπάρχει) ή το destinationName .
missing\_value
- ** missing\_value ** και \_Γέμισε Τιμή ( COARDS και ΚΦ ) είναι μεταβλητά χαρακτηριστικά που περιγράφουν έναν αριθμό (για παράδειγμα, -9999) το οποίο χρησιμοποιείται για να αναπαριστά μια ελλείπουσα τιμή. Για παράδειγμα,
<att name="missing\_value" type="double"\>-9999</att>
Για τις μεταβλητές συμβολοσειράς, η προεπιλογή και για τις δύο είναι """ (η άδεια συμβολοσειρά) . Για αριθμητικές μεταβλητές, η προεπιλογή και για τις δύο είναι NaN.
- ERDDAP™ υποστηρίζει και τα δύο missing\_value και \_FillValue, δεδομένου ότι ορισμένες πηγές δεδομένων αποδίδουν ελαφρώς διαφορετικές σημασίες σε αυτές.
- Εάν υπάρχουν, θα πρέπει να είναι του ίδιου τύπου δεδομένων με τη μεταβλητή.
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , η missing\_value Οι τιμές FillValue θα πρέπει επίσης να συσκευάζονται. Ομοίως, για μια στήλη με τιμές συμβολοσειράς / ώρας που χρησιμοποιούν μια τοπική time\_zone , η missing\_value και οι τιμές FillValue θα πρέπει να χρησιμοποιούν την τοπική ζώνη ώρας.
- Εάν μια μεταβλητή χρησιμοποιεί αυτές τις ειδικές τιμές, η missing\_value και/ή \_Τα χαρακτηριστικά FillValue είναι ΑΠΑΙΤΕΙΤΑΙ.
- Για μεταβλητές χρόνου και χρονοσφραγίδας (αν η πηγή είναι συμβολοσειρές ή αριθμητικός) , missing\_value s και \_FillValues εμφανίζονται ως "" (η άδεια συμβολοσειρά) όταν ο χρόνος γράφεται ως String και ως NaN όταν ο χρόνος γράφεται ως διπλός. Οι τιμές πηγής για missing\_value και \_FillValue δεν θα εμφανιστεί στα μεταδεδομένα της μεταβλητής.
- Για μεταβλητές συμβολοσειρών, ERDDAP™ πάντα μετατρέπει οποιαδήποτε missing\_value τιμές δεδομένων s ή \_FillValue σε "" (η άδεια συμβολοσειρά) . Οι τιμές πηγής για missing\_value και \_FillValue δεν θα εμφανιστεί στα μεταδεδομένα της μεταβλητής.
- Για αριθμητικές μεταβλητές: Η missing\_value και \_FillValue θα εμφανιστεί στα μεταδεδομένα της μεταβλητής. Για ορισμένες μορφές δεδομένων εξόδου, ERDDAP™ θα αφήσει αυτούς τους ειδικούς αριθμούς ανέπαφους, π.χ., θα δείτε -9999. Για άλλες μορφές δεδομένων εξόδου (. csv και .htmlTable ) , ERDDAP™ θα αντικαταστήσει αυτούς τους ειδικούς αριθμούς με NaN ή "".
- Ορισμένοι τύποι δεδομένων έχουν εγγενείς ελλείποντες δείκτες τιμών που δεν χρειάζεται να ταυτίζονται ρητά με missing\_value ή \_FillValue χαρακτηριστικά: πλωτήρες και διπλές μεταβλητές έχουν NaN (Όχι ένας αριθμός) , οι τιμές συμβολοσειρών χρησιμοποιούν την κενή συμβολοσειρά, και οι τιμές χαρακτήρων έχουν χαρακτήρα \uffff (#65535, που είναι η αξία του Unicode για το Not a Character) . Οι ακέραιοι τύποι δεδομένων δεν έχουν εγγενείς δείκτες τιμών που λείπουν.
- Εάν μια ακέραια μεταβλητή έχει μια ελλείπουσα τιμή (για παράδειγμα, μια κενή θέση σε ένα αρχείο .csv) , ERDDAP™ θα ερμηνεύσει την τιμή ως την καθορισμένη missing\_value ή \_FillValue για τη μεταβλητή αυτή. Εάν δεν ορίζεται, ERDDAP™ θα ερμηνεύσει την τιμή ως την προκαθορισμένη ελλείπουσα τιμή για αυτόν τον τύπο δεδομένων, η οποία είναι πάντα η μέγιστη τιμή που μπορεί να κρατηθεί από αυτόν τον τύπο δεδομένων: 127 για τις μεταβλητές byte, 32767 για τις σύντομες, 2147483647 για την int, 9223372036854775807 για πολύ, 255 για το ubyte, 65535 για το ushort, 4294967295 για το uint και 18446744073709551615 για το ulong.
ADD \_FillValue ATTRIBUTES ♪ ♪
- ADD \_FillValue ATTRIBUTES ♪ ♪
Κάθε φορά ERDDAP™ φορτώνει ένα σύνολο δεδομένων, ελέγχει αν οι μεταβλητές με ακέραιους τύπους δεδομένων πηγής έχουν καθορισμένο missing\_value ή \_FillValue χαρακτηριστικό. Αν μια μεταβλητή όχι, τότε ERDDAP™ εκτυπώνει ένα μήνυμα στο αρχείο καταγραφής (ξεκινώντας με "Add \_FillValue Χαρακτηριστικά?") συνιστά ότι η ERDDAP™ Διαχειριστής add a \_Fill Χαρακτηριστικά τιμής για αυτή τη μεταβλητή datasets.xml . Είναι πολύ χρήσιμο για κάθε μεταβλητή να έχει a \_FillValue ή missing\_value επειδή οι τιμές που λείπουν είναι πάντα δυνατές, π.χ. εάν ένα δεδομένο αρχείο σε ένα σύνολο δεδομένων δεν έχει δεδομένη μεταβλητή, ERDDAP™ πρέπει να είναι σε θέση να παρουσιάσει ότι η μεταβλητή έχει όλες τις τιμές που λείπουν για τη μεταβλητή αυτή. Αν αποφασίσετε μια μεταβλητή δεν θα πρέπει να έχει ένα χαρακτηριστικό \_FillValue, μπορείτε να προσθέσετε <att names="\_FillValue">null</att> αντ 'αυτού, η οποία θα καταστείλει το μήνυμα για αυτό datasetID +μεταβλητός συνδυασμός στο μέλλον.
Κάθε φορά ERDDAP™ ξεκινά, συλλέγει όλες αυτές τις συστάσεις σε ένα μήνυμα που είναι γραμμένο στο αρχείο καταγραφής (ξεκινώντας με " ADD \_FillValue ATTRIBUTES ?") , e-mail στο ERDDAP™ διαχειριστή, και γραμμένη σε ένα αρχείο δεδομένων CSV στο \[ bigParentΚατάλογος \] /logs/ κατάλογος. Αν το επιθυμείτε, μπορείτε να χρησιμοποιήσετε το πρόγραμμα GenerateDatasetsXml (και την επιλογή AddFillValueAttributes) να εφαρμόσει όλες τις προτάσεις στο αρχείο CSV στο datasets.xml Αρχείο. Για οποιοδήποτε από τα datasetID /μεταβλητοί συνδυασμοί σε αυτό το αρχείο, αν αποφασίσετε ότι δεν υπάρχει ανάγκη να προσθέσετε το αποδιδόμενο, μπορείτε να αλλάξετε το χαρακτηριστικό στο<att names="\_FillValue">null</att> να καταστείλει τη σύσταση για αυτό datasetID +μεταβλητός συνδυασμός στο μέλλον.
Είναι σημαντικό! Όπως είπε συχνά ο Μπομπ: θα ήταν κακό (και ντροπιαστικό) εάν ορισμένα από τα στοιχεία της υπερθέρμανσης του πλανήτη προκλήθηκαν από μη αναγνωρισμένες ελλείπουσες τιμές στα δεδομένα (π.χ., τιμές θερμοκρασίας 99 ή 127 βαθμών\_ C που θα έπρεπε να έχει επισημανθεί ως ελλείπουσες τιμές και έτσι να έχει αυξηθεί η μέση ή/και διάμεση στατιστική) .
- Η \_FillValue και missing\_value οι τιμές για μια δεδομένη μεταβλητή σε διαφορετικά αρχεία πηγής πρέπει να είναι συνεπείς· διαφορετικά, ERDDAP™ θα δεχθεί αρχεία με ένα σύνολο τιμών και να απορρίψει όλα τα άλλα αρχεία ως "Κακό αρχεία". Για να λύσω το πρόβλημα,
- Αν τα αρχεία είναι σε πλέγμα .nc αρχεία, μπορείτε να χρησιμοποιήσετε EDDGrid Από αρχείαNcUnpacked .
- Εάν τα αρχεία είναι αρχεία δεδομένων πίνακα, μπορείτε να χρησιμοποιήσετε EDDTableFrom...Αρχεία " Τυποποίηση Τι; για να πω ERDDAP για την τυποποίηση των πηγαίων αρχείων καθώς διαβάζονται ERDDAP .
- Για δυσκολότερα προβλήματα, μπορείτε να χρησιμοποιήσετε NcML ή NCO για να λύσει το πρόβλημα.
scale\_factor
- ** scale\_factor ** (προεπιλογή = 1) και ** add\_offset ** (προεπιλογή = 0) ( COARDS και ΚΦ ) είναι αισιόδοξα μεταβλητά χαρακτηριστικά που περιγράφουν δεδομένα τα οποία είναι συσκευασμένα σε απλούστερο τύπο δεδομένων μέσω απλού μετασχηματισμού.
- Εάν υπάρχουν, ο τύπος δεδομένων τους είναι διαφορετικός από τον τύπο δεδομένων πηγής και περιγράφει τον τύπο δεδομένων των τιμών προορισμού. Για παράδειγμα, μια πηγή δεδομένων θα μπορούσε να έχει αποθηκεύσει τιμές δεδομένων επίπλευσης με ένα δεκαδικό ψηφίο συσκευασμένο ως βραχυκυκλώματα (int16) , χρήση scale\_factor = 0.1 και add\_offset = 0. Για παράδειγμα,
<att name="scale\_factor" type="float"\>0.1</att>
<att name="add\_offset" type="float"\>0</att>
Σε αυτό το παράδειγμα, ERDDAP™ θα αποσυσκευάσει τα δεδομένα και θα τα παρουσιάσει στο χρήστη ως τιμές δεδομένων πλωτήρα.
- Εάν υπάρχει, ERDDAP™ θα εξαγάγουν τις τιμές από αυτές τις ιδιότητες, θα αφαιρέσουν τις ιδιότητες, και αυτόματα αποσυσκευάζουν τα δεδομένα για το χρήστη:
προορισμός Τιμή = πηγή Τιμή \* scale\_factor + add\_offset
Ή, δήλωσε έναν άλλο τρόπο: ανεπεξέργαστη τιμή = συσκευασμένη Τιμή \* scale\_factor + add\_offset - Η scale\_factor και add\_offset οι τιμές για μια δεδομένη μεταβλητή σε διαφορετικά αρχεία πηγής πρέπει να είναι συνεπείς· διαφορετικά, ERDDAP™ θα δεχθεί αρχεία με ένα σύνολο τιμών και να απορρίψει όλα τα άλλα αρχεία ως "Κακό αρχεία". Για να λύσω το πρόβλημα,
- Αν τα αρχεία είναι σε πλέγμα .nc αρχεία, μπορείτε να χρησιμοποιήσετε EDDGrid Από αρχείαNcUnpacked .
- Εάν τα αρχεία είναι αρχεία δεδομένων πίνακα, μπορείτε να χρησιμοποιήσετε EDDTableFrom...Αρχεία " Τυποποίηση Τι; για να πω ERDDAP για την τυποποίηση των πηγαίων αρχείων καθώς διαβάζονται ERDDAP .
- Για δυσκολότερα προβλήματα, μπορείτε να χρησιμοποιήσετε NcML ή NCO για να λύσει το πρόβλημα.
standard\_name
- ** standard\_name ** (από την ΚΦ πρότυπο μεταδεδομένων) είναι ένα ΣΥΣΤΑΤΙΚΟ μεταβλητό χαρακτηριστικό στο ERDDAP . Το CF διατηρεί τον κατάλογο των επιτρεπόμενων Τυπικές ονομασίες CF . Για παράδειγμα,
<att name="standard\\_name">eastward\\_sea\\_water\\_velocity</att>
- Αν προσθέσετε standard\_name στα χαρακτηριστικά των μεταβλητών και προσθήκη standard\_name στον κατάλογο των< categoryAttributes > μέσα ERDDAP Σ setup.xml αρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων με παρόμοια δεδομένα μέσω ERDDAP S " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα.
- Εάν ορίσετε ΚΙ standard\_name για μια μεταβλητή, το χαρακτηριστικό των μονάδων για τη μεταβλητή δεν χρειάζεται να είναι πανομοιότυπο με τις κανονικές μονάδες που καθορίζονται για την τυποποιημένη ονομασία στον πίνακα τυποποιημένων ονομάτων CF, αλλά οι μονάδες πρέπει να είναι μετατρέψιμες στις κανονικές μονάδες. Για παράδειγμα, όλα τα σχετιζόμενα με τη θερμοκρασία CF standard\_name s έχουν " K" (Κέλβιν) ως Κανονικές Μονάδες. Έτσι, μια μεταβλητή με σχετική θερμοκρασία standard\_name Πρέπει να έχουν μονάδες του K, βαθμός\_C, βαθμός\_F, ή κάποια UDUnits παραλλαγή αυτών των ονομάτων, δεδομένου ότι είναι όλα διαμετατρέψιμα.
- Βέλτιστες πρακτικές: Μέρος της δύναμης της ελεγχόμενα λεξιλόγια προέρχεται από τη χρήση μόνο των όρων στη λίστα. Συνιστούμε λοιπόν να εμμείνουμε στους όρους που ορίζονται στο ελεγχόμενο λεξιλόγιο, και συνιστούμε να μην επινοήσουμε έναν όρο αν δεν υπάρχει κατάλληλος στη λίστα. Εάν χρειάζεστε πρόσθετους όρους, δείτε αν η επιτροπή προτύπων θα τους προσθέσει στο ελεγχόμενο λεξιλόγιο.
- standard\_name οι τιμές είναι οι μόνες τιμές χαρακτηριστικού CF που είναι ευαίσθητες στην περίπτωση. Είναι πάντα όλα πεζά. Έναρξη ERDDAP™ v1.82, GenerateDatasets θα μετατρέψει κεφαλαία γράμματα σε πεζά γράμματα. Και όταν ένα σύνολο δεδομένων φορτώνεται ERDDAP , κεφαλαία γράμματα αλλάζουν σιωπηλά σε πεζά γράμματα.
time\_precision
- time\_precision είναι ένα εποπτικό χαρακτηριστικό που χρησιμοποιείται από ERDDAP™ (και χωρίς πρότυπα μεταδεδομένων) για μεταβλητές χρόνου και χρονοσφραγίδας , η οποία μπορεί να είναι σε πλέγμα σύνολα δεδομένων ή πίνακες σύνολα δεδομένων, και axisVariable ιπ dataVariable Σ. Για παράδειγμα,
<att name="time\\_precision">1970-01-01</att>
time\_precision προσδιορίζει την ακρίβεια που πρέπει να χρησιμοποιείται κάθε φορά ERDDAP™ διαμορφώνει τις τιμές χρόνου από τη μεταβλητή αυτή ως συμβολοσειρές σε ιστοσελίδες, συμπεριλαμβανομένων .htmlTable απαντήσεις. Σε μορφές αρχείων όπου ERDDAP™ μορφές φορές ως συμβολοσειρές (για παράδειγμα, .csv και .json ) , ERDDAP™ μόνο χρησιμοποιεί το time\_precision -προσδιορισμένη μορφή εάν περιλαμβάνει κλασματικά δευτερόλεπτα· διαφορετικά, ERDDAP™ χρησιμοποιεί το 1970-01-01T00:00:00 Μορφή Ζ.
- Οι έγκυρες τιμές είναι 1970-01, 1970-01-01, 1970-01-01T00Z, 1970-01-01T00:00Z, 1970-01-01T00:00:00Z (το προκαθορισμένο) , 1970-01-01T00:00:00.0Z, 1970-01-01T00:00:00.00Z, 1970-01-01T00:00.000Z. \[ Το 1970 δεν είναι μια επιλογή γιατί είναι ένας ενιαίος αριθμός, έτσι ERDDAP™ δεν μπορεί να ξέρει αν είναι μια σχηματοποιημένη συμβολοσειρά χρόνου (ένα έτος) ή αν είναι κάποιος αριθμός δευτερολέπτων από το 1970-01-01T00:00:00Z. \]
- Εάν time\_precision δεν καθορίζεται ή η τιμή δεν ταιριάζει, η προκαθορισμένη τιμή θα χρησιμοποιηθεί.
- Εδώ, όπως και σε άλλα μέρη της ERDDAP™ , οποιαδήποτε πεδία του μορφοποιημένου χρόνου που δεν εμφανίζονται θεωρείται ότι έχουν την ελάχιστη τιμή. Για παράδειγμα, 1985-07, 1985-07-01, 1985-07-01T00Z, 1985-07-01T00:00Z, και 1985-07-01T00:00:00 Όλα τα Z θεωρούνται ισοδύναμα, αν και με διαφορετικά επίπεδα ακρίβειας υπονοούνται. Αυτό ταιριάζει με το ISO 8601:2004 "extended" Προδιαγραφή μορφής χρόνου .
- ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Θα πρέπει να χρησιμοποιείτε μόνο ένα περιορισμένο time\_precision εάν όλα οι τιμές των δεδομένων για τη μεταβλητή έχουν μόνο την ελάχιστη τιμή για όλα τα πεδία που είναι κρυμμένα.
- Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ένα time\_precision του 1970-01-01 εάν όλες οι τιμές δεδομένων έχουν ώρα=0, λεπτό=0, και δεύτερο=0 (για παράδειγμα 2005-03-04T00:00:00Z και 2005-03-05T00:00:00Z) .
- Για παράδειγμα, μην χρησιμοποιήσετε ένα time\_precision του 1970-01-01 εάν υπάρχουν τιμές μη-0 ωρών, λεπτών ή δευτερολέπτων, (για παράδειγμα 2005-03-05T12:00:00Z) γιατί η τιμή της ώρας δεν θα εμφανιζόταν. Διαφορετικά, αν ένας χρήστης ζητήσει όλα τα δεδομένα με χρόνο=2005-03-05, το αίτημα θα αποτύχει απροσδόκητα.
time\_zone
- ** time\_zone **
- time\_zone είναι ένα εποπτικό χαρακτηριστικό που χρησιμοποιείται από ERDDAP™ (και χωρίς πρότυπα μεταδεδομένων) για μεταβλητές χρόνου και χρονοσφραγίδας , η οποία μπορεί να είναι σε πλέγμα σύνολα δεδομένων ή πίνακες σύνολα δεδομένων.
- Η προεπιλογή είναι... Zulu " (που είναι η σύγχρονη έκδοση ζώνης ώρας της GMT) .
- Πληροφορίες ιστορικού: " χρονικές αντισταθμίσεις" (π.χ., Pacific Standard Time, -08:00, GMT-8) είναι σταθερές, ειδικές, αντισταθμίσεις σε σχέση με Zulu (GMT) . Σε αντίθεση, " ζώνες ώρας" είναι τα πολύ πιο περίπλοκα πράγματα που επηρεάζονται από την θερινή ώρα (Π.χ., "ΗΠΑ/Ειρηνικού") , οι οποίοι είχαν διαφορετικούς κανόνες σε διαφορετικά μέρη σε διαφορετικές εποχές. Οι ζώνες ώρας έχουν πάντα ονόματα αφού δεν μπορούν να συνοψιστούν με μια απλή τιμή όφσετ. (δείτε το όνομα βάσης δεδομένων " TZ" στήλη στον πίνακα στο https://en.wikipedia.org/wiki/List\_of\_tz\_database\_time\_zones ) . ERDDAP Σ time\_zone χαρακτηριστικό σας βοηθά να ασχοληθείτε με τοπικά δεδομένα ώρας από κάποια ζώνη ώρας (π.χ., 1987-03-25T17:32:05 Ειρηνικός Χρόνος) . Εάν έχετε συμβολοσειρά ή αριθμητικά δεδομένα χρόνου με ένα (σταθερό) time offset, θα πρέπει απλά να προσαρμόσετε τα δεδομένα Zulu (Αυτό είναι που ERDDAP™ θέλει) προσδιορίζοντας διαφορετικό χρόνο βάσης στο χαρακτηριστικό μονάδων (π.χ., "ώρες από το 1970-01-01T08:00:00Z", σημειώστε το T08 για να καθορίσετε την αντιστάθμιση χρόνου) , και πάντα ελέγξτε τα αποτελέσματα για να βεβαιωθείτε ότι έχετε τα αποτελέσματα που θέλετε.
- Για μεταβλητές χρονοσφραγίδων με δεδομένα πηγής από συμβολοσειρές, αυτό το χαρακτηριστικό σας επιτρέπει να καθορίσετε μια ζώνη ώρας που οδηγεί ERDDAP™ να μετατρέψετε τους τοπικούς χρόνους πηγής ζώνης (μερικές στο Κανονική ώρα, μερικές στο Φως θερινή ώρα) σε Zulu χρόνοι (που είναι πάντα σε πρότυπο χρόνο) . Ο κατάλογος των έγκυρων ονομάτων ζώνης ώρας είναι πιθανώς πανομοιότυπος με τον κατάλογο της στήλης TZ στο https://en.wikipedia.org/wiki/List\_of\_tz\_database\_time\_zones . Κοινές Ζώνες ώρας των ΗΠΑ είναι: ΗΠΑ/Χαγουάι, ΗΠΑ/Αλάσκα, ΗΠΑ/Ειρηνικού, ΗΠΑ/Μουντάιν, ΗΠΑ/Αριζόνα, ΗΠΑ/Κεντρική, ΗΠΑ/Ανατολική.
- Για μεταβλητές χρονοσφραγίδων με αριθμητικά δεδομένα πηγής, μπορείτε να καθορίσετε το - time\_zone " χαρακτηριστικό, αλλά η τιμή πρέπει να είναι " Zulu " ή UTC". Εάν χρειάζεστε υποστήριξη για άλλες ζώνες ώρας, παρακαλούμε στείλτε email στον Chris. Ο Τζον στο Νόαγκοβ.
Χρόνος
- Χρόνος Έναρξη ERDDAP™ 2.29.0, οι χρονικές μεταβλητές λειτουργούν ελαφρώς διαφορετικά. Σε σπάνιες περιπτώσεις, πιθανότατα κατά τη χρήση
ημέρες απόκαι ένα χρόνο πριν το 1582 (Οπότε...ημέρες από 0000-01-01ήημέρες από 1-1-1 00:00:0.0) θα πρέπει να υποδείξετε για μια προσαρμογή στη μεταβλητή ημερομηνίας. Ο λόγος γι' αυτό είναι ERDDAP™ χρησιμοποιεί τη βιβλιοθήκη java.time για να διαχειριστεί τις ημερομηνίες εσωτερικά. Υπάρχουν μερικά σύνολα δεδομένων που απαιτούν τη χρήση της παλιάς βιβλιοθήκης GregorianCalendar για να επιτύχετε τις σωστές ημερομηνίες.
<axisVariable>
<sourceName>time</sourceName>
<destinationName>time</destinationName>
<!-- sourceAttributes>
... removed several lines ...
<att name="units">days since 1-1-1 00:00:0.0</att>
</sourceAttributes -->
<addAttributes>
... removed several lines ...
<att name="legacy_time_adjust">true</att>
</addAttributes>
</axisVariable>
μονάδες
- μονάδες ( COARDS , ΚΦ και ACDD πρότυπο μεταδεδομένων) καθορίζει τις μονάδες των τιμών δεδομένων. Για παράδειγμα,
<att name="units">degree\\_C</att>
-
" μονάδες" Απαιτείται είτε ως πηγήAttribute είτε ως πρόσθετο στοιχείο για "time" μεταβλητές και είναι ΣΤΡΑΤΗΓΙΚΗ ΣΥΣΤΑΣΗ για άλλες μεταβλητές όποτε ενδείκνυται (Που είναι σχεδόν πάντα) .
-
Σε γενικές γραμμές, συνιστούμε UDUnits \ συμβατές μονάδες που απαιτούνται από την COARDS και ΚΦ πρότυπα.
-
Ένα άλλο κοινό πρότυπο είναι UCUM -- ο Ενοποιημένος Κώδικας για τις Μονάδες Μέτρου. OGC υπηρεσίες όπως: SOS , WCS , και WMS απαιτούν UCUM και συχνά αναφέρονται σε UCUM ως UOM (Μονάδες μέτρησης) .
-
Σας συνιστούμε να χρησιμοποιήσετε ένα πρότυπο μονάδων για όλα τα σύνολα δεδομένων σας ERDDAP . Πρέπει να το πεις. ERDDAP™ με ποιο πρότυπο χρησιμοποιείτε<μονάδες\_standard>, σε σας setup.xml Αρχείο.
-
Οι μονάδες για μια δεδομένη μεταβλητή σε διαφορετικά πηγαία αρχεία πρέπει να είναι συνεπείς. Εάν έχετε μια συλλογή αρχείων δεδομένων όπου ένα υποσύνολο των αρχείων χρησιμοποιεί διαφορετικές τιμές μονάδων από ένα ή περισσότερα άλλα υποσύνολα των αρχείων (για παράδειγμα, "Ημέρες από το 1985-01-01" έναντι "ημέρες από το 2000-01-01", "βαθμός\_Celsius" έναντι "deg\C", ή "χιλιόμετρα" έναντι "m/s") πρέπει να βρείτε έναν τρόπο για να τυποποιήσετε τις τιμές μονάδων, διαφορετικά, ERDDAP™ θα φορτώσει μόνο ένα υποσύνολο των αρχείων. Σκεφτείτε το: αν ένα αρχείο έχει windSpeed units=knots και ένα άλλο έχει windSpeed units=m/s, τότε οι τιμές από τα δύο αρχεία δεν θα πρέπει να περιλαμβάνονται στο ίδιο συγκεντρωτικό σύνολο δεδομένων.
- Αν τα αρχεία είναι σε πλέγμα .nc αρχεία, σε πολλές περιπτώσεις μπορείτε να χρησιμοποιήσετε EDDGrid Από αρχείαNcUnpacked .
- Εάν τα αρχεία είναι αρχεία δεδομένων πίνακα, σε πολλές περιπτώσεις μπορείτε να χρησιμοποιήσετε EDDTableFrom...Αρχεία " Τυποποίηση Τι; για να πω ERDDAP για την τυποποίηση των πηγαίων αρχείων καθώς διαβάζονται ERDDAP .
- Για δυσκολότερα προβλήματα, μπορείτε να χρησιμοποιήσετε NcML ή NCO για να λύσει το πρόβλημα.
-
Το πρότυπο CF τμήμα 8.1 αναφέρει ότι εάν τα δεδομένα μιας μεταβλητής είναι συσκευασμένα μέσω scale\_factor ή/και add\_offset , "Οι μονάδες μιας μεταβλητής θα πρέπει να είναι αντιπροσωπευτικές των μη αποσυσκευασμένων δεδομένων."
-
Για μεταβλητές χρόνου και χρόνου, είτε της μεταβλητής Χαρακτηριστικά πηγής ή< addAttributes > (που έχει προτεραιότητα) Πρέπει. μονάδες που είναι είτε
-
Για μεταβλητές του άξονα του χρόνου ή μεταβλητές δεδομένων του χρόνου με αριθμητικά δεδομένα: UDUnits \-συμβατή συμβολοσειρά (με τη μορφή μονάδες από Βασικός χρόνος ) περιγραφή του τρόπου ερμηνείας των τιμών του χρόνου πηγής (για παράδειγμα, δευτερόλεπτα από το 1970-01-01T00:00:00Z) .
μονάδες μπορεί να είναι οποιοδήποτε από:
ms, msec, msecs, millis, millisec, millisecs, millisecond, milliseconds,
s, sec, secs, second, seconds, m, min, mins, minute, minutes, h, hr, hrs, hour, hours,
d, day, days, week, weeks, mon, mons, month, months, yr, yrs, year, or years.
Τεχνικά, ERDDAP™ δεν ακολουθεί το UDUNITS πρότυπο κατά τη μετατροπή "years since" και "months since" τιμές χρόνου "seconds since" . Η UDUNITS το πρότυπο ορίζει ένα έτος ως σταθερή, ενιαία τιμή: 3.15569259747e7 δευτερόλεπτα. Και... UDUNITS ορίζει ένα μήνα ως έτος/12. Δυστυχώς, τα περισσότερα/όλα σύνολα δεδομένων που έχουμε δει ότι η χρήση "years since" ή "months since" προτίθενται σαφώς οι τιμές να είναι ημερολογιακά έτη ή ημερολογιακοί μήνες. Για παράδειγμα, 3 "months since 1970-01-01" συνήθως προορίζεται να σημαίνει 1970-04-01. Λοιπόν... ERDDAP™ ερμηνεύει "years since" και "months since" ως ημερολογιακά έτη και μήνες, και δεν ακολουθεί αυστηρά το UDUNITS Τυπικό.
Η Βασικός χρόνος πρέπει να είναι ISO 8601:2004 (E) μορφοποιημένη συμβολοσειρά ώρας ημερομηνίας ( yyyy-MM-dd 'T'HH:mm:ssZ, για παράδειγμα, 1970-01-01T00:00:00Z) , ή κάποια παραλλαγή αυτού (για παράδειγμα, με μέρη που λείπουν στο τέλος) . ERDDAP™ προσπαθεί να συνεργαστεί με ένα ευρύ φάσμα των παραλλαγών αυτής της ιδανικής μορφής, για παράδειγμα, "1970-1-1 0:0:0"" υποστηρίζεται. Εάν οι πληροφορίες της ζώνης ώρας λείπουν, θεωρείται ότι είναι η Zulu ζώνη ώρας (Γνωστό και ως GMT) . Ακόμη και αν ορίζεται άλλη χρονική αντιστάθμιση, ERDDAP™ ποτέ δεν χρησιμοποιεί θερινή ώρα. Εάν η βάσηTime χρησιμοποιεί κάποια άλλη μορφή, θα πρέπει να χρησιμοποιήσετε< addAttributes > να καθορίσει μια νέα συμβολοσειρά μονάδων που χρησιμοποιούν μια παραλλαγή του ISO 8601:2004 (E) Μορφή (π.χ., αλλαγή ημερών από την 1η Ιανουαρίου 1985 σε ημέρες από το 1985-01-01.
Μπορείς να δοκιμάσεις. ERDDAP Η ικανότητα αντιμετώπισης ενός συγκεκριμένου θέματος μονάδες από Βασικός χρόνος με ERDDAP Σ Μετατροπέας χρόνου . Ελπίζω να μπορείς να συνδέσεις έναν αριθμό. (η πρώτη φορά από την πηγή δεδομένων;) και μια συμβολοσειρά μονάδων, κάντε κλικ στο Μετατροπή, και ERDDAP™ θα είναι σε θέση να το μετατρέψει σε ένα ISO 8601:2004 (E) μορφοποιημένη συμβολοσειρά ώρας ημερομηνίας. Ο μετατροπέας θα επιστρέψει ένα μήνυμα σφάλματος αν η συμβολοσειρά μονάδων δεν είναι αναγνωρίσιμη.
Μονάδες χρόνου συμβολοσειράς
- Για το χαρακτηριστικό μονάδων για μεταβλητές δεδομένων χρόνου ή χρονοσφραγίδων με δεδομένα συμβολοσειρών, πρέπει να ορίσετε java.time.ΗμερομηνίαΧρόνοςΧωρίς ύλη μοτίβο (το οποίο είναι κυρίως συμβατό με το java.text. ΑπλόDateFormat) που περιγράφει πώς να ερμηνεύσει τους χρόνους χορδών.
Για τις συνήθως χρησιμοποιούμενες μορφές χρόνου που είναι παραλλαγές του ISO 8601:2004 (E) τυπική μορφή (για παράδειγμα, 2018-01-02T00:00:00Z) , μπορείτε να καθορίσετε παραλλαγές του yyyy-MM-dd 'T'HH:mm:ssZ, για παράδειγμα, χρήση yyyy-MM-dd εάν ο χρόνος συμβολοσειράς έχει μόνο ημερομηνία. Για κάθε μορφότυπο που αρχίζει με την eyah-M, ERDDAP χρησιμοποιεί ένα ειδικό parser που είναι πολύ συγχωρητικό των μικρών διαφοροποιήσεων στη μορφή. Ο αναλυτής μπορεί να χειριστεί ζώνες ώρας με τη μορφή «Z», "UTC", "GMT", ±XX:XX, ±XXXX, και ±XX μορφές. Εάν δεν προσδιορίζονται μέρη της ημερομηνίας (για παράδειγμα, λεπτά και δευτερόλεπτα) , ERDDAP™ υποθέτει τη χαμηλότερη τιμή για το πεδίο αυτό (π.χ., εάν δεν προσδιορίζονται δευτερόλεπτα, θεωρείται seconds=0) .
Για όλες τις άλλες μορφές ώρας συμβολοσειρών, θα πρέπει να καθορίσετε με ακρίβεια μια συμβολοσειρά ώραςFormatter-συμβατή με το χρόνο μορφή. Όπως... yyyy-MM-dd 'T'HH:mm:ssZ, αυτές οι συμβολοσειρές μορφής είναι κατασκευασμένες από χαρακτήρες που προσδιορίζουν ένα συγκεκριμένο τύπο πληροφοριών από τη συμβολοσειρά ώρας, π.χ., m σημαίνει λεπτό της ώρας. Αν επαναλάβετε τον χαρακτήρα μορφής κάποιες φορές, αυτό διορθώνει περαιτέρω τη σημασία, π.χ., m σημαίνει ότι η τιμή μπορεί να προσδιοριστεί με οποιοδήποτε αριθμό ψηφίων, mm σημαίνει ότι η τιμή πρέπει να προσδιορίζεται με 2 ψηφία. Η Java τεκμηρίωση για DateTimeFormatter είναι μια ακατέργαστη επισκόπηση και δεν καθιστά αυτές τις λεπτομέρειες σαφείς. Έτσι εδώ είναι μια λίστα των μεταβλητών χαρακτήρων μορφή και το νόημά τους μέσα ERDDAP™ (που μερικές φορές είναι ελαφρώς διαφορετικό από Java Χρόνος ημερομηνίας) :
| Χαρακτήρες | Παραδείγματα | Σημασία |
|---|---|---|
| y, y, y | \-4712, 0, 1, 10, 100, 2018 | έναν αριθμό έτους, οποιοδήποτε αριθμό ψηφίων. ERDDAP™ θεραπεία y (έτος) και Υ (εβδομάδα-based-έτος, επειδή αυτό χρησιμοποιείται συχνά λανθασμένα αντί y) ως u, η αστρονομικός αριθμός έτους . Τα αστρονομικά χρόνια είναι θετικά ή αρνητικά ακέραια που δεν χρησιμοποιούν το BCE (BC) ή CE (AD) σχεδιαστές εποχής: 2018=2018CE, ..., 2=2CE, 1=1CE, 0=1BCE, -1=2BCE, -2=3BCE, ... |
| uuuu, εε, ΕΕΕΕ | \-4712, 0000, 0001, 0010, 0100, 2018 | αριθμός 4 ψηφίων αστρονομικού έτους (αγνοώντας κάθε προηγούμενο '-') |
| Μ | 1, 01, 12 | αριθμός μήνα, οποιοσδήποτε αριθμός ψηφίων (1 = Ιανουάριος) |
| ΜΜ | 01, 12 | ένα 2 ψηφίο (μηδενική επένδυση) αριθμός μήνα |
| ΜΜΜ | Τζαν, Τζαν, Τζαν | ένα 3 γράμμα αγγλικό όνομα μήνα, περίπτωση αναίσθητη |
| Μμμμ | Jan, jan, JAN, Ιανουάριος, Ιανουάριο, ΙΑΝΟΥΑΡΙΟΣ | 3 γράμμα ή πλήρες αγγλικό όνομα μήνα, περίπτωση αναίσθητη |
| δ | 1, 01, 31 | αριθμός ημέρας του μήνα, οποιοσδήποτε αριθμός ψηφίων |
| δδ | 01, 31 | ένα 2 ψηφίο (μηδενική επένδυση) ημέρα του μήνα. Ο πρώτος «ψηφιακός» μπορεί να είναι ένας χώρος. |
| Δ | 1, 001, 366 | ημέρα του έτους, οποιοσδήποτε αριθμός ψηφίων, 001=Ιαν 1 |
| DDD | 001, 366 | 3 ψηφία, 001=Ιαν 1 |
| ΗΗΕ | Θου, Θου, Θου | 3 γράμματα την ημέρα της εβδομάδας, η αξία αγνοείται κατά την ανάλυση |
| ΑΙΕΕ | Πέμπτη, Πέμπτη, Πέμπτη | 3 γράμμα ή πλήρης αγγλική ημέρα της εβδομάδας, περίπτωση αναίσθητη, τιμή αγνοείται κατά την ανάλυση |
| Η | 0, 00, 23 | H ώρα της ημέρας (0-23) , οποιοδήποτε αριθμό ψηφίων |
| HH | 00, 23 | HH ώρα της ημέρας (00-23) , 2 ψηφία. Ο πρώτος «ψηφιακός» μπορεί να είναι ένας χώρος. |
| α | ΠΜ, ΠΜ, ΠΜ, ΠΜ | ΠΜ ή ΡΜ, περίπτωση-αναίσθητη |
| η | 12, 1, 01, 11 | ρολόι-ώρα της-am-pm (12, 1, 2, ... 11) , οποιοδήποτε αριθμό ψηφίων |
| Ω! | 12, 01, 11 | ρολόι-ώρα της-am-pm (12, 1, 2, ... 11) , 2 ψηφία. Ο πρώτος «ψηφιακός» μπορεί να είναι ένας χώρος. |
| ΙΑ | 0, 1, 11 | ώρα-από-αμ-μμ (0, 1, ...11) , οποιοδήποτε αριθμό ψηφίων |
| ΙΑ | 00, 01, 11 | 2 ψηφία |
| Μ | 0, 00, 59 | λεπτό της ώρας, οποιοδήποτε αριθμό ψηφίων |
| mm | 00, 59 | λεπτό της ώρας, 2 ψηφία |
| α | 0, 00, 59 | δεύτερο λεπτό, οποιοδήποτε αριθμό ψηφίων |
| ss | 00, 59 | δεύτερο λεπτό, 2 ψηφία |
| Σ | 0, 000, 9, 999 | κλάσμα του δευτερολέπτου, σαν να ακολουθεί δεκαδικό σημείο, οποιοδήποτε αριθμό ψηφίων |
| SS | 00, 99 | εκατοντάδες του δευτερολέπτου, 2 ψηφία |
| ΣΔΤ | 000, 999 | χιλιάδες του δευτερολέπτου, 3 ψηφία |
| Α | 0, 0000, 86399999 | χιλιοστό του δευτερολέπτου της ημέρας, οποιοδήποτε αριθμό ψηφίων |
| ΑΑΑΑΑΑΑΑ | 00000000, 863999999 | χιλιοστό του δευτερολέπτου της ημέρας, 8 ψηφία |
| Ν | 0, 0000000000000, 863999999999999 | νανοδευτερόλεπτο της ημέρας, οποιοδήποτε αριθμό ψηφίων. Μέσα ERDDAP™ , αυτό κατανέμεται στο nMillis. |
| NNNNNNNNNNNNNNNN | 0000000000000, 863999999999999 | νανοδευτερόλεπτα, 14 ψηφία. Μέσα ERDDAP™ Αυτό κατατείνεται στο NMILIS. |
| n | 0,0000000000, 59999999999 | νανοδευτερόλεπτο, οποιοδήποτε αριθμό ψηφίων. Μέσα ERDDAP™ Αυτό κατατείνεται στο NMILIS. |
| nnnnnnnnnnnn nnnnnn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn nn | 0000000000, 59999999999 | Νανοδευτερόλεπτο, 11 ψηφία. Μέσα ERDDAP™ Αυτό κατατείνεται στο NMILIS. |
| XXX, ΖΖΖ | Ζ, -08:00, +01:00 | ζώνη ώρας με τη μορφή «Z» ή ± (Μετατόπιση 2 ψηφίων ωρών) : (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . Το ZZZ που υποστηρίζει το "Z" δεν είναι στάνταρ αλλά ασχολείται με ένα κοινό σφάλμα χρήστη. |
| XX, ZZ | Z -0800, +0100 | ζώνη ώρας με τη μορφή «Z» ή ± (Μετατόπιση 2 ψηφίων ωρών) : (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . Το ZZ που υποστηρίζει το "Z" δεν είναι στάνταρ αλλά ασχολείται με ένα κοινό σφάλμα χρήστη. |
| Χ, Ζ | Z, -08, +01 | ζώνη ώρας με τη μορφή «Z» ή ± (Μετατόπιση 2 ψηφίων ωρών) : (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . Z υποστήριξη 'Z' είναι μη πρότυπο, αλλά ασχολείται με ένα κοινό σφάλμα χρήστη. |
| xxx | \-08-00, +01:00 | ζώνη ώρας με τη μορφή ± (Μετατόπιση 2 ψηφίων ωρών) : (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . |
| ΧΧ | \-0800, +0100 | ζώνη ώρας με τη μορφή ± (Μετατόπιση 2 ψηφίων ωρών) (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . |
| x | \-08, +01 | ζώνη ώρας με τη μορφή ± (Μετατόπιση 2 ψηφίων ωρών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . |
| " | Τ, Ζ, ΓΜΤ | έναρξη και τέλος μιας σειράς κυριολεκτικών χαρακτήρων |
| " " (δύο μονά εισαγωγικά) | " " | δύο μονά εισαγωγικά υποδηλώνουν ένα κατά γράμμα ενιαίο απόσπασμα |
| \[ \] | \[ \] | η αρχή (" \[ ") και τέλος (" \] ") ενός προαιρετικού τμήματος. Αυτή η σημειογραφία υποστηρίζεται μόνο για κυριολεκτικούς χαρακτήρες και στο τέλος της συμβολοσειράς μορφής. |
| #, {, &# 125; | #, {, &# 125; | προορίζονται για μελλοντική χρήση |
| G,L,Q,e,c,V,z,O,p | Αυτοί οι χαρακτήρες μορφοποίησης υποστηρίζονται από Java ΗμερομηνίαTimeFormatter, αλλά προς το παρόν δεν υποστηρίζεται από ERDDAP . Αν χρειάζεστε υποστήριξη, στείλτε email στον Κρις. Ο Τζον στο Νόαγκοβ. |
Σημειώσεις:
- Σε ημερομηνία με στίξη, οι αριθμητικές τιμές μπορεί να έχουν μεταβλητό αριθμό ψηφίων (π.χ., σε μορφή μελανής ημερομηνίας ΗΠΑ "1/2/1985", ο μήνας και η ημερομηνία μπορεί να είναι 1 ή 2 ψηφία) κατά συνέπεια, ο μορφότυπος πρέπει να χρησιμοποιεί ενδείξεις 1 γραμμάτων, π.χ., M/d/εεεε, οι οποίες δέχονται οποιονδήποτε αριθμό ψηφίων για μήνα και ημερομηνία.
- Εάν ο αριθμός των ψηφίων για ένα στοιχείο είναι σταθερός, π.χ., 01/02/1985, τότε προσδιορίστε τον αριθμό των ψηφίων στη μορφή, π.χ., MM/dd/yyyy για διψήφιο μήνα, διψήφια ημερομηνία και 4 ψηφία έτος.
- Αυτές οι μορφές είναι δύσκολο να λειτουργήσει με. Μια δεδομένη μορφή μπορεί να λειτουργήσει για τους περισσότερους, αλλά όχι όλους, συμβολοσειρές χρόνου για μια δεδομένη μεταβλητή. Πάντα ελέγξτε ότι η μορφή που ορίζετε λειτουργεί όπως αναμένεται στο ERDDAP για όλες τις χρονικές χορδές μιας μεταβλητής.
- Όταν είναι δυνατόν, GenerateDatasetXml θα προτείνει συμβολοσειρές μορφής χρόνου.
- Αν χρειάζεστε βοήθεια για τη δημιουργία μιας συμβολοσειράς μορφής, παρακαλούμε στείλτε email στον Chris. Ο Τζον στο Νόαγκοβ.
Η κύρια μεταβλητή δεδομένων χρόνου (για σύνολα δεδομένων πίνακα) και η μεταβλητή του κύριου άξονα του χρόνου (για τα πλέγματα σύνολα δεδομένων) έχουν αναγνωριστεί από το destinationName Χρόνος. Τα μεταδεδομένα μονάδων τους πρέπει να είναι μια συμβολοσειρά μονάδων συμβατών με UDUnits για αριθμητικές τιμές χρόνου, π.χ., "ημέρες από το 1970-01-01"1 (για σύνολα δεδομένων με πίνακα ή πλέγμα) , ή μονάδες κατάλληλες για χρόνους συμβολοσειράς , π.χ., "M/d/εεεε" (για σύνολα δεδομένων πίνακα) .
Διαφορετικές Χρονικές Μονάδες σε Διαφορετικό Πλέγμα .nc Αρχεία - Αν έχετε μια συλλογή από πλέγματα .nc αρχεία όπου, για τη χρονική μεταβλητή, ένα υποσύνολο των αρχείων χρησιμοποιεί διαφορετικές μονάδες χρόνου από ένα ή περισσότερα άλλα υποσύνολα των αρχείων, μπορείτε να χρησιμοποιήσετε EDDGrid Από αρχείαNcUnpacked . Μετατρέπει τις τιμές του χρόνου σε "seconds since 1970-01-01T00:00:00Z" σε χαμηλότερο επίπεδο, κρύβοντας έτσι τις διαφορές, έτσι ώστε να μπορείτε να κάνετε ένα σύνολο δεδομένων από τη συλλογή ετερογενών αρχείων.
Μεταβλητές χρονοσταθεροποίησης
Μεταβλητές χρονοσταθεροποίησης -- Οποιαδήποτε άλλη μεταβλητή ( axisVariable ή dataVariable , σε ένα EDDGrid ή σύνολο δεδομένων EDDTable) μπορεί να είναι μια χρονική μεταβλητήStamp. Οι μεταβλητές της χρονοσφραγίδας είναι μεταβλητές που έχουν χρονικές μονάδες και δεδομένα χρόνου, αλλά έχουν< destinationName > εκτός του χρόνου. Οι μεταβλητές TimeStamp συμπεριφέρονται σαν την κύρια μεταβλητή ώρας στο ότι μετατρέπουν τη μορφή χρόνου της πηγής σε "seconds since 1970-01-01T00:00:00Z" ή/και ISO 8601:2004 (E) μορφή). ERDDAP™ αναγνωρίζει το χρόνο Μεταβλητές γραμματοσήμων από το χρόνο τους " μονάδες " μεταδεδομένα, που πρέπει να ταιριάζουν με αυτή την κανονική έκφραση \[ Α-ΖΑ-Ζ \] + + από + \[ 0-9 \] .+" (για αριθμητική ημερομηνία Καιροί, για παράδειγμα, "seconds since 1970-01-01T00:00:00Z" ) ή να είναι ημερομηνία Σχήμα χρόνου που περιέχει "uuu", "yyy" ή "YYYYYYYY (για παράδειγμα, " yyyy-MM-dd T'HH:mm:ssZ") . Αλλά σε παρακαλώ χρησιμοποίησε το destinationName "time" για την κύρια ημερομηνία Μεταβλητή χρόνου.
Πάντα ελέγξτε τη δουλειά σας για να βεβαιωθείτε ότι ο χρόνος που εμφανίζεται σε ERDDAP™ είναι τα σωστά δεδομένα χρόνου. Η εργασία με δεδομένα χρόνου είναι πάντα δύσκολη και επιρρεπής σε λάθη.
Βλέπεις; περισσότερες πληροφορίες σχετικά με τις μεταβλητές χρόνου . ERDDAP™ έχει ένα βοηθητικό Μετατροπή ενός αριθμητικού Χρόνος έως/από ώρα συμβολοσειράς . Βλέπεις; Πώς ERDDAP™ Αντιμετωπίζει το Χρόνο .
valid\_range
- ** valid\_range ** , ή ** valid\_min ** και ** valid\_max ** -- Αυτές είναι οι εποπτικές μεταβλητές ιδιότητες που ορίζονται στο ΚΦ συμβάσεις μεταδεδομένων. Για παράδειγμα,
<att name="valid\_range" type="floatList"\>0.0 40.0</att>
ή
<att name="valid\_min" type="float"\>0.0</att>
<att name="valid\_max" type="float"\>40.0</att>
- Εάν υπάρχουν, θα πρέπει να είναι του ίδιου τύπου δεδομένων με τη μεταβλητή και να προσδιορίζουν τις έγκυρες ελάχιστες και μέγιστες τιμές των δεδομένων για τη μεταβλητή αυτή. Οι χρήστες θα πρέπει να θεωρούν τις τιμές εκτός αυτού του εύρους άκυρες.
- ERDDAP™ δεν εφαρμόζεται valid\_range . Είπε ένας άλλος τρόπος: ERDDAP™ δεν μετατρέπει τιμές δεδομένων εκτός του valid\_range στο \_πλήρωμα Τιμή ή missing\_value . ERDDAP™ απλά μεταδίδει αυτά τα μεταδεδομένα και αφήνει την εφαρμογή πάνω σας. Γιατί; Γι' αυτό είναι αυτά τα μεταδεδομένα. Εάν ο πάροχος δεδομένων ήθελε, ο πάροχος δεδομένων θα μπορούσε να έχει μετατρέψει τις τιμές δεδομένων εκτός του valid\_range να είναι \_FillValues. ERDDAP™ Δεν μαντεύει ο πάροχος δεδομένων. Αυτή η προσέγγιση είναι ασφαλέστερη: εάν αργότερα αποδειχθεί ότι η valid\_range ήταν πολύ στενό ή με άλλο τρόπο λανθασμένο, ERDDAP™ Δεν θα έχουν σβήσει τα δεδομένα.
- Εάν τα δεδομένα είναι συσκευασμένα με scale\_factor ή/και add\_offset , valid\_range , valid\_min και valid\_max πρέπει να είναι ο τύπος και οι τιμές των συσκευασμένων δεδομένων. Από ERDDAP™ Εφαρμόζεται scale\_factor και add\_offset όταν φορτώνει το σύνολο δεδομένων, ERDDAP™ θα ξεπακετάρει το valid\_range , valid\_min και valid\max τιμές έτσι ώστε τα μεταδεδομένα προορισμού (εμφανίζεται στους χρήστες) θα αναφέρει τον τύπο και το εύρος των δεδομένων που έχουν αποσυσκευασθεί. Ή, αν ένα ξεπακεταρισμένο\ valid\_range Η ιδιότητα είναι παρούσα, θα μετονομαστεί valid\_range όταν ERDDAP™ φορτώνει το σύνολο δεδομένων.
<αφαίρεση των MVRows>·
- [ ** <αφαίρεσηMVRows> ** ] (#απομακρυνθείτε) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε μια ετικέτα datasets.xml για τον πίνακα EDDFromFiles (συμπεριλαμβανομένων όλων των υποκατηγοριών) σύνολα δεδομένων, αν και χρησιμοποιείται μόνο για EDDTableFromMultidimNcFiles. Μπορεί να έχει αξία αληθινή ή ψεύτικη. Για παράδειγμα, αλήθεια Αυτό αφαιρεί οποιαδήποτε δέσμη γραμμών στο τέλος μιας ομάδας όπου όλες οι τιμές είναι missing\_value , \_FillValue, ή το CoHort ... Array εγγενής ελλείπουσα τιμή (ή char=# 32 για CharArrays) . Αυτό είναι για τον τύπο αρχείου CF DSG Multidistant Array και παρόμοια αρχεία. Αν αληθεύει, αυτό κάνει τη σωστή δοκιμή και έτσι φορτώνει πάντα όλες τις μεταβλητές max dim, έτσι μπορεί να πάρει επιπλέον χρόνο. Η προεπιλεγμένη τιμή είναι ψευδής. Σύσταση - Εάν είναι δυνατόν για το σύνολο δεδομένων σας, συνιστούμε τη ρύθμιση αφαίρεσης MVRows σε ψευδή. Ο καθορισμός της αφαίρεσης MVRows στην πραγματικότητα μπορεί να επιβραδύνει σημαντικά τις αιτήσεις, αν και μπορεί να χρειαστεί για ορισμένα σύνολα δεδομένων.