Μετάβαση στο κύριο περιεχόμενο

Συνεργασία με το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. Αν κολλήσεις, δες μας.τμήμα για τη λήψη πρόσθετης υποστήριξης.

Παροχέας δεδομένων Μορφή

Όταν ένας πάροχος δεδομένων έρχεται σε σας ελπίζοντας να προσθέσετε κάποια δεδομένα σε σας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 αρχείο σας.

Η ώθηση για αυτό ήτανNOAA2014Πρόσβαση του κοινού στα Ερευνητικά Αποτελέσματα (ΠΑΡR) Οδηγία, η οποία απαιτεί ότι όλαNOAAτα περιβαλλοντικά δεδομένα που χρηματοδοτούνται μέσω δολαρίων φορολογουμένων διατίθενται μέσω υπηρεσίας δεδομένων (όχι μόνο αρχεία) μέσα σε 12 μήνες από τη δημιουργία. Έτσι, υπάρχει αυξημένο ενδιαφέρον στη χρήσηERDDAP™να καθιστούν τα σύνολα δεδομένων διαθέσιμα μέσω μιας υπηρεσίας το συντομότερο δυνατόν. Χρειαζόμασταν έναν πιο αποτελεσματικό τρόπο για να αντιμετωπίσουμε έναν μεγάλο αριθμό παρόχων δεδομένων.

Ανατροφοδότηση/Προτάσεις; Αυτή η φόρμα είναι νέα, οπότε παρακαλώ στείλτε emailerd 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για τον κώδικα.  
EDDGridLonPM180Από το ErddapCatalog

Αυτός ο τύπος EDD παράγει τοdatasets.xmlνα κάνειEDDGridLonPM180σύνολα δεδομένων από όλα ταEDDGridσύνολα δεδομένωνERDDAPπου έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180.

  • Εάν είναι δυνατόν, χρησιμοποιήστε μια δημόσια διεύθυνση IP (για παράδειγμα, https://oceanwatch.pfeg.noaa.gov ) στο URL, όχι μια τοπική αριθμητική διεύθυνση IP (για παράδειγμα, https://12.34.56.78 ) . Εάν ηERDDAP™είναι προσβάσιμο μόνο μέσω της τοπικής αριθμητικής διεύθυνσης IP, μπορείτε να χρησιμοποιήσετε [<μετατροπή σε PublicSourceUrl>] (#μετατροπή σε δημόσια πηγή) Οπότε...ERDDAP™οι χρήστες βλέπουν τη δημόσια διεύθυνση, παρόλο πουERDDAP™παίρνει δεδομένα από την τοπική αριθμητική διεύθυνση.  
EDDGridLon0360Από το 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.

  1. Μόλις έχετε πρόσβαση στο αρχείο inport-xml (είτε ως URL είτε ως τοπικό αρχείο) : εκτελέστε GenerateDatasets Xml, προσδιορίστε EDDType=EDDTableFromInPort, προσδιορίστε το URL inport-xml ή το πλήρες όνομα αρχείου, προσδιορίστε ποια Child=0, και προσδιορίστε τις άλλες ζητούμενες πληροφορίες (εάν είναι γνωστό) . (Σε αυτό το σημείο, δεν χρειάζεται να έχετε το αρχείο πηγαίων δεδομένων ή να καθορίσετε το όνομά του.) Η ρύθμιση child=0 λέει GenerateDatasets Xml για να γράψετε τις πληροφορίες για όλα της<οντότητα-απόδοση-πληροφορίες><οντότητα> είναι στο αρχείο inport-xml (εάν υπάρχουν) . Επίσης, εκτυπώνει μια σύνοψη πληροφοριών ιστορικού, συμπεριλαμβανομένων όλων των download-url που αναφέρονται στο αρχείο inport-xml.
  2. Κοίτα όλες αυτές τις πληροφορίες. (συμπεριλαμβανομένων των πληροφοριών ιστορικού που δημιουργούν σύνολα δεδομένων Εκτύπωση Xml) και να επισκεφθείτε το download-url (α) προκειμένου να προσπαθήσουμε να βρούμε το αρχείο πηγαίων δεδομένων (α) . Αν μπορείς να το βρεις (τους) , κατέβασέ το (τους) σε έναν κατάλογο που είναι προσβάσιμος σεERDDAP. (Αν δεν μπορείτε να βρείτε αρχεία πηγαίων δεδομένων, δεν υπάρχει λόγος να προχωρήσουμε.)
  3. Εκτέλεση δημιουργίας Σύνολα δεδομένων Xml και πάλι. Εάν το αρχείο πηγαίων δεδομένων αντιστοιχεί σε ένα από τα αρχεία inport-xml<οντότητα-απόδοση-πληροφορίες><οντότητα>, προσδιορίστε ποιο παιδί= ότι ο αριθμός Entity (π.χ. 1, 2, 3, ...) .ERDDAP™θα προσπαθήσει να ταιριάξει τα ονόματα στήλης στο αρχείο πηγαίων δεδομένων με τα ονόματα στις πληροφορίες της οντότητας, και να προτρέψει να αποδεχθεί / απορρίψει / διορθώσει τυχόν αποκλίσεις. Ή, αν το αρχείο inport-xml δεν έχει καμία<οντότητα-απόδοση-πληροφορίες><οντότητα>, προσδιορίστε ποιο παιδί=0.
  4. Στο κομμάτι τουdatasets.xmlπου έγινε από το GenerateDatasets Xml, αναθεώρηση της [παγκόσμια<addAttributes>] (#Παγκόσμια χαρακτηριστικά) όπως απαιτείται/επιθυμείται.
  5. Στο κομμάτι τουdatasets.xmlπου έγινε από GenerateDatasetsXml, add/ revise το [<dataVariable>] (#μεταβλητή δεδομένων) πληροφορίες που απαιτούνται/επιθυμούν να περιγράψουν καθεμία από τις μεταβλητές. Βεβαιωθείτε ότι αναγνωρίζετε σωστά κάθε μεταβλητή [<sourceName>] (#όνομα πηγής) (όπως εμφανίζεται στην πηγή) , [<destinationName>] (#Όνομα προορισμού) (που έχει περισσότερους περιορισμούς στους επιτρεπόμενους χαρακτήρες απόsourceName) , [<μονάδες>] (#μονάδες) (ιδιαίτερα εάν πρόκειται γιαμεταβλητή χρόνου ή χρονοσφραγίδαςόπου οι μονάδες πρέπει να προσδιορίσουν το μορφότυπο) , και [<missing\value>] (#λείπει αξία) ,
  6. Όταν είστε κοντά στο φινίρισμα, χρησιμοποιήστε επανειλημμένα τοΔΑΠεργαλείο για να δείτε γρήγορα αν η περιγραφή συνόλου δεδομένων είναι έγκυρη και αν το σύνολο δεδομένων θα εμφανιστεί στο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,.ncml, ή.hdfΑρχείο. Χρησιμοποιεί το netcdf-java τουNCdump, το οποίο είναι ένα πιο περιορισμένο εργαλείο από την έκδοση C του NCdump. Αν χρησιμοποιήσετε αυτή την επιλογή, GenerateDatasetsXml θα σας ζητήσει να χρησιμοποιήσετε μια από τις επιλογές: "-h" (Κεφαλίδα) , "-γ" (Συντονισμός vars) , "-βαλ. (προκαθορισμένο) , "-v var1, var2", "v var1 (0,0:10,0:20) ". Αυτό είναι χρήσιμο γιατί, χωρίς ncdump είναι δύσκολο να γνωρίζουμε τι είναι σε.nc,.ncml, ή.hdfαρχείο και συνεπώς ποιο EDDType θα πρέπει να ορίσετε για GenerateDatasets Xml (στα Αγγλικά). Για ένα.ncΑρχείο ml, αυτό θα εκτυπώσει την έξοδο ncdump για το αποτέλεσμα της.ncΜεταβολές αρχείων ml που εφαρμόζονται στο υποκείμενο.ncή.hdfΑρχείο.  

ΔΑΠ

  • ΔΑΠ είναι ένα πρόγραμμα γραμμής εντολών που μπορείτε να χρησιμοποιήσετε αφού έχετε δημιουργήσει μια πρώτη προσπάθεια στο XML για ένα νέο σύνολο δεδομένων στοdatasets.xml. Με DasDds, μπορείτε επανειλημμένα να ελέγξετε και να βελτιώσετε το XML. Όταν χρησιμοποιείτε το πρόγραμμα DasDds:
    1. Στα Windows, την πρώτη φορά που τρέχετε DasDds, θα πρέπει να επεξεργαστείτε τα DasDds. αρχείο νυχτερίδας με επεξεργαστή κειμένου για να αλλάξετε τη διαδρομή προς το java. exe αρχείο έτσι ώστε τα Windows να μπορούν να βρουνJava.
    2. DasDds σας ζητάει για τοdatasetIDγια το σύνολο δεδομένων που εργάζεστε.
    3. Το DasDds προσπαθεί να δημιουργήσει το σύνολο δεδομένων με αυτόdatasetID.
      • DasDds πάντα εκτυπώνει πολλά διαγνωστικά μηνύματα. Εάν χρησιμοποιείτε "DasDds -verbose", DasDds θα εκτυπώσει περισσότερα διαγνωστικά μηνύματα από το συνηθισμένο.
      • Για ασφάλεια, το DasDds διαγράφει πάντα όλες τις πληροφορίες του συνόλου δεδομένων cached (αρχεία) για το σύνολο δεδομένων πριν από την προσπάθεια δημιουργίας του συνόλου δεδομένων. Αυτό είναι το ισοδύναμο του καθορισμούσκληρή σημαίαΈτσι για τα συγκεντρωτικά σύνολα δεδομένων, ίσως θέλετε να ρυθμίσετε το αρχείοNameRegex προσωρινά για να περιορίσετε τον αριθμό των αρχείων που βρίσκει ο κατασκευαστής δεδομένων.
      • Εάν το σύνολο δεδομένων αποτύχει να φορτώσει (για οποιονδήποτε λόγο) , DasDds θα σταματήσει και να σας δείξει το μήνυμα σφάλματος για το πρώτο σφάλμα που βρίσκει. Μην προσπαθήσεις να μαντέψεις ποιο είναι το πρόβλημα. Διαβάστε προσεκτικά το μήνυμα ΣΦΑΛΜΑ.
        Αν είναι απαραίτητο, διαβάστε τα προηγούμενα διαγνωστικά μηνύματα για να βρείτε περισσότερες ενδείξεις και πληροφορίες, επίσης.
      • Κάντε μια αλλαγή στο XML του συνόλου δεδομένων για να προσπαθήσετε να λύσετε αυτό το πρόβλημα
        και αφήστε το DasDds να προσπαθήσει να δημιουργήσει το σύνολο δεδομένων και πάλι.
      • Αν λύνετε επανειλημμένα κάθε πρόβλημα, θα λύσετε τελικά όλα τα προβλήματα.
        και το σύνολο δεδομένων θα φορτώσει.
    4. Όλες οι έξοδος DasDds (διαγνωστικά και αποτελέσματα) γράφονται στην οθόνη και bigParentΚατάλογος /logs/DasDds.log .
    5. Αν τα DasDds μπορούν να δημιουργήσουν το σύνολο δεδομένων, τα DasDds θα σας δείξουν το.das (Δομή χαρακτηριστικών συνόλου δεδομένων) ,.dds (Περιγραφέας συνόλου δεδομένων Δομή) , και. χρόνοςGaps (Χρονικά κενά) πληροφορίες για το σύνολο δεδομένων στην οθόνη σας και να τα γράψετε bigParentΚατάλογος /logs/DasDds.out .
    6. Συχνά, θα θέλετε να κάνετε κάποια μικρή αλλαγή στο 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.javasets XInclude για επαναχρησιμοποίηση μεταβλητών ορισμών.  

    • Ναι.

Σημειώσεις

Συνεργασία με τοdatasets.xmlΤο αρχείο είναι ένα μη-τριβικό έργο. Παρακαλώ διαβάστε όλες αυτές τις σημειώσεις προσεκτικά. Αφού διαλέξεις έναΤύπος συνόλου δεδομένων, παρακαλώ διαβάστε τη λεπτομερή περιγραφή του προσεκτικά.  

Επιλογή του τύπου συνόλου δεδομένων

Στις περισσότερες περιπτώσεις, υπάρχει μόνο έναERDDAP™τύπος συνόλου δεδομένων που είναι κατάλληλος για μια δεδομένη πηγή δεδομένων. Σε μερικές περιπτώσεις (π.χ.,.ncαρχεία) , υπάρχουν μερικές πιθανότητες, αλλά συνήθως μία από αυτές είναι σίγουρα καλύτερη. Η πρώτη και μεγαλύτερη απόφαση που πρέπει να πάρετε είναι: είναι σκόπιμο να αντιμετωπίσετε το σύνολο δεδομένων ως μια ομάδα πολυδιάστατων συστοιχιών (αν το δείτε,EDDGridΤύποι συνόλου δεδομένων) ή ως πίνακας δεδομένων (αν το δείτε,Τύποι συνόλου δεδομένων EDDTable) .  

Υπηρετώντας τα Δεδομένα Όπως Είναι

Συνήθως, δεν υπάρχει ανάγκη τροποποίησης της πηγής δεδομένων (π.χ., μετατροπή των αρχείων σε κάποιο άλλο τύπο αρχείου) Έτσι ώστεERDDAP™Μπορεί να σερβιριστεί. Μια από τις υποθέσειςERDDAP™είναι ότι η πηγή δεδομένων θα χρησιμοποιηθεί όπως είναι. Συνήθως αυτό λειτουργεί μια χαρά. Ορισμένες εξαιρέσεις είναι:

  • Σχετικές βάσεις δεδομένων και Κασσάνδρα --ERDDAP™μπορούν να εξυπηρετήσουν τα δεδομένα απευθείας από τις σχετικές βάσεις δεδομένων και Κασσάνδρα. Αλλά για την ασφάλεια, την εξισορρόπηση φορτίου, και τα ζητήματα απόδοσης, μπορείτε να επιλέξετε να δημιουργήσετε μια άλλη βάση δεδομένων με τα ίδια δεδομένα ή να αποθηκεύσετε τα δεδομένα γιαNetCDFv3.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™μπορεί να διαβάσει δεδομένα από ορισμένες πηγές δεδομένων πολύ πιο γρήγορα από άλλες. Για παράδειγμα, ανάγνωσηNetCDFv3.ncτα αρχεία είναι γρήγορα και η ανάγνωση αρχείων ASCII είναι πιο αργή. Και αν υπάρχει ένα μεγάλο (> 1000) ή τεράστια (> 10.000) αριθμός αρχείων δεδομένων πηγής,ERDDAP™θα ανταποκριθεί σε κάποια αιτήματα δεδομένων αργά. Συνήθως, η διαφορά δεν είναι αισθητή στους ανθρώπους. Ωστόσο, αν νομίζετε ότιERDDAP™είναι αργή για ένα δεδομένο σύνολο δεδομένων, μπορείτε να επιλέξετε να λύσετε το πρόβλημα γράφοντας τα δεδομένα σε μια πιο αποτελεσματική ρύθμιση (συνήθως: μερικά, καλά δομημένα,NetCDFv3.ncαρχεία) . Για δεδομένα πίνακα, βλέπεαυτή τη συμβουλή.  

Υπόδειξη

Συχνά είναι ευκολότερο να δημιουργηθεί το XML για ένα σύνολο δεδομένων κάνοντας ένα αντίγραφο μιας περιγραφής συνόλου δεδομένων εργασίας στο dataset.xml και στη συνέχεια τροποποιώντας το.

Κωδικοποίηση ειδικών χαρακτήρων

Απόdatasets.xmlείναι ένα αρχείο XML, ΠΡΕΠΕΙ& Κωδικός"&", "<", και ">" σε οποιοδήποτε περιεχόμενο όπως " & amp;",<" και "&gt· Λάθος:<τίτλος> Χρόνος & Δεσμοί</τίτλος> Δεξιά:<τίτλος> Χρόνος & 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 επειδή τα ονόματα της μεταβλητής είναι τα ίδια σε όλα τα σχετικά σύνολα δεδομένων.
  • Για τη μεταβλητή «μακρύ μήκος» και τη μεταβλητή «γεωγραφικό πλάτος»:
    • Χρήση τουdestinationNames " Γεωγραφικό μήκος" και " Πλάτος" μόνο εάν τομονάδεςείναι μοίρες\_ανατολικά και μοίρες\_βόρεια, αντίστοιχα. Εάν τα δεδομένα σας δεν ταιριάζουν με αυτές τις απαιτήσεις, χρησιμοποιήστε διαφορετικά μεταβλητά ονόματα (Για παράδειγμα, x, y, lonRadians, latRadians) .
    • Εάν έχετε δεδομένα γεωγραφικού μήκους και γεωγραφικού πλάτους εκφρασμένα σε διαφορετικές μονάδες και επομένως με διαφορετικέςdestinationNameS, για παράδειγμα, lonRadians και latRadians, Κάντε μια γραφική παράσταση ( datasetID . γράφημα) θα κάνει γραφήματα (για παράδειγμα, χρονοσειρές) αντί για χάρτες.
  • Για τη μεταβλητή "ύψος" και τη "βάθος" μεταβλητή:
    • Χρήση τουdestinationName" υψόμετρο" για τον προσδιορισμό της απόστασης των δεδομένων πάνω από την επιφάνεια της θάλασσας (Θετικές τιμές =" πάνω") . Προαιρετικά, μπορείτε να χρησιμοποιήσετε "υψόμετρο" για αποστάσεις κάτω από το επίπεδο της θάλασσας εάν οι τιμές είναι αρνητικές κάτω από τη θάλασσα (ή αν χρησιμοποιείτε, για παράδειγμα, [<att name="scale\factor" τύπος ="int">- 1</att>] (#κλίμακας συντελεστής) να μετατρέπουν τις τιμές βάθους σε τιμές υψομέτρου.
    • Χρήση τουdestinationName" βάθος" προσδιορισμός της απόστασης των δεδομένων κάτω από την επιφάνεια της θάλασσας (Θετικές τιμές =" κατώτερες τιμές) .
    • Ένα σύνολο δεδομένων μπορεί να μην έχει τόσο "υψόμετρο" όσο και " βάθος" μεταβλητές.
    • Για αυτές τις μεταβλητές ονομασίες, ημονάδεςπρέπει να είναι "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 inERDDAP™με τιμή 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") .
    • Οι τιμές που λείπουν για όλους τους τύπους αριθμητικών δεδομένων εμφανίζονται ως μηδενικές.  

.nc3 αρχεία

  • .nc3 αρχεία δεν υποστηρίζουν εγγενώς κανέναν ανώνυμο ακέραιο τύπο δεδομένων. Πριν από το CF v1.9, η CF δεν υποστήριζε ανυπόγραφους ακέραιους τύπους. Για να ασχοληθεί με αυτό,ERDDAP™2.10+ ακολουθεί το πρότυπο NUG και προσθέτει πάντα ένα "\_Unsigned" χαρακτηριστικό με τιμή " true" ή "false" για να δείξει αν τα δεδομένα είναι από μια ανυπόγραφη ή υπογεγραμμένη μεταβλητή. Όλα τα ακέραια χαρακτηριστικά γράφονται ως υπογεγραμμένα χαρακτηριστικά (π.χ. byte) με υπογεγραμμένες τιμές (π.χ. ubyte)actual\_rangeχαρακτηριστικό με τιμές 0 έως 255, εμφανίζεται ως χαρακτηριστικό byte με τιμές 0 έως -1 (το αντίστροφο της τιμής συμπληρώματος των δύο της τιμής εκτός εμβέλειας). Δεν υπάρχει εύκολος τρόπος να γνωρίζουμε ποια (υπογεγραμμένα) ακέραια χαρακτηριστικά πρέπει να διαβάζονται ως ανυπόγραφα χαρακτηριστικά.ERDDAP™υποστηρίζει το "\_Ανυπόγραφο" χαρακτηριστικό όταν διαβάζει.nc3 αρχεία.
  • .nc3 αρχεία δεν υποστηρίζουν τους τύπους δεδομένων μακρά ή ulong.ERDDAP™ασχολείται με αυτό με την προσωρινή μετατροπή τους σε διπλές μεταβλητές. Τα διπλά μπορεί να αντιπροσωπεύουν ακριβώς όλες τις τιμές μέχρι +/- 9,07,199,254,740,992 που είναι 2^53. Αυτή είναι μια ατελής λύση.Unidataαρνείται να κάνει μια μικρή αναβάθμιση σε.nc3 να αντιμετωπίσει αυτό και τα συναφή προβλήματα, επικαλούμενη.nc4 (μια σημαντική αλλαγή) ως λύση.
  • Προδιαγραφές ΚΙ (πριν από v1.9) είπε ότι υποστηρίζει έναν τύπο char δεδομένων, αλλά είναι ασαφές αν char προορίζεται μόνο ως τα δομικά στοιχεία των συστοιχιών char, τα οποία είναι αποτελεσματικά Strings. Οι ερωτήσεις στη λίστα αλληλογραφίας τους απέδωσαν μόνο συγκεχυμένες απαντήσεις. Λόγω αυτών των επιπλοκών, είναι καλύτερο να αποφευχθεί char μεταβλητέςERDDAP™και να χρησιμοποιείτε μεταβλητές συμβολοσειρών όποτε είναι δυνατόν.
  • Παραδοσιακά,.nc3 αρχεία που υποστηρίζονται μόνο συμβολοσειρές με κωδικοποίηση ASCII (7-bit, #0 - #127) χαρακτήρες. NUG (καιERDDAP) να επεκτείνει ότι (έναρξη ~2017) συμπεριλαμβανομένου του χαρακτηριστικού "\_Encoding" με τιμή "ISO-8859-1" (επέκταση του ASCII που ορίζει όλες τις 256 τιμές κάθε 8-bit χαρακτήρα) ή "UTF-8" για να δείξει πώς κωδικοποιούνται τα δεδομένα συμβολοσειρών. Άλλες κωδικοποιήσεις μπορεί να είναι νόμιμες αλλά αποθαρρύνονται.  

.nc4 αρχεία

  • .nc4 αρχεία υποστηρίζουν όλα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 (την οργάνωση) αρνείται να κάνει μια μικρή αναβάθμιση σεDAP2.0 να ασχοληθεί με αυτό και τα συναφή προβλήματα, επικαλούμενηDAP4 (μια σημαντική αλλαγή) ως λύση.
    • Γιατί;(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™έχει κάποια ειδικά χαρακτηριστικά για να διευκολύνει τους χρήστες να αποκτήσουν πρόσβαση σε αρχεία πολυμέσων. Είναι διαδικασία δύο βημάτων:  

  1. Κάντε κάθε αρχείο προσβάσιμο μέσω της δικής του διεύθυνσης URL, μέσω ενός συστήματος που υποστηρίζει τα αιτήματα εύρους byte. Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να βάλετε τα αρχεία σε έναν κατάλογο πουERDDAP™έχει πρόσβαση σε. (Εάν βρίσκονται σε ένα δοχείο όπως ένα.zipαρχείο, unzip τους, αν και μπορεί να θέλετε να προσφέρετε το.zipαρχείο και στους χρήστες.) Τότε, κάνε έναΠίνακας EDD από αρχείοNamesσύνολο δεδομένων για την πρόσβαση αυτών των αρχείων μέσωERDDAP™, ιδίως μέσωERDDAPΣ"files"σύστημα.

Όλα τα αρχεία που γίνονται προσβάσιμα μέσω του EDDTableFromFileNames καιERDDAPΣ"files"υποστήριξη συστήματοςαιτήματα εύρους byte. Κανονικά, όταν ένας πελάτης (π.χ. περιηγητής) κάνει μια αίτηση σε ένα URL, παίρνει ολόκληρο το αρχείο ως απάντηση. Αλλά με μια αίτηση εύρους byte, η αίτηση καθορίζει μια σειρά bytes από το αρχείο, και ο διακομιστής επιστρέφει μόνο αυτά τα bytes. Αυτό είναι σχετικό εδώ επειδή οι συσκευές αναπαραγωγής ήχου και βίντεο σε προγράμματα περιήγησης λειτουργούν μόνο αν το αρχείο μπορεί να προσπελαστεί μέσω των αιτημάτων εμβέλειας byte.

Προαιρετικό: Εάν έχετε περισσότερα από ένα σύνολα δεδομένων με συσχετιζόμενα αρχεία πολυμέσων, μπορείτε να φτιάξετε μόνο ένα EDDTableFromFileNames που έχει έναν υποφάκελο για κάθε ομάδα αρχείων. Το πλεονέκτημα είναι ότι όταν θέλετε να προσθέσετε νέα αρχεία πολυμέσων για ένα νέο σύνολο δεδομένων, το μόνο που έχετε να κάνετε είναι να δημιουργήσετε ένα νέο φάκελο και να βάλετε τα αρχεία σε αυτό το φάκελο. Ο φάκελος και τα αρχεία θα προστεθούν αυτόματα στο σύνολο δεδομένων EDDTableFromFileNames.

  1. Προαιρετικό: Εάν έχετε ένα σύνολο δεδομένων που περιλαμβάνει αναφορές σε αρχεία πολυμέσων, προσθέστε το στο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 για το αντικείμενο αυτό είναι

https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/2019/235/22/OR\_ABI-L1b-RadC-M6C01\_G17\_s20192352201196\_e20192352203569\_c20192352204013.nc

Το AWS υποστηρίζει μια μικρή παραλλαγή του τρόπου κατασκευής του URL, αλλάERDDAP™απαιτεί αυτή τη συγκεκριμένη μορφή:    https://bucketName.s3.region.amazonaws.com/key
Είναι κοινή πρακτική, όπως και με αυτό το παράδειγμα, να κάνει τα ονόματα κλειδιών να μοιάζουν με ιεραρχική διαδρομή συν ένα όνομα αρχείου, αλλά τεχνικά δεν είναι. Δεδομένου ότι είναι κοινό και χρήσιμο,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 γιαJava2.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™και 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™είναι:
    1. Δημιουργήστε έναν κατάλογο στον υπολογιστή σας για να κρατήσει μερικά αρχεία δεδομένων δοκιμής.

    2. Κατεβάστε δύο αρχεία δεδομένων από την πηγή στον κατάλογο που μόλις δημιουργήσατε.

    3. ΧρήσηΔημιουργία συνόλων δεδομένωνXmlγια την παραγωγή του κομματιούdatasets.xmlγια το σύνολο δεδομένων με βάση τα δύο τοπικά αρχεία δεδομένων.

    4. Ελέγξτε ότι το σύνολο δεδομένων λειτουργεί όπως επιθυμείτεΔΑΠή/και το τοπικό σαςERDDAP.

      Τα ακόλουθα βήματα κάνουν ένα αντίγραφο του συνόλου δεδομένων (που θα πάρει δεδομένα από τον κουβά S3) σε κοινόERDDAP.

    5. Αντιγραφή του κομματιού τουdatasets.xmlγια το σύνολο δεδομένων στοdatasets.xmlγια το κοινόERDDAP™Αυτό θα εξυπηρετήσει τα δεδομένα.

    6. Δημιουργία καταλόγου στο κοινόERDDAPΕίναι τοπικός σκληρός δίσκος για να κρατήσει μια κρύπτη προσωρινών αρχείων. Ο κατάλογος δεν θα χρησιμοποιήσει πολύ χώρο στο δίσκο. (δείτε cacheSizeGB παρακάτω) .

    7. Αλλαγή της τιμής του συνόλου δεδομένων<αρχείοDir> ετικέτα έτσι ώστε να δείχνει τον κατάλογο που μόλις δημιουργήσατε (παρόλο που ο κατάλογος είναι κενός) .

    8. Προσθήκη αλανθάνουσα μνήμηFromUrlετικέτα που καθορίζει το όνομα του συνόλου δεδομένων και το προαιρετικό πρόθεμα (Δηλαδή, κατάλογος) στο συγκεκριμένοAws S3 URL Μορφή πουERDDAP™απαιτεί.

    9. Προσθήκη α [<λανθάνον μέγεθοςGB>] (#Cachefromurl Από τον ουρανό) ετικέτα στο xml του συνόλου δεδομένων (π.χ. το 10 είναι καλή τιμή για τα περισσότερα σύνολα δεδομένων) για να πωERDDAP™για τον περιορισμό του μεγέθους της τοπικής cache (Δηλαδή, μην προσπαθήσεις να κρύψεις όλα τα απομακρυσμένα αρχεία.) .

    10. Δες αν αυτό λειτουργεί στο κοινό.ERDDAP. Σημειώστε ότι την πρώτη φοράERDDAP™φορτώνει το σύνολο δεδομένων, θα πάρει πολύ χρόνο για να φορτώσει, επειδήERDDAP™χρειάζεται να κατεβάσετε και να διαβάσετε όλα τα αρχεία δεδομένων.

Εάν το σύνολο δεδομένων είναι μια τεράστια συλλογή από τεράστια πλέγμα αρχεία δεδομένων, αυτό θα πάρει πολύ καιρό και δεν είναι πρακτικό. Σε ορισμένες περιπτώσεις, για τα ηλεκτρονικά αρχεία δεδομένων,ERDDAP™μπορεί να αποσπάσει τις απαραίτητες πληροφορίες (π.χ. το χρονικό σημείο για τα δεδομένα σε ένα αρχείο δεδομένων σε πλέγμα) από το όνομα αρχείου και να αποφευχθεί αυτό το πρόβλημα. Βλέπεις;Συγκέντρωση μέσω Ονόματα αρχείων.

  1. Προαιρετικά (αλλά ειδικά για τα σύνολα δεδομένων 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"σύστημα.

  1. Άνοιγμα λογαριασμού AWS ERDDAP™χρησιμοποιεί τοAWS SDK γιαJavaγια να πάρετε πληροφορίες κουβά από AWS, έτσι θα πρέπει ναδημιουργία και ενεργοποίηση λογαριασμού AWS. Πολύ μεγάλη δουλειά, με πολλά πράγματα να μάθεις.  
  2. Βάλτε την εντολή 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.

  1. Δημιουργία του URL κουβά στομορφή πουERDDAP™απαιτεί, π.χ., https://noaa-goes17.s3.us-east-1.amazonaws.com , και (για δημόσιους κουβάδες) δοκιμάστε το σε ένα πρόγραμμα περιήγησης για να βεβαιωθείτε ότι επιστρέφει ένα έγγραφο XML το οποίο έχει μια μερική λίστα των περιεχομένων του εν λόγω κουβά.  
  2. ΧρήσηΔημιουργία συνόλων δεδομένων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.

  3. Εάν ακολουθήσετε τις παραπάνω οδηγίες και φορτώσετε το σύνολο δεδομένων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 ΠΡΕΠΕΙ να έχουν την επέκταση.ncml. Δείτε το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: Προσθήκη μιας χρονικής διάστασης με μια ενιαία τιμή Ορίστε..ncml αρχείο που δημιουργεί μια νέα εξωτερική διάσταση (χρόνος, με 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, η οποία είναι μια παραλλαγή τουEDDGridFromNcFiles που αποσυσκευάζει τα συσκευασμένα δεδομένα και τυποποιεί τις τιμές χρόνου σε χαμηλό επίπεδο προκειμένου να ασχοληθεί με μια συλλογή αρχείων που έχουν διαφορετικέςscale\_factors και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Σύμβαση χαρακτηριστικών για την ανακάλυψη συνόλου δεδομένωνπου αναφέρεται ως "UnidataDataset Discovery v1.0" στις παγκόσμιες συμβάσεις καιMetadata\_ConventionsΧαρακτηριστικά.

Εάν τα σύνολα δεδομένων σας χρησιμοποιούν προηγούμενες εκδόσεις του ACDD, σας συνιστούμε να μεταβείτε στο ACDD-1.3. Δεν είναι δύσκολο. Το ACDD-1,3 είναι συμβατό με την έκδοση 1.0. Εναλλαγή, για όλα τα σύνολα δεδομένων (εκτόςEDDGridΑπό το Erddap και τον πίνακα EDD Συστήματα δεδομένων FromErddap) :

  1. Αφαίρεση του νέου υποτιμημένου παγκόσμιουMetadata\_Conventionsχαρακτηριστικό με την προσθήκη (ή με την αλλαγή των υφιστάμενωνMetadata\_Conventionsχαρακτηριστικό)
        <att name="Metadata\\_Conventions">null</att>  

στο παγκόσμιο σύνολο δεδομένων<addAttributes>.   2. Εάν το σύνολο δεδομένων έχει χαρακτηριστικό των συμβάσεων στο παγκόσμιο<addAttributes>, αλλαγή όλων "UnidataDataset 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.25ERDDAP™μπορεί να διαβάσει τοπικά Αρχεία 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σύνολα δεδομένων, όλες οι μεταβλητές δεδομένων ΠΡΕΠΕΙ να χρησιμοποιούν (μετοχή) όλες τις μεταβλητές του άξονα. (Γιατί; Κι αν δεν το κάνουν;)
    • Ταξινόμηση τιμών διάστασης - Σε όλα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Από τα μαθήματα Αρχείων.
    • EDDGridFromMergeIRΑρχείασυγκεντρωτικά δεδομένα από μια ομάδα τοπικών συνεργατών.gzαρχεία.
    • EDDGridΑπό αρχείαNcσυγκεντρωτικά δεδομένα από μια ομάδα τοπικώνNetCDF (v3 ή v4) .ncκαι σχετικά αρχεία.
    • EDDGridΑπό αρχείαNcUnpackedείναι μια παραλλαγή εάνEDDGridFromNcFiles που συγκεντρώνει επίσης δεδομένα από μια ομάδα τοπικώνNetCDF (v3 ή v4) .ncκαι σχετικά αρχεία, τα οποίαERDDAP™ξεπακετάρει σε χαμηλό επίπεδο.
    • EDDGridLonPM180τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιούEDDGridέτσι ώστε να βρίσκονται στο εύρος -180 έως 180.
    • EDDGridΛον0360τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιούEDDGridέτσι ώστε να είναι στην εμβέλεια 0 έως 360.
    • EDDGridΠαράπλευροαθροίσματα δύο ή περισσότεραEDDGridDatasets δίπλα-δίπλα.
    • EDDGridΣυγκέντρωσηΥπάρχουσας διάστασηςαθροίσματα δύο ή περισσότεραEDDGridσύνολα δεδομένων, καθένα από τα οποία έχει διαφορετικό φάσμα τιμών για την πρώτη διάσταση, αλλά πανομοιότυπες τιμές για τις άλλες διαστάσεις.
    • EDDGridΑντιγραφήμπορεί να κάνει ένα τοπικό αντίγραφο ενός άλλουEDDGridΕίναι δεδομένα και εξυπηρετεί δεδομένα από το τοπικό αντίγραφο.  
  • ΌλαEDDGridσύνολα δεδομένων υποστηρίζουν μια ρύθμιση nThreads, η οποία λέειERDDAP™πόσα νήματα να χρησιμοποιήσετε όταν ανταποκρίνεται σε μια αίτηση. Δείτε τοnThreadsτεκμηρίωση για λεπτομέρειες.  

Πίνακας EDD

  • Πίνακας EDD Τα σύνολα δεδομένων χειρίζονται δεδομένα πίνακα.
    • Τα δεδομένα πίνακα μπορούν να αναπαρασταθούν ως πίνακας βάσης δεδομένων με σειρές και στήλες. Κάθε στήλη (μεταβλητή δεδομένων) έχει ένα όνομα, ένα σύνολο χαρακτηριστικών, και αποθηκεύει μόνο έναν τύπο δεδομένων. Κάθε γραμμή έχει μια παρατήρηση (ή ομάδα συναφών τιμών) . Η πηγή δεδομένων μπορεί να έχει τα δεδομένα σε μια διαφορετική δομή δεδομένων, μια πιο περίπλοκη δομή δεδομένων, ή/και πολλαπλά αρχεία δεδομένων, αλλάERDDAP™πρέπει να είναι σε θέση να ισοπεδώσει τα δεδομένα πηγής σε έναν πίνακα που μοιάζει με βάση δεδομένων, προκειμένου να παρουσιάσει τα δεδομένα ως σύνολο δεδομένων πίνακα στους χρήστες τηςERDDAP.
    • Δείτε την πληρέστερη περιγραφή τουΠρότυπο δεδομένων EDDTable.
    • Οι τύποι συνόλου δεδομένων EDDTable είναι:
    • Ναι.

Λεπτομερείς περιγραφές τύπων συνόλου δεδομένων

EDDGridΑπό το Νταπ

EDDGridΑπό το Νταπ χειρίζεται μεταβλητές καννάβου απόDAPΔιακομιστές.

  • Σας συνιστούμε να χρησιμοποιήσετε τοΔημιουργία συνόλων δεδομένων Πρόγραμμα Xmlνα κάνει ένα πρόχειρο σχέδιο τουdatasets.xmlκομμάτι για αυτό το σύνολο δεδομένων. Μπορείτε να συγκεντρώσετε τις πληροφορίες που χρειάζεστε για να τροποποιήσετε αυτό ή να δημιουργήσετε το δικό σας XML για έναEDDGridFromDap 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: μετρήσεις του ρεύματος προς ανατολάς και προς βορρά, σε διάφορα βάθη, αρκετές φορές. Δεδομένου ότι τα βάθη είναι τα ίδια σε κάθε σημείο του χρόνου,EDDGridFromEDDTable μπορεί να δημιουργήσει ένα πλέγμα σύνολο δεδομένων με ένα χρόνο και μια διάσταση βάθους που έχει πρόσβαση στα δεδομένα μέσω του υποκείμενου συνόλου δεδομένων EDDTable.  
  • Δημιουργία συνόλων δεδομένων Xml -- Σας συνιστούμε να χρησιμοποιήσετε τοΔημιουργία συνόλων δεδομένων Πρόγραμμα Xmlνα κάνει ένα πρόχειρο σχέδιο τουdatasets.xmlκομμάτι για αυτό το σύνολο δεδομένων. Μπορείτε να συγκεντρώσετε τις πληροφορίες που χρειάζεστε για να βελτιώσετε το πρόχειρο σχέδιο.  
  • Χαρακτηριστικά πηγής -- Όπως συμβαίνει με όλους τους άλλους τύπους συνόλων δεδομένων,EDDGridFromTable έχει την ιδέα ότι υπάρχουν παγκόσμια πηγή Χαρακτηριστικά καιπαγκόσμιοaddAttributes (προσδιορίζονται στοdatasets.xml) , που συνδυάζονται για να κάνουν το παγκόσμιο συνδυασμένο Χαρακτηριστικά, που είναι αυτά που βλέπουν οι χρήστες. Για παγκόσμια πηγή Χαρακτηριστικά,EDDGridFromEDDTable χρησιμοποιεί το παγκόσμιο συνδυασμένο Χαρακτηριστικά του υποκείμενου συνόλου δεδομένων EDDTable. (Αν το σκεφτείς για ένα λεπτό, είναι λογικό.)

Ομοίως, για κάθεaxisVariable"καιdataVariableΣaddAttributes,EDDGridFromEDDTable χρησιμοποιεί το συνδυασμό της μεταβλητής Χαρακτηριστικά του υποκείμενου συνόλου δεδομένων EDDTable ωςEDDGridΑπό την πηγή της μεταβλητής EDDTable Χαρακτηριστικά. (Αν το σκεφτείς για ένα λεπτό, είναι λογικό.)

Κατά συνέπεια, εάν ο πίνακας EDD έχει καλά μεταδεδομένα, ηEDDGridFromEDDTable συχνά χρειάζεται πολύ λίγαaddAttributesμεταδεδομένα -- μόνο μερικές αλλαγές εδώ και εκεί.

  • dataVariableέναντιaxisVariableΣ... Ο υποκείμενος πίνακας EDD έχει μόνοdataVariableΣ. ΑEDDGridΤο σύνολο δεδομένων FromEDDTable θα έχει κάποιαaxisVariableα (δημιουργήθηκε από κάποιο από τον πίνακα EDDdataVariableα) και μερικάdataVariableα (δημιουργήθηκε από τον υπόλοιπο πίνακα EDDdataVariableα) .Δημιουργία συνόλων δεδομένωνXmlθα κάνει μια εικασία ως προς το ποιος πίνακας EDDdataVariableθα πρέπει να γίνειEDDGridΑπό τον πίνακα EDDaxisVariableΑλλά είναι απλά μια εικασία. Πρέπει να τροποποιήσετε την έξοδο του GenerateDatasetsXml για να καθορίσετε ποιαdataVariableθα γίνειaxisVariables, και με ποια σειρά.  

  • ΆξοναςValues-- Δεν υπάρχει τίποτα σχετικά με το υποκείμενο EDDTable να πειEDDGridΑπό τον πίνακα EDDaxisVariables στην 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 όταν οι τιμές άξονα έχουν αλλάξει (Ειδικότερα, όταν υπάρχουν νέες τιμές για τη χρονική μεταβλητή) . Επί του παρόντος, η μόνη λύση είναι να αλλάξει το χαρακτηριστικό άξοναValuesdatasets.xmlκαι επαναφόρτωσε το σύνολο δεδομένων. Για παράδειγμα, θα μπορούσατε να γράψετε ένα σενάριο

  1. Αναζήτησηdatasets.xmlγια datasetID=" το σύνολο δεδομένωνID " Οπότε δουλεύεις με το σωστό σύνολο δεδομένων.
  2. Αναζήτησηdatasets.xmlγια την επόμενη εμφάνιση η πηγή των μεταβλητώνName
    Έτσι, εργάζεστε με τη σωστή μεταβλητή.
  3. Αναζήτησηdatasets.xmlγια την επόμενη εμφάνιση
        <att name="axisValuesStartStrideStop" type="doubleList">  

Οπότε ξέρεις τη θέση εκκίνησης της ετικέτας. 4. Αναζήτησηdatasets.xmlγια την επόμενη εμφάνιση

        </att>  

ώστε να γνωρίζετε την τελική θέση των τιμών του άξονα. 5. Αντικατάσταση της παλιάς αρχής, διασκελισμός, διακοπή τιμών με τις νέες τιμές. 6. Επικοινώνησε με τηνURL σημαίαςγια να πει το σύνολο δεδομένωνERDDAP™για να ξαναγεμίσει το σύνολο δεδομένων.

Αυτό δεν είναι ιδανικό, αλλά λειτουργεί.  

  • ακρίβεια -- ΠότεEDDGridFromEDDTable ανταποκρίνεται στο αίτημα ενός χρήστη για δεδομένα, μετακινεί μια σειρά δεδομένων από τον πίνακα απόκρισης EDDTable στοEDDGridΔίκτυο απόκρισης. Για να γίνει αυτό, πρέπει να υπολογίσει αν οι τιμές "άξονα" σε μια δεδομένη σειρά στον πίνακα ταιριάζουν με κάποιο συνδυασμό τιμών άξονα στο πλέγμα. Για τους ακέραιους τύπους δεδομένων, είναι εύκολο να προσδιοριστεί αν δύο τιμές είναι ίσες. Αλλά για πλωτήρες και διπλάσια, αυτό φέρνει το τρομερό πρόβλημα των αριθμών κινητής υποδιαστολήςδεν ταιριάζουν ακριβώς. (Για παράδειγμα, 0,2 έναντι 0, 199999999999996) . Στο (Προσπάθησε.) Ασχολήσου με αυτό,EDDGridFromTable σας επιτρέπει να καθορίσετε ένα χαρακτηριστικό ακρίβειας για οποιοδήποτε από ταaxisVariables, που προσδιορίζει τον συνολικό αριθμό δεκαδικών ψηφίων που πρέπει να είναι πανομοιότυπα.
    • Για παράδειγμα,<att name="Ακριβής" τύπος="int">5</att>
    • Για διαφορετικούς τύπους μεταβλητών δεδομένων, υπάρχουν διαφορετικές προκαθορισμένες τιμές ακριβείας. Οι προεπιλεγμένες είναι συνήθως κατάλληλες. Αν δεν είναι, θα πρέπει να ορίσετε διαφορετικές τιμές.
    • ΓιαaxisVariableίναχρόνος ή χρόνος Μεταβλητές γραμματοσήμων, η προεπιλογή είναι πλήρης ακρίβεια (ακριβή ταύτιση) .
    • ΓιαaxisVariables που είναι πλωτήρες, η προκαθορισμένη ακρίβεια είναι 5.
    • ΓιαaxisVariables που είναι διπλά, η προκαθορισμένη ακρίβεια είναι 9.
    • ΓιαaxisVariables που έχουν ακέραιους τύπους δεδομένων,EDDGridFromEDDTable αγνοεί το χαρακτηριστικό ακρίβειας και χρησιμοποιεί πάντα πλήρη ακρίβεια (ακριβή ταύτιση) .  
    • ΠΡΟΕΙΔΟΠΟΙΗΣΗ! Κατά τη μετατροπή ενός κομματιού των δεδομένων πίνακα σε ένα κομμάτι των δεδομένων πλέγματος, εάνEDDGridFromEDDTable δεν μπορεί να ταιριάζει με ένα 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 είναι πολύ μικρό,EDDGridFromEDDTable θα λειτουργήσει πιο αργά, επειδή το πάνω μέρος των πολλαπλών αιτημάτων θα είναι μεγαλύτερη από το χρόνο που αποθηκεύεται με τη λήψη κάποιων υπερβολικών δεδομένων. Αν το κενό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. Για παράδειγμα, εάν το σύνολο δεδομένων έχει 4axisVariables καιdataVariables όπως ανατολικά\[χρόνος\]\[γεωγραφικό πλάτος\]\[γεωγραφικό μήκος\]\[βάθος\], το αριστερό (πρώτη) ο άξονας μεταβλητός είναι ο χρόνος.
  • Εάν<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 είναι η βάση γιαδίκτυα/συσκευές/ομοσπονδίεςτουERDDAPs, τα οποία διανέμουν αποτελεσματικά τη χρήση ΚΜΕ (κυρίως για την κατασκευή χαρτών) , χρήση μνήμης, αποθήκευση συνόλου δεδομένων, και χρήση εύρους ζώνης ενός μεγάλου κέντρου δεδομένων.

Ανακατεύθυνση

  • Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, ότανERDDAP™λαμβάνει αίτημα για δεδομένα ή εικόνες από αυτά τα σύνολα δεδομένων,ERDDAP ανακατευθύνσειςτην αίτηση στο τηλεχειριστήριοERDDAP™Διακομιστής. Το αποτέλεσμα είναι:
    • Αυτό είναι πολύ αποτελεσματικό. (ΚΜΕ, μνήμη και εύρος ζώνης) , γιατί διαφορετικά
      1. Το σύνθετοERDDAP™πρέπει να αποστείλει το αίτημα στο άλλοERDDAP™ (που απαιτεί χρόνο) .
      2. Το άλλοERDDAP™πρέπει να πάρει τα δεδομένα, αναδιαμόρφωση σε αυτό, και να διαβιβάσει τα δεδομένα στο σύνθετοERDDAP.
      3. Το σύνθετο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™Διευθυντής.

Δεν δουλεύει; Τα τοπικά σύνολα δεδομένων σας δεν παραμένουν σε συγχρονισμό με τα απομακρυσμένα σύνολα δεδομένων; Αρκετά πράγματα πρέπει όλα να λειτουργούν σωστά για να λειτουργήσει αυτό το σύστημα έτσι ώστε τα σύνολα δεδομένων σας να παραμείνουν ενημερωμένα. Ελέγξτε κάθε ένα από αυτά τα πράγματα με τη σειρά:

  1. Το δικό σουERDDAP™πρέπει να είναι σε θέση να στείλει μηνύματα ηλεκτρονικού ταχυδρομείου. Δείτε τις ρυθμίσεις email στην εγκατάσταση σας.xml.
  2. Γενικά (αλλά όχι πάντα) , σουERDDAPΣ<βάσηUrl> και<βάσηHttpsUrl> δεν πρέπει να έχει αριθμό θύρας (π.χ., :8080, :8443) . Εάν ναι, χρησιμοποιήστε έναμεσολάβησηνα αφαιρέσετε το λιμάνι από το Url.
  3. Στην εγκατάσταση σας.xml,<συνδρομητήςToRemoteErddapDataset> πρέπει να γίνει πραγματικότητα.
  4. Όταν η τοπική αστυνομία... Το σύνολο δεδομένων FromErddap επαναφορτώνεται, θα πρέπει να στείλει ένα αίτημα στο τηλεχειριστήριοERDDAP™να εγγραφείτε στο απομακρυσμένο σύνολο δεδομένων. Κοίτα στο ημερολόγιο για να δεις αν συμβαίνει αυτό.
  5. Θα πρέπει να πάρετε ένα email ζητώντας σας να επικυρώσετε το αίτημα συνδρομής.
  6. Πρέπει να κάνετε κλικ στο σύνδεσμο σε αυτό το email για να επικυρώσετε το αίτημα συνδρομής.
  7. Το απομακρυσμένοERDDAP™θα πρέπει να πούμε ότι η επικύρωση ήταν επιτυχής. Οποιαδήποτε στιγμή, μπορείτε να ζητήσετε ένα email από το τηλεχειριστήριοERDDAP™με κατάλογο των εκκρεμών και έγκυρων συνδρομών σας. Βλέπε το έντυπο στο απομακρυσμένη βάσηErddapName Ουρλ /erddap/ subscriptions/list.html .
  8. Όταν το απομακρυσμένο σύνολο δεδομένων αλλάζει (π.χ., λαμβάνει πρόσθετα δεδομένα) , το απομακρυσμένοERDDAP™θα πρέπει να προσπαθήσετε να επικοινωνήσετε με το flagURL για σαςERDDAP. Δεν μπορείς να το ελέγξεις, αλλά μπορείς να ρωτήσεις τον διαχειριστή του τηλεχειριστηρίου.ERDDAP™Για να το ελέγξω αυτό.
  9. Το δικό σουERDDAP™θα πρέπει να λάβει αίτηση για τον καθορισμό της εν λόγω σημαίας. Δείτε στο log.txt σας για "setDatasetFlag.txt?" αίτημα (α) και δείτε αν υπάρχει κάποιο μήνυμα σφάλματος που σχετίζεται με τις αιτήσεις.
  10. Το δικό σουERDDAP™θα πρέπει στη συνέχεια να προσπαθήσουμε να επαναφορτώσουμε το σύνολο δεδομένων (Ίσως όχι αμέσως, αλλά αμέσως.) .  

Ενημέρωση max (χρόνος) ♪ ♪

EDDGrid/TableFromErddap datasets αλλάζει τις αποθηκευμένες πληροφορίες τους μόνο για κάθε σύνολο δεδομένων πηγής όταν το σύνολο δεδομένων πηγή είναι" επαναφόρτωσηκαι κάποιες αλλαγές μεταδεδομένων (π.χ. η μεταβλητή του χρόνουactual\_range) , με τον τρόπο αυτό προβαίνει σε κοινοποίηση συνδρομής. Εάν το σύνολο δεδομένων πηγής έχει δεδομένα που αλλάζουν συχνά (για παράδειγμα, νέα δεδομένα κάθε δευτερόλεπτο) και χρησιμοποιεί το" ενημέρωση"σύστημα για την παρατήρηση συχνών αλλαγών στα υποκείμενα δεδομένα,EDDGrid/TableFromErddap δεν θα ενημερωθεί σχετικά με αυτές τις συχνές αλλαγές μέχρι το επόμενο σύνολο δεδομένων " επαναφόρτωση", έτσι ώστε ηEDDGrid/TableFromErddap δεν θα είναι απολύτως ενημερωμένο. Μπορείτε να ελαχιστοποιήσετε αυτό το πρόβλημα αλλάζοντας το σύνολο δεδομένων της πηγής<reloadEveryNminutes> σε μικρότερη τιμή (60; 15;) Έτσι ώστε να υπάρχουν περισσότερες κοινοποιήσεις συνδρομής για να πληροφορηθεί τοEDDGrid/TableFromErddap για να ενημερώσει τις πληροφορίες του σχετικά με το σύνολο δεδομένων πηγή.

Ή, αν το σύστημα διαχείρισης δεδομένων σας γνωρίζει πότε το σύνολο δεδομένων πηγή έχει νέα δεδομένα (π.χ., μέσω σεναρίου που αντιγράφει ένα αρχείο δεδομένων στη θέση του) , και αν αυτό δεν είναι πολύ συχνό (π.χ. κάθε 5 λεπτά, ή λιγότερο συχνές) Υπάρχει καλύτερη λύση.

  1. Μην το χρησιμοποιείς.<updateEveryNMillis> για να κρατάτε τα δεδομένα της πηγής ενημερωμένα.
  2. Ορισμός του συνόλου δεδομένων πηγής<reloadEveryNMinutes> σε μεγαλύτερο αριθμό (1440;) .
  3. Βάλε το σενάριο να επικοινωνήσει με το σύνολο δεδομένων πηγήςURL σημαίαςαμέσως μετά την αντιγραφή ενός νέου αρχείου δεδομένων στη θέση του.  

Αυτό θα οδηγήσει στην πλήρη ενημέρωση του συνόλου των δεδομένων πηγής και θα προκαλέσει τη δημιουργία μιας κοινοποίησης εγγραφής, η οποία θα αποσταλεί στηνEDDGrid/TableFromErddap dataset. Αυτό θα οδηγήσει στηνEDDGrid/TableFromErddap dataset για να είναι απόλυτα ενημερωμένα (Λοιπόν, μέσα σε 5 δευτερόλεπτα από την προσθήκη νέων δεδομένων) . Και όλα αυτά θα γίνουν αποτελεσματικά. (χωρίς περιττές επαναφορτίσεις συνόλου δεδομένων) .  

Όχι.addAttributes,axisVariable, ήdataVariable

Σε αντίθεση με άλλους τύπους συνόλων δεδομένων, EDDTableFromErddap καιEDDGridΑπό τα σύνολα δεδομένων Erddap δεν επιτρέπουν παγκόσμια<addAttributes>,<axisVariable&gt, ή<dataVariable& gt; τμήματα σταdatasets.xmlγια το σύνολο δεδομένων. Το πρόβλημα είναι ότι επιτρέποντας σε αυτούς θα οδηγήσει σε ασυνέπειες:

  1. Ας πούμε ότι επιτράπηκε και πρόσθεσες ένα νέο παγκόσμιο χαρακτηριστικό.
  2. Όταν ένας χρήστης asks σαςERDDAP™Για τα παγκόσμια χαρακτηριστικά, το νέο χαρακτηριστικό θα εμφανιστεί.
  3. Αλλά όταν ένας χρήστης ρωτάει σαςERDDAP™για ένα αρχείο δεδομένων, σαςERDDAP™ανακατευθύνει το αίτημα στην πηγήERDDAP. Αυτό...ERDDAP™δεν γνωρίζει το νέο χαρακτηριστικό. Έτσι, αν δημιουργεί ένα αρχείο δεδομένων με μεταδεδομένα, π.χ., a.ncαρχείο, τα μεταδεδομένα δεν θα έχουν το νέο χαρακτηριστικό.

Υπάρχουν δύο θέσεις εργασίας:

  1. Πείσε τον διαχειριστή της πηγήςERDDAP™για να κάνετε τις αλλαγές που θέλετε στα μεταδεδομένα.
  2. Αντί του EDDTableFromErddap, χρήσηΠίνακας EDD από το DapSequence. Ή αντίEDDGridΑπό το Erddap, χρήσηEDDGridΑπό το Νταπ. Αυτοί οι τύποι EDD σας επιτρέπουν να συνδεθείτε αποτελεσματικά με ένα σύνολο δεδομένων σε ένα απομακρυσμένοERDDAP™ (αλλά χωρίς να ανακατευθύνει τα αιτήματα δεδομένων) και σας επιτρέπουν να συμπεριλάβετε παγκόσμια<addAttributes>,<axisVariable&gt, ή<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 υποστηρίζονται γιαEDDGridFromEtopo, έτσι ώστε να μπορείτε να έχετε πρόσβαση στα δεδομένα με τιμές γεωγραφικού μήκους -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ΑπόΑρχεία για τον χειρισμό του συγκεκριμένου τύπου αρχείου:

  • EDDGridFromMergeIRΑρχείαχειρίζεται δεδομένα από πλέγμαΣυγχώνευση.gzαρχεία.
  • EDDGridΑπό AudioFilesσυγκεντρωτικά δεδομένα από μια ομάδα τοπικών αρχείων ήχου.
  • EDDGridΑπό αρχείαNcχειρίζεται δεδομένα από πλέγμαGRIB .grbαρχεία,HDF (v4 ή v5) .hdfαρχεία,.ncmlαρχεία καιNetCDF (v3 ή v4) .ncαρχεία. Αυτό μπορεί να λειτουργήσει με άλλους τύπους αρχείων (για παράδειγμα, BUFR) , απλά δεν το έχουμε δοκιμάσει -- παρακαλώ στείλτε μας μερικά αρχεία δειγμάτων αν ενδιαφέρεστε.
  • EDDGridΑπό αρχείαNcUnpackedείναι μια παραλλαγή τουEDDGridFromNcFiles που χειρίζεται τα δεδομένα από το πλέγμαNetCDF (v3 ή v4) .ncκαι σχετικά αρχεία, τα οποίαERDDAP™ξεπακετάρει σε χαμηλό επίπεδο.

Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι αρχείων. Αλλά είναι συνήθως σχετικά εύκολο να προσθέσετε υποστήριξη για άλλους τύπους αρχείων. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα. Ή, αν τα δεδομένα σας είναι σε μια παλιά μορφή αρχείου από την οποία θα θέλατε να απομακρυνθείτε, συνιστούμε τη μετατροπή των αρχείων να είναιNetCDFv3.ncαρχεία.NetCDFείναι μια ευρέως υποστηριζόμενη, δυαδική μορφή, επιτρέπει γρήγορη τυχαία πρόσβαση στα δεδομένα, και υποστηρίζεται ήδη απόERDDAP.

Από τα στοιχεία αρχείων

Οι ακόλουθες πληροφορίες ισχύουν για όλες τις υποκατηγορίεςEDDGridΑπό τους Φακέλους.

Συγκέντρωση Υφιστάμενης Διάστασης

Όλες οι παραλλαγέςEDDGridFromFiles μπορεί να συγκεντρώσει δεδομένα από τοπικά αρχεία, όπου κάθε αρχείο έχει 1 (ή περισσότερο) διαφορετικές τιμές για το αριστερό άκρο (πρώτη) διάσταση, συνήθως\[χρόνος\], η οποία θα συγκεντρωθεί. Για παράδειγμα, οι διαστάσεις μπορεί να είναι\[χρόνος\]\[υψόμετρο\]\[γεωγραφικό πλάτος\]\[γεωγραφικό μήκος\], και τα αρχεία μπορεί να έχουν τα δεδομένα για ένα (ή μερικά) Τιμή χρόνου (α) ανά φάκελο. Το σύνολο δεδομένων που προκύπτει φαίνεται σαν όλα τα δεδομένα του αρχείου να είχαν συνδυαστεί. Τα μεγάλα πλεονεκτήματα της συγκέντρωσης είναι:

  • Το μέγεθος του συγκεντρωτικού συνόλου δεδομένων μπορεί να είναι πολύ μεγαλύτερο από ένα μόνο αρχείο μπορεί να είναι βολικά (~2GB) .
  • Για τα δεδομένα σχεδόν πραγματικού χρόνου, είναι εύκολο να προσθέσετε ένα νέο αρχείο με το τελευταίο κομμάτι των δεδομένων. Δεν χρειάζεται να ξαναγράψεις όλο το σύνολο δεδομένων.

Οι απαιτήσεις για τη συγκέντρωση είναι:

  • Τα τοπικά αρχεία δεν χρειάζεται να έχουν το ίδιοdataVariableα (όπως ορίζεται στο σύνολο δεδομένωνdatasets.xml) . Το σύνολο δεδομένων θα έχει τοdataVariableοπdatasets.xml. Εάν ένα δεδομένο αρχείο δεν έχει ένα δεδομένοdataVariable,ERDDAP™θα προσθέσει τις τιμές που λείπουν, όπως απαιτείται.
  • ΌλαdataVariableΟ sΗΓΙΕΣ ΧΡΗΣΗΣaxisVariables/διαστάσεις (όπως ορίζεται στο σύνολο δεδομένωνdatasets.xml) . Τα αρχεία θα συγκεντρωθούν με βάση το πρώτο (αριστερό περισσότερο) διάσταση, ταξινομημένη με αύξουσα σειρά.
  • Κάθε αρχείο μπορεί να έχει δεδομένα για μία ή περισσότερες τιμές της πρώτης διάστασης, αλλά δεν μπορεί να υπάρξει επικάλυψη μεταξύ των αρχείων. Εάν ένα αρχείο έχει περισσότερες από μία τιμές για την πρώτη διάσταση, οι τιμές ΠΡΕΠΕΙ να ταξινομούνται με αύξουσα σειρά, χωρίς δεσμούς.
  • Όλα τα αρχεία ΠΡΕΠΕΙ να έχουν ακριβώς τις ίδιες τιμές για όλες τις άλλες διαστάσεις. Η ακρίβεια της δοκιμής καθορίζεται απόταίριασμαAxisNDigits.
  • Όλα τα αρχεία πρέπει να έχουν ακριβώς το ίδιομονάδεςμεταδεδομένα για όλουςaxisVariables καιdataVariableΣ. Εάν αυτό είναι ένα πρόβλημα, μπορεί να είστε σε θέση να χρησιμοποιήσετεNcMLήNCOγια να διορθώσω το πρόβλημα.  
Συγκέντρωση μέσω ονομάτων αρχείων ή παγκόσμιων μεταδεδομένων

Όλες οι παραλλαγέςEDDGridFromFiles μπορεί επίσης να συγκεντρώσει μια ομάδα αρχείων με την προσθήκη ενός νέου αριστερά (πρώτη) διάσταση, συνήθως χρόνο, με βάση μια τιμή που προέρχεται από κάθε όνομα αρχείου ή από την τιμή ενός παγκόσμιου χαρακτηριστικού που βρίσκεται σε κάθε αρχείο. Για παράδειγμα, το όνομα αρχείου μπορεί να περιλαμβάνει την τιμή χρόνου για τα δεδομένα στο αρχείο.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.  

  • Για όλουςEDDGridFromFiles υποκλάσεις, αν τα αρχεία δεδομένων έχουν μια επέκταση που δείχνει ότι είναι εξωτερικά συμπιεσμένα αρχεία (προς το παρόν:.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™θα χάσουν χρόνο αποσυμπιέζοντας τους όταν χρειάζεται να τα διαβάσει. Για παράδειγμα:

    • αρχεία δεδομένων: π.χ..nc4, και.hdf5 αρχεία: Κάποια αρχεία χρησιμοποιούν εσωτερική συμπίεση, κάποια όχι. Πώς να πει: συμπιεσμένες μεταβλητές έχουν "\_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.  

Για μένα αυτό είναι μια λογική ανταλλαγή δεδομένων για κάθε σύνολο δεδομένων, και σίγουρα για σύνολα δεδομένων που χρησιμοποιούνται σπάνια.  

  • Εσωτερικό έναντι Εξωτερικής Συμπίεσης -- Σε σύγκριση με την εσωτερική συμπίεση αρχείων που προσφέρονται από.nc4 και.hdf5 αρχεία,ERDDAPΗ προσέγγιση του για εξωτερικά συμπιεσμένα δυαδικά αρχεία έχει πλεονεκτήματα και μειονεκτήματα. Το μειονέκτημα είναι: για μια φορά που διαβάζεται ένα μικρό μέρος ενός αρχείου, εσωτερική συμπίεση είναι καλύτερη επειδήEDDGridFromFiles χρειάζεται μόνο να αποσυμπιέσετε μερικά κομμάτια (α) του αρχείου, όχι ολόκληρο το αρχείο. Αλλά...ERDDAPΗ προσέγγιση έχει κάποια πλεονεκτήματα:

    • ERDDAP™υποστηρίζει συμπίεση όλων των τύπων αρχείων δεδομένων (δυαδικό και μη-binary, π.χ.,.nc3 και . csv) Όχι μόνο.nc4 και.hdf4.
    • Αν το μεγαλύτερο μέρος ενός αρχείου πρέπει να διαβαστεί περισσότερες από μία φορές σε σύντομο χρονικό διάστημα, τότε εξοικονομεί χρόνο για να αποσυμπιέσει το αρχείο μία φορά και να το διαβάσει πολλές φορές. Αυτό συμβαίνει στοERDDAP™όταν ένας χρήστης χρησιμοποιεί Make-A-Graph για το σύνολο δεδομένων και κάνει μια σειρά από μικρές αλλαγές στο γράφημα.
    • Η δυνατότητα να έχουν συμπιεσμένα αρχεία και δεν συμπιεσμένα αρχεία στην ίδια συλλογή, σας επιτρέπει περισσότερο έλεγχο πάνω στα οποία τα αρχεία είναι συμπιεσμένα και τα οποία δεν είναι. Και αυτό το πρόσθετο έλεγχο έρχεται χωρίς πραγματικά τροποποίηση του πηγαίου αρχείου (εφόσον μπορείτε να συμπιέσετε ένα αρχείο με π.χ.,.gzκαι στη συνέχεια αποσυμπίεση για να πάρει το αρχικό αρχείο) .
    • Η δυνατότητα αλλαγής ανά πάσα στιγμή εάν ένα δεδομένο αρχείο συμπιέζεται και πώς συμπιέζεται (διαφορετικοί αλγόριθμοι και ρυθμίσεις) Σας δίνει περισσότερο έλεγχο της απόδοσης του συστήματος. Και μπορείτε εύκολα να ανακτήσετε το αρχικό μη συμπιεσμένο αρχείο ανά πάσα στιγμή.

Ενώ καμία προσέγγιση δεν είναι νικήτρια σε όλες τις περιπτώσεις, είναι σαφές ότιERDDAPΗ ικανότητα να εξυπηρετεί δεδομένα από εξωτερικά συμπιεσμένα αρχεία καθιστά την εξωτερική συμπίεση μια λογική εναλλακτική λύση στην εσωτερική συμπίεση που προσφέρεται από.nc4 και.hdf5. Αυτό είναι σημαντικό δεδομένου ότι η εσωτερική συμπίεση είναι ένας από τους κύριους λόγους που οι άνθρωποι επιλέγουν να χρησιμοποιήσουν.nc4 και.hdf5.  

Αποσυμπίεση λανθάνουσας μνήμης

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 RangeshttpΚεφαλίδα)
EDDGridΑπό αρχεία NcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles, και EDDTableFromNcCFFiles, μπορεί μερικές φορές υπηρεσία δεδομένων από.ncαρχεία σε απομακρυσμένους διακομιστές και πρόσβαση μέσω HTTP αν ο διακομιστής υποστηρίζειΥπηρεσία Byteμέσω αιτήσεων εύρους HTTP (τον μηχανισμό HTTP για χρήση byte) . Αυτό είναι δυνατό επειδή το netcdf-java (το οποίοERDDAP™χρήση για ανάγνωση.ncαρχεία) υποστηρίζει την ανάγνωση δεδομένων από απομακρυσμένο.ncαρχεία μέσω αιτήσεων εύρους HTTP.

Μην το κάνεις αυτό! Είναι τρομερά αναποτελεσματικό και αργό. Αντ 'αυτού, χρησιμοποιήστε το [<σύστημα cacheFromUrl>] (#Cachefromurl Από τον ουρανό) .

ΠρόσβασηERDDAP™σύνολα δεδομένων ως αρχεία μέσω των αιτημάτων εύρους byte -- Γυρνώντας αυτό γύρω, δεδομένου ότι μπορείτε (Θεωρητικά) Σκεφτείτε ένα σύνολο δεδομένωνERDDAP™ως γίγαντας.ncαρχείο με προσθήκη ".nc" στη βάση OPENDAPURL για ένα δοσμένο σύνολο δεδομένων (π.χ., 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 φορτώθηκε για πρώτη φορά,EDDGridFromFiles διαβάζει πληροφορίες από όλα τα σχετικά αρχεία και δημιουργεί πίνακες (μία σειρά για κάθε αρχείο) με πληροφορίες για κάθε έγκυρο αρχείο και κάθε "κακό" (διαφορετικό ή μη έγκυρο) Αρχείο.

  • Οι πίνακες αποθηκεύονται επίσης στο δίσκο, όπωςNetCDFv3.ncαρχεία σε bigParentΚατάλογος / σύνολο δεδομένων/ τελευταίο2CharsOfDatasetID / datasetID / σε αρχεία που ονομάζονται: dirTable.nc (που περιέχει μια λίστα με μοναδικά ονόματα καταλόγου) , αρχείο Πίνακας.nc (που περιέχει τον πίνακα με τις πληροφορίες κάθε έγκυρου αρχείου) , κακόΑρχεία.nc (που κρατά τον πίνακα με τις πληροφορίες κάθε κακού αρχείου) .
  • Για να επιταχυνθεί η πρόσβαση σε έναEDDGridΣύνολο δεδομένων από αρχεία (αλλά εις βάρος της χρήσης περισσότερης μνήμης) , μπορείτε να χρησιμοποιήσετε

true
για να πωERDDAP™να κρατήσει ένα αντίγραφο των πινάκων πληροφοριών αρχείων στη μνήμη.

  • Το αντίγραφο των πινάκων πληροφοριών αρχείων στο δίσκο είναι επίσης χρήσιμο ότανERDDAP™κλείνει και επανεκκινείται: αποθηκεύειEDDGridΑπό αρχεία από το να πρέπει να ξαναδιαβάσει όλα τα αρχεία δεδομένων.
  • Όταν ένα σύνολο δεδομένων επαναφορτώνεται,ERDDAP™μόνο χρειάζεται να διαβάσει τα δεδομένα σε νέα αρχεία και αρχεία που έχουν αλλάξει.
  • Εάν ένα αρχείο έχει διαφορετική δομή από τα άλλα αρχεία (για παράδειγμα, ένας διαφορετικός τύπος δεδομένων για μία από τις μεταβλητές, ή μια διαφορετική τιμή για το -μονάδες" χαρακτηριστικό) ,ERDDAPπροσθέτει το αρχείο στη λίστα των "κακών" αρχείων. Πληροφορίες σχετικά με το πρόβλημα με το αρχείο θα γραφτεί στο bigParentΚατάλογος Αρχείο /logs/log.txt.
  • Δεν χρειάζεται να διαγράψετε ή να δουλέψετε με αυτά τα αρχεία. Μια εξαίρεση είναι: αν εξακολουθείτε να κάνετε αλλαγές σε ένα σύνολο δεδομένωνdatasets.xmlρύθμιση, ίσως θέλετε να διαγράψετε αυτά τα αρχεία για να πιέσετεERDDAP™για να ξαναδιαβάσετε όλα τα αρχεία αφού τα αρχεία θα διαβαστούν/ερμηνευθούν διαφορετικά. Αν χρειαστεί ποτέ να διαγράψετε αυτά τα αρχεία, μπορείτε να το κάνετε ότανERDDAP™τρέχει. (Τότε βάλε ένασημαίανα επαναφορτώσει το σύνολο δεδομένων το συντομότερο δυνατόν.) Ωστόσο,ERDDAP™συνήθως παρατηρεί ότι ηdatasets.xmlοι πληροφορίες δεν ταιριάζουν με το αρχείο Πίνακας πληροφοριών και διαγράφει αυτόματα τους πίνακες αρχείων.
  • Αν θέλετε να ενθαρρύνετεERDDAP™για την ενημέρωση των αποθηκευμένων πληροφοριών του συνόλου δεδομένων (για παράδειγμα, εάν μόλις προσθέσατε, αφαιρέσατε ή αλλάξατε κάποια αρχεία στον κατάλογο δεδομένων του συνόλου δεδομένων) , χρήση τουσύστημα σημαίαςστη βίαERDDAP™για να ενημερώσετε τις πληροφορίες του αρχείου cached.  

Αιτήματα χειρισμού

Όταν γίνεται επεξεργασία του αιτήματος ενός πελάτη για δεδομένα,EDDGridFromFiles μπορεί να κοιτάξει γρήγορα στον πίνακα με τις έγκυρες πληροφορίες αρχείων για να δείτε ποια αρχεία έχουν τα ζητούμενα δεδομένα.  

Ενημέρωση των πληροφοριών αρχείου Cached

Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων, οι πληροφορίες του αρχείου σε κρύπτη ενημερώνονται.

  • Το σύνολο δεδομένων επαναφορτώνεται περιοδικά, όπως καθορίζεται από το<reloadEveryNMinutes> στις πληροφορίες του συνόλου δεδομένωνdatasets.xml.
  • Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατό, όποτε αυτό είναι δυνατό.ERDDAP™ανιχνεύει ότι έχετε προσθέσει, αφαιρεθεί,Άγγιξε (για να αλλάξετε το τελευταίο αρχείο Τροποποιημένος χρόνος) ή άλλαξε ένα αρχείο δεδομένων.
  • Το σύνολο δεδομένων επαναφορτώνεται το συντομότερο δυνατόν αν χρησιμοποιήσετε τοσύστημα σημαίας.

Όταν επαναφορτίζεται το σύνολο δεδομένων,ERDDAP™συγκρίνει τα τρέχοντα διαθέσιμα αρχεία με τους πίνακες πληροφοριών αρχείων cached. Νέα αρχεία διαβάζονται και προστίθενται στον έγκυρο πίνακα αρχείων. Τα αρχεία που δεν υπάρχουν πλέον απορρίπτονται από τον έγκυρο πίνακα αρχείων. Τα αρχεία όπου έχει αλλάξει η χρονοσφραγίδα αρχείων διαβάζονται και οι πληροφορίες τους ενημερώνονται. Οι νέοι πίνακες αντικαθιστούν τους παλιούς πίνακες στη μνήμη και στο δίσκο.  

Κακά αρχεία

Ο πίνακας των κακών αρχείων και οι λόγοι που τα αρχεία κηρύχθηκαν άσχημα (κατεστραμμένο αρχείο, λείπουν μεταβλητές, κ.λπ.) στέλνεται με email στο email Τα πάντα Στη διεύθυνση email (Μάλλον εσύ.) κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Θα πρέπει να αντικαταστήσετε ή να επισκευάσετε αυτά τα αρχεία το συντομότερο δυνατόν.  

Αγνοούμενες μεταβλητές

Αν μερικά από τα αρχεία δεν έχουν κάποια από ταdataVariables που ορίζονται στα σύνολα δεδομένωνdatasets.xmlΔεν πειράζει. ΠότεEDDGridFromFiles διαβάζει ένα από αυτά τα αρχεία, θα ενεργεί σαν το αρχείο είχε τη μεταβλητή, αλλά με όλες τις τιμές που λείπουν.  

Πρόβλημα 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) και ανάλογα με τις ρυθμίσεις του συστήματος, ο χρήστης που έτρεξε το πρόγραμμα πρέπει να έχει «διαβασμένη» άδεια για όλη την αλυσίδα καταλόγων που οδηγεί στον κατάλογο που έχει τα αρχεία.  

EDDGridFromFiles σκελετός 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™πρέπει να έχουν πρόσβαση σε μια μεγάλη ποσότητα μνήμης για να εργαστούν με μεγάλα αρχεία ήχου. Βλέπεις;ERDDAPsettings μνήμης. Και πάλι, αν αυτό είναι ένα πρόβλημα, μια έρευνα που μπορείτε να χρησιμοποιήσετε τώρα είναι να διασπάσετε τα αρχεία σε μικρότερα κομμάτια έτσι ώστε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 pseudosourceNameαγια την εξαγωγή πληροφοριών από το όνομα του αρχείου (σχεδόν πάντα η ημερομηνία έναρξης Ώρα για την ηχογράφηση) και την προώθηση να είναι μια στήλη δεδομένων. Για παράδειγμα,
    <sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>

Στη συνέχεια, ο μορφότυπος του χρόνου θα πρέπει να προσδιορίζεται ως χαρακτηριστικό των μονάδων:<att name="μονάδες"> yyyMMdd'\_'Hmmss</att>  

EDDGridFromMergeIRΑρχεία

EDDGridFromMergeIRΑρχεία συγκεντρωτικά στοιχεία από τοπικά,Συγχώνευσηαρχεία, τα οποία είναι από τοτροπική αποστολή μέτρησης βροχοπτώσεων (ΑΤΜΜ) , η οποία αποτελεί κοινή αποστολή μεταξύ της NASA και της Υπηρεσίας Αεροδιαστημικής Εξερεύνησης της Ιαπωνίας (ΙΑΞΑ) . Συγχώνευση Τα αρχεία IR μπορούν να μεταφορτωθούν απόNASA.

EDDGridΑπόMergeIRFiles.java γράφτηκε και συνέβαλε στηνERDDAP™έργο των Jonathan Lafite και Philippe Makowski της R.Tech Engineering (άδεια: πνευματικά δικαιώματα ανοικτού κώδικα) .

EDDGridΑπόMergeIRFiles είναι λίγο ασυνήθιστο:

  • EDDGridFromMergeIRFiles υποστηρίζει συμπιεσμένα ή ασυμπίεστα αρχεία δεδομένων πηγαίου κώδικα, σε οποιοδήποτε συνδυασμό, στο ίδιο σύνολο δεδομένων. Αυτό σας επιτρέπει, για παράδειγμα, να συμπιέσετε παλαιότερα αρχεία που είναι σπάνια προσβάσιμα, αλλά να αποσυμπιέσετε νέα αρχεία που είναι συχνά προσβάσιμα. Ή, μπορείτε να αλλάξετε το είδος της συμπίεσης από την αρχική . 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αρχεία,.ncmlαρχεία,NetCDF (v3 ή v4) .ncαρχεία καιΖαραρχεία (από την έκδοση 2.25) . Τα αρχεία Zarr έχουν ελαφρώς διαφορετική συμπεριφορά και απαιτούν είτε το αρχείοNameRegex είτε το μονοπάτιRegex να περιλαμβάνει " zarr".

Αυτό μπορεί να λειτουργήσει με άλλους τύπους αρχείων (για παράδειγμα, BUFR) Απλά δεν το δοκιμάσαμε. Παρακαλώ στείλτε μας μερικά δείγματα.

  • Για αρχεία GRIB,ERDDAP™θα κάνει ένα αρχείο ευρετηρίου .gbx την πρώτη φορά που διαβάζει κάθε αρχείο GRIB. Έτσι, τα αρχεία GRIB πρέπει να είναι σε έναν κατάλογο όπου ο "χρήστης" που έτρεξε Tomcat έχει ανάγνωση + άδεια εγγραφής.
  • Δες αυτή την τάξη,EDDGridΑπό αρχεία, για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.
  • Ξεκινώντας μεERDDAP™v2.12,EDDGridΑπό αρχεία καιEDDGridΑπό αρχείαNc Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε.nc4 και.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και σχετικά αρχεία. Η διαφορά είναι ότι αυτή η κατηγορία αποσυσκευάζει κάθε αρχείο δεδομένων πρινEDDGridFromFiles κοιτάζει τα αρχεία:

  • Αποσυσκευάζει τις μεταβλητές που είναι γεμάτες με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 Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε.nc4 και.hdfΤέσσερα αρχεία. Για τον προσδιορισμό μιας μεταβλητής που είναι από μια δομή, η<sourceName> πρέπει να χρησιμοποιούν το μορφότυπο: πλήρης δομήName | μέλοςName , για παράδειγμα ομάδα1/myStruct|Το μέλος μου.
  • Σας συνιστούμε να χρησιμοποιήσετε τοΔημιουργία συνόλων δεδομένων Πρόγραμμα Xmlνα κάνει ένα πρόχειρο σχέδιο τουdatasets.xmlκομμάτι για αυτό το σύνολο δεδομένων. Στη συνέχεια, μπορείτε να επεξεργαστείτε αυτό για να το συντονίσει πρόστιμο.

Τα αρχεία Netcdf4 μπορούν να περιέχουν ομάδες. Βλέπεις;τα εν λόγω έγγραφα.

Το πρώτο πράγμα που κάνει η GenerateDatasetsXml για αυτό το είδος συνόλου δεδομένων αφού απαντήσετε στις ερωτήσεις είναι να εκτυπώσετε τη δομή ncdump του αρχείου δείγματος πριν Είναι ξεπακεταρισμένο. Έτσι, αν εισάγετε μερικές χαζές απαντήσεις για τον πρώτο βρόχο μέσω GenerateDatasets Xml, τουλάχιστον θα μπορείτε να δείτε ανERDDAP™μπορεί να διαβάσει το αρχείο και να δει ποιες διαστάσεις και μεταβλητές υπάρχουν στο αρχείο. Στη συνέχεια, μπορείτε να δώσετε καλύτερες απαντήσεις για το δεύτερο βρόχο μέσω GenerateDatasetsXml.

EDDGridLonPM180

EDDGridLonPM180 τροποποιεί τις τιμές γεωγραφικού μήκους ενός παιδιού (κλειστό) EDDGridσύνολο δεδομένων που έχει ορισμένες τιμές γεωγραφικού μήκους μεγαλύτερες από 180 (για παράδειγμα, 0 έως 360) έτσι ώστε να είναι στο εύρος -180 έως 180 (Γεωγραφικό μήκος Plus ή Minus 180, εξ ου και το όνομα) .

  • Αυτό παρέχει έναν τρόπο για να γίνουν σύνολα δεδομένων που έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180 συμμορφούμενες σε / μεOGCυπηρεσίες (Για παράδειγμα, τοWMSεξυπηρετητής inERDDAP) , από όλα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, υπάρχει ένας τύπος ειδικού συνόλου δεδομένων ",EDDGridLonPM180FromErddapCatalog, που σας επιτρέπει να δημιουργήσετε τοdatasets.xmlγιαEDDGridLonPM180 σύνολα δεδομένων από κάθε ένα από τα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 σε μικρότερο αριθμό, έτσι ώστε να είναι πιο πιθανό να πιάσει αλλαγές στο σύνολο δεδομένων παιδιών νωρίτερα.

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, υπάρχει ένας τύπος ειδικού συνόλου δεδομένων ",EDDGridLon0360 Από ErddapCatalog, που σας επιτρέπει να δημιουργήσετε τοdatasets.xmlγιαEDDGridLon0360 σύνολα δεδομένων από κάθε ένα από ταEDDGridσύνολα δεδομένωνERDDAPπου έχουν τιμές γεωγραφικού μήκους μεγαλύτερες από 180. Αυτό διευκολύνει την προσφορά δύο εκδόσεων αυτών των συνόλων δεδομένων: το πρωτότυπο, με τιμές γεωγραφικού μήκους μεταξύ 0 και 360, και το νέο σύνολο δεδομένων, με τιμές γεωγραφικού μήκους μεταξύ -180 και 180.

Το σύνολο δεδομένων για παιδιά σε κάθεEDDGridLon0360 σύνολο δεδομένων θα είναι ένα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 σε μικρότερο αριθμό, έτσι ώστε να είναι πιο πιθανό να πιάσει αλλαγές στο σύνολο δεδομένων παιδιών νωρίτερα.

EDDGridLon0360 σκελετός 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Σ. Αν κάποια ονόματα σε μια οικογένεια είναι ακριβώς τα ίδια, το σύνολο δεδομένων θα αποτύχει να φορτώσει (με το μήνυμα σφάλματος ότι οι τιμές του συγκεντρωτικού άξονα δεν είναι ταξινομημένες) .
  • Επί του παρόντος, το σύνολο δεδομένων για τα παιδιά ΠΡΕΠΕΙ να είναι έναEDDGridFromDap dataset και ΠΡΕΠΕΙ να έχουν τις χαμηλότερες τιμές της συγκεντρωτικής διάστασης (συνήθως οι παλαιότερες τιμές χρόνου) . Όλα τα άλλα παιδιά πρέπει να είναι σχεδόν πανομοιότυπα σύνολα δεδομένων (διαφέρει μόνο στις τιμές της πρώτης διάστασης) και προσδιορίζονται από μόνο τουςsourceUrl.
  • Το συνολικό σύνολο δεδομένων παίρνει τα μεταδεδομένα του από το πρώτο παιδί.
  • ΗΔημιουργία συνόλων δεδομένων Πρόγραμμα Xmlμπορεί να κάνει ένα πρόχειρο σχέδιο τουdatasets.xmlγια αEDDGridAggreateExistingDimension με βάση ένα σύνολο αρχείων που εξυπηρετούνται από ένα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 8601yyyy-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Αντιγραφή Συνιστώμενη χρήση

  1. Δημιουργία του<σύνολο δεδομένων> καταχώρηση (ο φυσικός τύπος, όχιEDDGridΑντιγραφή) για την απομακρυσμένη πηγή δεδομένων. Να λειτουργήσει σωστά, συμπεριλαμβανομένων όλων των επιθυμητών μεταδεδομένων.
  2. Εάν είναι πολύ αργή, προσθέστε XML κώδικα για να το τυλίξετε σε έναEDDGridΑντιγραφή συνόλου δεδομένων.
    • Χρήση διαφορετικήςdatasetID (Ίσως με την αλλαγή τουdatasetIDτων παλαιώνdatasetIDελαφρά) .
    • Αντιγραφή του<προσβάσιμη Στο>,<επαναφόρτωσηEveryNminutes> και<onChange> από το τηλεχειριστήριοEDDGridXML στοEDDGridΕλήφθη XML. (Οι τιμές τους γιαEDDGridΑντιγραφή ύλης· οι τιμές τους για το εσωτερικό σύνολο δεδομένων γίνονται άνευ σημασίας.)
  3. ERDDAP™θα κάνει και θα διατηρήσει ένα τοπικό αντίγραφο των δεδομένων.  
  • ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ:EDDGridΑντιγραφή υποθέτει ότι οι τιμές δεδομένων για κάθε κομμάτι δεν αλλάζουν ποτέ. Αν/όταν το κάνουν, θα πρέπει να διαγράψετε χειροκίνητα τα αρχεία κομματιών στο bigParentΚατάλογος /αντίγραφο/ datasetID / που άλλαξε καισημαίατο σύνολο δεδομένων που θα επαναφορτωθεί ώστε να αντικατασταθούν τα διαγραμμένα κομμάτια. Εάν έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα λάβετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά επαναφορτίζει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.  
  • Όλες οι τιμές άξονα πρέπει να είναι ίσες. Για καθέναν από τους άξονες εκτός από τον αριστερότερο (πρώτη) , όλες οι τιμές πρέπει να είναι ίσες για όλα τα παιδιά. Η ακρίβεια της δοκιμής καθορίζεται απόταίριασμαAxisNDigits.  
  • Settings, Μεταδεδομένα, Μεταβλητές --EDDGridΤο αντίγραφο χρησιμοποιεί ρυθμίσεις, μεταδεδομένα και μεταβλητές από το κλειστό σύνολο δεδομένων πηγής.  
  • Τροποποίηση μεταδεδομένων -- Εάν χρειαστεί να αλλάξετε κάποιαaddAttributesή να αλλάξει τη σειρά των μεταβλητών που συνδέονται με το σύνολο δεδομένων πηγής:
    1. Αλλαγή τουaddAttributesγια το σύνολο δεδομένων πηγής στοdatasets.xml, όπως χρειάζεται.
    2. Διαγράψτε ένα από τα αντιγραφέντα αρχεία.
    3. Ορισμός ασημαίανα επαναφορτώσει το σύνολο δεδομένων αμέσως. Εάν χρησιμοποιείτε μια σημαία και έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα πάρετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά φορτώνει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
    4. Το διαγραμμένο αρχείο θα αναγεννηθεί με τα νέα μεταδεδομένα. Εάν το σύνολο δεδομένων πηγής δεν είναι ποτέ διαθέσιμο, η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, είχαμε πρόβλημα να κάνουμε την Κασσάνδρα να συνεργαστεί με την AdopteOpenJdkJavav8. Πέταξε μια εξαίρεση\_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:

  1. Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το keyspace, το πρόγραμμα θα εμφανίσει μια λίστα με keyspaces
  2. Εάν μπείτε σε ένα συγκεκριμένο χώρο-κλειδί και στη συνέχεια εισάγετε "!!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα του πίνακα, το πρόγραμμα θα εμφανίζει μια λίστα πινάκων σε αυτόν τον χώρο κλειδιών και τις στήλες τους.
Ευαισθησία πεζών/ κεφαλαίων
  • Θήκη-αναίσθητο 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&gt·

Εάν αυτό καθορίζεται,ERDDAP™θα το χρησιμοποιήσει αντί να ζητήσει από την Κασσάνδρα για την κατάτμηση Βασικές πληροφορίες κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Αυτό παρέχει τη λίστα των διακριτών βασικών τιμών χωρισμάτων, με τη σειρά που θα χρησιμοποιηθούν. Οι καιροί πρέπει να προσδιορίζονται ως δευτερόλεπτα από το 1970-01-01T00:00:00Z. Αλλά υπάρχουν επίσης δύο ειδικοί εναλλακτικοί τρόποι για να καθορίσετε τις ώρες (κάθε κωδικοποιημένη ως συμβολοσειρά) :

  1. χρόνος (αISO8601 Χρόνος) (Μπορεί να κωδικοποιηθεί ως συμβολοσειρά)
  2. " χρόνοι (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&gt·

Η Κασσάνδρα δέχεται'='περιορισμοί στις δευτερεύουσες στήλες δείκτη, οι οποίες είναι οι στήλες για τις οποίες έχετε δημιουργήσει ρητά δείκτες μέσω

    CREATE INDEX *indexName* ON *keyspace.tableName* (*columnName*);  

(Ναι, οι παρενθέσεις είναι απαραίτητες.)
Έτσι, είναι πολύ χρήσιμο αν αναγνωρίζετε αυτές τις στήλες μέσω<indexColumnSourceNames>. Αυτό επιτρέπειERDDAP™να συνεργαστεί αποτελεσματικά με την Κασσάνδρα. Αν υπάρχουν στήλες ευρετηρίου και δεν το λεςERDDAP, μερικά ερωτήματα θα είναι άσκοπα, επώδυνα αργά στοERDDAP™και να χρησιμοποιήσει τόνους των πόρων Κασσάνδρα.

  • Για παράδειγμα,<ευρετήριοColumnSourceNames> Index Column μου1, myIndex Column2 </indexColumnΠηγήName>
  • Αν ένας πίνακας Κασσάνδρας δεν έχει στήλες δείκτη, είτε δεν καθορίζει<indexColumnSourceNames>, ή καθορίστε το χωρίς αξία.
  • ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ευρετήρια Κασσάνδρας δεν είναι σαν τα ευρετήρια βάσεων δεδομένων. Τα ευρετήρια Κασσάνδρας βοηθούν μόνο'='περιορισμούς. Και είναι μόνοσυνιστάταιγια στήλες που έχουν πολύ λιγότερες διακριτές τιμές από τις συνολικές.
  • Εξ ορισμού, Κασσάνδρα καιERDDAP™αντιμετώπιση ονομάτων στήλης κατά περίπτωση-αναίσθητο τρόπο. Αλλά αν είστε έτοιμοιστήληNameQuatesέως ",ERDDAP™θα αντιμετωπίζεις τα ονόματα της στήλης της Κασσάνδρας με τρόπο ευαίσθητο στην περίπτωση.  

<maxRequestFraction&gt·

Πότε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>destinationNames σε ένα παγκόσμιο χαρακτηριστικό που ονομάζεται "subsetVariables" προσδιορισμός μεταβλητών που έχουν περιορισμένο αριθμό τιμών. Το σύνολο δεδομένων θα έχει τότε μια σελίδα . subset και θα εμφανίζει λίστες διακριτών τιμών για αυτές τις μεταβλητές σε drop-down λίστες σε πολλές ιστοσελίδες.

Συμπεριλαμβανομένων μόνο βασικών μεταβλητών κατάτμησης και στατικών στηλών στη λίστα είναι STRONGLY ENCO- Ναι. Η Κασσάνδρα θα είναι σε θέση να δημιουργήσει τον κατάλογο των διακριτών συνδυασμών πολύ γρήγορα και εύκολα κάθε φορά που το σύνολο δεδομένων επαναφορτώνεται. Μια εξαίρεση είναι τα πλήκτρα κατατμήσεων χρονοσφραγίδων που είναι χονδροειδείς εκδόσεις κάποιας άλλης στήλης χρονοσφραγίδων -- είναι μάλλον καλύτερο να τα αφήσουμε αυτά εκτός της λίστας των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Είναι...<Τύπος δεδομένων>] (#Τύπος δεδομένων) ετικέτα για ΚασσάνδραdataVariables μπορεί να περιλαμβάνει την τακτική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 inERDDAP™, 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και να δούμε μαςτμήμα για τη λήψη πρόσθετης υποστήριξης.  
  • Αν όλα τα άλλα αποτύχουν, να εξετάσει την αποθήκευση των δεδομένων σε μια συλλογήNetCDFv3.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:

  1. Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα καταλόγου, το πρόγραμμα θα εμφανίσει μια λίστα με τα ονόματα καταλόγου.
  2. Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) Για το όνομα σχήματος, το πρόγραμμα θα εμφανίσει μια λίστα με τα ονόματα σχήματος.
  3. Αν μπείτε "!!!!!!!! (χωρίς τα εισαγωγικά) για το όνομα του πίνακα, το πρόγραμμα θα εμφανίσει μια λίστα πινάκων και των στηλών τους. Η πρώτη "!!!!!!!!!" είσοδος που κάνετε είναι αυτή που θα χρησιμοποιηθεί.
  • Διαβάστε προσεκτικά όλες τις πληροφορίες αυτού του εγγράφου σχετικά με το EDDTableFromDatabase.
  • Μπορείτε να συλλέξετε τις περισσότερες πληροφορίες που χρειάζεστε για να δημιουργήσετε το XML για ένα σύνολο δεδομένων EDDTableFromDatabase επικοινωνώντας με το διαχειριστή της βάσης δεδομένων και ερευνώντας τον ιστό.
  • Αν και οι βάσεις δεδομένων συχνά αντιμετωπίζουν τα ονόματα στήλης και τα ονόματα πίνακα με έναν τρόπο περίπτωση-αναίσθητη, είναι περίπτωση-ευαίσθητη σεERDDAP. Έτσι αν ένα μήνυμα σφάλματος από τη βάση δεδομένων λέει ότι ένα όνομα στήλης είναι άγνωστο (Για παράδειγμα, "Άγνωστο αναγνωριστικό = " στήλη\_όνομα «") Ακόμα κι αν ξέρεις ότι υπάρχει, προσπάθησε να χρησιμοποιήσεις όλα τα κεφάλαια, για παράδειγμα, ΣΥΛΛΟΓΗ\_ΝΑΜΕ , η οποία είναι συχνά η πραγματική, περίπτωση-ευαίσθητη έκδοση του ονόματος στήλης.
  • Συνεργαστείτε στενά με τον διαχειριστή της βάσης δεδομένων, ο οποίος μπορεί να έχει σχετική εμπειρία. Εάν το σύνολο δεδομένων αποτύχει να φορτώσει, διαβάστε τοΜήνυμα σφάλματοςπροσεκτικά για να μάθετε γιατί.  

Οδηγός JDBC

  • [Οδηγός JDBC και<οδηγόςName>] (#jdbc-οδηγός) -- Πρέπει να πάρετε το κατάλληλο αρχείο JDBC 3 ή JDBC 4 οδηγού .jar για τη βάση δεδομένων σας και Βάλτο μέσα. τομκάτ /webapps/erddap/WEB-INF/lib μετά την εγκατάστασηERDDAP. Τότε, στο δικό σουdatasets.xmlγια αυτό το σύνολο δεδομένων, πρέπει να ορίσετε το<οδηγόςName> για αυτόν τον οδηγό, που είναι (Δυστυχώς.) διαφορετικό από το όνομα αρχείου. Αναζήτηση στο διαδίκτυο για τον οδηγό JDBC για τη βάση δεδομένων σας και τον οδηγόName thatJavaΠρέπει να το χρησιμοποιήσεις.

Αφού βάλετε τον οδηγό 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> ετικέτα για μια μεταβλητή χρονοσφραγίδων, σετ

      <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Αντιμετωπίζει το Χρόνο.

Ακέραιος μηδενίζεται

Η υποστήριξη βάσεων δεδομένων μηδενίζει ακέραιο (int, μικρόσωμος, μικροσκοπικός) στήλες, αλλάERDDAP™Δεν υποστηρίζει τα αληθινά μηδενικά. Τα μηδενικά βάσης δεδομένων θα μετατραπούν σεERDDAP™127 για τις στήλες byte, 255 για τις στήλες ubyte, 32767 για τις κοντές στήλες, 65535 για τις στήλες ushort, 2147483647 για τις στήλες int, 4294967295 για τις στήλες uint, 9,223,372,036,854,775,807 για τις μακριές στήλες, ή 18446744073709551615 για τις στήλες ulong. Εάν χρησιμοποιείτε αυτές τις προκαθορισμένες τιμές, παρακαλούμε προσδιορίστε αυτέςmissing\_values για τους χρήστες του συνόλου δεδομένωνERDDAP™με

<att name="\_FillValue" type="int"\>2147483647</att>

ή

<att name="\_FillValue" type="short"\>32767</att>

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το -missing\_value" χαρακτηριστικό αντί του "\ FillValue". Δημιουργία συνόλων δεδομένων Το Xml προσθέτει αυτόματα αυτά τα χαρακτηριστικά \_FillValue όταν παράγει τα προτεινόμεναdatasets.xmlγια σύνολα δεδομένων βάσης δεδομένων.

Για στήλες κινητής βάσης δεδομένων, nulls μετατρέπονται σε NaNs inERDDAP. Για τους τύπους δεδομένων βάσεων δεδομένων που μετατρέπονται σε συμβολοσειρές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&lt;=2008-02-01T00:00:00Z  

θα μετατραπεί στην προετοιμασμένη δήλωση SQL

    SELECT "time", "temperature" FROM *tableName*  
WHERE "time" >= 2008-01-01T00:00:00Z AND "time" &lt;= 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 με άλλους εξυπηρετητές εφαρμογών.

  • Αν όλα τα άλλα αποτύχουν, να εξετάσει την αποθήκευση των δεδομένων σε μια συλλογήNetCDFv3.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. Αυτή η ρύθμιση είναι σημαντική γιατί, διαφορετικά, θα ήταν πολύ εύκολο για έναν χρήστη να ζητήσει EDDTableFromEDDGridΓια να δούμε όλα τα δεδομένα του συνόλου δεδομένων. Αυτό θα πάρει πολύ χρόνο και σχεδόν σίγουρα θα αποτύχει με ένα σφάλμα χρονικού ορίου. Αυτή είναι η ρύθμιση που καθιστά ασφαλές να έχετε EDDTableFromEDDGridσύνολα δεδομένων σαςERDDAPχωρίς φόβο ότι θα οδηγήσουν σε μια παράλογη χρήση των υπολογιστικών πόρων.
  • Εάν το εσώκλειστοEDDGridλέEDDGridΑπό τοErddapκαι τουERDDAP™είναι το ίδιοERDDAP, τότε EDDTableFromEDDGridθα χρησιμοποιεί πάντα την τρέχουσα διαθέσιμη έκδοση του συνόλου δεδομένων αναφοράς άμεσα. Αυτός είναι ένας πολύ αποτελεσματικός τρόπος για EDDTableFromEDDGridγια πρόσβαση στα δεδομένα του δικτύου.
  • Αυτή η τάξη είναι...<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) Αυτό μετράει. Το εσώκλειστοEDDGridΣ<reloadEveryNminutes> αγνοείται.
  • Εάν μια τιμή για [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) παρέχεται για αυτό το σύνολο δεδομένων, αγνοείται. Το εσώκλειστοEDDGridΣ<ενημέρωσηEveryNMillis> είναι αυτό που έχει σημασία.
  • Δημιουργία συνόλων δεδομένωνXmlέχει μια επιλογή για τον τύπο συνόλου δεδομένων=EDDTableFromEDDGridπου ζητά το URL ενόςERDDAP (συνήθως το ίδιοERDDAP) (τέλος σε "/μερίδιο/") και μια κανονική έκφραση. Δημιουργία συνόλων δεδομένων Το Xml θα δημιουργήσει στη συνέχεια το XML για ένα EDDTableFromEDDGridσύνολο δεδομένων για κάθε σύνολο δεδομένων με πλέγμα στοERDDAP™η οποία έχειdatasetIDπου ταιριάζει με την κανονική έκφραση (χρήση . * για να ταιριάζει με όλαdatasetIDs για πλέγματα σύνολα δεδομένων) .

Το κομμάτι 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

αρχείο Dir
  • <αρχείοDir> -- Αυτό καθορίζει τον πηγαίο κατάλογο στο σύστημα αρχείων του διακομιστή με τα αρχεία για αυτό το σύνολο δεδομένων. Τα αρχεία που βρίσκονται πραγματικά στο σύστημα αρχείων του διακομιστή στο<αρχείοDir> θα εμφανιστεί στη στήλη url αυτού του συνόλου δεδομένων μέσα σε έναν εικονικό κατάλογο που ονομάζεται https://serverUrl/erddap/files/datasetID/ . Για παράδειγμα, ανdatasetIDείναι jplMURSSΤ, και του<αρχείοDir> είναι /home/data/mur/ , και αυτός ο κατάλογος έχει ένα αρχείο που ονομάζεται jplMURSST201501003000000.png, τότε το URL που θα εμφανιστεί στους χρήστες για αυτό το αρχείο θα είναι https://serverUrl/erddap/jplMURSST/jplMURSST20150103000000.png .

Εκτός από τη χρήση ενός τοπικού καταλόγου για το<αρχείοDir>, μπορείτε επίσης να καθορίσετε το URL μιας απομακρυσμένης, όπως καταλόγους ιστοσελίδας. Αυτό λειτουργεί με:

από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 inERDDAP™, ιδίως την περιγραφή της ειδικής μορφής που πρέπει να χρησιμοποιείται για το URL του κάδου S3. Και δες. αυτές τις λεπτομέρειες και ένα παράδειγμαχρήση\\\Από το OnTheFly.

αναδρομικό
  • <αναδρομική> -- Αρχεία σε υποκαταλόγους<αρχείοDir> με ονόματα που ταιριάζουν<αρχείοRegex> θα εμφανιστεί στους ίδιους υποκαταλόγους στο"files"URL αν<recursive> έχει οριστεί σε αλήθεια. Η προεπιλογή είναι ψευδής.
  • [<διαδρομήRegex>] (#παθρεγκέξ) -- Αν αναδρομικό=αληθινό, μόνο ονόματα καταλόγου που ταιριάζουν με την διαδρομήRegex (Προκαθορισμένο=".\*") θα γίνει δεκτή. Αν αναδρομική=ψευδής, αυτό αγνοείται. Αυτό σπάνια χρησιμοποιείται, αλλά μπορεί να είναι πολύ χρήσιμο σε ασυνήθιστες συνθήκες. (Δες αυτό.τεκμηρίωση regexκαιregex φροντιστήριο.)
αρχείοRegex
  • <αρχείοRegex> -- Μόνο τα ονόματα αρχείων όπου ολόκληρο το όνομα αρχείου (μη συμπερίληψη του ονόματος καταλόγου) ται με το<Το αρχείο Regex> θα συμπεριληφθεί σε αυτό το σύνολο δεδομένων. Για παράδειγμα, jplMURSSΤ. {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>

Στην περίπτωση της μεταβλητής ώρας, εάν ένα αρχείο έχει το όνομα jplMURSST2015010300000.png, το απόσπασμαRegex θα ταιριάζει με το όνομα αρχείου, εξαγωγή των χαρακτήρων που ταιριάζουν με την πρώτη ομάδα σύλληψης ("201501003000000") Ως dataType= Στρινγκ, τότε χρησιμοποιήστε τομονάδες κατάλληλες για χρόνους συμβολοσειράςγια την ανάλυση των συμβολοσειρών σε τιμές δεδομένων χρόνου (2015-01-03T00:00:00Z) .

Στην περίπτωση της μεταβλητής ημέρας, εάν ένα αρχείο έχει το όνομα jplMURSST2015010300000.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 (ή.ncml) αρχεία με διάφορες μεταβλητές, το καθένα με κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) .
  • Πίνακας EDD από αρχείαNcσυγκεντρωτικά δεδομένα απόNetCDF (v3 ή v4) .nc (ή.ncml) αρχεία με διάφορες μεταβλητές, το καθένα με κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) . Είναι καλό να συνεχίσετε να χρησιμοποιείτε αυτόν τον τύπο συνόλου δεδομένων για τα υπάρχοντα σύνολα δεδομένων, αλλά για τα νέα σύνολα δεδομένων συνιστούμε τη χρήση του EDDTableFromMultidimNcFiles αντί.
  • Πίνακας EDDFromNcCFΑρχείασυγκεντρωτικά δεδομένα απόNetCDF (v3 ή v4) .nc (ή.ncml) αρχεία που χρησιμοποιούν μία από τις μορφές αρχείων που καθορίζονται από τηνΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Συμβάσεις. Αλλά για αρχεία που χρησιμοποιούν μια από τις πολυδιάστατες παραλλαγές CF DSG, χρήσηΠίνακας EDD από αρχεία MultidimNcΑντ' αυτού.
  • Πίνακας EDDFromNccsvFilesσυγκεντρωτικά δεδομένα απόNCCSVΑρχεία ASCII .csv.
  • Πίνακας EDDFromParquetFilesχειρίζεται τα δεδομένα απόΠαρκέ.
  • Πίνακας EDD από τα αρχεία Thredds (ΙΔΙΑΙΤΕΡΟ) συγκεντρωτικά δεδομένα από αρχεία με διάφορες μεταβλητές με κοινές διαστάσεις εξυπηρετούνται από έναΤΡΙΤΕΣOPeNDAPεξυπηρετητής.
  • Πίνακας EDD απόWFSΑρχεία (ΙΔΙΑΙΤΕΡΟ) κάνει ένα τοπικό αντίγραφο όλων των δεδομένων από έναArcGISΕξυπηρετητής χαρτώνWFSδιακομιστής έτσι ώστε τα δεδομένα να μπορούν στη συνέχεια να διατηρούνται γρήγοραERDDAP™χρήστες.

Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι αρχείων. Αλλά είναι συνήθως σχετικά εύκολο να προσθέσετε υποστήριξη για άλλους τύπους αρχείων. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα. Ή, αν τα δεδομένα σας είναι σε μια παλιά μορφή αρχείου από την οποία θα θέλατε να απομακρυνθείτε, συνιστούμε τη μετατροπή των αρχείων να είναιNetCDFv3.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 διαβάζει πληροφορίες από όλα τα σχετικά αρχεία και δημιουργεί πίνακες (μία σειρά για κάθε αρχείο) με πληροφορίες για κάθε έγκυρο αρχείο και κάθε "κακό" (διαφορετικό ή μη έγκυρο) Αρχείο.
    • Οι πίνακες αποθηκεύονται επίσης στο δίσκο, όπωςNetCDFv3.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 (Μάλλον εσύ.) κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων. Θα πρέπει να αντικαταστήσετε ή να επισκευάσετε αυτά τα αρχεία το συντομότερο δυνατόν.  

Αγνοούμενες μεταβλητές

Αν μερικά από τα αρχεία δεν έχουν κάποια από ταdataVariables που ορίζονται στα σύνολα δεδομένωνdatasets.xmlΔεν πειράζει. Όταν το EDDTableFromFiles διαβάζει ένα από αυτά τα αρχεία, θα ενεργεί σαν το αρχείο να είχε τη μεταβλητή, αλλά με όλες τις τιμές που λείπουν.  

Κοντά σε δεδομένα πραγματικού χρόνου
  • EDDTableFromFiles αντιμετωπίζει τις αιτήσεις για πολύ πρόσφατα δεδομένα ως ειδική περίπτωση. Το πρόβλημα: Εάν τα αρχεία που απαρτίζουν το σύνολο δεδομένων ενημερώνονται συχνά, είναι πιθανό ότι το σύνολο δεδομένων δεν θα ενημερώνεται κάθε φορά που ένα αρχείο αλλάζει. Έτσι ο πίνακας EDDFromFiles δεν θα γνωρίζει τα αλλαγμένα αρχεία. (Θα μπορούσες να χρησιμοποιήσεις τοσύστημα σημαίας, αλλά αυτό μπορεί να οδηγήσει σεERDDAP™επαναφόρτωση του συνόλου δεδομένων σχεδόν συνεχώς. Έτσι, στις περισσότερες περιπτώσεις, δεν το προτείνουμε.) Αντ 'αυτού, EDDTableFromFiles ασχολείται με αυτό με το ακόλουθο σύστημα: ΠότεERDDAP™λαμβάνει αίτημα για δεδομένα εντός των τελευταίων 20 ωρών (για παράδειγμα, πριν από 8 ώρες μέχρι τώρα) ,ERDDAP™θα ψάξει όλα τα αρχεία που έχουν οποιαδήποτε δεδομένα τις τελευταίες 20 ώρες. Έτσι,ERDDAP™δεν χρειάζεται να έχει πλήρως ενημερωμένα δεδομένα για όλα τα αρχεία, προκειμένου να βρει τα τελευταία δεδομένα. Θα πρέπει ακόμα να ρυθμίσετε [<επαναφόρτωση Κάθε λεπτό>] (#να ξαναγεμίσω κάθε λεπτό) σε εύλογα μικρή τιμή (για παράδειγμα, 60) , αλλά δεν χρειάζεται να είναι μικρό (για παράδειγμα, 3) .  
    • Δεν συνιστάται οργάνωση δεδομένων σχεδόν πραγματικού χρόνου στα αρχεία: Εάν, για παράδειγμα, έχετε ένα σύνολο δεδομένων που αποθηκεύει δεδομένα για πολλούς σταθμούς (ή σημαδούρα, ή τροχιά, ...) Για πολλά χρόνια, θα μπορούσατε να κανονίσετε τα αρχεία έτσι ώστε, για παράδειγμα, υπάρχει ένα αρχείο ανά σταθμό. Αλλά μετά, κάθε φορά που έρχονται νέα δεδομένα για ένα σταθμό, πρέπει να διαβάζεις ένα μεγάλο παλιό αρχείο και να γράφεις ένα μεγάλο νέο αρχείο. Και πότεERDDAP™επαναφορτώνει το σύνολο δεδομένων, παρατηρεί ότι κάποια αρχεία έχουν τροποποιηθεί, οπότε διαβάζει αυτά τα αρχεία εντελώς. Αυτό είναι αναποτελεσματικό.  

    • Συνιστώμενη οργάνωση δεδομένων σχεδόν πραγματικού χρόνου στα αρχεία: Αποθήκευση των δεδομένων σε κομμάτια, για παράδειγμα, όλα τα δεδομένα για ένα σταθμό / buoy / trajectory για ένα έτος (ή ένα μήνα) . Μετά, όταν έρχεται ένα νέο δεδομένο, μόνο ο φάκελος με τα φετινά (ή του μήνα) τα δεδομένα επηρεάζονται.

    • Καλύτερο: ΧρήσηNetCDFv3.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 με μια λίστα αρχείων ενός απομακρυσμένου συνόλου δεδομένων από μια απομακρυσμένη λίστα αρχείων.

      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 απομακρυσμένο αρχείο κάθε φορά.
    • Η<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™μπορεί να είναι αργή να ανταποκριθεί σε αιτήματα για δεδομένα από το εν λόγω σύνολο δεδομένων. Υπάρχουν δύο ζητήματα εδώ:  

  1. Ο αριθμός των αρχείων ανά κατάλογο. Εσωτερικά,ERDDAP™λειτουργεί με την ίδια ταχύτητα ανεξάρτητα από το αν n αρχεία είναι σε έναν κατάλογο ή διασκορπίζονται σε διάφορους καταλόγους.   Αλλά υπάρχει ένα πρόβλημα: Όσο περισσότερα αρχεία σε έναν δοσμένο κατάλογο, τόσο πιο αργό είναι το λειτουργικό σύστημα στην επιστροφή της λίστας των αρχείων στον κατάλογο (ανά αρχείο) προςERDDAP. Ο χρόνος απόκρισης μπορεί να είναι 0 (n log n) . Είναι δύσκολο να πούμε πόσα αρχεία σε έναν κατάλογο είναι πάρα πολλά, αλλά 10.000 είναι πιθανώς πάρα πολλά. Έτσι, αν η εγκατάσταση σας παράγει πολλά αρχεία, μια σύσταση εδώ μπορεί να είναι: βάλτε τα αρχεία σε λογικά οργανωμένους υποκαταλόγους (π.χ. σταθμός ή σταθμός/έτος) .

Ένας άλλος λόγος για να χρησιμοποιήσετε subdirectories: αν ένας χρήστης θέλει να χρησιμοποιήσειERDDAPΣ"files"σύστημα για να βρείτε το όνομα του παλαιότερου αρχείου για το σταθμό Χ, είναι πιο γρήγορο και πιο αποτελεσματικό αν τα αρχεία είναι στο σταθμό / έτος subdirectories, επειδή πολύ λιγότερες πληροφορίες πρέπει να μεταφερθούν.

  1. Ο συνολικός αριθμός των αρχείων. Για σύνολα δεδομένων πίνακα,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™ανταποκρίνεται αργά σε άλλα αιτήματα) .

Ευτυχώς, υπάρχει μια λύση.

  1. Set του συνόλου δεδομένων σε μη δημόσιοERDDAP™ (Τον προσωπικό σου υπολογιστή;) .
  2. Δημιουργία και εκτέλεση σεναρίου που απαιτεί μια σειρά από.ncCF αρχεία, το καθένα με ένα μεγάλο κομμάτι του συνόλου δεδομένων, συνήθως μια χρονική περίοδο (για παράδειγμα, όλα τα δεδομένα για ένα δεδομένο μήνα) . Επιλέξτε το χρονικό διάστημα έτσι ώστε όλα τα αρχεία που προκύπτουν να είναι λιγότερα από 2GB (αλλά ελπίζω μεγαλύτερη από 1GB) . Αν το σύνολο δεδομένων έχει δεδομένα σχεδόν πραγματικού χρόνου, εκτελέστε το σενάριο για την αναγέννηση του αρχείου για την τρέχουσα χρονική περίοδο (π.χ. αυτό το μήνα) συχνά (κάθε 10 λεπτά; Κάθε ώρα;) . ΑιτήσειςERDDAP™για.ncΤα αρχεία CF δημιουργούν έναNetCDFv3.ncαρχείο που χρησιμοποιεί τοΚΦ Διακριτές γεωμετρίες δειγματοληψίας (DSG) Contiguous Ragged Array data constructions).
  3. 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 pseudosourceNameΑντ' αυτού.\]
Το 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 υποστηρίζει μερικά ψευδοsourceNames που εξάγουν μια τιμή από κάποιο άλλο μέρος (π.χ. το όνομα του αρχείου ή η αξία ενός παγκόσμιου χαρακτηριστικού) και να προωθήσει αυτή την τιμή να είναι μια στήλη των σταθερών τιμών για αυτό το κομμάτι των δεδομένων (π.χ. ο πίνακας των δεδομένων αυτού του αρχείου) . Για αυτές τις μεταβλητές, πρέπει να προσδιορίσετε τον τύπο δεδομένων της μεταβλητής μέσω του [<Τύπος δεδομένων>] (#Τύπος δεδομένων) Ταγκ. Εάν οι εξαχθείσες πληροφορίες είναι μια συμβολοσειρά ημερομηνίας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) της καθορισμένης μεταβλητής (για παράδειγμα, μέσο) και να δημιουργήσει μια στήλη γεμάτη με την αξία του χαρακτηριστικού. Η μητρική μεταβλητή (για παράδειγμα, μέσο) Δεν χρειάζεται να είναι ένας από τουςdataVariables που περιλαμβάνονται στον ορισμό του συνόλου δεδομένωνERDDAP. Για παράδειγμα,

        <sourceName>variable:instrument:ID</sourceName>

Αυτό είναι χρήσιμο όταν το χαρακτηριστικό έχει διαφορετικές τιμές σε διαφορετικά πηγαία αρχεία, γιατί διαφορετικά, οι χρήστες θα έβλεπαν μόνο μία από αυτές τις τιμές για ολόκληρο το σύνολο δεδομένων.

Όταν προωθείτε ένα χαρακτηριστικό να είναι τα δεδομένα,ERDDAP™αφαιρεί το αντίστοιχο χαρακτηριστικό. Αυτό είναι κατάλληλο επειδή η τιμή είναι πιθανώς διαφορετική σε κάθε αρχείο, ενώ στο σύνολο συγκεντρωτικών δεδομένωνERDDAP™Θα έχει μόνο μία αξία. Αν θέλετε, μπορείτε να προσθέσετε μια νέα τιμή για το χαρακτηριστικό για το σύνολο δεδομένων με την προσθήκη<att name=" χαρακτηριστικό Όνομα "> νέο Τιμή </att> στη μεταβλητή του [<addAttributes>] (#Προσθήκες) . Για χαρακτηριστικά πουERDDAP™απαιτεί, για παράδειγμα,ioos\_category (ανάλογα με την εγκατάσταση σας) , ΠΡΕΠΕΙ να προσθέσετε μια νέα αξία για το χαρακτηριστικό.

αρχείοNamesourceNameα

Μπορείτε να εξαγάγετε μέρος του αρχείου ενός αρχείου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 (η πρώτη ομάδα σύλληψης) Αλλά μπορεί να είναι οποιοσδήποτε αριθμός.  

ΔιαδρομήNamesourceNameα

Μπορείτε να εξαγάγετε μέρος της πλήρους διαδρομής ενός αρχείου Όνομα (/καταλόγους/αρχείο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. Οι αλλαγές είναι το άθροισμα κάποιου συνδυασμού:

  1. Αποσυσκευασία Αυτό κάνει πολλές κοινές και ασφαλείς λειτουργίες για την τυποποίηση αριθμητικών στηλών στα αρχεία:
    • Εάν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™τυπική ελλείπουσα τιμή\].  
  2. Τυποποίηση Numeric Times Εάν μια αριθμητική στήλη έχει αριθμητικές χρονικές μονάδες τύπου CF (" χρόνοςUnits από Βασικός χρόνος ", π.χ., "ημέρες από 1900-01-01") , αυτό μετατρέπει την ημερομηνία Χρονικές τιμές σε"seconds since 1970-01-01T00:00:00Z"τιμές και αλλαγές του χαρακτηριστικού μονάδων για να το υποδείξει αυτό. Εάν αυτό είναι επιλεγμένο και υπάρχει πιθανότητα αυτή η μεταβλητή να έχειscale\_factorήadd\_offset, # 1 ΠΡΕΠΕΙ να επιλεγεί επίσης.  
  3. Εφαρμογή συμβολοσειράςmissing\_value
    Εάν μια στήλη συμβολοσειρών έχει \_FillValue ή/καιmissing\_valueχαρακτηριστικά, αυτό μετατρέπει αυτές τις τιμές σε "" και αφαιρεί τα χαρακτηριστικά.  
  4. Αναζήτηση αριθμητικού αριθμούmissing\_value
    Εάν μια αριθμητική στήλη δεν έχει \_FillValue ήmissing\_valueχαρακτηριστικά, αυτό προσπαθεί να προσδιορίσει ένα μη καθορισμένο αριθμητικόmissing\_value (π.χ., -999, 999, 1e37f) και μετατροπή των περιπτώσεων της στις "τυποποιημένες" τιμές (MAX\_VALUE για ακέραιους τύπους, και NAN για διπλά και πλωτήρες) . Αυτή η επιλογή έχει κίνδυνο: εάν η μεγαλύτερη ή μικρότερη έγκυρη τιμή δεδομένων μοιάζει με ελλείπουσα τιμή (π.χ., 999) , τότε αυτές οι έγκυρες τιμές δεδομένων θα μετατραπούν σε ελλείπουσες τιμές (π.χ. NaN) .  
  5. Αλλαγή συμβολοσειρά "N/A" σε "" Για κάθε στήλη συμβολοσειρών, μετατρέψετε αρκετές συμβολοσειρές που χρησιμοποιούνται συνήθως για να υποδείξει μια ελλείπουσα τιμή συμβολοσειράς σε "". Αυτή τη στιγμή, αυτό ψάχνει για ",,, "-", "?"?"?"?"????"?"?"?"?"?"?"?"?"?"?"."."."."."."."."." " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "", "",",",",",",",",",",",",." " " " "."." " " " " " " " " " " " "",",", " " " "", " " " " " "",",",", "",",",",",",", " " " " " " " " " " " " " " " " " "", "",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",",", Η αναζήτηση συμβολοσειρών είναι αναίσθητη και εφαρμόζεται μετά την περικοπή των συμβολοσειρών. "και"και "άλλη" δεν είναι συγκεκριμένα στη λίστα. Αυτή η επιλογή έχει κίνδυνο: συμβολοσειρές που θεωρείτε έγκυρες τιμές μπορεί να μετατραπούν σε "".  
  6. Τυποποίηση σε συμβολοσειρά ISO 8601 Datetimes Για κάθε στήλη συμβολοσειρών, προσπαθήστε να μετατρέψετε μη-καθαρά-αριθμητική ημερομηνία συμβολοσειράςTimes (π.χ., "Ιαν 2, 2018") στο ISO 8601 Ημερομηνία συμβολοσειράς ("2018-01-02") . Σημείωση ότι όλες οι τιμές δεδομένων για τη στήλη πρέπει να χρησιμοποιούν την ίδια μορφή, διαφορετικά, αυτή η επιλογή δεν θα κάνει καμία αλλαγή σε μια δεδομένη στήλη. Αυτή η επιλογή έχει κίνδυνο: Αν υπάρχει μια στήλη με τιμές συμβολοσειρών που απλά τυχαίνει να μοιάζουν με μια κοινή ημερομηνία Μορφή χρόνου, θα μετατραπούν σε ISO 8601 Ημερομηνία συμβολοσειράςTimes.  
  7. Τυποποίηση Συμπαγείς ημερομηνίες σε ISO 8601 ημερομηνίες Για κάθε στήλη συμβολοσειρών ή ακέραιου τύπου, προσπαθήστε να μετατρέψετε καθαρά αριθμητική ημερομηνία συμβολοσειράςTimes (π.χ., "20180102"") στο ISO 8601 Ημερομηνία συμβολοσειράς ("2018-01-02") . Σημείωση ότι όλες οι τιμές δεδομένων για τη στήλη πρέπει να χρησιμοποιούν την ίδια μορφή, διαφορετικά, αυτή η επιλογή δεν θα κάνει καμία αλλαγή σε μια δεδομένη στήλη. Αυτή η επιλογή έχει κίνδυνο: Αν υπάρχει στήλη με τιμές που δεν είναι συμπαγείς ημερομηνίες Χρόνοι αλλά μοιάζουν με συμπαγείς ημερομηνίες, θα μετατραπούν σε ISO 8601 ημερομηνία συμβολοσειρώνTimes.  
  8. Τυποποίηση μονάδων Αυτό προσπαθεί να τυποποιήσει τη συμβολοσειρά μονάδων για κάθε μεταβλητή. Για παράδειγμα, "μέτρα ανά δευτερόλεπτο", "μέτρο/δευτερόλεπτο","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να κάνει το σύνολο δεδομένων σας να λειτουργήσει όπως θέλετε να. Η καλύτερη προσέγγιση (όπως πάντα) είναι:
    1. ΧρήσηΔημιουργία συνόλων δεδομένωνXmlκαι να καθορίσει την τιμή της τυποποίησης Τι θα θέλατε να χρησιμοποιήσετε.
    2. ΧρήσηΔΑΠγια να εξασφαλιστεί ότι το σύνολο δεδομένων φορτώνει σωστά και αντικατοπτρίζει το πρότυπο Τι ρύθμιση που προσδιόρισες.
    3. Δοκιμή του συνόλου δεδομένων με το χέρι όταν είναι σε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&gt·
  • [<skipHeaderToRegex>] (#skipheadertoregex (στα Αγγλικά)) -- Εκλεκτικό. (Για EDDTableFromAsciiFiles και EDDTableFromColumnarAsciiFiles datasets only.)
    Όταν το EDDTableFromAsciiFiles διαβάζει ένα αρχείο δεδομένων, θα αγνοεί όλες τις γραμμές μέχρι και τη γραμμή που ταιριάζει με αυτή την κανονική έκφραση. Η προεπιλογή είναι "", η οποία δεν χρησιμοποιεί αυτή την επιλογή. Ένα παράδειγμα είναι
    <skipHeaderToRegex>\\\*\\\*\\\* END OF HEADER.\\*<skipHeaderToRegex>  

που θα αγνοήσει όλες τις γραμμές μέχρι και συμπεριλαμβανομένης μιας γραμμής που ξεκινά με -\\~ Τέλος επικεφαλή ~

Όταν χρησιμοποιείτε αυτή την ετικέτα,<στήληNamesRow> και<firstDataRow> ενεργούν σαν να έχει αφαιρεθεί η κεφαλίδα πριν από την ανάγνωση του αρχείου. Για παράδειγμα, θα χρησιμοποιούσατε στήληNamesRow=0 αν τα ονόματα στήλης είναι στη σειρά αμέσως μετά την επικεφαλίδα.

Αν θέλετε να χρησιμοποιήσετε την παραγωγή Σύνολα δεδομένων Xml με ένα σύνολο δεδομένων που χρειάζεται αυτή την ετικέτα:

  1. Κάντε ένα νέο, προσωρινό, δείγμα αρχείο με την αντιγραφή ενός υπάρχοντος αρχείου και την αφαίρεση της κεφαλίδας.
  2. Εκτέλεση παραγωγής Σύνολα δεδομένων Xml και προσδιορίστε το αρχείο του δείγματος.
  3. Χειροκίνητα προσθέστε το<skipHeaderToRegex> ετικέτα στοdatasets.xmlΚομμάτι.
  4. Διαγράψτε το προσωρινό αρχείο, δείγμα.
  5. Χρήση του συνόλου δεδομένωνERDDAP.
<skipLinesRegex&gt·

Εκλεκτικό. (Για 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 για να χειριστείτε συγκεκριμένους τύπους υπηρεσιών:

Επί του παρόντος, δεν υποστηρίζονται άλλοι τύποι υπηρεσιών. Αλλά είναι συνήθως σχετικά εύκολο να υποστηρίξει άλλες υπηρεσίες αν εργάζονται με παρόμοιο τρόπο. Επικοινωνήστε μαζί μας αν έχετε κάποιο αίτημα.

Λεπτομέρειες

Οι ακόλουθες πληροφορίες ισχύουν για όλες τις υποκατηγορίες του 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 είναι εύκολο να χρησιμοποιηθούν, αλλά δεν είναι ο πιο αποτελεσματικός τρόπος για την αποθήκευση / ανάκτηση δεδομένων. Για μεγαλύτερη αποτελεσματικότητα, αποθηκεύστε τα αρχεία ωςNetCDFv3.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 (η οποία δεν είναι πλέον ενεργή) .

Πίνακας 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 είναι εύκολα στη συνεργασία, αλλά δεν είναι ένας αποτελεσματικός τρόπος για την αποθήκευση / ανάκτηση δεδομένων. Για μεγαλύτερη αποτελεσματικότητα, αποθηκεύστε τα αρχεία ωςNetCDFv3.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, εκτός του συγγραφέα, η οποία είναι απαραίτητη για την επαλήθευση της αίτησης.  

Λεπτομέρειες:

  • .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™θα είναι σε θέση να ανταποκριθεί γρήγορα στις περισσότερες αιτήσεις για δεδομένα. Αυτή η ρύθμιση καθορίζεται από τοhttpGetΚατάλογοςΣτρατηγική παγκόσμια χαρακτηριστικό, η οποία είναι μια συμβολοσειρά που μοιάζει με ένα σχετικό όνομα αρχείου, π.χ., "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.jsonL, 2016-01.jsonL, 2016-03.jsonL, 2016-05.jsonΙ (κάθε εκμετάλλευση δεδομένων αξίας 2 μηνών για τον σχετικό σταθμό) . Σε οποιαδήποτε στιγμή στο μέλλον, εάν χρησιμοποιείτε .inte ή .delete για να αλλάξετε ή να διαγράψετε τα δεδομένα για, για παράδειγμα, σταθμό 46088 στο 2016-04-05T14:45:00Z, EDDTableFromHttp Πάρτε θα προσαρτήσει αυτή την εντολή στο 46088/2016-03.jsonΙ, τα σχετικά δεδομένα (καταγραφής) Αρχείο. Και σαφώς, είναι καλό να προσθέσουμε δεδομένα για άλλους σταθμούς ανά πάσα στιγμή στο μέλλον, δεδομένου ότι το σύνολο δεδομένων θα δημιουργήσει απλά πρόσθετους καταλόγους όπως απαιτείται για να κρατηθούν τα δεδομένα από τους νέους σταθμούς.

httpΛήψη κλειδιών

Κάθε πίνακας EDD ΑπόHttp Λήψη συνόλου δεδομένων πρέπει να έχει ένα παγκόσμιο χαρακτηριστικόhttpGetKeys που καθορίζει τη λίστα των επιτρεπόμενων συγγραφέων και των μυστικών κλειδιών τους ως λίστα χωρισμένη με κόμματα συντάκτης\_κλειδί , π.χ. JohnSmith\_κάποιοKey1, HOBOLogger\_κάποιοKey2, QCScript59\_κάποιοKey3.

  • οι χαρακτήρες ASCII (#33 - #126, και χωρίς κόμμα, " ή '
  • Τα κλειδιά είναι σαν τους κωδικούς πρόσβασης, οπότε ΠΡΕΠΕΙ να είναι >=8 χαρακτήρες, δύσκολο να μαντέψει, και χωρίς εσωτερικές λέξεις λεξικό. Θα πρέπει να τους αντιμετωπίζεις όπως θα αντιμετώπιζες τους κωδικούς πρόσβασης -- κράτα τους μυστικούς.
  • Ο πρώτος χαρακτήρας '\' διαχωρίζει τον συγγραφέα από το κλειδί, οπότε το όνομα του συγγραφέα δεν μπορεί να περιλαμβάνει έναν χαρακτήρα '\' (Αλλά ένα κλειδί μπορεί) .
  • Οποιοσδήποτε συγγραφέας μπορεί να έχει έναν ή περισσότερους συγγραφείς\_key's, π.χ., JohnSmith\_someth Κλειδί 1, JohnSmith\_κάποιο Κλειδί 7, κλπ.
  • Μπορείτε να αλλάξετε την τιμή αυτής της ιδιότητας οποιαδήποτε στιγμή. Οι αλλαγές αρχίζουν να ισχύουν την επόμενη φορά που θα φορτωθεί το σύνολο δεδομένων.
  • Οι πληροφορίες αυτές θα αφαιρεθούν από τα παγκόσμια χαρακτηριστικά του συνόλου δεδομένων πριν δημοσιοποιηθούν.
  • Κάθε αίτημα στο σύνολο δεδομένων για την εισαγωγή ή τη διαγραφή δεδομένων πρέπει να περιλαμβάνει &author= συντάκτης\_κλειδί παράμετρος. Μετά την επαλήθευση της εγκυρότητας του κλειδιού,ERDDAP™μόνο αποθηκεύει το μέρος του συγγραφέα (όχι το κλειδί) στο αρχείο δεδομένων.

Set

Εδώ είναι τα συνιστώμενα βήματα για τη δημιουργία ενός συνόλου δεδομένων EDDTableFromHttpGet:

  1. Κάντε τον κύριο κατάλογο για να κρατήσετε τα δεδομένα αυτού του συνόλου δεδομένων. Για αυτό το παράδειγμα, ας χρησιμοποιήσουμε /data/testGet/ . Ο χρήστης που τρέχει GenerateDatasetsXml και ο χρήστης που τρέχειERDDAP™πρέπει και οι δύο να έχουν πρόσβαση ανάγνωσης-γραφής σε αυτόν τον κατάλογο.  

  2. Χρήση επεξεργαστή κειμένου για τη δημιουργία δείγματος.jsonl αρχείο CSV με την επέκταση.jsonΣε αυτόν τον κατάλογο. Το όνομα δεν είναι σημαντικό. Για παράδειγμα, μπορείς να το πεις δείγμα..jsonΙ Κάντε μια γραμμή 2.jsonL Αρχείο 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 θα χρησιμοποιηθεί για την εγγραφή του οποίου ο εξουσιοδοτημένος συγγραφέας παρείχε τα δεδομένα αυτής της γραμμής. Οι εξουσιοδοτημένοι συγγραφείς προσδιορίζονται από τοhttpGetKeys παγκόσμιο χαρακτηριστικό. Αν και τα κλειδιά προσδιορίζονται ως συντάκτης\_κλειδί και είναι στο "ζητούν" URL σε αυτή τη μορφή, μόνο το μέρος του συγγραφέα αποθηκεύεται στο αρχείο δεδομένων.
  • Η στήλη εντολών με byte δεδομένωνType θα δείξει αν τα δεδομένα σε αυτή τη γραμμή είναι μια εισαγωγή (0) ή διαγραφή (1) .  
  1. Εκτέλεση δημιουργίας συνόλων δεδομένων Xml και πες το

    1. Ο τύπος συνόλου δεδομένων είναι EDDTableFromHttpGet
    2. Ο κατάλογος είναι (για αυτό το παράδειγμα) /δεδομένα/δοκιμή Λήψη/
    3. Το αρχείο δείγματος είναι (για αυτό το παράδειγμα) /δεδομένα/δοκιμή Get/startup.jsonΙ
    4. ΗhttpΑπαιτούνται Μεταβλητές (για αυτό το παράδειγμα) stationID, ώρα Βλέπε περιγραφή τουhttpΑπαιτούμενες μεταβλητέςκάτω.
    5. Εάν τα δεδομένα συλλέγονται κάθε 5 λεπτά, ηhttpGetΚατάλογος Structure για αυτό το παράδειγμα είναιstationID/2 μήνες . Βλέπε περιγραφή τουhttpΛήψη structureκάτω.
    6. ΗhttpΛήψη κλειδιών

Προσθήκη εξόδου (το κομμάτι τουdatasets.xmlγια το σύνολο δεδομένων) προςdatasets.xml.   4. Επεξεργασία τουdatasets.xmlκομμάτι για αυτό το σύνολο δεδομένων για να το κάνει σωστό και ολοκληρωμένο. Αξιοσημείωτα, αντικαταστήστε όλα τα ??? με σωστό περιεχόμενο.   5. Για την<Πίνακας αρχείωνInMemory> ρύθμιση:

  • Ορίστε αυτό σε αληθή αν το σύνολο δεδομένων θα πάρει συνήθως συχνές .Εισαγωγή ή / και διαγραφή αιτήσεων (π.χ. πιο συχνά από μία φορά κάθε 10 δευτερόλεπτα) . Αυτό βοηθά τον EDDTableFromHttpGet να ανταποκριθεί γρηγορότερα στις αιτήσεις .integr ή/και .delete. Αν το θέσετε αυτό σε αληθή, ο πίνακας EDDFromHttpGet θα εξακολουθεί να αποθηκεύει τον πίνακα αρχείων και τις σχετικές πληροφορίες στο δίσκο περιοδικά (όπως απαιτείται, περίπου κάθε 5 δευτερόλεπτα) .
  • Ορίστε αυτό σε λάθος (το προκαθορισμένο) εάν το σύνολο δεδομένων συνήθως παίρνει σπάνια . (π.χ., λιγότερο από μία φορά κάθε 10 δευτερόλεπτα) .  
  1. Σημείωση: Είναι δυνατόν να χρησιμοποιηθεί<cacheFromUrl> και σχετικές ρυθμίσεις στοdatasets.xmlγια τον πίνακα EDD ΑπόHttp Λήψη συνόλων δεδομένων ως τρόπο δημιουργίας και διατήρησης ενός τοπικού αντιγράφου ενός απομακρυσμένου EDDTableFromHttpGet dataset σε ένα άλλοERDDAP. Ωστόσο, σε αυτή την περίπτωση, αυτό το τοπικό σύνολο δεδομένων θα απορρίψει τυχόν αιτήματα .Εισαγωγή και διαγραφή.

Χρήση πίνακα EDD Από το Http Get Datasets

  • Οι συγγραφείς μπορούν να κάνουν "ζητήματα" πουεισαγωγή δεδομένων ή διαγραφή δεδομένων από το σύνολο δεδομένων.  
  • Μετά την εισαγωγή πραγματικών δεδομένων στο σύνολο δεδομένων, μπορείτε και θα πρέπει να διαγράψετε το αρχικό αρχείο δεδομένων δειγμάτων.  
  • Οι χρήστες μπορούν να ζητήσουν δεδομένα από το σύνολο δεδομένων όπως κάνουν για οποιοδήποτε άλλο σύνολο δεδομένων EDDTable inERDDAP. Εάν η αίτηση δεν περιλαμβάνει περιορισμό στη στήλη χρονοσφραγίδων, τότε η αίτηση λαμβάνει δεδομένα από την τρέχουσα έκδοση του συνόλου δεδομένων (το αρχείο καταγραφής μετά την επεξεργασία όλων των εντολών εισαγωγής και διαγραφής και την εκ νέου διαλογή από τοhttpΑπαιτούμενες μεταβλητές) .  
  • Οι χρήστες μπορούν επίσης να υποβάλουν αιτήματα που είναι ειδικά για το EDDTableFromHttpGet datasets:
    • Εάν η αίτηση περιλαμβάνει<ή<= περιορισμός της στήλης χρονοσφραγίδων, τότεERDDAP™επεξεργάζεται τις σειρές του αρχείου καταγραφής μέχρι την καθορισμένη χρονοσφραγίδα. Στην πραγματικότητα, αυτό διαγράφει προσωρινά όλες τις αλλαγές που έγιναν στο σύνολο δεδομένων από εκείνη την τιμή χρονοσφραγίδων. Για περισσότερες πληροφορίες, δείτεΈκδοση.
    • Εάν η αίτηση περιλαμβάνει ένα >, >=, ή = περιορισμό της στήλης χρονοσφραγίδα, π.χ., & χρονοσφραγίδα<=0, τότεERDDAP™επιστρέφει τα δεδομένα από τα αρχεία δεδομένων όπως είναι, χωρίς την επεξεργασία των εντολών εισαγωγής και διαγραφής.
  • Στο μέλλον, οραματιζόμαστε ότι τα εργαλεία θα χτιστούν (Από εμάς; Από σένα;) για τη συνεργασία με αυτά τα σύνολα δεδομένων. Για παράδειγμα, θα μπορούσε να υπάρχει ένα σενάριο που να διαβάζει τα ακατέργαστα αρχεία καταγραφής, να εφαρμόζει μια διαφορετική εξίσωση βαθμονόμησης και να δημιουργεί/ενημερώνει ένα διαφορετικό σύνολο δεδομένων με αυτές τις πληροφορίες που προέρχονται. Σημειώστε ότι το σενάριο μπορεί να πάρει τα αρχικά δεδομένα μέσω ενός αιτήματος γιαERDDAP™ (που παίρνει τα δεδομένα σε μορφή αρχείου που είναι ευκολότερο για το σενάριο για να λειτουργήσει με) και να δημιουργήσει/ενημερώσει το νέο σύνολο δεδομένων μέσω.ERDDAP. Το σενάριο δεν χρειάζεται άμεση πρόσβαση στα αρχεία δεδομένων, μπορεί να είναι στον υπολογιστή οποιουδήποτε εξουσιοδοτημένου συγγραφέα.  

Λεπτομερείς πληροφορίες για τον πίνακα EDDFromHttpGet

Τα θέματα είναι:

Εδώ είναι οι λεπτομερείς πληροφορίες:

Μην αλλάζεις το στήσιμο!

Μόλις δημιουργηθεί το σύνολο δεδομένων και έχετε προσθέσει δεδομένα σε αυτό:

  • Μην προσθέσετε ή αφαιρέσετε κανέναdataVariableΣ.
  • Μην αλλάξετε τοsourceNameήdestinationNameτηςdataVariableΣ.
  • Μην αλλάξετε τα δεδομένα ΤύποςdataVariableΣ. Αλλά μπορείτε να αλλάξετε τοdataVariableΕίναι μεταδεδομένα.
  • Μην αλλάξετε τοhttpΑπαιτούνται Μεταβλητές παγκόσμια χαρακτηριστικό.
  • Μην αλλάξετε τοhttpGetΚατάλογοςΣτρατηγική παγκόσμια χαρακτηριστικό.

Εάν χρειαστεί να αλλάξετε οποιοδήποτε από αυτά τα πράγματα, κάντε ένα νέο σύνολο δεδομένων και μεταφέρετε όλα τα δεδομένα στο νέο σύνολο δεδομένων.  

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 παλιάς σχολής) παρέχει κάποια επιπλέον διαβεβαίωση ότι μια δεδομένη γραμμή δεν έχει αλλοιωθεί.

Αρχικά προσπαθήσαμε να χρησιμοποιήσουμε.nc3 αρχεία με απεριόριστη διάσταση. Ωστόσο, υπήρχαν προβλήματα:

  • Το κύριο πρόβλημα ήταν: Δεν υπάρχει αξιόπιστος τρόπος για να επιτρέψετε πολλαπλές κλωστές για να γράψετε σε.nc3 αρχείο, ακόμα και αν τα νήματα συνεργάζονται κάνοντας τις γραφές με συγχρονισμένο τρόπο.
  • Εάν.nc3 αρχείο γίνεται κατεστραμμένο, το σύστημα . instit και .delete δεν μπορεί να συνεχίσει να χρησιμοποιεί το αρχείο.
  • Γιατί το.nc3 αρχεία είναι δυαδικά, αν ένα αρχείο γίνει κατεστραμμένο (που κάνουν λόγω του προβλήματος πολλαπλής ανάγνωσης) είναι εξαιρετικά δύσκολο ή αδύνατο να διορθωθούν. Δεν υπάρχουν εργαλεία για την επισκευή.
  • Η CF δεν έχει τρόπο να προσδιορίσει την κωδικοποίηση των συμβολοσειρών, επομένως δεν υπάρχει επίσημος τρόπος υποστήριξης της Unicode, π.χ., της κωδικοποίησης UTF-8. Προσπαθήσαμε να πείσουμε την ΚΙ να υποστηρίξει ένα \_Encoding χαρακτηριστικό, αλλά δεν ήταν σε θέση να κάνει καμία πρόοδο. (Unidata, προς τιμήν τους, υποστηρίζει το χαρακτηριστικό \_Encoding.)
  • .nc3 αρχεία υποστηρίζουν μόνο σταθερές χορδές μήκους. Και πάλι, προσπαθήσαμε να πάρουμε CF καιUnidataνα υποστηρίξει μεταβλητό μήκος συμβολοσειρών, αλλά δεν ήταν σε θέση να κάνει οποιαδήποτε πρόοδο.
  • .nc3 αρχεία δεν υποστηρίζουν έναν εύκολο τρόπο για να διακρίνετε τις μεταβλητές ενός χαρακτήρα από τις μεταβλητές συμβολοσειρών. Και πάλι, προσπαθήσαμε να πάρουμε CF καιUnidataνα υποστηρίξει ένα σύστημα διάκρισης αυτών των δύο τύπων δεδομένων, αλλά δεν ήταν σε θέση να σημειώσει πρόοδο.
  • .nc3 αρχεία υποστηρίζουν μόνο 8-bit χαρακτήρες με μια μη καθορισμένη κωδικοποίηση. Και πάλι, προσπαθήσαμε να πάρουμε CF καιUnidataνα υποστηρίξει ένα σύστημα προσδιορισμού της κωδικοποίησης, αλλά δεν ήταν σε θέση να σημειώσει καμία πρόοδο.
  • .nc3 αρχεία δεν υποστηρίζουν 64-bit ακέραιους (παραγάδια) . Και πάλι, προσπαθήσαμε να πάρουμε CF καιUnidataνα υποστηρίξει ένα σύστημα για μεγάλο χρονικό διάστημα, αλλά δεν μπόρεσε να σημειώσει καμία πρόοδο.  
Έκδοση

Επειδή ο πίνακας EDD ΑπόHttp Αποκτήστε ένα αρχείο καταγραφής όλων των αλλαγών στο σύνολο δεδομένων με τη χρονοσφραγίδα και τον συγγραφέα κάθε αλλαγής, μπορεί γρήγορα να αναδημιουργήσει αυτό το σύνολο δεδομένων από οποιοδήποτε σημείο στο χρόνο. Κατά μία έννοια, υπάρχει μια εκδοχή για οποιοδήποτε χρονικό διάστημα. Εάν το αίτημα του χρήστη για δεδομένα περιλαμβάνει χρονοσφραγίδα<= περιορισμός, π.χ., & χρονόμετρο<=2016-06-23T16:32:22.128Z (ή οποιοδήποτε χρονικό σημείο) , αλλά χωρίς περιορισμούς του συγγραφέα ή της εντολής,ERDDAP™θα ανταποκριθεί στην αίτηση, δημιουργώντας για πρώτη φορά μια έκδοση του συνόλου δεδομένων από το εν λόγω χρονικό σημείο. Τότε,ERDDAP™εφαρμόζει τους άλλους περιορισμούς του χρήστη, όπως και κάθε άλλη αίτηση για δεδομένα απόERDDAP. Το EDDTableFromHttpGet είναι σχεδιασμένο έτσι ώστε αυτή η διαδικασία να είναι πολύ γρήγορη και αποτελεσματική, ακόμα και για πολύ μεγάλα σύνολα δεδομένων.

Ομοίως, ένας χρήστης μπορεί να ανακαλύψει πότε το σύνολο δεδομένων ενημερώθηκε για τελευταία φορά ζητώντας ...?timestab&timestab=max (χρονοσφραγίδα) &Διακριτικό ()

Και για κάθε αίτημα για δεδομένα, για οποιαδήποτε έκδοση του συνόλου δεδομένων, οι χρήστες μπορούν να δουν ποιος συγγραφέας έκανε τις αλλαγές, και πότε τις έκαναν.

Αυτό το σύστημα έκδοσης επιτρέπειΑναπαραγωγική επιστήμηγιατί οποιοσδήποτε, ανά πάσα στιγμή, μπορεί να ζητήσει δεδομένα από την έκδοση του συνόλου δεδομένων ανά πάσα στιγμή. Αυτή η λεπτόκοκκη έκδοση δεν είναι δυνατή με οποιοδήποτε άλλο σύστημα που γνωρίζουμε. Ο υποκείμενος μηχανισμός είναι πολύ αποτελεσματικός, δεδομένου ότι δεν απαιτείται επιπλέον χώρος αποθήκευσης, και τα γενικά έξοδα επεξεργασίας είναι πραγματικά ελάχιστα.

Δεν έχουν όλοι ανάγκη για αυτού του είδους τις λεπτεπίλεπτες εκδόσεις, αλλά είναι εξαιρετικά χρήσιμες, ίσως απαραίτητες, στο πλαίσιο ενός μεγάλου οργανισμού διαχείρισης δεδομένων (π.χ., OOI, Κύβος Γης, Data One, καιNOAANCEI) όπου ένα σύνολο δεδομένων μπορεί να έχει πολλαπλούς συγγραφείς (π.χ. ο αισθητήρας, ένα αυτοματοποιημένο σενάριο 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 του βασικού καταλόγου του συνόλου δεδομένων στοHyraxserver, για παράδειγμα, <sourceUrl> http://edac-dap.northerngulfinstitute.org/dods-bin/nph-dods/WCOS/nmsp/wcos/ </sourceUrl> (Αλλά βάλε το σε μια γραμμή.) (Λυπάμαι, αυτός ο διακομιστής δεν είναι πλέον διαθέσιμος.) . ΗsourceUrlweb 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 (ή.ncml) αρχεία με διάφορες μεταβλητές, το καθένα με μία ή περισσότερες κοινές διαστάσεις. Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με ή χωρίς μια πρόσθετη διάσταση (για παράδειγμα, 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) σαν να ήταν μια άλλη διάσταση (π.χ. χρόνος) . Η τιμή του χαρακτηριστικού στοιχείου πρέπει να είναι ένας χωριστός κατάλογος κόμμα που να προσδιορίζει τις διαστάσεις "από" και στη συνέχεια τη διάσταση " έως", π.χ., 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 (ή.ncml) αρχεία καιΖαραρχεία (από την έκδοση 2.25) με διάφορες μεταβλητές, καθεμία με μία κοινή διάσταση (για παράδειγμα, ο χρόνος) ή περισσότερες από μία κοινές διαστάσεις (για παράδειγμα, χρόνος, υψόμετρο (ή βάθος) , γεωγραφικό πλάτος, γεωγραφικό μήκος) . Τα αρχεία πρέπει να έχουν τα ίδια ονόματα διαστάσεων. Ένα δοσμένο αρχείο μπορεί να έχει πολλαπλές τιμές για καθεμία από τις διαστάσεις και οι τιμές μπορεί να είναι διαφορετικές σε διαφορετικά αρχεία πηγής. Τα αρχεία μπορεί να έχουν μεταβλητές χαρακτήρα με μια πρόσθετη διάσταση (για παράδειγμα, STRING14) . Δες αυτή την τάξη,Πίνακας EDD από αρχεία, για πληροφορίες σχετικά με το πώς λειτουργεί αυτή η τάξη και πώς να τη χρησιμοποιήσετε.

Τα αρχεία Zarr έχουν ελαφρώς διαφορετική συμπεριφορά και απαιτούν είτε το αρχείοNameRegex είτε το μονοπάτιRegex να περιλαμβάνει " zarr".

Το πρώτο πράγμα που κάνει η 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 (ή.ncml) αρχεία που χρησιμοποιούν μία από τις μορφές αρχείων που καθορίζονται από τηνΚΦ Διακριτές γεωμετρίες δειγματοληψίας (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 στο αίτημα.
  • Με την περιστασιακή προσθήκη νέων τύπωνSOSservers και αλλαγές στους παλιούς servers, γίνεται όλο και πιο δύσκολο γιαERDDAP™για την αυτόματη ανίχνευση του τύπου εξυπηρετητή από τις απαντήσεις του εξυπηρετητή. Η χρήση<soserverType> (με τιμή IOOS\_NDBC, IOOS\_NOS,OOSTethys, ή WHOI) είναι τώρα ΣΤΡΑΤΗΓΟΣ. Αν έχετε προβλήματα με οποιαδήποτε σύνολα δεδομένων αυτού του τύπου, δοκιμάστε την επανέναρξη GenerateDatasets Xml για τοSOSΔιακομιστής. Δημιουργία Σύνολα δεδομένων Xml θα σας αφήσει να δοκιμάσετε το διαφορετικό<επιλογές sosServerType> μέχρι να βρείτε τη σωστή για ένα δεδομένο διακομιστή.
  • SOSεπισκόπηση:
    • ΣΟΥΗΔΙΑ (Ενεργοποίηση ιστού αισθητήρων) καιSOS (Υπηρεσία παρατήρησης αισθητήρων) είναιΠρότυπα OpenGIS®. Αυτή η ιστοσελίδα έχει τα έγγραφα προτύπων.

    • ΗOGCΥπηρεσίες Διαδικτύου Κοινή Προδιαγραφή ver 1.1.0 (OGC06-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 σε έναSOSserver, μπορείτε να πάρετε ένα αποτέλεσμα xml με περιγραφές των ονομάτων πεδίου στην απάντηση, μονάδες πεδίου, και τα δεδομένα. Τα ονόματα των πεδίων θα περιλαμβάνουν γεωγραφικό μήκος, γεωγραφικό πλάτος, βάθος (Ίσως) και ώρα.

    • ΚάθεdataVariableγια έναν πίνακα EDDFromSOSπρέπει να περιλαμβάνει ένα χαρακτηριστικό "παρατηρημένοProperty", το οποίο προσδιορίζει το παρατηρούμενοProperty που πρέπει να ζητηθεί από τον εξυπηρετητή για να πάρει αυτή τη μεταβλητή. Συχνά, αρκετάdataVariables θα απαριθμήσει το ίδιο σύνθετο παρατηρούμενο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&amp;service=WFS&amp;typename=aasg:BoreholeTemperature&amp;format=&quot;text/xml;%20subType=gml/3.1.1/profiles/gmlsf/1.0.0/0"</att>  

(Αλλά βάλε τα όλα σε μια γραμμή.)

  • Πρέπει να προσθέσετε μια ειδική παγκόσμια ιδιότητα για να πειERDDAP™πώς να προσδιορίσετε τα ονόματα των κομματιών των δεδομένων που πρέπει να μεταφορτωθούν. Αυτό θα λειτουργήσει πιθανώς για όλα τα EDDTableFromWFSΣειρά δεδομένων αρχείων:
    <att name="rowElementXPath">/wfs:FeatureCollection/gml:featureMember</att>
  • Δεδομένου ότι αυτή η κατηγορία πάντα κατεβάζει και κάνει ένα τοπικό αντίγραφο κάθε απομακρυσμένου αρχείου δεδομένων, δεν πρέπει ποτέ να τυλίξετε αυτό το σύνολο δεδομένωνEDDTableCopy.
  • Δες αυτή την τάξη,Πίνακας EDD από αρχεία, για πρόσθετες πληροφορίες σχετικά με τον τρόπο λειτουργίας αυτής της κατηγορίας και τον τρόπο χρήσης της.  

Πίνακας EDDAggregateRows

Πίνακας EDDAggregateRows μπορεί να δημιουργήσει ένα σύνολο δεδομένων EDDTable από μια ομάδα "παιδί" σύνολα δεδομένων EDDTable.

  • Εδώ είναι μερικές χρήσεις για EDDTableAggregateRows:
    • Θα μπορούσατε να φτιάξετε ένα σύνολο δεδομένων EDDTableAggregateRows από δύο διαφορετικά είδη αρχείων ή πηγές δεδομένων, για παράδειγμα, ένα σύνολο δεδομένων με δεδομένα μέχρι το τέλος του περασμένου μήνα αποθηκευμένα σε.ncCF αρχεία και ένα σύνολο δεδομένων με δεδομένα για τον τρέχοντα μήνα αποθηκεύονται σε μια βάση δεδομένων σχέση.
    • Μπορείτε να κάνετε ένα σύνολο δεδομένων 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&gt·

<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&gt·

Ηdatasets.xmlγια αυτό το σύνολο δεδομένων μπορεί να έχει μια προαιρετική ετικέτα

    <checkSourceData>true</checkSourceData>  

Η προκαθορισμένη τιμή είναι αληθινή. Αν/όταν το ρυθμίσετε σε ψευδή, το σύνολο δεδομένων δεν θα ελέγξει ποτέ το σύνολο δεδομένων πηγής για να δείτε αν υπάρχουν πρόσθετα διαθέσιμα δεδομένα.  

  1. Δημιουργία του<σύνολο δεδομένων> καταχώρηση (ο ντόπιος τύπος, όχι το EDDTableCopy) για την απομακρυσμένη πηγή δεδομένων. Να λειτουργήσει σωστά, συμπεριλαμβανομένων όλων των επιθυμητών μεταδεδομένων.
  2. Αν είναι πολύ αργό, προσθέστε κώδικα XML για να το τυλίξετε σε ένα σύνολο δεδομένων EDDTableCopy.
    • Χρήση διαφορετικήςdatasetID (Ίσως με την αλλαγή τουdatasetIDτων παλαιώνdatasetIDελαφρά) .
    • Αντιγραφή του<προσβάσιμη Στο>,<επαναφόρτωσηEveryNminutes> και<onChange> από το απομακρυσμένο XML του EDDTable στο XML του EDDTableCopy. (Οι τιμές τους για την ύλη EDDTableCopy· οι τιμές τους για το εσωτερικό σύνολο δεδομένων γίνονται άνευ σημασίας.)
    • Δημιουργία του<εκχύλισμαDestinationNames> tag (βλ. παραπάνω) .
    • <orderExtractBy> είναι μια λίστα μεταβλητών ονομάτων προορισμών. Όταν κάθε κομμάτι δεδομένων μεταφορτώνεται από τον απομακρυσμένο εξυπηρετητή, το κομμάτι θα ταξινομηθεί από αυτές τις μεταβλητές (με την πρώτη μεταβλητή, στη συνέχεια με τη δεύτερη μεταβλητή εάν η πρώτη μεταβλητή είναι δεμένη, ...) . Σε ορισμένες περιπτώσεις,ERDDAP™θα είναι σε θέση να εξάγει τα δεδομένα γρηγορότερα από τα τοπικά αρχεία δεδομένων, εάν η πρώτη μεταβλητή στη λίστα είναι μια αριθμητική μεταβλητή ("time"μετρά ως αριθμητική μεταβλητή) . Αλλά επιλέξτε αυτές τις μεταβλητές με τρόπο κατάλληλο για το σύνολο δεδομένων.
  3. ERDDAP™θα κάνει και θα διατηρήσει ένα τοπικό αντίγραφο των δεδομένων.  
  • ΠΡΟΕΙ WARNINGΟΠΟΙΗΣΗ: Το EDDTableCopy υποθέτει ότι οι τιμές δεδομένων για κάθε κομμάτι δεν αλλάζουν ποτέ. Αν/όταν το κάνουν, θα πρέπει να διαγράψετε χειροκίνητα τα αρχεία κομματιών στο bigParentΚατάλογος /αντίγραφο/ datasetID / που άλλαξε καισημαίατο σύνολο δεδομένων που θα επαναφορτωθεί ώστε να αντικατασταθούν τα διαγραμμένα κομμάτια. Εάν έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα λάβετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά επαναφορτίζει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.  
  • Τροποποίηση μεταδεδομένων -- Εάν χρειαστεί να αλλάξετε κάποιαaddAttributesή να αλλάξει τη σειρά των μεταβλητών που συνδέονται με το σύνολο δεδομένων πηγής:
    1. Αλλαγή τουaddAttributesγια το σύνολο δεδομένων πηγής στοdatasets.xml, όπως χρειάζεται.
    2. Διαγράψτε ένα από τα αντιγραφέντα αρχεία.
    3. Ορισμός ασημαίανα επαναφορτώσει το σύνολο δεδομένων αμέσως. Εάν χρησιμοποιείτε μια σημαία και έχετε μια συνδρομή ηλεκτρονικού ταχυδρομείου στο σύνολο δεδομένων, θα πάρετε δύο μηνύματα ηλεκτρονικού ταχυδρομείου: ένα όταν το σύνολο δεδομένων για πρώτη φορά φορτώνει και αρχίζει να αντιγράφει τα δεδομένα, και ένα άλλο όταν το σύνολο δεδομένων φορτώνει ξανά (αυτόματα) και ανιχνεύει τα νέα τοπικά αρχεία δεδομένων.
    4. Το διαγραμμένο αρχείο θα αναγεννηθεί με τα νέα μεταδεδομένα. Εάν το σύνολο δεδομένων πηγής δεν είναι ποτέ διαθέσιμο, το σύνολο δεδομένων 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&gt·

  • [ ** <angularDegreeUnits> ** ] (#γωνιακές μονάδες μοιρών) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlπου περιέχει μια λίστα χωρισμένων με κόμματα συμβολοσειρών μονάδων πουERDDAP™θα πρέπει να αντιμετωπίζεται ως γωνιακές μονάδες μοιρών. Εάν μια μεταβλητή έχει μία από αυτές τις μονάδες,tabledapΣorderByMeanτο φίλτρο θα υπολογίσει το μέσο με ειδικό τρόπο, στη συνέχεια να αναφέρει το μέσο ως τιμή από -180 έως 180. Βλέπεις;ERDDAPΤο αρχείο πηγαίου κώδικα EDStatic.java για την τρέχουσα προκαθορισμένη λίστα. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.

<γωνιακή DegreeTrueUnits&gt·

  • [ ** <γωνιακή ΒαθμόςTrueUnits> ** ] (#γωνιακές μονάδες) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlπου περιέχει μια λίστα χωρισμένων με κόμματα συμβολοσειρών μονάδων πουERDDAP™θα πρέπει να αντιμετωπίζεται ως γωνιακές μοίρες πραγματικές μονάδες. Εάν μια μεταβλητή έχει μία από αυτές τις μονάδες,tabledapΣorderByMeanτο φίλτρο θα υπολογίσει τον μέσο όρο με ειδικό τρόπο, και στη συνέχεια θα αναφέρει τον μέσο όρο ως τιμή από 0 έως 360. Βλέπεις;ERDDAPΤο πηγαίο αρχείο EDStatic.java για την τρέχουσα προκαθορισμένη λίστα. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.  

<commonStandardNames&gt·

  • [ ** <κοινό πρότυποNames> ** ] (#κοινά τυποποιημένα ονόματα) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.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&gt·

  • [ ** <cheapMinutes> ** ] (#Cachementers) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlγια τον προσδιορισμό της ηλικίας (σε λεπτά) στα οποία τα αρχεία της λανθάνουσας μνήμης πρέπει να διαγραφούν (προεπιλογή=60) . Π.χ.,
    <cacheMinutes>60</cacheMinutes>  

Γενικά, μόνο αρχεία εικόνας (γιατί οι ίδιες εικόνες συχνά ζητούνται επανειλημμένα) και.ncαρχεία (επειδή πρέπει να δημιουργηθούν πλήρως πριν από την αποστολή στον χρήστη) είναι κρυμμένες. Αν και μπορεί να φαίνεται ότι ένα δεδομένο αίτημα πρέπει πάντα να επιστρέφει την ίδια απάντηση, αυτό δεν είναι αλήθεια. Για παράδειγμα, αtabledapαίτημα που περιλαμβάνει χρόνο> μερικά Χρόνος θα αλλάξει όταν νέα δεδομένα φτάσουν για το σύνολο δεδομένων. Και ένα αίτημα που περιλαμβάνει\[τελευταίο\]για τη χρονική διάσταση θα αλλάξει όταν νέα δεδομένα φθάνουν για το σύνολο δεδομένων. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία. ΠρινERDDAP™v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.  

<μετατροπή InterpolateRequestCSVEXample&gt·

  • [ ** <μετατροπήInterpolateRequestCSVEXample> ** ] (#convert interpolate requestcsvexample) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xml \[αρχίζοντας μεERDDAP™v2.10\]που περιέχει ένα παράδειγμα που θα εμφανιστεί στην ιστοσελίδα του μετατροπέα Interpolate. Η προκαθορισμένη τιμή είναι: jplMURSST41/αναλύθηκε\_sst/Bilinear/4 .

<μετατροπήInterpolateDatasetIDVariableList&gt·

  • [ ** <μετατροπήInterpolateDatasetIDVariableList> ** ] (#convertinterpolatedatasetidvarariable list) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xml \[αρχίζοντας μεERDDAP™v2.10\]που περιέχει έναν κατάλογο CSVdatasetID/μεταβλητή Παραδείγματα ονομάτων που θα χρησιμοποιηθούν ως προτάσεις από την ιστοσελίδα του μετατροπέα Interpolate. Η προκαθορισμένη τιμή είναι: jplMURSST41/αναλύθηκε\_sst.

<μετατροπήToPublicSourceUrl&gt?

  • [ ** <μετατρέπουν σε Δημόσια ΠηγήUrl> ** ] (#μετατροπή σε δημόσια πηγή) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.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 (που αναφέρονται από τη χαμηλότερη έως την υψηλότερη προτεραιότητα) :

    1. Εάν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&gt?

  • [ ** <emailΔιαγνωστικάToErdData> ** ] (#emaildiagnosticstoerddata) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xml. Η τιμή της ετικέτας μπορεί να είναι αληθινή (το προκαθορισμένο) ή λάθος. Αν είναι αλήθεια,ERDDAP™θα στείλει με email το ίχνος της στοίβας στον Κρις. Τζον στο Νόα. κυβέρνηση (τοERDDAP™ομάδα ανάπτυξης) . Αυτό θα πρέπει να είναι ασφαλές και ασφαλές, δεδομένου ότι δεν εμπιστευτικές πληροφορίες (π.χ. το αίτημαUrl) περιλαμβάνεται στο email. Αυτό θα πρέπει να κάνει δυνατή την σύλληψη τυχόν ασαφή, εντελώς απροσδόκητα σφάλματα που οδηγούν σε NullPointerExceptions. Διαφορετικά, ο χρήστης βλέπει τις εξαιρέσεις, αλλά ηERDDAP™Ομάδα ανάπτυξης δεν κάνει (Οπότε δεν ξέρουμε αν υπάρχει πρόβλημα που πρέπει να διορθωθεί.) .  

<γράφημαBackgroundColor&gt

  • [ ** <γράφημαBackgroundColor> ** ] (#graphbackgroundcolor) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlγια να καθορίσετε το προκαθορισμένο χρώμα φόντου στα γραφήματα. Αυτό επηρεάζει σχεδόν όλα τα γραφήματα. Υπάρχουν μερικές καταστάσεις που δεν επηρεάζονται. Το χρώμα προσδιορίζεται ως δεκαεξαδική τιμή 8 ψηφίων με τη μορφή 0xAARRGGBB, όπου AA, RR, GG, και BB είναι τα αδιαφανή, κόκκινα, πράσινα και μπλε συστατικά, αντίστοιχα. "0x" είναι ευαίσθητη περίπτωση, αλλά τα δεκαεξαδικά ψηφία δεν είναι ευαίσθητα περίπτωση. Για παράδειγμα, ένα πλήρως αδιαφανές (ff) πρασινωπό-μπλε χρώμα με κόκκινο=22, πράσινο=88, μπλε=ee θα ήταν 0xff2288ee. Το αδιαφανές λευκό είναι 0xffffffff. Το προεπιλεγμένο είναι αδιαφανές γαλάζιο (0xffccccff (στα Αγγλικά)) , το οποίο έχει το πλεονέκτημα να είναι διαφορετικό από το λευκό, το οποίο είναι ένα σημαντικό χρώμα σε πολλές παλέτες που χρησιμοποιούνται για την κατάρτιση δεδομένων. Για παράδειγμα,
    <graphBackgroundColor>0xffffffff</graphBackgroundColor>  

Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.

<ipAddressMaxRequests&gt·

  • [ ** <ipAddressMaxΑιτήσεις> ** ] (#ipaddressmax αιτήσεις) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη μεERDDAP™v2.12) μέσα σε ένα<erddapDatasets> ετικέτα indatasets.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&gt?

  • [ ** <ipAddressMaxRequestsActive> ** ] (#ipaddressmaxζητώενεργό) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη μεERDDAP™v2.12) μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xmlΑυτό αποτελεί μέρος ενός συστήματος περιορισμού της ικανότητας υπερβολικά επιθετικών νόμιμων χρηστών και κακόβουλων χρηστών να κάνουν μεγάλο αριθμό ταυτόχρονων αιτημάτων που θα υποβαθμίσουν την απόδοση του συστήματος για άλλους χρήστες. Το ipAddressMaxRequestsActive καθορίζει τον μέγιστο αριθμό ταυτόχρονων αιτημάτων που θα υποβληθούν σε ενεργή επεξεργασία από οποιαδήποτε συγκεκριμένη διεύθυνση IP. Πρόσθετα αιτήματα θα βρίσκονται σε σειρά αναμονής μέχρις ότου υποβληθούν σε επεξεργασία οι προηγούμενες αιτήσεις. Τα μικρά, στατικά αρχεία σε erddap/download/ και erddap/images/απαλλάσσονται από αυτόν τον αριθμό και τον σχετικό θρόμβο. Η προεπιλογή είναι 2. Το μέγιστο επιτρεπόμενο είναι 100, το οποίο είναι πολύ υψηλό -- μην το κάνεις! Μπορείτε να ρυθμίσετε αυτό στο 1 να είναι αυστηρή, ειδικά αν έχετε προβλήματα με υπερβολικά επιθετικούς ή κακόβουλους χρήστες. Οι χρήστες θα εξακολουθούν να λαμβάνουν γρήγορα όλα τα δεδομένα που ζητούν (Μέχρι ipAddressMaxRequests) , αλλά δεν θα είναι σε θέση να γουρούνι πόρους σύστημα . Δεν συστήνουμε να τεθεί αυτό σε μεγαλύτερο αριθμό επειδή επιτρέπει υπερβολικά επιθετικούς νόμιμους χρήστες και κακόβουλους χρήστες να κυριαρχήσουνERDDAPΙκανότητα επεξεργασίας. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.  

<ipAddressUnlimited&gt·

  • [ ** <ipAddressUnlimited> ** ] (#ipaddress unlimited) είναι μια σπάνια χρησιμοποιούμενη προαιρετική ετικέτα (αρχικά υποστηριζόμενη μεERDDAP™v2.12) μέσα σε ένα<erddapDatasets> ετικέτα indatasets.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> ετικέτα indatasets.xmlγια τον καθορισμό του ελάχιστου χρόνου (σε λεπτά) μεταξύ μεγάλου φορτίου Σύνολα δεδομένων (ότανERDDAP™επανεπεξεργασίαdatasets.xml, συμπεριλαμβανομένου του ελέγχου κάθε συνόλου δεδομένων για να δείτε αν πρέπει να επαναφορτωθεί σύμφωνα με την επαναφόρτωσή του Κάθε ρύθμιση Nminutes, προεπιλογή=15) . Π.χ.,
    <loadDatasetsMinMinutes>15</loadDatasetsMinMinutes>  

Εάν μια δεδομένη εκτέλεση φορτίωνDatasets παίρνει λιγότερο από αυτή τη φορά, ο φορτωτής απλά εξετάζει επανειλημμένα τον κατάλογο της σημαίας και / ή κοιμάται μέχρι το υπόλοιπο χρόνο έχει περάσει. Η προεπιλογή είναι 15 λεπτά, τα οποία θα είναι εντάξει για σχεδόν όλους. Το μόνο μειονέκτημα για να τεθεί αυτό σε μικρότερο αριθμό είναι ότι θα αυξήσει τη συχνότητα πουERDDAP™Retries datasets που έχουν σφάλματα που τους εμποδίζουν να φορτωθούν (π.χ., ένας απομακρυσμένος εξυπηρετητής είναι εκτός λειτουργίας) . Εάν υπάρχουν πολλά από αυτά τα σύνολα δεδομένων και επανεξετάζονται συχνά, η πηγή δεδομένων μπορεί να το θεωρήσει ενοχλητική/επιθετική συμπεριφορά. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία. ΠρινERDDAP™v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.  

<ΦορτίοDatasetsMaxMinutes&gt?

  • [ ** <ΦορτίοDatasetsMaxMinutes> ** ] (#loaddatasetsmaxminutes) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xmlγια τον καθορισμό του μέγιστου χρόνου (σε λεπτά) ένα μεγάλο φορτίο Η προσπάθεια Datasets επιτρέπεται να λάβει (πριν από το φορτίο Τα σύνολα νημάτων που έχουν υποστεί επεξεργασία ως "stalled" και διακόπτεται) (προεπιλογή=60) . Π.χ.,
    <loadDatasetsMaxMinutes>60</loadDatasetsMaxMinutes>  

Σε γενικές γραμμές, αυτό θα πρέπει να οριστεί τουλάχιστον δύο φορές όσο νομίζετε λογικά ότι επαναφόρτωση όλων των συνόλων δεδομένων (σωρευτικά) θα πρέπει να πάρετε (Επειδή οι υπολογιστές και τα δίκτυα μερικές φορές είναι πιο αργά από το αναμενόμενο) Αυτό θα πρέπει πάντα να είναι πολύ μεγαλύτερο από το φορτίοDatasetsMinutes. Η προεπιλογή είναι 60 λεπτά. Μερικοί άνθρωποι θα το ρυθμίσουν περισσότερο. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία. ΠρινERDDAP™v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.  

<logLevel&gt·

  • [ ** <logLevel> ** ] (#loglevel) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xmlγια να καθορίσει πόσα διαγνωστικά μηνύματα αποστέλλονται στο αρχείο log.txt. Μπορεί να ρυθμιστεί η προειδοποίηση. (τα ελάχιστα μηνύματα) , "info" (το προκαθορισμένο) , ή "όλα" (τα περισσότερα μηνύματα) . Π.χ.,
    <logLevel>info</logLevel>  

Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία. ΠρινERDDAP™v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.  

<μερική απαίτησηMaxBytes&gt, και<μερική απαίτησηMaxCells&gt

  • [ ** <μερική απαίτησηMaxBytes> ] (#partial requestmaxbytes-και-partial requestmaxcells) και [ <μερική απαίτησηMaxCells> ** ] (#partial requestmaxbytes-και-partial requestmaxcells) σπανίως χρησιμοποιούνται<erddapDatasets> ετικέτα indatasets.xml. Όταν είναι δυνατόν (και δεν είναι πάντα δυνατόν.) ,ERDDAP™διασπά μεγάλα αιτήματα δεδομένων σε κομμάτια για τη διατήρηση της μνήμης.

Με 32 bitJava, με απλοϊκή έννοια, ο μέγιστος αριθμός ταυτόχρονων μεγάλο Τα αιτήματα είναι περίπου 3/4 της διαθέσιμης μνήμης (η τιμή -Xmx που πέρασε στην Tomcat) διαιρούμενο με το μέγεθος κομματιού (π.χ., 1200 MB / 100 MB => 12 αιτήσεις) . Άλλα πράγματα απαιτούν μνήμη, οπότε ο πραγματικός αριθμός των αιτημάτων θα είναι μικρότερος. Στην πράξη, το κόψιμο δεν είναι πάντα δυνατό. Έτσι, ένα τεράστιο ή μερικά πολύ μεγάλα ταυτόχρονα μη chunkable αιτήματα θα μπορούσε να προκαλέσει προβλήματα σε 32 bitJava.

Με 64 bitJava, η τιμή -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&gt·

  • [ ** <αίτησηBlacklist> ** ] (#Ζητάω μαύρη λίστα) είναι μια ΟΠΤΙΚΗ ετικέταμέσα σε ένα<erddapDatasets> ετικέτα indatasets.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&gt·

  • [ ** <αργάDownTroubleMillis> ** ] (#SlowdownRoublemillis) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlπου περιέχει ακέραιο προσδιορισμό του αριθμού των χιλιοστό δευτερολέπτων (προεπιλογή=1000) για να σταματήσει όταν ανταποκρίνεται σε όλες τις αποτυχημένες αιτήσεις, π.χ. άγνωστο σύνολο δεδομένων, να ζητήσει πολύ μεγάλο, ο χρήστης στη μαύρη λίστα. Π.χ.,
    <slowDownTroubleMillis>2000</slowDownTroubleMillis>

Αν ένα σενάριο κάνει το ένα αίτημα αμέσως μετά το άλλο, τότε μπορεί γρήγορα να κάνει το ένα κακό αίτημα μετά το άλλο. Με αυτή τη ρύθμιση, μπορείτε να επιβραδύνετε ένα αποτυχημένο σενάριο έτσιERDDAP™Δεν είναι γεμάτο με κακές απαιτήσεις. Αν ένας άνθρωπος κάνει ένα κακό αίτημα, δεν θα προσέξει καν αυτή την καθυστέρηση. Συστάσεις:

  • Αν το πρόβλημα είναι μια Διανεμημένη Άρνηση Υπηρεσίας (ΔΔΟΣ) επίθεση από 100+ επιτιθέμενους, που αυτό σε ένα μικρότερο αριθμό (100;) . Το να τους επιβραδύνει όλους για πολύ καιρό οδηγεί σε πάρα πολλά ενεργά νήματα.
  • Εάν το πρόβλημα είναι από 1-10 πηγές, ρυθμίστε αυτό σε 1000 ms (το προκαθορισμένο) , αλλά μεγαλύτερο αριθμό (Περίπου 10000) είναι επίσης λογικό. Αυτό τους επιβραδύνει ώστε να σπαταλήσουν λιγότερους πόρους δικτύου. Επίσης, 1000 ms ή έτσι δεν θα ενοχλήσει τους ανθρώπους χρήστες που κάνουν ένα κακό αίτημα.

Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.  

<συνδρομήEmailBlacklist&gt·

  • [ ** <συνδρομή EmailBlacklist> ** ] (#υπογραφήemailblacklist) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlπου περιέχει μια λίστα χωρισμένη με κόμματα των διευθύνσεων ηλεκτρονικού ταχυδρομείου οι οποίες είναι αμέσως μαύρη λίστα από τοσύστημα συνδρομών, για παράδειγμα
    <subscriptionEmailBlacklist>bob@badguy.com, john@badguy.com</subscriptionEmailBlacklist>  

Αυτό είναι ένα σύστημα αναίσθητων περιπτώσεων. Εάν προστεθεί διεύθυνση ηλεκτρονικού ταχυδρομείου στη λίστα αυτή, εάν η διεύθυνση ηλεκτρονικού ταχυδρομείου έχει συνδρομές, οι συνδρομές θα ακυρωθούν. Εάν μια διεύθυνση ηλεκτρονικού ταχυδρομείου στη λίστα προσπαθεί να εγγραφεί, η αίτηση θα απορριφθεί. Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.  

Τυποποιημένο κείμενο

  • Τυποποιημένο κείμενο -- Υπάρχουν αρκετές εποπτικές ετικέτες (τα περισσότερα χρησιμοποιούνται σπάνια) μέσα σε ένα<erddapDatasets> ετικέτα indatasets.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> ετικέτα indatasets.xmlγια τον καθορισμό του μέγιστου αριθμού αιτήσεων μεταξύ δύο δρομών συνόλων δεδομένων φορτίου που θεωρείται κανονικός (προεπιλογή=10000) . Σε περίπτωση υπέρβασης αυτού του αριθμού, αποστέλλεται ένα email στο email EverythingTo (όπως ορίζεται στο setup.xml) . Π.χ.,
    <unusualActivity>10000</unusualActivity>  

Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία. ΠρινERDDAP™v2.00, αυτό καθορίστηκε στο setup.xml, το οποίο εξακολουθεί να επιτρέπεται αλλά αποθαρρύνεται.  

<ενημέρωσηMaxEcents&gt

  • [ ** <ενημέρωσηMaxΕκδηλώσεις> ** ] (#updatemaxevents) είναι μια σπάνια χρησιμοποιούμενη ΟΠΤΙΚΗ ετικέτα μέσα σε<erddapDatasets> ετικέτα indatasets.xmlγια τον καθορισμό του μέγιστου αριθμού συμβάντων αλλαγής αρχείων (προεπιλογή=10) η οποία θα αντιμετωπιστεί από το [<ενημέρωσηEveryNMillis>] (# update everynnmillis (στα Αγγλικά)) σύστημα πριν από την αλλαγή για την επαναφόρτωση του συνόλου δεδομένων. Για παράδειγμα,
    <updateMaxEvents>10</updateMaxEvents>  

Το σύστημα updateEveryNMillis προορίζεται να τρέξει πολύ γρήγορα ακριβώς πριν από την επεξεργασία του αιτήματος ενός χρήστη. Αν υπάρχουν πολλά γεγονότα αλλαγής αρχείων, τότε μάλλον δεν μπορεί να τρέξει γρήγορα, οπότε αντίθετα καλεί το σύνολο δεδομένων να επαναφορτωθεί. ΕάνERDDAP™ασχολείται με σύνολα δεδομένων που πρέπει να τηρούνται ενημερωμένα ακόμη και όταν υπάρχουν αλλαγές σε ένα μεγάλο αριθμό αρχείων δεδομένων, μπορείτε να ρυθμίσετε αυτό σε ένα μεγαλύτερο αριθμό (100;) .

<χρήστη&gt·

  • [ ** <χρήστης> ** ] (#χρήστης) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.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 για αυτούς indatasets.xmlΉ όχι. Έτσι, αν ένα δοσμένο σύνολο δεδομένων έχει

            <accessibleTo>\\[anyoneLoggedIn\\]</accessibleTo>  

τότε οποιοσδήποτε χρήστης που είναι συνδεδεμένος θα εξουσιοδοτηθεί να έχει πρόσβαση στο σύνολο δεδομένων, ακόμα και αν δεν υπάρχει<χρήστη> tag για αυτούς indatasets.xml.

  • Οποιαδήποτε αλλαγή στην τιμή αυτής της ετικέτας θα τεθεί σε ισχύ την επόμενη φοράERDDAP™ανάγνωσηdatasets.xml, συμπεριλαμβανομένης της απόκρισης σε σύνολο δεδομένωνσημαία.  

<το pathRegex&gt·

  • [ ** <διαδρομήRegex> ** ] (#παθρεγκέξ) σας επιτρέπει να καθορίσετε μια κανονική έκφραση που περιορίζει τις διαδρομές (οι οποίοι υποκατάλογοι) θα συμπεριληφθεί στο σύνολο δεδομένων. Η προεπιλογή είναι .*, η οποία ταιριάζει σε όλες τις διαδρομές. Αυτή είναι μια σπάνια χρησιμοποιούμενη, σπάνια απαραίτητη, επιλογική ετικέτα γιαEDDGridFromFiles 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 στον Κρις. Τζον στο Νόαγκοβ.

<σύνολο δεδομένων&gt·

  • [ ** <σύνολο δεδομένων> ** ] (Σύνολο δεδομένων) είναι ένα ΠΡΟΑΙΡΕΤΙΚΟ (αλλά πάντα χρησιμοποιούμενη) ετικέτα μέσα σε ένα<erddapDatasets> ετικέτα indatasets.xmlότι (αν περιλαμβάνετε όλες τις πληροφορίες μεταξύ<σύνολο δεδομένων> και</dataset>) περιγράφει πλήρως ένα σύνολο δεδομένων. Για παράδειγμα,
    <dataset type="EDDGridFromDap" datasetID="erdPHssta8day" active="true"> ... </dataset>  

Μπορεί να υπάρχει οποιοσδήποτε αριθμός ετικετών συνόλου δεδομένων σε σαςdatasets.xmlΑρχείο. Τρία χαρακτηριστικά<dataset> tag:  

  • τύπος=" α Τύπος " είναι ένα ΑΠΑΙΤΟΥΜΕΝΟ χαρακτηριστικό μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου προσδιορίζει τον τύπο συνόλου δεδομένων (Για παράδειγμα, αν πρόκειται γιαEDDGrid/Gridded ή EDDTable/Tabular dataset) και η πηγή των δεδομένων (για παράδειγμα, βάση δεδομένων, αρχεία ή τηλεχειριστήριοOPeNDAPεξυπηρετητής) . Δείτε το Κατάλογος τύπων συνόλου δεδομένων .  

σύνολο δεδομένων Ταυτότητα

  • datasetID=" aDatasetID " είναι ένα ΑΠΑΙΤΟΥΜΕΝΟ χαρακτηριστικό μέσα σε ένα<dataset> tag που αποδίδει μια σύντομη (συνήθως<15 χαρακτήρες), μοναδικοί, αναγνωρίζοντας το όνομα σε ένα σύνολο δεδομένων.
    • ΗdatasetIDS ΠΡΕΠΕΙ να είναι ένα γράμμα (Α-Ζ, Α-Ζ) ακολουθούμενη από οποιοδήποτε αριθμό A-Z, a-z, 0-9, και \_ (αλλά καλύτερα αν<32 χαρακτήρες συνολικά).
    • Σύνολο δεδομένων Οι ταυτότητες είναι ευαίσθητες στην υπόθεση, αλλά μην δημιουργείς δύο.datasetIDοι οποίοι διαφέρουν μόνο με κεφαλαία / κάτω γράμματα. Θα προκαλέσει προβλήματα στους υπολογιστές των Windows (ο δικός σας ή/και ο υπολογιστής ενός χρήστη) .
    • Βέλτιστες πρακτικές: Συνιστούμε τη χρήσηκαμήλα Υπόθεση.
    • Βέλτιστες πρακτικές: Συνιστούμε το πρώτο μέρος να είναι ακρωνύμιο ή συντομογραφία του ονόματος του ιδρύματος πηγής και το δεύτερο μέρος να είναι ακρωνύμιο ή συντομογραφία του ονόματος του συνόλου δεδομένων. Όταν είναι δυνατόν, δημιουργούμε ένα όνομα που αντανακλά το όνομα της πηγής για το σύνολο δεδομένων. Για παράδειγμα, χρησιμοποιήσαμεdatasetID="erdPHssta8ημέρα" για ένα σύνολο δεδομένων από τοNOAA NMFS SWFSCΤμήμα Περιβαλλοντικής Έρευνας (ERD) που ορίζεται από την πηγή που πρόκειται να είναι δορυφόρος/PH/sstA/8day (στα Αγγλικά).
    • Αν αλλάξετε το όνομα ενός συνόλου δεδομένων, το παλιό σύνολο δεδομένων (με το παλιό όνομα) θα εξακολουθούν να ζουν σεERDDAP. Αυτό είναι ένα "ορφανό" σύνολο δεδομένων, επειδή η προδιαγραφή για τοdatasets.xmlΈφυγε τώρα. Αυτό πρέπει να αντιμετωπιστεί:
      1. ΓιαERDDAP™V2.19 και αργότερα, δεν χρειάζεται να κάνεις τίποτα.ERDDAP™θα αφαιρέσει αυτόματα αυτά τα ορφανά σύνολα δεδομένων.
      2. ΓιαERDDAP™v2.18 και νωρίτερα, πρέπει να κάνετε κάτι για να αφαιρέσετε τα ορφανά σύνολα δεδομένων: Κάντε ένα ενεργό="ψευδής" σύνολο δεδομένων, π.χ.,
                <dataset type="EDDTableFromNcFiles" datasetID="*theOldName*" active="false" />  

Μετά το επόμενο μεγάλο φορτίο Τα σύνολα δεδομένων, Μπορείτε να αφαιρέσετε αυτή την ετικέτα αφού το παλιό σύνολο δεδομένων είναι ανενεργό.  

ενεργό

  • ενεργός=" βουλεάνη " είναι ένα πιθανό χαρακτηριστικό μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου δηλώνει εάν ένα σύνολο δεδομένων είναι ενεργό (επιλέξιμη για χρήση σεERDDAP) Ή όχι.
    • Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
    • Δεδομένου ότι η προεπιλογή είναι αλήθεια, δεν χρειάζεται να χρησιμοποιήσετε αυτό το χαρακτηριστικό μέχρι να θέλετε να αφαιρέσετε προσωρινά ή μόνιμα αυτό το σύνολο δεδομένων απόERDDAP.
    • Αν απλά αφαιρέσετε ένα ενεργό=" true" σύνολο δεδομένων απόdatasets.xml, το σύνολο δεδομένων θα εξακολουθεί να είναι ενεργόERDDAP™Αλλά δεν θα ενημερωθεί ποτέ. Ένα τέτοιο σύνολο δεδομένων θα είναι ένα "ορφανό" και θα αναφέρεται ως τέτοιο στο καθεστώς. html ιστοσελίδα ακριβώς κάτω από τη λίστα των συνόλων δεδομένων που απέτυχε να φορτώσει.
    • Εάν ορίσετε ενεργό="ψευδής",ERDDAP™θα απενεργοποιήσει το σύνολο δεδομένων την επόμενη φορά που θα προσπαθήσει να ενημερώσει το σύνολο δεδομένων. Όταν το κάνεις αυτό,ERDDAP™δεν πετάει καμία πληροφορία που μπορεί να έχει αποθηκεύσει για το σύνολο δεδομένων και σίγουρα δεν κάνει τίποτα στα πραγματικά δεδομένα.
    • Για την αφαίρεση ενός συνόλου δεδομένων απόERDDAP™, δείτεΕξαναγκασμός αφαίρεσης συνόλου δεδομένων.  

** Αρκετές ετικέτες μπορούν να εμφανιστούν μεταξύ των<σύνολο δεδομένων> και</dataset> ετικέτες. **
Υπάρχει κάποια παραλλαγή στην οποία επιτρέπονται ετικέτες με την οποία τύποι συνόλων δεδομένων. Βλέπε την τεκμηρίωση για μια συγκεκριμένηείδος συνόλου δεδομένωνγια λεπτομέρειες.

<προσβάσιμη To&gt·

  • [ ** <προσβάσιμη Στο> ** ] (#προσιτό στο) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<dataset> tag που καθορίζει μια λίστα χωρισμένη με κόμματαρόλοιτα οποία επιτρέπεται να έχουν πρόσβαση σε αυτό το σύνολο δεδομένων. Για παράδειγμα,
    <accessibleTo>RASmith, NEJones</accessibleTo>  
    • Αυτό είναι μέρος τηςERDDAPΣσύστημα ασφαλείαςγια τον περιορισμό της πρόσβασης σε ορισμένα σύνολα δεδομένων σε ορισμένους χρήστες.
    • Εάν αυτή η ετικέτα δεν είναι παρούσα, όλοι οι χρήστες (Ακόμα κι αν δεν έχουν συνδεθεί) θα έχουν πρόσβαση σε αυτό το σύνολο δεδομένων.
    • Εάν αυτή η ετικέτα είναι παρούσα, αυτό το σύνολο δεδομένων θα είναι ορατό και προσβάσιμο μόνο σε συνδεδεμένους χρήστες που έχουν έναν από τους καθορισμένους ρόλους. Αυτό το σύνολο δεδομένων δεν θα είναι ορατό σε χρήστες που δεν είναι συνδεδεμένοι.
    • Σε κάθε χρήστη που εισέρχεται δίνεται αυτόματα ο ρόλος\[Ανίχνευση οποιουδήποτε Μέσα\], αν υπάρχει<χρήστη> tag για αυτούς indatasets.xmlΉ όχι. Έτσι, αν ένα δοσμένο σύνολο δεδομένων έχει
        <accessibleTo>\\[anyoneLoggedIn\\]</accessibleTo>  

τότε οποιοσδήποτε χρήστης που είναι συνδεδεμένος θα εξουσιοδοτηθεί να έχει πρόσβαση στο σύνολο δεδομένων, ακόμα και αν δεν υπάρχει<χρήστη> tag για αυτούς indatasets.xml.  

<γραφήματαAccessableTo&gt

  • [ ** <γραφήματαAccessableTo> ** ] (# γραφές προσβάσιμες σε) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου καθορίζει αν τα γραφικά και τα μεταδεδομένα για το σύνολο δεδομένων είναι διαθέσιμα στο κοινό. Προσφέρει έναν τρόπο για την μερική παράκαμψη του συνόλου δεδομένων [<προσιτόTo>] (#προσιτό στο) Έτοιμοι. Οι επιτρεπόμενες τιμές είναι:
    • αυτόματη -- Η τιμή αυτή (ή η απουσία ενός<γραφήματαAccessibleTo> tag για το σύνολο δεδομένων) κάνει την πρόσβαση σε γραφήματα και μεταδεδομένα από το σύνολο δεδομένων μιμείται το σύνολο δεδομένων<προσιτόTo> ρύθμιση. Έτσι, αν το σύνολο δεδομένων είναι ιδιωτικό, τα γραφήματα και τα μεταδεδομένα του θα είναι ιδιωτικά. Και αν το σύνολο δεδομένων είναι δημόσιο, τα γραφήματα και τα μεταδεδομένα του θα είναι δημόσια.
    • κοινό -- Αυτή η ρύθμιση καθιστά τα γραφήματα και τα μεταδεδομένα του συνόλου δεδομένων προσβάσιμα σε οποιονδήποτε, ακόμη και σε χρήστες που δεν είναι συνδεδεμένοι, ακόμα και αν το σύνολο δεδομένων είναι κατά τα άλλα ιδιωτικό επειδή έχει ένα<προσιτόTo> tag.  

<προσβάσιμη ViaFiles&gt·

Αν η αξία είναι αληθινή,ERDDAP™θα το κάνει έτσι ώστε οι χρήστες να μπορούν να περιηγηθούν και να κατεβάσουν τα αρχεία πηγαίων δεδομένων του συνόλου δεδομένων μέσωERDDAPΣ"files"σύστημα. Δείτε το"files"σύστηματεκμηρίωσηγια περισσότερες πληροφορίες.

Η προκαθορισμένη τιμή<προσβάσιμοViaFiles> προέρχεται από<προεπιλεγμένοAccessableViaFiles> μέσαsetup.xml. Έχει προεπιλεγμένη τιμή ψευδούς, αλλά σας συνιστούμε να προσθέσετε αυτή την ετικέτα στο setup.xml σας με μια τιμή της αλήθειας.

Σύσταση - Σας συνιστούμε να κάνετε όλα τα σχετικά σύνολα δεδομένων προσβάσιμα μέσω του συστήματος αρχείων με τη ρύθμιση<ΠροεπιλεγμένοAccessableViaFiles> to true in setup.xml επειδή υπάρχει μια ομάδα χρηστών για τους οποίους αυτός είναι ο προτιμώμενος τρόπος για να πάρει τα δεδομένα. Μεταξύ άλλων λόγων,"files"σύστημα καθιστά εύκολο για τους χρήστες να δουν ποια αρχεία είναι διαθέσιμα και πότε άλλαξαν τελευταία, καθιστώντας έτσι εύκολο για έναν χρήστη να διατηρήσει το δικό του αντίγραφο του συνόλου δεδομένων. Αν γενικά δεν θέλετε να κάνετε τα σύνολα δεδομένων προσβάσιμα μέσω του συστήματος αρχείων, που<προεπιλεγμένη AccessibleViaFiles> σε ψευδή. Σε κάθε περίπτωση, απλά χρησιμοποιήστε<προσβάσιμαViaFiles> για τα λίγα σύνολα δεδομένων που αποτελούν εξαιρέσεις στη γενική πολιτική που ορίζεται από<προεπιλεγμένοAccessableViaFiles> (για παράδειγμα, όταν το σύνολο δεδομένων χρησιμοποιεί.ncmlαρχεία, τα οποία δεν είναι πραγματικά χρήσιμα για τους χρήστες) .  

<προσβάσιμη ΜέσωWMS>

  • [ ** <προσβάσιμη ΜέσωWMS> ** ] (#προσιτά viawms) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlγια όλουςEDDGridυποκλάσεις. Μπορεί να έχει μια αξία αληθινή (το προκαθορισμένο) ή λάθος. Για παράδειγμα,
    <accessibleViaWMS>true</accessibleViaWMS>  

Αν η αξία είναι ψευδής,ERDDAPΣWMSΟ εξυπηρετητής δεν θα είναι διαθέσιμος για αυτό το σύνολο δεδομένων. Αυτό χρησιμοποιείται συνήθως για σύνολα δεδομένων που έχουν κάποιες τιμές γεωγραφικού μήκους μεγαλύτερες από 180 (η οποία είναι τεχνικά άκυρη γιαWMSυπηρεσίες) , και για την οποία προσφέρετε επίσης μια παραλλαγή του συνόλου δεδομένων με τιμές γεωγραφικού μήκους εξ ολοκλήρου στην περιοχή -180 έως 180 μέσωEDDGridLonPM180. Αν η αξία είναι αληθινή,ERDDAP™θα προσπαθήσει να κάνει το σύνολο δεδομένων διαθέσιμο μέσωERDDAPΣWMSΔιακομιστής. Αλλά αν το σύνολο δεδομένων είναι εντελώς ακατάλληλο γιαWMS (π.χ., δεν υπάρχουν δεδομένα γεωγραφικού μήκους ή γεωγραφικού πλάτους) , τότε το σύνολο δεδομένων δεν θα είναι διαθέσιμο μέσωERDDAPΣWMSserver, ανεξάρτητα από αυτή τη ρύθμιση.  

<Προσθήκη Μεταβλητές όπου&gt·

  • [<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&gt

  • [ ** <υψόμετροMetersPerSourceUnit> ** ] (# υψομετρόμετρα ανά πηγή) είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag σε σύνολα δεδομένων. xxml για τον πίνακα EDDFromSOSσύνολα δεδομένων (Μόνο!) που προσδιορίζει έναν αριθμό ο οποίος πολλαπλασιάζεται με τις τιμές της πηγής υψομέτρου ή βάθους για τη μετατροπή τους σε τιμές υψομέτρου (σε μέτρα πάνω από την επιφάνεια της θάλασσας) . Για παράδειγμα,
    <altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>  

Αυτή η ετικέτα ΠΡΕΠΕΙ να χρησιμοποιείται αν οι τιμές κάθετου άξονα του συνόλου δεδομένων δεν είναι μέτρα, θετικά = πάνω. Διαφορετικά, είναι ΟΠΤΙΚΟ, δεδομένου ότι η προεπιλεγμένη τιμή είναι 1. Για παράδειγμα,

  • Εάν η πηγή έχει ήδη μετρηθεί σε μέτρα πάνω από την επιφάνεια της θάλασσας, χρησιμοποιήστε 1 (ή μην χρησιμοποιήσετε αυτή την ετικέτα, δεδομένου ότι 1 είναι η προκαθορισμένη τιμή) .
  • Εάν η πηγή μετράται σε μέτρα κάτω από την επιφάνεια της θάλασσας, χρησιμοποιήστε -1.
    <altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>
  • Εάν η πηγή μετράται σε χιλιόμετρα πάνω από την επιφάνεια της θάλασσας, χρησιμοποιήστε το 0.001.  

<προεπιλεγμέναDataQuery&gt·

  • [ ** <προεπιλεγμέναDataQuery> ** ] (#Προκαθορισμός δεδομένων) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.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>&amp;time&gt;=max(time)-1day</defaultDataQuery>  

ή

    <defaultDataQuery>&amp;time&gt;=now-1day</defaultDataQuery>  

<προεπιλεγμένοGraphQuery&gt·

  • [ ** <προκαθορισμένοGraphQuery> ** ] (#defaultgraphquery) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου λέειERDDAP™για χρήση του καθορισμένου ερωτήματος (το τμήμα του URL μετά το "?") εάν το αρχείο .graph Τύπος (Το έντυπο Make A Graph) ζητείται χωρίς ερώτηση.
    • Πιθανότατα σπάνια θα χρειαστεί να το χρησιμοποιήσετε αυτό.
    • Θα πρέπει να XML-κωδικός (όχι %-κωδικός) τα προεπιλεγμένα ερωτήματα δεδομένου ότι βρίσκονται σε έγγραφο XML. Για παράδειγμα, το & γίνεται & ,<γίνεται<, > γίνεται & gt; .
    • Παρακαλώ ελέγξτε τη δουλειά σας. Είναι εύκολο να κάνεις ένα λάθος και να μην πάρεις αυτό που θέλεις.ERDDAP™θα προσπαθήσει να καθαρίσει τα λάθη σας -- αλλά δεν βασίζονται σε αυτό, δεδομένου ότι\*Πώς\*καθαρίζεται μπορεί να αλλάξει.
    • Για τα σύνολα δεδομένων griddap, η πιο κοινή χρήση αυτού είναι ο καθορισμός μιας διαφορετικής προεπιλεγμένης τιμής βάθους ή υψομέτρου διάστασης (για παράδειγμα,\[0\]αντί για\[τελευταίο\]) ή/και για να προσδιοριστεί η γραφική παράσταση μιας συγκεκριμένης μεταβλητής. Σε κάθε περίπτωση, θα χρησιμοποιείτε σχεδόν πάντα\[0\],\[τελευταίο\], ή\[0:τελευταία\]για τις τιμές διάστασης. Για παράδειγμα:
        <defaultGraphQuery>temp\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\]&amp;.draw=surface&amp;.vars=longitude|latitude|temp</defaultGraphQuery>  
    (Αλλά βάλε τα όλα σε μια γραμμή.)
    • Γιαtabledapσύνολα δεδομένων, αν δεν καθορίσετε κάποιο περιορισμό, η αίτηση θα γραφική παράσταση ολόκληρο το σύνολο δεδομένων, το οποίο μπορεί να πάρει πολύ χρόνο, ανάλογα με το σύνολο δεδομένων.
    • Γιαtabledapσύνολα δεδομένων, η πιο κοινή χρήση αυτού είναι να καθορίσει ένα διαφορετικό προκαθορισμένο χρονικό εύρος (σχετικά με το max (χρόνος) , για παράδειγμα, & time>=max (χρόνος) -1 ημέρα, ή σε σχέση με τώρα, για παράδειγμα, & time>=now-1 ημέρα) . Θυμηθείτε ότι το να ζητάτε καμία μεταβλητή δεδομένων είναι το ίδιο με τον προσδιορισμό όλων των μεταβλητών δεδομένων, οπότε συνήθως μπορείτε απλά να καθορίσετε το νέο χρονικό περιορισμό. Για παράδειγμα:
        <defaultGraphQuery>&amp;time&gt;=max(time)-1day</defaultGraphQuery>  

ή

    <defaultGraphQuery>&amp;time&gt;=now-1day</defaultGraphQuery>  

<τιμές διάστασηςInMemory&gt·

  • [ ** <διάσταση Τιμές στη μνήμη> ** ] (#τιμές διάστασης μνήμη) (αλήθεια (το προκαθορισμένο) ή ψευδής) είναι μια ΟΠΤΙΚΗ και σπάνια χρησιμοποιείται ετικέτα εντός του<dataset> tag για οποιαδήποτεEDDGridσύνολο δεδομένων που λέειERDDAP™όπου διατηρούνται οι τιμές πηγής των διαστάσεων (επίσης γνωστή ωςaxisVariableα) :

    • αληθές = στη μνήμη (το οποίο είναι πιο γρήγορο αλλά χρησιμοποιεί περισσότερη μνήμη)
    • ψευδές = στο δίσκο (η οποία είναι πιο αργή αλλά δεν χρησιμοποιεί μνήμη)

Για παράδειγμα,

<dimensionValuesInMemory>false</dimensionValuesInMemory>  

Θα πρέπει να το χρησιμοποιήσετε μόνο με τη μη προκαθορισμένη τιμή του ψευδούς εάνERDDAP™έχει πολλά σύνολα δεδομένων με πολύ μεγάλες διαστάσεις (π.χ., σε εκατομμύρια αξίες, π.χ.EDDGridΑπό σύνολα δεδομένων AudioFiles) καιERDDAPΗ χρήση μνήμης είναι πάντα πολύ υψηλή. Δείτε τη Μνήμη: αυτή τη στιγμή χρησιμοποιώντας τη γραμμή στο\[Το Domain σας\]/erddap/status.htmlγια την παρακολούθησηERDDAP™χρήση μνήμης.  

<Πίνακας αρχείωνInMemory&gt

  • [ ** <Πίνακας αρχείωνInMemory> ** ] (#filetableinmemory) (αληθές ή ψευδές (το προκαθορισμένο) ) είναι μια ΟΠΤΙΚΗ ετικέτα εντός του<dataset> tag για οποιαδήποτεEDDGridΑπό αρχεία και πίνακα EDD Σύνολο δεδομένων FromFiles που λέειERDDAP™πού να κρατήσετε τον πίνακα αρχείων (που έχει πληροφορίες για κάθε αρχείο δεδομένων πηγής) :

    • αληθές = στη μνήμη (το οποίο είναι πιο γρήγορο αλλά χρησιμοποιεί περισσότερη μνήμη)
    • ψευδές = στο δίσκο (η οποία είναι πιο αργή αλλά δεν χρησιμοποιεί μνήμη)

Για παράδειγμα,

<fileTableInMemory>true</fileTableInMemory>  

Αν το ρυθμίσετε αυτό σε αληθή για οποιοδήποτε σύνολο δεδομένων, να έχετε ένα μάτι στη μνήμη: αυτή τη στιγμή χρησιμοποιώντας τη γραμμή στο\[Το Domain σας\]/erddap/status.htmlγια να εξασφαλιστεί ότιERDDAP™Ακόμα έχει πολλές ελεύθερες αναμνήσεις.  

<fgdcFile&gt·

  • [ ** <fgdcFile> ** ] (#fgdcfile) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου λέειERDDAP™για να χρησιμοποιήσετε ένα αρχείο FGDC πριν από τη δημιουργίαERDDAP™Προσπαθήστε να δημιουργήσετε το αρχείο. Χρήση:
    <fgdcFile>*fullFileName*</fgdcFile>  

πλήρης ΑρχείοName μπορεί να αναφέρεται σε ένα τοπικό αρχείο (κάπου στο σύστημα αρχείων του διακομιστή) ή το URL ενός απομακρυσμένου αρχείου. Εάν πλήρης ΑρχείοName \="" ή το αρχείο δεν βρίσκεται, το σύνολο δεδομένων δεν θα έχει μεταδεδομένα FGDC. Αυτό είναι επίσης χρήσιμο αν θέλετε να καταστείλετε τα μεταδεδομένα FGDC για ένα συγκεκριμένο σύνολο δεδομένων. Ή, μπορείτε να βάλετε<fgdcActive> ψεύδος</fgdcActive> στο setup.xml για να πειERDDAP™να μην προσφέρει μεταδεδομένα FGDC για οποιοδήποτε σύνολο δεδομένων.  

<ισο19115 Αρχείο & gt

  • [ ** <iso19115Αρχείο> ** ] (Αρχείο #iso19115) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.xmlπου λέειERDDAP™για χρήση προκατασκευασμένου αρχείου ISO 19115 αντί να έχειERDDAP™Προσπαθήστε να δημιουργήσετε το αρχείο. Χρήση:
    <iso19115File>*fullFileName*</iso19115File>  
    πλήρης ΑρχείοName μπορεί να αναφέρεται σε ένα τοπικό αρχείο (κάπου στο σύστημα αρχείων του διακομιστή) ή το URL ενός απομακρυσμένου αρχείου. Εάν πλήρης ΑρχείοName \=""" ή το αρχείο δεν βρίσκεται, το σύνολο δεδομένων δεν θα έχει μεταδεδομένα ISO 19115. Αυτό είναι επίσης χρήσιμο αν θέλετε να καταστείλετε τα μεταδεδομένα ISO 19115 για ένα συγκεκριμένο σύνολο δεδομένων. Ή, μπορείτε να βάλετε<iso19115Active> false</iso19115Active> σε setup.xml για να πειERDDAP™να μην προσφέρουν μεταδεδομένα ISO 19115 για οποιοδήποτε σύνολο δεδομένων.  

<ταίριασμαAxis NDigits&gt·

  • [ ** <ταίριασμαAxisNDigits> ** ] (#matchaxin ψηφία) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε έναEDDGrid <σύνολο δεδομένων> tag γιαEDDGridσύνολα δεδομένων που είναι συγκεντρωτικά, π.χ., σύνολα αρχείων. Κάθε φορά που επαναφορτώνεται το σύνολο δεδομένων,ERDDAP™ελέγχει ότι οι τιμές του άξονα κάθε συστατικού του συνόλου είναι οι ίδιες. Η ακρίβεια της δοκιμής καθορίζεται από τοταίριασμαAxisNDigits, ο οποίος καθορίζει τον συνολικό αριθμό ψηφίων που πρέπει να αντιστοιχούν κατά τη δοκιμή των τιμών του διπλού άξονα ακρίβειας, 0 - 18 (το προκαθορισμένο) . Κατά τη δοκιμή των τιμών του άξονα επίπλευσης, η δοκιμή γίνεται με matchAxisNDigits/2 ψηφία. Τιμή 18 ή παραπάνωEDDGridνα κάνω μια ακριβή δοκιμή. Μια τιμή 0 λέειEDDGridνα μην κάνει καμία δοκιμή, η οποία δεν συνιστάται, εκτός από την περιγραφή που περιγράφεται παρακάτω.

Αν καιEDDGridεπιτρέπει στα κατασκευαστικά στοιχεία της συγκέντρωσης να έχουν ελαφρώς διαφορετικές τιμές άξονα, μόνο ένα σύνολο τιμών άξονα παρουσιάζεται στο χρήστη. Το σύνολο είναι από το ίδιο συστατικό που παρέχει τα μεταδεδομένα πηγής του συνόλου δεδομένων. Για παράδειγμα, γιαEDDGridFromFiles datasets, που καθορίζεται από το<μεταδεδομέναΑπό> ρύθμιση (προεπιλογή=τελευταίο) .

Η χρήση των matchAxisNDigits\=0 αποθαρρύνεται έντονα στις περισσότερες περιπτώσεις, επειδή απενεργοποιεί κάθε έλεγχο. Ακόμη και ο ελάχιστος έλεγχος είναι χρήσιμος επειδή εξασφαλίζει ότι τα συστατικά είναι κατάλληλα για συγκέντρωση. Όλοι υποθέτουμε ότι όλα τα εξαρτήματα είναι κατάλληλα, αλλά δεν είναι πάντα έτσι. Αυτό είναι λοιπόν ένα σημαντικό τεστ λογικής. Ακόμη και οι τιμές των matchAxisNDigits1, 2, 3 ή 4 αποθαρρύνονται επειδή οι διαφορετικές τιμές άξονα συχνά δείχνουν ότι τα συστατικά δημιουργήθηκαν (Να τα πλύνω;) ένας διαφορετικός τρόπος και συνεπώς δεν είναι κατάλληλος για συγκέντρωση.

Υπάρχει μία περίπτωση όπου η χρήση matchAxisNDigits\=0 είναι χρήσιμη και συνιστάται: με συγκεντρώσεις απομακρυσμένων αρχείων, π.χ., δεδομένων σε κουβάδες S3. Σε αυτή την περίπτωση, αν το σύνολο δεδομένων χρησιμοποιεί cacheFromUrl, cacheSizeGB, matchAxisNDigits\=0, και τοEDDGridΣύστημα απόΑρχεία γιαΣυγκέντρωση μέσω Ονόματα αρχείων, τότεEDDGridδεν χρειάζεται να διαβάσει όλα τα απομακρυσμένα αρχεία για να κάνει τη συγκέντρωση. Αυτό επιτρέπει στα σύνολα δεδομένων που γίνονται από δεδομένα σε κουβάδες S3 να φορτώνουν πολύ γρήγορα (σε αντίθεση με παράλογα αργά ανEDDGridπρέπει να κατεβάσετε και να διαβάσετε όλα τα αρχεία) .

<nThreads&gt·

  • Ξεκινώντας με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. Ένας λογικά ασφαλής κανόνας του αντίχειρα είναι: θα πρέπει να ορίσετεERDDAPsettings μνήμηςτουλάχιστον 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. Να το θυμάσαι αυτό:

  • Η ρύθμιση nThreadsERDDAP™είναι ανά αίτημα.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™υπόσχεται να επιστρέψει τις σειρές αποτελεσμάτων με μια συνεπή σειρά. Αυτός ο περιορισμός δημιουργείERDDAPnThreads εφαρμογή λιγότερο αποτελεσματική. Αλλά...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&gt·

  • [ ** <onChange> ** ] (#αλλαγή) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.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 ως '&amp?', '<', και '&gt?' μετά από το ποσοστό κωδικοποίησης.
        • Παράδειγμα: Για ένα URL που μπορείτε να πληκτρολογήσετε σε ένα πρόγραμμα περιήγησης ως: https://www.company.com/webService?department=R%26D&param2=value2
          Θα πρέπει να ορίσετε<onChange> tag μέσω (σε μία γραμμή)
            <onChange>https://www.company.com/webService?department=R%26D&amp;param2=value2</onChange>
      • mailto: -- Εάν η ενέργεια αρχίζει με "mailto:",ERDDAP™θα στείλει ένα email στην επόμενη διεύθυνση ηλεκτρονικού ταχυδρομείου που δείχνει ότι το σύνολο δεδομένων έχει ενημερωθεί / αλλάξει. Για παράδειγμα:<onChange>mailto:john.smith@company.com</onChange> Εάν έχετε ένα καλό λόγο γιαERDDAP™για να υποστηρίξει κάποιο άλλο είδος ενέργειας, στείλτε μας ένα email που περιγράφει τι θέλετε.
    • Αυτό το ταμπελάκι είναι πιθανό. Μπορεί να υπάρχουν όσες από αυτές τις ετικέτες θέλετε. Χρησιμοποιήστε μία από αυτές τις ετικέτες για κάθε ενέργεια που πρόκειται να εκτελεστεί.
    • Αυτό είναι ανάλογο μεERDDAPΤο σύστημα συνδρομής email/URL, αλλά αυτές οι ενέργειες δεν αποθηκεύονται επίμονα (Δηλαδή, αποθηκεύονται μόνο σε αντικείμενο EDD) .
    • Για να αφαιρέσετε μια συνδρομή, απλά αφαιρέστε το<onChange> ετικέτα. Η αλλαγή θα σημειωθεί την επόμενη φορά που θα επαναφορτωθεί το σύνολο δεδομένων.  

<επαναφόρτωσηEveryNMinutes&gt

  • [ ** <επαναφόρτωση Κάθε λεπτό> ** ] (#να ξαναγεμίσω κάθε λεπτό) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.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™να επαναφορτώσει ένα συγκεκριμένο σύνολο δεδομένων το συντομότερο δυνατόν μέσω ενόςΑρχείο σημαίας.

    • Για περίεργους προγραμματιστές -- inERDDAP™, η επαναφόρτωση όλων των συνόλων δεδομένων γίνεται με δύο νήματα μονής χρήσης. Ένα νήμα ξεκινά μια μικρή επαναφόρτωση αν βρει ένα αρχείο σημαίας ή μια μεγάλη επαναφόρτωση (που ελέγχει όλα τα σύνολα δεδομένων για να δούμε αν πρέπει να επαναφορτωθούν) . Το άλλο νήμα κάνει την πραγματική επαναφόρτωση των συνόλων δεδομένων ένα κάθε φορά. Αυτά τα νήματα λειτουργούν στο παρασκήνιο εξασφαλίζοντας ότι όλα τα σύνολα δεδομένων είναι ενημερωμένα. Το νήμα που κάνει στην πραγματικότητα τις επαναφορτώσεις προετοιμάζει μια νέα έκδοση ενός συνόλου δεδομένων στη συνέχεια το ανταλλάσσει στη θέση του (ουσιαστικά αντικατάσταση της παλαιάς έκδοσης ατομικά) . Έτσι είναι πολύ πιθανό να συμβεί η ακόλουθη ακολουθία γεγονότων (Είναι καλό.) :

      1. ERDDAP™εκκίνηση επαναφόρτωσης συνόλου δεδομένων (δημιουργία νέας έκδοσης) Στο βάθος.
      2. Ο χρήστης 'A' υποβάλλει αίτηση στο σύνολο δεδομένων.ERDDAP™χρησιμοποιεί την τρέχουσα έκδοση του συνόλου δεδομένων για να δημιουργήσει την απάντηση. (Αυτό είναι καλό. Δεν υπήρξε καμία καθυστέρηση για το χρήστη, και η τρέχουσα έκδοση του συνόλου δεδομένων δεν πρέπει ποτέ να είναι πολύ μπαγιάτικη.)
      3. ERDDAP™τελειώνει τη δημιουργία της νέας επαναφορτωμένης έκδοσης του συνόλου δεδομένων και ανταλλάσσει ότι η νέα έκδοση σε παραγωγή. Όλες οι επόμενες νέες αιτήσεις αντιμετωπίζονται από τη νέα έκδοση του συνόλου δεδομένων. Για συνέπεια, το αίτημα του χρήστη Α εξακολουθεί να συμπληρώνεται από την αρχική έκδοση.
      4. Ο χρήστης 'B' υποβάλλει αίτηση στο σύνολο δεδομένων καιERDDAP™χρησιμοποιεί τη νέα έκδοση του συνόλου δεδομένων για να δημιουργήσει την απάντηση.
      5. Τελικά τα αιτήματα του χρήστη Α και του χρήστη Β ολοκληρώνονται (Ίσως Πρώτος ο Α, ίσως ο πρώτος ο Β.) .

Ακούω κάποιον να λέει, "Μόνο δύο τριάδες! Χα! Αυτό είναι γελοίο! Θα πρέπει να συσταθεί ότι μέχρι έτσι ώστε η επαναφόρτωση των συνόλων δεδομένων χρησιμοποιεί όσες κλωστές που απαιτούνται, έτσι ώστε όλα να γίνεται γρηγορότερα και με μικρή ή καθόλου καθυστέρηση. Ναι και όχι. Το πρόβλημα είναι ότι η φόρτωση περισσότερων του ενός συνόλων δεδομένων τη φορά δημιουργεί αρκετά σκληρά νέα προβλήματα. Όλα πρέπει να λυθούν ή να αντιμετωπιστούν. Το τρέχον σύστημα λειτουργεί καλά και έχει διαχειρίσιμα προβλήματα (για παράδειγμα, η δυνατότητα υστέρησης πριν από την παρατήρηση μιας σημαίας) . (Αν χρειάζεστε βοήθεια να τους διαχειριστείτε, δείτε μαςτμήμα για τη λήψη πρόσθετης υποστήριξης.) Σχετικάενημέρωση Κάθε NMILIS. σύστημα λειτουργεί μέσα σε νήματα απόκρισης, έτσι ώστε να μπορεί και να οδηγεί σε πολλαπλά σύνολα δεδομένων που ενημερώνονται (όχι την πλήρη επαναφόρτωση) ταυτόχρονα.

Proactive εναντίον Reactive

ERDDAPΤο σύστημα επαναφόρτωσης είναι ενεργό -- τα σύνολα δεδομένων επαναφορτίζονται σύντομα μετά την επαναφόρτωσή τους Κάθε λεπτός χρόνος τελειώνει (Δηλαδή, γίνονται "παραμύθι", αλλά ποτέ πολύ μπαγιάτικα) , είτε το σύνολο δεδομένων λαμβάνει αιτήματα από τους χρήστες ή όχι. Λοιπόν...ERDDAP™Τα σύνολα δεδομένων είναι πάντα ενημερωμένα και έτοιμα για χρήση. Αυτό είναι σε αντίθεση με την αντιδραστική προσέγγιση του THREDDS: το αίτημα ενός χρήστη είναι αυτό που λέει THREDDS να ελέγξει αν ένα σύνολο δεδομένων είναι μπαγιάτικο (Μπορεί να είναι πολύ μπαγιάτικο.) . Αν είναι μπαγιάτικο, το ThREDDS κάνει το χρήστη να περιμένει (συχνά για λίγα λεπτά) ενώ το σύνολο δεδομένων επαναφορτίζεται.

<ενημέρωση Κάθε NMillis&gt·

  • [ ** <ενημέρωσηEveryNMillis> ** ] (# update everynnmillis (στα Αγγλικά)) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε ένα<σύνολο δεδομένων> tag indatasets.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.ncTmp) που δεν ταιριάζει με το αρχείο συνόλων δεδομένων Όνομα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> μεEDDGridFromFiles ή 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&gt·

  • [ ** <πηγή μπορεί να περιορίσει StringEQNE> ** ] (#Πηγή μπορεί να συγκρατήσειstringeqne) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<σύνολο δεδομένων> tag indatasets.xmlπου προσδιορίζει εάν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με τους φορείς εκμετάλλευσης = και !=.
    • Για τον πίνακα EDDFromDapSequence, αυτό ισχύει μόνο για τις μεταβλητές συμβολοσειράς εξωτερικής ακολουθίας. Εικάζεται ότι η πηγή δεν μπορεί να χειριστεί περιορισμούς στις εσωτερικές μεταβλητές ακολουθίας.
    • Αυτό το ταμπελάκι είναι πιθανό. Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
    • Για τον πίνακα EDDFromDapSequenceOPeNDAPΔιακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε αληθή (το προκαθορισμένο) .
    • Για τον πίνακα EDDFromDapSequence Σέρβερς, αυτό θα πρέπει να ρυθμιστεί σε λάθος.
    • Ένα παράδειγμα είναι:
        <sourceCanConstrainStringEQNE>true</sourceCanConstrainStringEQNE>  

 

<πηγήCanConstrainStringGTLT&gt·

  • [ ** <πηγήΜπορεί να περιορίσει StringGTLT> ** ] (#Πηγή μπορεί να συγκρατήσειstringgtttt) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<dataset> tag που καθορίζει εάν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με το<,<=, > και >= χειριστές.
    • Για τον πίνακα EDDFromDapSequence, αυτό ισχύει μόνο για τις μεταβλητές συμβολοσειράς εξωτερικής ακολουθίας. Εικάζεται ότι η πηγή δεν μπορεί να χειριστεί περιορισμούς στις εσωτερικές μεταβλητές ακολουθίας.
    • Οι έγκυρες τιμές είναι αληθείς (το προκαθορισμένο) και ψευδής.
    • Αυτό το ταμπελάκι είναι πιθανό. Η προεπιλογή είναι αλήθεια.
    • Για τον πίνακα EDDFromDapSequenceOPeNDAPΔιακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε αληθή (το προκαθορισμένο) .
    • Για τον πίνακα EDDFromDapSequence Σέρβερς, αυτό θα πρέπει να ρυθμιστεί σε λάθος.
    • Ένα παράδειγμα είναι:
        <sourceCanConstrainStringGTLT>true</sourceCanConstrainStringGTLT>  

 

<πηγήCanConstrengRegex&gt·

  • [ ** <πηγήΜπορεί να περιορίσει StringRegex> ** ] (#πηγή μπορεί να constringregex) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDD<dataset> tag που καθορίζει αν η πηγή μπορεί να περιορίσει τις μεταβλητές συμβολοσειρών με κανονικές εκφράσεις, και αν ναι, τι είναι ο φορέας εκμετάλλευσης.
    • Οι έγκυρες τιμές είναι "=" (τοDAPπρότυπο) , "=" (λανθασμένα υποστηρίζεται από πολλούςDAPεξυπηρετητές) , ή " (υποδεικνύοντας ότι η πηγή δεν υποστηρίζει κανονικές εκφράσεις) .
    • Αυτό το ταμπελάκι είναι πιθανό. Η προεπιλογή είναι...
    • Για τον πίνακα EDDFromDapSequenceOPeNDAPΔιακομιστές DRDS, αυτό θα πρέπει να ρυθμιστεί σε "" (το προκαθορισμένο) .
    • Για τον πίνακα EDDFromDapSequence Διακομιστές Dapper, αυτό θα πρέπει να ρυθμιστεί σε "" (το προκαθορισμένο) .
    • Ένα παράδειγμα είναι:
        <sourceCanConstrainStringRegex>=~</sourceCanConstrainStringRegex>  

<πηγήCanDoDistinct&gt·

  • [ ** <πηγή CanDoDistinct> ** ] (#πηγήκαντοδιακριτικό) είναι μια επιλογή ετικέτας μέσα σε έναν πίνακα EDDFromDatabase<dataset> ετικέτα που καθορίζει αν η βάση δεδομένων πηγής θα πρέπει να χειριστεί &distinct () περιορισμοί στις ερωτήσεις των χρηστών.
    • Αυτό το ταμπελάκι είναι πιθανό. Οι έγκυρες τιμές είναι όχι (ERDDAP™λαβές διακριτές· η προεπιλογή) , μερική (η πηγή χειρίζεται διακριτά καιERDDAP™Το χειρίζεται ξανά.) , και ναι (η πηγή χειρίζεται διακριτά) .
    • Εάν χρησιμοποιείτε όχι καιERDDAP™εξαντλείται η μνήμη όταν χειρίζεστε διακριτά, χρησιμοποιήστε ναι.
    • Αν χρησιμοποιείτε το ναι και η βάση δεδομένων πηγής χειρίζεται διακριτά πολύ αργά, χρησιμοποιήστε το όχι.
    • μερική σας δίνει το χειρότερο και από τα δύο: είναι αργή επειδή ο χειρισμός της βάσης δεδομένων του διακριτού είναι αργή και μπορεί να ξεμείνει από τη μνήμη στοERDDAP.
    • Οι βάσεις δεδομένων ερμηνεύουν το DISTINCT ως αίτημα μόνο για μοναδικές σειρές αποτελεσμάτων, ενώERDDAP™Το ερμηνεύει ως αίτημα για έναν ταξινομημένο κατάλογο μοναδικών σειρών αποτελεσμάτων. Αν το ρυθμίσετε σε μερική ή ναι,ERDDAP™αυτόματα λέει επίσης στη βάση δεδομένων να ταξινομήσει τα αποτελέσματα.
    • Μια μικρή διαφορά στα αποτελέσματα: Με όχι|μερική,ERDDAP™will κατά την έναρξη των αποτελεσμάτων (πριν από μη-"" συμβολοσειρές) . Με ναι, η βάση δεδομένων μπορεί (Τα Postgres θα το κάνουν) είδος "" στο τέλος των αποτελεσμάτων (μετά από μη-" συμβολοσειρές) . Υποθέτω ότι αυτό θα επηρεάσει επίσης τη διαλογή των σύντομων λέξεων σε σχέση με τις μακρύτερες λέξεις που ξεκινούν με τη σύντομη λέξη. Για παράδειγμα,ERDDAP™θα ταξινομήσει " Simon" πριν " Simons".
    • Ένα παράδειγμα είναι:
        <sourceCanDoDistinct>yes</sourceCanDoDistinct>  

 

<πηγήCanOrderBy&gt

  • [ ** <πηγή 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&gt

  • [ ** <ΠηγήΧρειάζεται Διευρυμένο 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 που χρησιμοποιείται για να ζητήσει δεδομένα. Για παράδειγμα, γιαDAPservers, αυτό είναι το URL στο οποίο .dods, .das, .dds, ή .html θα μπορούσε να προστεθεί.
    • Απόdatasets.xmlείναι ένα αρχείο XML, ΠΡΕΠΕΙ επίσης να κωδικοποιήσει '&', '<', και '>' στο URL ως '&amp?', '<«, και «>».
    • Για τους περισσότερους τύπους συνόλου δεδομένων,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>

Δείτε αυτές τις σημειώσεις για τοτύπος δεδομένων χαρακτήρων. Δείτε αυτές τις σημειώσεις για τομακροσκελής τύπος δεδομένων.

  • Έγκυροι τύποι για διαστημικούς χωριστούς καταλόγους τιμών (ή μεμονωμένες τιμές) είναι 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 και όλες τις άλλες μεταβλητές με πληροφορίες για το σταθμό, η οποία σχεδόν πάντα περιλαμβάνει γεωγραφικό πλάτος και μήκος (και ύψος ή βάθος, εάν υπάρχει) . Ο κατάλογος δεν θα περιλαμβάνει ποτέ το χρόνο ή τυχόν μεταβλητές παρατήρησης.

  • Για ορισμένους προσδεδεμένους σημαντήρες, ένα σύνολο δεδομένων μπορεί να έχει δύο σειρές μεταβλητών γεωγραφικού πλάτους και μήκους:
    1. Ένα ζεύγος τιμών γεωγραφικού πλάτους και γεωγραφικού μήκους που είναι σταθερές (Δηλαδή, η σταθερή θέση της αγκυροβολίας) . ΜέσαERDDAP™, να δώσει αυτές τις μεταβλητέςdestinationNames του γεωγραφικού πλάτους και του γεωγραφικού μήκους, και περιλαμβάνουν αυτές τις μεταβλητές στον κατάλογο των cdm\_timeseries\_Variables.
    2. Ακριβείς τιμές γεωγραφικού πλάτους και μήκους που συνδέονται με κάθε παρατήρηση. Μέσα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 για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τα προφίλ.
      <att name="cf\\_role">profile\\_id</att>  
      (Ένα δεδομένο προφίλ\_id πρέπει να είναι μοναδικό μόνο για μια δεδομένη χρονοσειρά\_id.) Εάν καμία άλλη μεταβλητή δεν είναι κατάλληλη, εξετάστε τη χρήση της μεταβλητής χρόνου.
    • Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το 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 για να προσδιορίσει τη μεταβλητή που προσδιορίζει μοναδικά τα προφίλ.
      <att name="cf\\_role">profile\\_id</att>  
      (Ένα δεδομένο προφίλ\_id πρέπει να είναι μοναδικό μόνο για μια δεδομένη τροχιά\_id.) Εάν καμία άλλη μεταβλητή δεν είναι κατάλληλη, εξετάστε τη χρήση της μεταβλητής χρόνου.
    • Το σύνολο δεδομένων ΠΡΕΠΕΙ να περιλαμβάνει το 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™είναι:

Εάν το σύνολο δεδομένων σας ακολουθεί κάποιο πρόσθετο πρότυπο μεταδεδομένων, παρακαλούμε προσθέστε το όνομα στη λίστα 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 ως '&amp?', '<', και '&gt?' μετά από το ποσοστό κωδικοποίησης.
    • infoUrlείναι μοναδική σεERDDAP. Δεν προέρχεται από κανένα πρότυπο μεταδεδομένων.
ίδρυμα
  • ίδρυμα (από τηνΚΦκαιACDDπρότυπα μεταδεδομένων) είναι ένα REQUIRED παγκόσμιο χαρακτηριστικό με τη σύντομη έκδοση του ονόματος του ιδρύματος που είναι η πηγή των δεδομένων αυτών (συνήθως ένα ακρωνύμιο, συνήθως<20 χαρακτήρες). Για παράδειγμα,
    <att name="institution">NASA GSFC</att>
    • Είτε το σύνολο δεδομένων είναι παγκόσμιοΧαρακτηριστικά πηγήςή της παγκόσμιας<addAttributes> ΠΡΕΠΕΙ να περιλαμβάνει αυτό το χαρακτηριστικό.
    • ERDDAP™εμφανίζει το ίδρυμα όποτε εμφανίζει μια λίστα συνόλων δεδομένων. Εάν το όνομα ενός ιδρύματος εδώ είναι μεγαλύτερο από 20 χαρακτήρες, μόνο οι πρώτοι 20 χαρακτήρες θα είναι ορατοί στη λίστα των συνόλων δεδομένων (αλλά ολόκληρο το ίδρυμα μπορεί να φανεί με την τοποθέτηση του δρομέα του ποντικιού πάνω από το διπλανό "?" εικονίδιο) .
    • Εάν προσθέσετε το ίδρυμα στη λίστα των<categoryAttributes> μέσαERDDAPΣsetup.xmlαρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων από το ίδιο ίδρυμα μέσωERDDAPS " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα.
λέξεις κλειδιά
  • λέξεις κλειδιά (από τηνACDDπρότυπο μεταδεδομένων) είναι ένας κατάλογος λέξεων και σύντομων φράσεων που χωρίζονται από κόμματα (για παράδειγμα,GCMD Λέξεις-κλειδιά της επιστήμης) που περιγράφουν το σύνολο δεδομένων με γενικό τρόπο και δεν υποθέτουν οποιαδήποτε άλλη γνώση του συνόλου δεδομένων (για παράδειγμα, για τα ωκεανογραφικά δεδομένα, περιλαμβάνονται ο ωκεανός) . Για παράδειγμα,
    <att name="keywords">ano, circulation, coastwatch, currents, derived, Earth Science &gt; Oceans &gt; Ocean Circulation &gt; 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) πρέπει να κωδικοποιείται ως &amp·<, και & 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
έργο
  • έργο (από την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™συνήθως δημιουργεί αυτό το παγκόσμιο χαρακτηριστικό αυτόματα. Δύο εξαιρέσεις είναι EDDTableFromHyraxΑρχεία και 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>] (#μεταβλητή δεδομένων) destinationNames για τον προσδιορισμό μεταβλητών που έχουν περιορισμένο αριθμό τιμών (ένας άλλος τρόπος: μεταβλητές για τις οποίες κάθε μία από τις τιμές έχει πολλά αντίγραφα) . Για παράδειγμα,
    <att name="subsetVariables">station\\_id, longitude, latitude</att>  

Εάν αυτή η ιδιότητα είναι παρούσα, το σύνολο δεδομένων θα έχει datasetID . subset ιστοσελίδα (και ένα σύνδεσμο σε κάθε λίστα δεδομένων) που επιτρέπει στους χρήστες να επιλέγουν γρήγορα και εύκολα διάφορα υποσύνολα των δεδομένων.

  • Κάθε φορά που ένα σύνολο δεδομένων φορτώνεται,ERDDAPΦορτία και αποθηκεύει στο δίσκο έναν πίνακα με όλα τα διακριτά () συνδυασμοί του υποσύνολου Τιμές μεταβλητής.ERDDAP™μπορεί να διαβάσει ότιsubsetVariablesτραπέζι και επεξεργασία πολύ γρήγορα (ιδιαίτερα σε σύγκριση με την ανάγνωση πολλών αρχείων δεδομένων ή τη λήψη δεδομένων από μια βάση δεδομένων ή άλλη εξωτερική υπηρεσία) .
  • Αυτό επιτρέπειERDDAP™να κάνει 3 πράγματα:
    1. ΕπιτρέπειERDDAP™να θέσει μια λίστα των πιθανών τιμών σε μια αναπτυσσόμενη λίστα στη φόρμα πρόσβασης δεδομένων, να κάνει μια ιστοσελίδα γραφήματος, και . subset ιστοσελίδες.
    2. ΕπιτρέπειERDDAP™να προσφέρει μια σελίδα . subset για αυτό το σύνολο δεδομένων. Αυτή η σελίδα είναι ενδιαφέρουσα γιατί καθιστά εύκολο να βρείτε έγκυρους συνδυασμούς των τιμών αυτών των μεταβλητών, η οποία για ορισμένα σύνολα δεδομένων και ορισμένες μεταβλητές είναι πολύ, πολύ δύσκολο (σχεδόν αδύνατο.) . Στη συνέχεια, όλοι οι χρήστες ζητούν διακριτά () υποσύνολο Τα μεταβλητά δεδομένα θα είναι πολύ γρήγορα.
    3. Εάν υπάρχει αίτημα χρήστη που αναφέρεται μόνο σε ένα υποσύνολο αυτών των μεταβλητών,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\&gt,
  • [<sourceName\>] (#όνομα πηγής) -- το όνομα της πηγής δεδομένων για τη μεταβλητή. Αυτό είναι το όνομα πουERDDAP™χρησιμοποιείται όταν ζητούνται δεδομένα από την πηγή δεδομένων. Αυτό είναι το όνομα πουERDDAP™θα ψάξουν για όταν τα δεδομένα επιστρέφονται από την πηγή δεδομένων. Είναι ευαίσθητη υπόθεση. Αυτό είναι ΑΠΑΙΤΕΙΤΑΙ.
<destinationName\&gt,
  • [<destinationName\>] (#Όνομα προορισμού) είναι το όνομα της μεταβλητής που θα εμφανίζεται και θα χρησιμοποιείται απόERDDAP™χρήστες.
    • Αυτό είναι πιθανό. Σε περίπτωση απουσίας, ηsourceNameχρησιμοποιείται.
    • Αυτό είναι χρήσιμο γιατί σας επιτρέπει να αλλάξετε μια κρυπτογραφική ή παράξενηsourceName.
    • destinationNameείναι ευαίσθητη περίπτωση.
    • destinationNameS ΠΡΕΠΕΙ να ξεκινήσει με ένα γράμμα (Α-Ζ, Α-Ζ) και ΠΡΕΠΕΙ να ακολουθείται από 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 μπορούν να χρησιμοποιήσουν κάποια ειδικά κωδικοποιημένα, ψευδοsourceNames για τον καθορισμό νέων μεταβλητών δεδομένων, π.χ. για την προώθηση ενός παγκόσμιου χαρακτηριστικού ως μεταβλητής δεδομένων. Βλέπεις;τα εν λόγω έγγραφα.

HDFΔομές

Ξεκινώντας μεERDDAP™v2.12,EDDGridΑπό αρχεία καιEDDGridΑπό αρχείαNc Μη συσκευασμένα μπορεί να διαβάσει τα στοιχεία από " δομές" σε.nc4 και.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\_rangeaddAtribute, η οποία θα παρακάμψει τις αναμενόμενες τιμές προορισμού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.zeroPad ( αριθμός, nDigits ) θα προσθέσει 0's στα αριστερά του αριθμού συμβολοσειρών έτσι ώστε ο συνολικός αριθμός ψηφίων είναι nDigits (π.χ. String2.zeroPad ("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&gt;35 || tc&lt;-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είναι ευαίσθητη περίπτωση.
    • destinationNameS ΠΡΕΠΕΙ να ξεκινήσει με ένα γράμμα (Α-Ζ, Α-Ζ) και ΠΡΕΠΕΙ να ακολουθείται από 0 ή περισσότερους χαρακτήρες (Α-Ζ, Α-Ζ, 0-9, και \_) . ("-" είχε επιτραπεί πρινERDDAP™έκδοση 1.10.) Αυτός ο περιορισμός επιτρέπει τα ονόματα μεταβλητών δεδομένων να είναι τα ίδια σεERDDAP™, στα αρχεία απόκρισης, και σε όλο το λογισμικό όπου θα χρησιμοποιηθούν αυτά τα αρχεία, συμπεριλαμβανομένων των γλωσσών προγραμματισμού (ΌπωςPython,Matlab, καιJavaΣενάριο) όταν υπάρχουν παρόμοιοι περιορισμοί στις μεταβλητές ονομασίες.
    • Σε σύνολα δεδομένων EDDTable,γεωγραφικό μήκος, γεωγραφικό πλάτος, υψόμετρο (ή βάθος) , και ώραΟι μεταβλητές δεδομένων είναι ειδικές.  
<δεδομένα Τύπος & gt·
  • [<Τύπος δεδομένων>] (#Τύπος δεδομένων) -- προσδιορίζει τον τύπο δεδομένων που προέρχεται από την πηγή. (Σε ορισμένες περιπτώσεις, για παράδειγμα, κατά την ανάγνωση δεδομένων από αρχεία ASCII, καθορίζει τον τρόπο αποθήκευσης των δεδομένων που προέρχονται από την πηγή.)
    • Αυτό είναι ΑΠΑΙΤΕΙΤΑΙ από ορισμένους τύπους σύνολο δεδομένων και IGNORED από άλλους. Τύποι συνόλου δεδομένων που το απαιτούν αυτό για τουςdataVariableίνα είναι:EDDGridΑπό αρχεία Xxx, πίνακας EDDΑπό αρχεία Xxx, πίνακας EDDFromMWFS, πίνακας EDDFromNOS, πίνακας EDDFromSOS. Άλλοι τύποι συνόλου δεδομένων αγνοούν αυτή την ετικέτα επειδή παίρνουν τις πληροφορίες από την πηγή.  
    • Οι έγκυρες τιμές είναι οποιαδήποτε από τα πρότυπα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> για τη μεταβλητή, προσθέστε ascale\_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 και αποστροφές. Αυτοί οι χαρακτήρες εμφανίζονται ως παράξενοι χαρακτήρες ή '?' inERDDAP.  
Βάση πρόσβασης αρχείου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αρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων με παρόμοια δεδομένα μέσωERDDAPS " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα. Δοκιμάστε να χρησιμοποιήσετεioos\_categoryαναζήτηση συνόλων δεδομένων ενδιαφέροντος.
    • Υπήρχε.συζήτηση σχετικά μεERDDAP™καιioos\_categoryστοERDDAP™Ομάδα Google.

Μπορεί να μπείτε στον πειρασμό να ορίσετε<μεταβλητέςMustHaveIoosCategory> σε ψευδή έτσι ώστε αυτή η ιδιότητα δεν απαιτείται. ("Πφφτ! Τι με νοιάζει εμένα;) Μερικοί λόγοι για να το αφήσει να ισχύει (το προκαθορισμένο) και χρήσηioos\_categoryείναι:

  • Εάν setup.xml του<μεταβλητέςMustHaveIoosCategory> είναι αλήθεια,Δημιουργία συνόλων δεδομένωνXmlπάντα δημιουργεί / προτείνει έναioos\_categoryχαρακτηριστικό για κάθε μεταβλητή σε κάθε νέο σύνολο δεδομένων. Τότε γιατί δεν το αφήνεις μέσα;
  • ERDDAP™επιτρέπει στους χρήστες να αναζητούν σύνολα δεδομένων ενδιαφέροντος ανά κατηγορία.ioos\categoryείναι μια πολύ χρήσιμη κατηγορία αναζήτησης γιατί οι κατηγορίες ioos\ (για παράδειγμα, θερμοκρασία) είναι αρκετά ευρεία. Αυτό κάνειioos\_categoryπολύ καλύτερα για το σκοπό αυτό από ό, τι, για παράδειγμα, η πολύ λεπτότερη grained CFstandard\_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\_values και \_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αρχείο, οι χρήστες μπορούν εύκολα να βρουν σύνολα δεδομένων με παρόμοια δεδομένα μέσωERDDAPS " Αναζήτηση Datasets ανά Κατηγορία" στην αρχική σελίδα.
    • Εάν ορίσετε ΚΙstandard\_nameγια μια μεταβλητή, το χαρακτηριστικό των μονάδων για τη μεταβλητή δεν χρειάζεται να είναι πανομοιότυπο με τις κανονικές μονάδες που καθορίζονται για την τυποποιημένη ονομασία στον πίνακα τυποποιημένων ονομάτων CF, αλλά οι μονάδες πρέπει να είναι μετατρέψιμες στις κανονικές μονάδες. Για παράδειγμα, όλα τα σχετιζόμενα με τη θερμοκρασία CFstandard\_names έχουν " 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. Ο Τζον στο Νόαγκοβ.  
μονάδες
  • μονάδες (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) μορφοποιημένη συμβολοσειρά ώρας ημερομηνίας. Ο μετατροπέας θα επιστρέψει ένα μήνυμα σφάλματος αν η συμβολοσειρά μονάδων δεν είναι αναγνωρίσιμη.

Μονάδες χρόνου συμβολοσειράς

Για τις συνήθως χρησιμοποιούμενες μορφές χρόνου που είναι παραλλαγές του 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
DDD001, 3663 ψηφία, 001=Ιαν 1
ΗΗΕΘου, Θου, Θου3 γράμματα την ημέρα της εβδομάδας, η αξία αγνοείται κατά την ανάλυση
ΑΙΕΕΠέμπτη, Πέμπτη, Πέμπτη3 γράμμα ή πλήρης αγγλική ημέρα της εβδομάδας, περίπτωση αναίσθητη, τιμή αγνοείται κατά την ανάλυση
Η0, 00, 23H ώρα της ημέρας (0-23) , οποιοδήποτε αριθμό ψηφίων
HH00, 23HH ώρα της ημέρας (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, 112 ψηφία
Μ0, 00, 59λεπτό της ώρας, οποιοδήποτε αριθμό ψηφίων
mm00, 59λεπτό της ώρας, 2 ψηφία
α0, 00, 59δεύτερο λεπτό, οποιοδήποτε αριθμό ψηφίων
ss00, 59δεύτερο λεπτό, 2 ψηφία
Σ0, 000, 9, 999κλάσμα του δευτερολέπτου, σαν να ακολουθεί δεκαδικό σημείο, οποιοδήποτε αριθμό ψηφίων
SS00, 99εκατοντάδες του δευτερολέπτου, 2 ψηφία
ΣΔΤ000, 999χιλιάδες του δευτερολέπτου, 3 ψηφία
Α0, 0000, 86399999χιλιοστό του δευτερολέπτου της ημέρας, οποιοδήποτε αριθμό ψηφίων
ΑΑΑΑΑΑΑΑ00000000, 863999999χιλιοστό του δευτερολέπτου της ημέρας, 8 ψηφία
Ν0, 0000000000000, 863999999999999νανοδευτερόλεπτο της ημέρας, οποιοδήποτε αριθμό ψηφίων. ΜέσαERDDAP™, αυτό κατανέμεται στο nMillis.
NNNNNNNNNNNNNNNN0000000000000, 863999999999999νανοδευτερόλεπτα, 14 ψηφία. ΜέσαERDDAP™Αυτό κατατείνεται στο NMILIS.
n0,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 nn0000000000, 59999999999Νανοδευτερόλεπτο, 11 ψηφία. ΜέσαERDDAP™Αυτό κατατείνεται στο NMILIS.
XXX, ΖΖΖΖ, -08:00, +01:00ζώνη ώρας με τη μορφή «Z» ή ± (Μετατόπιση 2 ψηφίων ωρών) : (Μετατόπιση 2 ψηφίων λεπτών) . Αυτό σερβίρεται. χώρος ως + (μη τυποποιημένο) . Το ZZZ που υποστηρίζει το "Z" δεν είναι στάνταρ αλλά ασχολείται με ένα κοινό σφάλμα χρήστη.
XX, ZZZ -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-ddT'HH:mm:ssZ") . Αλλά σε παρακαλώ χρησιμοποίησε τοdestinationName "time"για την κύρια ημερομηνία Μεταβλητή χρόνου.

Πάντα ελέγξτε τη δουλειά σας για να βεβαιωθείτε ότι ο χρόνος που εμφανίζεται σεERDDAP™είναι τα σωστά δεδομένα χρόνου. Η εργασία με δεδομένα χρόνου είναι πάντα δύσκολη και επιρρεπής σε λάθη.

Βλέπεις;περισσότερες πληροφορίες σχετικά με τις μεταβλητές χρόνου. ERDDAP™έχει ένα βοηθητικόΜετατροπή ενός αριθμητικού Χρόνος έως/από ώρα συμβολοσειράς. Βλέπεις;ΠώςERDDAP™Αντιμετωπίζει το Χρόνο.  

valid\_range

ή

<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&gt·
  • [ ** <αφαίρεσηMVRows> ** ] (#απομακρυνθείτε) είναι μια ΟΠΤΙΚΗ ετικέτα μέσα σε μια ετικέταdatasets.xmlγια τον πίνακα EDDFromFiles (συμπεριλαμβανομένων όλων των υποκατηγοριών) σύνολα δεδομένων, αν και χρησιμοποιείται μόνο για EDDTableFromMultidimNcFiles. Μπορεί να έχει αξία αληθινή ή ψεύτικη. Για παράδειγμα, αλήθεια Αυτό αφαιρεί οποιαδήποτε δέσμη γραμμών στο τέλος μιας ομάδας όπου όλες οι τιμές είναιmissing\_value, \_FillValue, ή το CoHort ... Array εγγενής ελλείπουσα τιμή (ή char=# 32 για CharArrays) . Αυτό είναι για τον τύπο αρχείου CF DSG Multidistant Array και παρόμοια αρχεία. Αν αληθεύει, αυτό κάνει τη σωστή δοκιμή και έτσι φορτώνει πάντα όλες τις μεταβλητές max dim, έτσι μπορεί να πάρει επιπλέον χρόνο. Η προεπιλεγμένη τιμή είναι ψευδής. Σύσταση - Εάν είναι δυνατόν για το σύνολο δεδομένων σας, συνιστούμε τη ρύθμιση αφαίρεσης MVRows σε ψευδή. Ο καθορισμός της αφαίρεσης MVRows στην πραγματικότητα μπορεί να επιβραδύνει σημαντικά τις αιτήσεις, αν και μπορεί να χρειαστεί για ορισμένα σύνολα δεδομένων.