Arbeiten mit demdatasets.xmlDatei
\[Diese Webseite wird nur von Interesse seinERDDAP™Administratoren.\]
Nachdem Sie demERDDAP™ Installationsanleitung, Sie müssen diedatasets.xmlDatei in Tomcat /content/erddap/ um die Datensätze zu beschreiben, die SieERDDAP™Installation wird dienen.
Sie können ein Beispiel sehendatasets.xmlauf GitHub.
-
- Ja.
Einleitung
Einige Montage erforderlich
Einrichten eines DatensatzesERDDAP™Es geht nicht nur darum, auf das Verzeichnis oder die URL des Datensatzes hinzuweisen. Sie müssen ein Stück XML schreiben fürdatasets.xmldie den Datensatz beschreibt.
- Für gegitterte Datensätze, um den Datensatz konform zu machenERDDAP's Datenstruktur für netzgebundene Daten, müssen Sie eine Teilmenge der Variablen des Datensatzes identifizieren, die die gleichen Dimensionen teilen. (Warum? Wie?)
- Die aktuellen Metadaten des Datensatzes werden automatisch importiert. Aber wenn Sie diese Metadaten ändern oder andere Metadaten hinzufügen möchten, müssen Sie sie indatasets.xml. UndERDDAP™andere Metadaten benötigt, einschließlichGlobale Attribute (wie folgt:infoUrl, Institution,sourceUrl, Zusammenfassung und Titel) undVariable Attribute (wie folgt:long\_nameund Einheiten) . Wie die Metadaten, die derzeit im Datensatz enthalten sind, dem Datensatz beschreibende Informationen hinzufügen, werden die vonERDDAP ™fügt dem Datensatz beschreibende Informationen hinzu. Die zusätzlichen Metadaten sind eine gute Ergänzung zu Ihrem Datensatz und hilftERDDAP™tun Sie eine bessere Aufgabe, Ihre Daten an Benutzer zu präsentieren, die nicht mit ihr vertraut sind.
- ERDDAP™Sie müssen besondere Dinge mit derLänge, Breite, Höhe (oder Tiefe) und Zeitvariablen.
Wenn Sie in diese Ideen einkaufen und den Aufwand zur Erstellung des XML fürdatasets.xml, Sie erhalten alle Vorteile vonERDDAP™, einschließlich:
- Volltextsuche nach Datensätzen
- Suche nach Datensätzen nach Kategorie
- Datenzugriffsformulare ( datasetID .html) so können Sie eine Untermenge von Daten in vielen verschiedenen Dateiformaten anfordern
- Formulare für Diagramme und Karten ( datasetID .graph)
- Web Map Service (WMS) für gegitterte Datensätze
- RESTfulZugriff auf Ihre Daten
Das machendatasets.xmlnimmt großen Aufwand für die ersten wenigen Datensätze, es wird leichter . Nach dem ersten Datensatz können Sie oft eine Menge Ihrer Arbeit für den nächsten Datensatz wiederverwenden. Glücklicherweise,ERDDAP™kommt mit zweiWerkzeugeum Ihnen zu helfen, das XML für jeden Datensatz zu erstellendatasets.xml. Wenn du feststeckst, siehst du unsereAbschnitt zum Erhalt zusätzlicher Unterstützung.
Datenanbieter Formblatt
Wenn ein Datenanbieter zu Ihnen kommt, in der Hoffnung, einige Daten zu Ihrem hinzufügenERDDAP, kann es schwierig und zeitraubend sein, alle Metadaten zu sammeln (Informationen zum Datensatz) benötigt, um den Datensatz inERDDAP. Viele Datenquellen (z.B. .csv-Dateien, Excel-Dateien, Datenbanken) keine internen Metadaten haben, alsoERDDAP™hat ein Data Provider-Formular, das Metadaten des Datenanbieters erfasst und dem Datenanbieter eine andere Anleitung gibt, einschließlich umfassender Anleitung fürDaten in Datenbanken. Die vorgelegten Informationen werden in diedatasets.xmlFormat und dann an dieERDDAP™Administrator (du) und geschrieben (anhängig) bis BigParentDirectory /logs/dataProviderForm.log . So automatisiert die Form den Prozess der Eingabe eines Datensatzes inERDDAP, aber dieERDDAP™Der Administrator muss diedatasets.xmlchunk und behandeln Sie die Datendatei (S) vom Anbieter oder der Verbindung zur Datenbank.
Die Einreichung von Datendateien aus externen Quellen ist ein großes Sicherheitsrisiko, alsoERDDAP™damit nicht umgehen. Sie müssen eine Lösung finden, die für Sie und den Datenanbieter funktioniert, zum Beispiel E-Mail (für kleine Dateien) , ziehen aus der Wolke (zum Beispiel DropBox oder Google Drive) , eine Sftp-Seite (mit Passwörtern) , oder Sneaker Netto (USB-Stick oder externe Festplatte) . Sie sollten wahrscheinlich nur Dateien von Menschen akzeptieren, die Sie kennen. Sie müssen die Dateien für Viren scannen und andere Sicherheitsvorkehrungen.
Es gibt keinen Link inERDDAP™zum Datenträgerformular (z.B. auf derERDDAP™Startseite) . Stattdessen, wenn jemand Ihnen sagt, sie wollen ihre Daten von IhremERDDAP, Sie können ihnen eine E-Mail senden und so etwas sagen: Ja, wir können Ihre Daten inERDDAP. Um zu beginnen, füllen Sie bitte das Formular aus https://yourUrl/erddap/dataProviderForm.html (oderhttp://wennhttps://ist nicht aktiviert) . Nachdem Sie fertig sind, werde ich Sie kontaktieren, um die letzten Details auszuarbeiten. Wenn Sie sich das Formular ansehen möchten (ohne Ausfüllen) , Sie können das Formular aufERD'ERDDAP:Einleitung,Teil 1,Teil 2,Teil 3, undTeil 4. Diese Links auf derERD ERDDAP™senden Sie mir Informationen, nicht Sie, also senden Sie keine Informationen mit ihnen, es sei denn, Sie möchten tatsächlich Daten an dieERD ERDDAP.
Wenn Sie das Data Provider-Formular von Ihrem entfernen möchtenERDDAP™, gesetzt
<dataProviderFormActive>false</dataProviderFormActive>
in der Datei setup.xml.
Der Impuls dafür warNOAA2014Öffentlicher Zugang zu Forschungsergebnissen (PARR) Richtlinie, die alles erfordertNOAAüber Steuergelder finanzierte Umweltdaten werden über einen Datendienst bereitgestellt (nicht nur Dateien) innerhalb von 12 Monaten der Schöpfung. So gibt es ein erhöhtes Interesse an der NutzungERDDAP™Datensätze über einen Service ASAP zur Verfügung zu stellen. Wir brauchten einen effizienteren Umgang mit einer Vielzahl von Datenanbietern.
Feedback/Vorschläge? Dieses Formular ist neu, bitte E-Mailerd dot data at noaa dot govwenn Sie Feedback oder Vorschläge zur Verbesserung dieser haben.
Werkzeuge
ERDDAP™kommt mit zwei Befehlszeilenprogrammen, die Tools sind, um Ihnen zu helfen, das XML für jeden Datensatz zu erstellen, den Sie möchtenERDDAP™zu dienen. Sobald Sie eingerichtet habenERDDAP™und lauf es (mindestens ein Mal) , Sie können diese Programme im Tomcat /webapps/erdap/WEB-INF-Verzeichnis. Es gibt Linux/Unix Shell-Skripte (mit der Erweiterung .sh) und Windows-Scripte (mit der Erweiterung .bat) für jedes Programm.\[Führen Sie diese Tools auf Linux wie derselbe Benutzer aus (Tomcat?) Das wird Tomcat laufen.\]Wenn Sie jedes Programm ausführen, wird es Ihnen Fragen stellen. Geben Sie für jede Frage eine Antwort ein und drücken Sie dann Enter. Oder drücken Sie ^C, um ein Programm jederzeit zu verlassen.
Das Programm läuft nicht?
- Wenn Sie ein unbekanntes Programm erhalten (oder ähnliches) Fehlermeldung, das Problem ist wahrscheinlich, dass das Betriebssystem nicht finden konnteJava. Sie müssen herausfinden, woJavaist auf Ihrem Computer, dann bearbeiten Sie die Java-Referenz in der .bat oder .sh-Datei, die Sie versuchen zu verwenden.
- Wenn Sie eine jar-Datei erhalten, die nicht gefunden wurde oder die Klasse nicht die Fehlermeldung gefunden hat, dannJavakonnte keine der in der .bat oder .sh-Datei aufgeführten Klassen finden, die Sie verwenden möchten. Die Lösung ist herauszufinden, wo die .jar-Datei ist, und bearbeiten Sie die java Referenz auf sie in der .bat oder .sh-Datei.
- Wenn Sie eine Version vonJavaDas ist zu alt für ein Programm, das Programm wird nicht laufen und Sie werden eine Fehlermeldung wie sehen
Ausnahme im Gewinde "main" java.lang.UnsupportedClassVersionError:
einige/Klasse/Name : Unsupported major.minor version EinigeNumber
Die Lösung ist, die neueste Version zu aktualisierenJavaund stellen Sie sicher, dass die .sh- oder .bat-Datei für das Programm es verwendet.
Die Werkzeuge drucken verschiedene Diagnosenachrichten:
- Das Wort "ERROR" wird verwendet, wenn etwas so falsch ging, dass das Verfahren nicht abgeschlossen. Obwohl es ärgerlich ist, einen Fehler zu bekommen, zwingt der Fehler, sich mit dem Problem zu befassen.
- Das Wort "WARNING" wird verwendet, wenn etwas schief ging, aber das Verfahren konnte abgeschlossen werden. Das sind ziemlich selten.
- Alles andere ist nur eine informative Nachricht. Sie können \-verbose hinzufügenGenerateDatasetsXmloderDasDdsBefehlszeile, um zusätzliche informative Nachrichten zu erhalten, die manchmal hilft, Probleme zu lösen.
Die beiden Werkzeuge sind eine große Hilfe, aber Sie müssen noch alle diese Anweisungen auf dieser Seite sorgfältig lesen und wichtige Entscheidungen selbst treffen.
GenerateDatasetsXml
- GenerateDatasetsXml ist ein Befehlszeilenprogramm, das einen groben Entwurf des Datensatzes XML für nahezu jede Art von Datensatz erzeugen kann.
Wir STRONGLY EMPFEHLEN, dass Sie GenerateDatasets verwenden Xml statt Stücke vondatasets.xmlvon Hand, weil:
- Datensätze generieren Xml funktioniert in Sekunden. Das mit der Hand zu tun ist mindestens eine Stunde Arbeit, selbst wenn Sie wissen, was Sie tun.
- Datensätze generieren Xml macht einen besseren Job. Dies von Hand zu tun erfordert umfangreiche Kenntnisse, wieERDDAP™Arbeiten. Es ist unwahrscheinlich, dass Sie einen besseren Job von Hand tun. (Bob Simons verwendet immer GenerateDatasets Xml für den ersten Entwurf, und er schriebERDDAP.)
- Datensätze generieren Xml generiert immer ein gültiges Stückdatasets.xml. Irgendein Stückdatasets.xmldass Sie schreiben wird wahrscheinlich mindestens ein paar Fehler, die verhindernERDDAP™vom Laden des Datensatzes. Es dauert oft Stunden, um diese Probleme zu diagnostizieren. Verschwende deine Zeit nicht. Let Generate Datensätze Xml machen die harte Arbeit. Dann können Sie die .xml per Hand verfeinern, wenn Sie wollen.
Wenn Sie die GenerateDatasets verwenden Xml Programm:
- Unter Windows, das erste Mal, wenn Sie GenerateDatasetsXml ausführen, müssen Sie die Datei GenerateDatasetsXml.bat mit einem Texteditor bearbeiten, um den Pfad zur Java zu ändern. exe Datei, so dass WindowsJava.
- Datensätze generieren Xml bittet Sie zunächst, den EDDType anzugeben (Erd Dap Dataset Typ) des Datensatzes. SieheListe der Datensätze (in diesem Dokument) um herauszufinden, an welchem Typ für den Datensatz Sie arbeiten. Neben den regulären EDDTypen gibt es auch einigeSonder-/Pseudo-Datensatztypen (z.B. einen, der einen THREDDS-Katalog kriechen, um einen Bruch vondatasets.xmlfür jeden der Datensätze im Katalog) .
- Datensätze generieren Xml stellt Ihnen dann eine Reihe von Fragen, die speziell auf diesen EDDType. Die Fragen sammeln die fürERDDAP™Zugriff auf die Quelle des Datensatzes. Was zu verstehenERDDAP™fragt nach, siehe die Dokumentation für den EDDType, die Sie durch Klicken auf den gleichen Datensatztyp imListe der Datensätze.
Wenn Sie einen String mit Sonderzeichen eingeben müssen (z.B. Weißraumzeichen am Anfang oder Ende, Nicht-ASCII-Zeichen) , geben Sie einJSON-Stil String (mit speziellen Zeichen entkommen mit \ Zeichen) . Zum Beispiel, um nur ein Tab-Zeichen eingeben, geben Sie "\t" (mit den umliegenden Doppel-Zitaten, die sagen,ERDDAP™dass dies ein JSON-Strang ist.
- Oft wird eine Ihrer Antworten nicht das sein, was GenerateDatasetsXml braucht. Sie können dann wieder versuchen, mit überarbeiteten Antworten auf die Fragen, bis GenerateDatasets Xml kann die Quelldaten erfolgreich finden und verstehen.
- Wenn Sie die Fragen richtig beantworten (oder ausreichend korrekt) , GenerateDatasets Xml wird sich mit der Datenquelle verbinden und grundlegende Informationen sammeln (z.B. variable Namen und Metadaten) . Für Datensätze, die von lokalenNetCDF .ncund verwandten Dateien, GenerateDatasets Xml druckt oft die ncdump-ähnliche Struktur der Datei, nachdem sie die Datei zuerst liest. Dies kann Ihnen Informationen geben, um die Fragen besser auf einer nachfolgenden Schleife durch GenerateDatasetsXml zu beantworten.
- Datensätze generieren Xml generiert dann einen groben Entwurf des Datensatzes XML für diesen Datensatz.
- Diagnostische Informationen und der grobe Entwurf des Datensatzes XML werden in BigParentDirectory /logs/GenerateDatasetsXml.log .
- Der grobe Entwurf des Datensatzes XML wird in BigParentDirectory /logs/GenerateDatasetsXml.out .
"0 Dateien" Fehlermeldung
Wenn Sie GenerateDatasets ausführen Xml oderDasDds, oder wenn Sie versuchen, eineEDDGridVon...Files oder EDDTableFrom... Dateien-Datensatz inERDDAP™, und Sie erhalten eine "0 Dateien" Fehlermeldung, dassERDDAP™gefunden 0 passende Dateien im Verzeichnis (wenn Sie denken, dass es passende Dateien in diesem Verzeichnis) :
-
Überprüfen Sie, ob Sie den vollständigen Namen des Verzeichnisses angegeben haben. Und wenn Sie den Beispieldateinamen angegeben haben, stellen Sie sicher, dass Sie den vollständigen Namen der Datei, einschließlich des vollständigen Verzeichnisnamens, angegeben haben.
-
Überprüfen Sie, ob die Dateien wirklich in diesem Verzeichnis sind.
-
Überprüfen Sie die Rechtschreibung des Verzeichnisnamens.
-
Überprüfen Sie die DateiNameRegex. Es ist wirklich, wirklich einfach, Fehler mit Regexes zu machen. Für Testzwecke, versuchen Sie die regex .\*, die alle Dateinamen entsprechen sollte. (Sieheregex dokumentationundNach oben.)
-
Überprüfen Sie, ob der Benutzer, der das Programm läuft (z.B., user=tomcat (?) für Tomcat/ERDDAP) hat 'lesen' Erlaubnis für diese Dateien.
-
In einigen Betriebssystemen (zum Beispiel SELinux) und je nach Systemeinstellungen, muss der Benutzer, der das Programm ausgeführt hat, 'lesen' Berechtigung für die gesamte Kette von Verzeichnissen, die zu dem Verzeichnis führen, das die Dateien hat.
-
Wenn Sie Probleme haben, die Sie nicht lösen können,Anfrage Supportmit so viel Information wie möglich. Ähnlich, wenn es wie der entsprechende EDDType für einen bestimmten Datensatz scheint, funktioniert nicht mit diesem Datensatz, oder wenn es keinen entsprechenden EDDType gibt, bitte eine Datei einreichenProblem bei GitHubmit den Details (und eine Musterdatei, falls relevant) .
Sie müssen die Ausgabe von GenerateDatasets bearbeiten Xml, um es besser zu machen.
-
DISCLAIMER: DER CHUNKdatasets.xmlMADE BE GenerateDatasets Xml ISN'T PERFECT. Sie müssen die XML BEFORE in einem ÖFFENTLICHENERDDAP. Datensätze generieren Xml RELIES ON A LOT of RULES-OF-THUMB WHICH AREN'T ALWAYS CORRECT. Sie haben die Möglichkeit, den CORRECTNESS des XML so zu ändern, dass Sie aufERDDAPSdatasets.xmlFILE.
(Fun Fact: Ich schreie nicht. Aus historischen Rechtsgründen müssen Disclaimer in allen Kappen geschrieben werden.)
Die Ausgabe von GenerateDatasetsXml ist ein grober Entwurf. Sie werden es fast immer bearbeiten müssen. Wir haben enorme Anstrengungen unternommen, um die Produktion so schnell wie möglich fertig zu machen, aber es gibt Grenzen. Oft sind benötigte Informationen einfach nicht aus den Quell-Metadaten verfügbar.
Ein grundlegendes Problem ist, dass wir ein Computerprogramm fragen (GenerateDatasetsXml) eine Aufgabe zu tun, wo, wenn Sie die gleiche Aufgabe zu 100 Personen, würden Sie 100 verschiedene Ergebnisse erhalten. Es gibt keine einzige "richtige" Antwort. Offensichtlich kommt das Programm am nächsten, um Bobs Geist zu lesen (nicht deine) , aber auch so, es ist nicht ein all-verstehendes KI-Programm, nur ein Haufen von Heuristiken kobbelt zusammen, um eine KI-ähnliche Aufgabe zu tun. (An jenem Tag eines allverständigen KI-Programms kann kommen, aber es hat noch nicht. Wenn/wenn es das tut, können wir Menschen größere Probleme haben. Seien Sie vorsichtig, was Sie wünschen.)
-
Für Informationszwecke zeigt die Ausgabe die globale QuelleAttribute und variable sourceAttributes als Kommentare.ERDDAP™verbindet sourceAttributes undaddAttributes (die vorangegangen sind) um die Kombination zu machen Attribute, die dem Benutzer angezeigt werden. (Und andere Attribute werden automatisch zu Längen-, Breiten-, Höhen-, Tiefen- und Zeitvariablen hinzugefügt, wennERDDAP™macht tatsächlich den Datensatz) .
-
Wenn Sie kein sourceAttribute mögen, überschreiben Sie es, indem Sie ein addAttribute mit dem gleichen Namen, aber einen anderen Wert (oder kein Wert, wenn Sie es entfernen möchten) .
-
AlleaddAttributessind computergenerierte Vorschläge. Bearbeiten Sie sie! Wenn du kein AddAttribute magst, ändere es.
-
Wenn Sie andere hinzufügen möchtenaddAttributesFüge sie hinzu.
-
Wenn Sie einedestinationName, ändern. Aber nicht ändernsourceNameS.
-
Sie können die Reihenfolge derdataVariables oder sie entfernen.
- Sie können dann verwendenDasDds (siehe unten) wiederholt das XML für diesen Datensatz testen, um sicherzustellen, dass der resultierende Datensatz angezeigt wird, wie Sie es inERDDAP.
- Fühlen Sie sich frei, kleine Änderungen an derdatasets.xmlchunk, die beispielsweise erzeugt wurde, liefern eine bessereinfoUrl, Zusammenfassung oder Titel.
doNotAddStandardNames
Wenn Sie \-doNotAddStandardNames als Befehlszeilenparameter einschließen, wenn Sie ausführen Datensätze Xml, erzeugen Datensätze Xml wird nicht hinzugefügtstandard\_namein deraddAttributesfür andere Variablen als Variablen, genannt Breite, Länge, Höhe, Tiefe oder Zeit (die offensichtlich sindstandard\_nameS) . Dies kann nützlich sein, wenn Sie die Ausgabe aus der Erzeugung verwenden Datensätze Xml direkt inERDDAP™ohne die Ausgabe zu bearbeiten, weil Datensätze Xml erraten oftstandard\_names falsch. (Beachten Sie, dass wir immer empfehlen, dass Sie die Ausgabe bearbeiten, bevor Sie sie inERDDAP.) Mit diesem Parameter werden andere kleinere verwandte Effekte haben, weil die erratenstandard\_namehäufig für andere Zwecke verwendet wird, z.B. um ein neues zu schaffenlong\_name, und die colorBar-Einstellungen zu erstellen.
Schrift
Als Alternative zur interaktiven Beantwortung der Fragen an der Tastatur und Schleife, um zusätzliche Datensätze zu erzeugen, können Sie Befehlszeilenargumente bereitstellen, um alle Fragen zu beantworten, um einen Datensatz zu erzeugen. Datensätze generieren Xml verarbeitet diese Parameter, schreibt die Ausgabe in die Ausgabedatei und verlässt das Programm.
Um dies einzurichten, verwenden Sie zuerst das Programm im interaktiven Modus und schreiben Sie Ihre Antworten auf. Hier ist ein Teilbeispiel: Sagen wir, Sie führen das Skript: ./GenerateDatasetsXml.sh Geben Sie dann ein: EDDTableFromAsciiFiles Geben Sie dann ein: /u00/data/ Geben Sie dann ein: Geben Sie dann ein: /u00/data/sampleFile.asc Geben Sie dann ein: ISO-8859-1
Um dies nicht interaktiv auszuführen, verwenden Sie diese Befehlszeile: ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles /u00/data/ .\*\.asc /u00/data/sampleFile.asc ISO-8859-1 Also im Grunde, Sie nur alle Antworten auf der Kommandozeile. Dies sollte für Datensätze nützlich sein, die sich häufig in einer Weise ändern, die re-running GenerateDatasets erfordert Xml (insbesondereEDDGridVonThreddsCatalog) .
Details:
- Enthält ein Parameter einen Raum oder ein bestimmtes Zeichen, so kodiert der Parameter als einJSON-Stil String, z.B. "mein Parameter mit Räumen und zwei\nLinien".
- Wenn Sie einen leeren String als Parameter angeben möchten, verwenden Sie: nichts
- Wenn Sie den Standardwert eines Parameters angeben möchten, verwenden Sie: default
- Datensätze generieren Xml unterstützt a -i Datensätze XmlName # Tag und Tag Befehlszeilenparameter, der den Ausgang in den angegebenendatasets.xmlDatei (Der Standard ist Tomcat /Fortsetzung/Erlaubung/datasets.xml) . Datensätze generieren Xml sucht zwei Zeilen in Datensätzen XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
und
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
und ersetzt alles zwischen diesen Zeilen durch den neuen Inhalt, und ändert die irgendwannDatetime.
- Der -i-Schalter wird nur bearbeitet (und Änderungendatasets.xmlwerden nur gemacht) wenn Sie GenerateDatasets ausführen Xml mit Kommandozeilen-Argumenten, die alle Antworten auf alle Fragen für eine Schleife des Programms angeben. (Siehe oben 'Schrift'.) (Das Denken ist: Dieser Parameter ist für die Verwendung mit Skripten. Wenn Sie das Programm im interaktiven Modus verwenden (Eingabe von Informationen auf der Tastatur) , Sie werden wahrscheinlich einige falsche chunks von XML generieren, bevor Sie die, die Sie wollen.)
- Werden die Anfangs- und Endzeilen nicht gefunden, so werden diese Zeilen und der neue Inhalt vorab eingefügt.</erddapDatasets>.
- Es gibt auch eine (Kapital i) Schalter für Testzwecke, die das gleiche wie -i, aber erstellt eine Datei namensdatasets.xml Datum und ändert sich nichtdatasets.xml.
- Nicht ausführen GenerateDatasets Xml mit -i in zwei Prozessen auf einmal. Es gibt eine Chance, dass nur eine Reihe von Änderungen beibehalten werden. Es könnte ernste Probleme geben (zum Beispiel beschädigte Dateien) .
Wenn Sie "GenerateDatasetsXml -verbose" verwenden, wird es mehr Diagnosenachrichten als üblich drucken.
Sonder-/Pseudo-Datensatztypen
Im Allgemeinen die EDDType Optionen in GenerateDatasets Xml Übereinstimmung der in diesem Dokument beschriebenen EDD-Typen (sieheListe der Datensätze) und erzeugen einesdatasets.xmlchunk, um einen Datensatz aus einer bestimmten Datenquelle zu erstellen. Es gibt einige Ausnahmen und Sonderfälle:
EDDGridVon Erddap
Dieser EDDType generiert alledatasets.xmlbenötigte StückeEDDGridVon ErddapDatensätze aus allenEDDGridDatensets in einer FernbedienungERDDAP. Sie haben die Möglichkeit, das Original zu haltendatasetIDS (die einige duplizieren könnendatasetIDschon in deinerERDDAP) oder neue Namen generieren, die einzigartig werden (aber in der Regel nicht als menschlich lesbar) .
EDDTableFromErddap
Dieser EDDType generiert alledatasets.xmlbenötigte StückeEDDTableFromErddapDatensätze von allen EDDTable-Datensätzen in einer FernbedienungERDDAP. Sie haben die Möglichkeit, das Original zu haltendatasetIDS (die einige duplizieren könnendatasetIDschon in deinerERDDAP) oder neue Namen generieren, die einzigartig werden (aber in der Regel nicht als menschlich lesbar) .
EDDGridVonThreddsCatalog
Dieser EDDType generiert alledatasets.xmlfür alleEDDGridVonDapDatensätze, die sie finden können, indem sie durch einen THREDDS wiederkehren (Teil) Katalog. Es gibt viele Formen von THREDDS Katalog URLs. Diese Option REQUIRES eine THREDDS .xml URL mit /catalog/ darin zum Beispiel
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml oder
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(ein verwandter .html-Katalog ist bei
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html , die fürEDDGridVonThreddsCatalog).
Wenn Sie Probleme mitEDDGridVonThredds Katalog:
- Stellen Sie sicher, dass die URL, die Sie verwenden, gültig ist, enthält /catalog/ und endet mit /catalog.xml .
- Wenn möglich, nutzen Sie eine öffentliche IP-Adresse (zum Beispiel, https://oceanwatch.pfeg.noaa.gov ) in der URL keine lokale numerische IP-Adresse (zum Beispiel, https://12.34.56.78 ) . Wenn die THREDDS nur über die lokale numerische IP-Adresse erreichbar ist, können Sie [<ConvertToPublicSourceUrl>] (#converttopublicsourceurl) alsoERDDAP™Benutzer sehen die öffentliche Adresse, obwohlERDDAP™erhält Daten von der lokalen numerischen Adresse.
- Wenn Sie Probleme haben, die Sie nicht lösen können,die Fehlersuche Tipps überprüfen.
- Der Low-Level-Code hierfür verwendet jetzt dieUnidatanetcdf-java Katalog Raupencode (Drredds. Katalogklassen) so dass es alle THREDDS Kataloge handhaben kann (die überraschenderweise komplex sein kann) DankUnidatafür diesen Code.
EDDGridLonPM180FromErddapCatalog
Dieser EDDType erzeugt diedatasets.xmlzu machenEDDGridLonPM180Datensätze aus allenEDDGridDatensätze in einemERDDAPdie alle Längenwerte größer als 180 haben.
- Wenn möglich, nutzen Sie eine öffentliche IP-Adresse (zum Beispiel, https://oceanwatch.pfeg.noaa.gov ) in der URL keine lokale numerische IP-Adresse (zum Beispiel, https://12.34.56.78 ) . WennERDDAP™nur über die lokale numerische IP-Adresse erreichbar ist, können Sie [<ConvertToPublicSourceUrl>] (#converttopublicsourceurl) alsoERDDAP™Benutzer sehen die öffentliche Adresse, obwohlERDDAP™erhält Daten von der lokalen numerischen Adresse.
EDDGridLon0360FromErddapCatalog
Dieser EDDType erzeugt diedatasets.xmlzu machenEDDGridLon0360Datensätze aus allenEDDGridDatensätze in einemERDDAPdie Längenwerte kleiner als 0 haben.
- Wenn möglich, nutzen Sie eine öffentliche IP-Adresse (zum Beispiel, https://oceanwatch.pfeg.noaa.gov ) in der URL keine lokale numerische IP-Adresse (zum Beispiel, https://12.34.56.78 ) . WennERDDAP™nur über die lokale numerische IP-Adresse erreichbar ist, können Sie [<ConvertToPublicSourceUrl>] (#converttopublicsourceurl) alsoERDDAP™Benutzer sehen die öffentliche Adresse, obwohlERDDAP™erhält Daten von der lokalen numerischen Adresse.
EDDsFromFiles
Bei einem Startverzeichnis durchläuft diese das Verzeichnis und alle Unterverzeichnisse und versucht, für jede Gruppe von Datendateien einen Datensatz zu erstellen, den es findet.
- Dies geht davon aus, dass der Datensatz, wenn ein Datensatz gefunden wird, alle Unterverzeichnisse enthält.
- Wird ein Datensatz gefunden, werden ähnliche Geschwister als separate Datensätze behandelt. (z.B. werden die Verzeichnisse für die 1990er Jahre, die 2000er Jahre, die 2010er Jahre, separate Datensätze generieren) . Sie sollten leicht von Hand zu kombinieren sein -- ändern Sie einfach den ersten Datensatz<fileDir> zum Stammverzeichnis und alle nachfolgenden Geschwisterdatensätze löschen.
- Dies wird nur versuchen, ein Stück vondatasets.xmlfür den häufigsten Dateierweiterungstyp in einem Verzeichnis (nicht Zählen .md5, die ignoriert wird) . Also, gegeben ein Verzeichnis mit 10.ncDateien und 5.txt Dateien, ein Datensatz wird für die.ncNur Dateien.
- Dies geht davon aus, dass alle Dateien in einem Verzeichnis mit der gleichen Erweiterung im selben Datensatz gehören. Wenn ein Verzeichnis einige.ncDateien mit SST-Daten und einigen.ncDateien mit Chlorophyll-Daten, nur eine Probe.ncDatei wird gelesen (SST? Chlorophyll?) und nur ein Datensatz wird für diese Art von Datei erstellt. Dieser Datensatz wird wahrscheinlich nicht laden, weil Komplikationen versuchen, zwei Arten von Dateien in den gleichen Datensatz laden.
- Wenn es weniger als 4 Dateien mit der häufigsten Erweiterung in einem Verzeichnis gibt, wird davon ausgegangen, dass sie keine Datendateien sind und nur das Verzeichnis überspringen.
- Wenn es 4 oder mehr Dateien in einem Verzeichnis, aber dies kann nicht erfolgreich ein Stück vondatasets.xmlfür die Dateien (zum Beispiel einen nicht unterstützten Dateityp) , dies wird eineEDDTableFromFileNamesDatensatz für die Dateien.
- Am Ende der Diagnosen, die dies in die Log-Datei schreibt, kurz vor derdatasets.xmlchunks, dies wird eine Tabelle mit einer Zusammenfassung von Informationen, die durch alle Unterverzeichnisse gesammelt werden. Die Tabelle listet alle Unterverzeichnisse auf und gibt die häufigsten Arten von Dateierweiterungen an, die Gesamtzahl der Dateien und welche Art von Datensätzen für diese Dateien erstellt wurden. (wenn) . Wenn Sie mit einer komplexen, tief geschachtelten Dateistruktur konfrontiert sind, beachten Sie die Ausführung von GenerateDatasets Xml mit EDDType=EDDsFromFiles nur um diese Informationen zu generieren,
- Diese Option kann nicht eine große Aufgabe, den besten EDDType für eine bestimmte Gruppe von Datendateien zu erraten, aber es ist schnell, einfach und lohnt einen Versuch. Wenn die Quelldateien geeignet sind, funktioniert es gut und ist ein guter erster Schritt bei der Generierung derdatasets.xmlfür ein Dateisystem mit vielen Unterverzeichnissen, jeweils mit Datendateien aus verschiedenen Datensätzen.
EDDTableFromEML und EDDTableFromEMLBatch
Diese spezielle EDDType erzeugt diedatasets.xmlum einEDDTableFromAsciiFilesDatensatz aus jedem der in einerÖkologische MetadatenspracheXML-Datei. Die "Batch"-Variante arbeitet an allen EML-Dateien in einem lokalen oder Remote-Verzeichnis. Bitte sehen Sie die separateDokumentation für EDDTableFromEML.
EDDTableFromInPort
Diese spezielle EDDType erzeugt diedatasets.xmlum einEDDTableFromAsciiFilesDatensatz aus der Information in einemInport-xmlDatei. Wenn Sie Zugriff auf die Quelldatendatei erhalten können (die inport-xml-Datei sollte Hinweise haben, wo sie finden) , Sie können einen Arbeitsdatensatz inERDDAP.
Die folgenden Schritte zeigen, wie man GenerateDatasets verwendet Xml mit einer inport-xml-Datei, um einen Arbeitsdatensatz inERDDAP.
- Sobald Sie Zugriff auf die inport-xml-Datei haben (entweder als URL oder als lokale Datei) : Run GenerateDatasets Xml, geben Sie EDDType=EDDTableFromInPort an, geben Sie die inport-xml URL oder den vollständigen Dateinamen an, welcheChild=0 und geben Sie die anderen angeforderten Informationen an (wenn bekannt) . (An dieser Stelle müssen Sie nicht die Quelldatendatei haben oder ihren Namen angeben.) Die Einstellung, dieChild=0 sagt GenerateDatasets Xml zum Ausschreiben der Informationen für alle von<Entity-attribute-Information><Entity>'s in der inport-xml-Datei (wenn es) . Es druckt auch eine Hintergrundinformationen Zusammenfassung, einschließlich aller Download-urls in der inport-xml-Datei aufgelistet.
- Sehen Sie durch alle Informationen (einschließlich der Hintergrundinformationen, die Datasets generieren Xml Drucke) und besuchen Sie das download-url (S) um zu versuchen, die Quelldatendatei zu finden (S) . Wenn Sie es finden (sie) , herunterladen (sie) in ein Verzeichnis, das zugänglich istERDDAP. (Wenn Sie keine Quelldaten-Dateien finden können, gibt es keinen Punkt beim Weiterfahren.)
- Start Generieren Datensätze Xml wieder. Wenn die Quelldatendatei einer der inport-xml-Datei entspricht<Entity-attribute-Information><Unternehmen>'s, angeben, welcheChild= Das ist die Sache. (z.B. 1, 2, 3, ...) .ERDDAP™wird versuchen, die Spaltennamen in der Quelldatendatei an Namen in der Entity-Information anzupassen, und die Aufforderung, Abweichungen zu akzeptieren/abzuwerfen/fixieren. Oder wenn die inport-xml-Datei keine hat<Entity-attribute-Information><Entity>'s, angeben, welcheChild=0.
- Im Stückdatasets.xmldie von GenerateDatasets gemacht wurde Xml, die [globale<addAttributes> (#global-attributes) nach Bedarf/erwartet.
- Im Stückdatasets.xmldie von GenerateDatasetsXml gemacht wurde, fügen Sie die [<dataVariable> (#datavariable) Informationen nach Bedarf/erwartet, um jede der Variablen zu beschreiben. Stellen Sie sicher, dass Sie jede Variable richtig identifizieren (<sourceName> (#sourcename) (wie es in der Quelle erscheint) , (<destinationName> (#destinationname) (die mehr Einschränkungen auf erlaubten Zeichen alssourceName) , (<Einheiten (#units) (besonders wenn esZeit- oder Zeitstempelvariablewo die Einheiten das Format angeben müssen) , und (<missing\_value> (#missing_value) ,
- Wenn Sie in der Nähe der Fertigstellung sind, verwenden Sie wiederholt dieDasDdsTool, um schnell zu sehen, ob die Datensatzbeschreibung gültig ist und ob der Datensatz inERDDAP™wie du willst.
Es wäre toll, wenn Gruppen, die InPort verwenden, ihre Datensätze zu dokumentieren, auch verwenden würdenERDDAP™die tatsächlichen Daten zur Verfügung zu stellen:
- ERDDAP™ist eine Lösung, die sofort verwendet werden kann, damit Sie erfüllen könnenNOAA'Öffentlicher Zugang zu Forschungsergebnissen (PARR) AnforderungenIm Moment, nicht zu einer gewissen Zeit in der Zukunft.
- ERDDAP™stellt die tatsächlichen Daten den Nutzern zur Verfügung, nicht nur die Metadaten. (Wie gut sind Metadaten ohne Daten?)
- ERDDAP™unterstützt Metadaten (insbesondere die Einheiten von Variablen) , im Gegensatz zu anderen Datenserver-Software berücksichtigt werden. (Wie gut sind Daten ohne Metadaten?) Um Software zu verwenden, die keine Metadaten unterstützt, ist es, die Daten einzuladen, missverstanden und missverwendet zu werden.
- ERDDAP™ist frei und Open-Source-Software im Gegensatz zu einer anderen Software betrachtet werden. Fortschreitende EntwicklungERDDAP™wird bereits bezahlt. Unterstützung fürERDDAP™Benutzer sind kostenlos.
- ERDDAP's Aussehen kann leicht angepasst werden, um Ihre Gruppe zu reflektieren und hervorzuheben (nichtERDoderERDDAP) .
- ERDDAP™bietet einen konsistenten Zugriff auf alle Datensätze.
- ERDDAP™kann Daten aus vielen Arten von Datendateien und aus relationalen Datenbanken lesen.
- ERDDAP™kann mit großen Datensätzen umgehen, einschließlich Datensätze, in denen die Quelldaten in vielen Datendateien liegen.
- ERDDAP™kann auf Anfrage des Nutzers Daten an viele Arten von Datendateien schreiben, einschließlich wissenschaftlicher Datendateitypen wie netCDF, ESRI .csv undODV .txt.
- ERDDAP™kann benutzerdefinierte Grafiken und Karten von Untergruppen der Daten erstellen, basierend auf den Spezifikationen des Benutzers.
- ERDDAP™kann mit Nicht-Daten-Datensätzen wie Sammlungen von Bild-, Video- oder Audiodateien umgehen.
- ERDDAP™wurde installiert und verwendetmehr als 60 Institutionen weltweit.
- ERDDAP™wird als einer der Datenserver aufgeführt, die für die Nutzung innerhalb derNOAAin derNOAADatenschutzrichtlinie, im Gegensatz zu einer anderen Software betrachtet werden.
- ERDDAP™ist ein Produkt vonNMFS/NOAA, so verwenden Sie es innerhalbNMFSundNOAAsollte ein Punkt des Stolzes seinNMFSundNOAA.
Bitte geben SieERDDAP™einen Versuch. Wenn Sie Hilfe benötigen, schreiben Sie bitte eine Nachricht in derERDDAP™Google-Gruppe.
AddFillValueAttribute
Diese spezielle EDDType Option ist kein Datensatztyp. Es ist ein Tool, das \_FillValue Attribute zu einigen Variablen in einigen Datensätzen hinzufügen kann. Vgl.AddFillValueAttribute.
findenDuplicate Zeit
Diese spezielle EDDType Option ist kein Datensatztyp. Stattdessen sagt es GenerateDatasets Xml zur Suche durch eine Sammlung von gegitterten.nc (und verwandt) Dateien, um eine Liste von Dateien mit doppelten Zeitwerten zu finden und auszudrucken. Wenn es die Zeitwerte betrachtet, wandelt es sie von den ursprünglichen Einheiten in"seconds since 1970-01-01"falls verschiedene Dateien verschiedene Einheiten Strings verwenden. Sie müssen das Startverzeichnis bereitstellen (mit oder ohne Nachschub) , der Dateiname regulärer Ausdruck (z.B.,.nc ) , und der Name der Zeitvariable in den Dateien.
ncdump
Diese spezielle EDDType Option ist kein Datensatztyp. Stattdessen sagt es GenerateDatasets Xml zum Druckenncdump\-ähnlicher Ausdruck eines.nc,.ncml oder.hdfDatei. Es verwendet tatsächlich die netcdf-java'sNCdump, die ein begrenzteres Werkzeug als die C-Version von NCdump ist. Wenn Sie diese Option verwenden, GenerateDatasetsXml wird Sie bitten, eine der Optionen zu verwenden: "-h" (Kopf) , "-c" (Koordinaten vars) , "-vall" (Standard) "-v var1;var2", "-v var1 (0,0:10,0:20) ". Dies ist nützlich, denn ohne ncdump ist es schwer zu wissen, was in einem.nc,.ncml oder.hdfDatei und damit, welche EDDType Sie für GenerateDatasets festlegen sollten Xml. Für einen.ncml-Datei, dies wird die ncdump Ausgabe für das Ergebnis der.ncÄnderungen der Datei in der zugrunde liegenden Datei.ncoder.hdfDatei.
DasDds
- DasDds ist ein Befehlszeilenprogramm, das Sie verwenden können, nachdem Sie einen ersten Versuch im XML für einen neuen Datensatz indatasets.xml. Mit DasDds können Sie das XML wiederholt testen und verfeinern. Wenn Sie das DasDds-Programm verwenden:
- Unter Windows, das erste Mal, wenn Sie DasDds ausführen, müssen Sie das DasDds bearbeiten. bat-Datei mit einem Text-Editor, um den Pfad zur Java zu ändern. exe Datei, so dass WindowsJava.
- DasDds fragt Sie nach demdatasetIDfür den Datensatz, an dem Sie arbeiten.
- DasDds versucht, den Datensatz mit diesem zu erstellendatasetID.
- DasDds druckt immer viele Diagnosenachrichten. Wenn Sie "DasDds -verbose" verwenden, wird DasDds mehr Diagnosenachrichten als üblich drucken.
- Für die Sicherheit löscht DasDds immer alle Datensatzinformationen (Dateien) für den Datensatz vor dem Versuch, den Datensatz zu erstellen. Dies entspricht der Einstellung aharte FlaggeFür aggregierte Datensätze können Sie die DateiNameRegex vorübergehend anpassen, um die Anzahl der Dateien zu begrenzen, die der Datenkonstruktor findet.
- Wenn der Datensatz nicht geladen wird (aus welchem Grund) , DasDds wird Ihnen die Fehlermeldung für den ersten Fehler anzeigen.
Versuchen Sie nicht zu erraten, was das Problem sein könnte. Lesen Sie die ERROR-Nachricht sorgfältig.
Falls erforderlich, lesen Sie die vorhergehenden Diagnosenachrichten, um weitere Hinweise und Informationen zu finden. - Machen Sie eine Änderung im XML des Datensatzes, um THAT Problem zu lösen
und lass DasDds versuchen, den Datensatz wieder zu erstellen. - Wenn Sie immer wieder jedes Problem lösen, werden Sie schließlich alle Probleme lösen
und der Datensatz wird geladen.
- Alle DasDds Ausgänge (Diagnosen und Ergebnisse) auf den Bildschirm geschrieben und BigParentDirectory /logs/DasDds.log .
- Wenn DasDds den Datensatz erstellen kann, zeigt DasDds Ihnen dann die.das (Datensatz Attributstruktur) ,.ddd (Datensatz Deskriptor Struktur) , und.timeGaps (Zeitlücken) Informationen für den Datensatz auf Ihrem Bildschirm und schreiben Sie sie an BigParentDirectory /logs/DasDds.out .
- Oft möchten Sie eine kleine Änderung im XML des Datensatzes vornehmen, um die Metadaten des Datensatzes zu reinigen und DasDds neu zu führen.
Bonus Drittanbieter-Tool:ERDDAP- Lint
ERDDAP-lint ist ein Programm von Rob Fuller und Adam Leadbetter des Irish Marine Institute, das Sie verwenden können, um die Metadaten IhrerERDDAP™Datensätze.ERDDAP-lint "enthält Regeln und eine einfache statische Web-Anwendung für die Durchführung einiger Überprüfungstests gegen IhreERDDAP™Server. Alle Tests werden im Webbrowser durchgeführt." Wie dieUnix/Linux Lint Tool, Sie können die bestehenden Regeln bearbeiten oder neue Regeln hinzufügen. Vgl.ERDDAP- Lintfür weitere Informationen.
Dieses Tool ist besonders nützlich für Datensätze, die Sie vor einiger Zeit erstellt haben und jetzt mit Ihren aktuellen Metadatenpräferenzen aktualisiert werden wollen. Zum Beispiel frühe Versionen von GenerateDatasets Xml hat sich nicht darum bemüht, weltweit zu schaffencreator\_name,creator\_email, creator\_type odercreator\_urlMetadaten. Sie könnten benutzenERDDAP-die Datensätze zu identifizieren, die diesen Metadaten-Attributen fehlen.
Dank Rob und Adam für die Erstellung dieses Tools und die BereitstellungERDDAP™Gemeinschaft.
Die Grundstruktur derdatasets.xmlDatei
Die gewünschten und optionalen Tags in adatasets.xmlDatei (und die Anzahl der Zeiten, die sie erscheinen können) sind unten dargestellt. In der Praxis, Ihrdatasets.xmlwird viel haben<dataset>s Tags und nur die anderen Tags innerhalb<erdddapDatasets> nach Bedarf.
<?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>
Es ist möglich, dass in Zukunft andere Kodierungen erlaubt werden, aber jetzt wird nur ISO-8859-1 empfohlen.
XI
Neu in Version 2.25 ist Unterstützung für XInclude. Dies erfordert, dass Sie den SAX Parser verwenden<VerwendungSaxParser>true</useSaxParser> in Ihrem setup.xml. Dies kann es Ihnen ermöglichen, jeden Datensatz in einer eigenen Datei zu schreiben, dann enthalten sie alle in der Hauptsachedatasets.xml, Teile von Datensatzdefinitionen wiederverwenden, oder beide. Wenn Sie ein Beispiel sehen möchten,EDDTestDataset.javasetzt XInclude ein, um variable Definitionen wiederzuverwenden.
-
- Ja.
Anmerkungen
Arbeiten mit demdatasets.xmlDatei ist ein nicht-triviales Projekt. Bitte lesen Sie alle diese Notizen sorgfältig. Nach der AuswahlDatensatztyp, bitte lesen Sie die ausführliche Beschreibung davon sorgfältig.
Auswahl des Datensatztyps
In den meisten Fällen gibt es nur einenERDDAP™Datensatztyp, der für eine bestimmte Datenquelle geeignet ist. In einigen Fällen (z.B.,.ncDateien) , es gibt ein paar Möglichkeiten, aber in der Regel eine von ihnen ist definitiv am besten. Die erste und größte Entscheidung, die Sie treffen müssen, ist: ist es angemessen, den Datensatz als Gruppe von multidimensionalen Arrays zu behandeln (wenn ja, sehen SieEDDGridDatensatztypen) oder als Datenbank-ähnliche Datentabelle (wenn ja, sehen SieEDDTable Datensatztypen) .
Die Daten als I
In der Regel gibt es keine Notwendigkeit, die Datenquelle zu ändern (z.B. die Dateien in einen anderen Dateityp konvertieren) undERDDAP™kann es dienen. Eine der Annahmen vonERDDAP™ist, dass die Datenquelle verwendet wird, wie es ist. Normalerweise funktioniert das gut. Einige Ausnahmen sind:
- Beziehungsdatenbanken und Cassandra --ERDDAP™können Daten direkt aus relationalen Datenbanken und Cassandra dienen. Aber für Sicherheits-, Lastausgleichs- und Leistungsprobleme können Sie eine andere Datenbank mit den gleichen Daten einrichten oder die Daten speichern.NetCDFV3.ncDateien und habenERDDAP™den Daten aus der neuen Datenquelle dienen. Vgl.EDDTableFromDatabaseundEDDTableFromCassandra.
- Nicht unterstützte Datenquellen --ERDDAP™kann eine große Anzahl von Arten von Datenquellen unterstützen, aber die Welt ist gefüllt mit 1000's (Millionen?) von verschiedenen Datenquellen (insbesondere Datendateistrukturen) . wennERDDAP™unterstützt Ihre Datenquelle nicht:
- Ist die DatenquelleNetCDF .ncDateien, können Sie verwendenNcMLdie Datendateien auf dem Flug ändern oder verwendenNCOum die Datendateien dauerhaft zu ändern.
- Sie können die Daten an einen Datenquellentyp schreiben, derERDDAP™unterstützt.NetCDF-3.ncDateien sind eine gute, allgemeine Empfehlung, weil sie binäre Dateien sind, dieERDDAP™kann sehr schnell lesen. Für tabellarische Daten, betrachten Sie die Speicherung der Daten in einer Sammlung.ncDateien, die dieCF Diskrete Sampling Geometrien (DSG) Contiguous Ragged Array Datenstrukturen und so mitERDDAP'EDDTableFromNcCFFiles) Wenn sie logisch organisiert sind (jeder mit Daten für ein Stück Raum und Zeit) ,ERDDAP™kann Daten sehr schnell aus ihnen extrahieren.
- Sie können verlangen, dass die Unterstützung dieser Datenquelle hinzugefügt wirdERDDAP™durch E-Mail an Chris. John bei noaa.gov.
- Sie können die Unterstützung für diese Datenquelle hinzufügen, indem Sie den Code schreiben, um es selbst zu handhaben. Vgl.dieERDDAP™Programmer's Guide
- Geschwindigkeit --ERDDAP™kann Daten aus einigen Datenquellen viel schneller als andere lesen. Zum Beispiel lesenNetCDFV3.ncDateien sind schnell und lesen ASCII Dateien ist langsamer. Und wenn es ein großes (>1000) oder groß (> 10.000) Anzahl der Quelldatendateien,ERDDAP™wird auf einige Datenanfragen langsam reagieren. Normalerweise ist der Unterschied für den Menschen nicht spürbar. Allerdings, wenn Sie denkenERDDAP™ist für einen bestimmten Datensatz langsam, Sie können das Problem lösen, indem Sie die Daten zu einem effizienteren Setup schreiben (meist: ein paar, gut strukturiert,NetCDFV3.ncDateien) . Für tabellarische Daten siehedieser Rat.
Hinweis
Es ist oft einfacher, das XML für einen Datensatz zu generieren, indem eine Kopie einer Arbeitsdatensatz-Beschreibung in dataset.xml erstellt und dann modifiziert wird.
Kodierung von Sonderzeichen
Seitdatasets.xmlist eine XML-Datei, Sie müssen& Codierung"&", "<", und ">" in allen Inhalten als "&", "<", und ">". Falsch:<Titel Zeit und Zeit</Titel Richtig:<Titel Zeit und Zeit</Titel
XML toleriert keine Syntaxfehler
Nachdem Sie die dataset.xml-Datei bearbeiten, ist es eine gute Idee, zu überprüfen, ob das Ergebnis istgut ausgebildetes XMLindem Sie den XML-Text in einen XML-Checker wie einfügenxmlvalidierung.
Tipps zur Fehlerbehebung
- Andere Möglichkeiten, Probleme mit Datensätzen zu diagnostizieren
Zusätzlich zu den beiden wichtigstenWerkzeuge, - Pressemitteilungist eine Log-Datei mit allenERDDAPDiagnosenachrichten.
- DieTagesberichthat mehr Informationen als die Statusseite, einschließlich einer Liste von Datensätzen, die nicht geladen und die Ausnahmen (Fehler) sie generierten.
- DieStatusseiteist eine schnelle Möglichkeit zu überprüfenERDDAP's Status von jedem Web-Browser. Es enthält eine Liste von Datensätzen, die nicht geladen wurden (jedoch nicht die damit verbundenen Ausnahmen) und AufgabeDurchlesen von Statistiken (den Fortschritt zeigenEDDGridKopieundEDDTableCopyDatensätze und alleEDDGridVonFilesoderEDDTableFromFilesDatensätze, dieCacheFromUrl (nicht kache GrößeGB) ) .
- Wenn du feststeckst, siehst du unsereAbschnitt zum Erhalt zusätzlicher Unterstützung.
Sondervariablen
- Die Länge, Breite, Höhe (oder Tiefe) , und Zeit (LLAT) Variable destinationNames sind besonders.
- Im Allgemeinen:
- LLAT-Variablen werden bekannt gemachtERDDAP™wenn die Achsgröße (fürEDDGridDatensätze) oder Datenvariablen (für EDDTable-Datensätze) destinationNameist "Länge", "Länge", "Halte", "Tiefe" oder"time".
- Wir ermutigen Sie dringend, diese Standardnamen für diese Variablen zu verwenden, wenn möglich. Keiner von ihnen ist erforderlich. Wenn Sie diese speziellen Variablennamen nicht verwenden,ERDDAP™wird ihre Bedeutung nicht erkennen. Beispielsweise werden LLAT-Variablen speziell von Make A Graph behandelt ( datasetID .graph) : Wenn die X Axis-Variable "Länge" ist und die Y Axis-Variable "Länge" ist, erhalten Sie eine Karte (mit einer Standardprojektion, und mit einer Landmaske, politischen Grenzen, etc.) anstatt eines Diagramms.
- ERDDAP™wird automatisch viele Metadaten zu LLAT-Variablen hinzufügen (zum Beispiel "ioos\_category", "Einheiten", und mehrere standardbezogene Attribute wie "\_CoordinateAxisType") .
- ERDDAP™automatisch, on-the-fly, addieren viele globale Metadaten bezogen auf die LLAT-Werte des ausgewählten Datensubsets (zum Beispiel "geospatial\_lon\_min") .
- Clients, die diese Metadatenstandards unterstützen, können die zusätzlichen Metadaten nutzen, um die Daten in Zeit und Raum zu positionieren.
- Clients werden es leichter finden, Abfragen zu generieren, die LLAT-Variablen enthalten, weil die Variablennamen in allen relevanten Datensätzen gleich sind.
- Für die Variable "Länge" und die Variable "Länge":
- Verwenden Sie diedestinationName"Länge" und "Länge" nur, wennEinheitensind Grad\_östlich bzw. Grad\_north. Wenn Ihre Daten diesen Anforderungen nicht entsprechen, verwenden Sie verschiedene Variablennamen (z.B. x, y, lonRadians, latRadians) .
- Wenn Sie Längen- und Breitendaten in verschiedenen Einheiten ausgedrückt haben und somit mit unterschiedlichendestinationNames, zum Beispiel, lonRadians und latRadians, Machen Sie einen Graph ( datasetID .graph) wird Grafiken machen (z.B. Zeitreihen) anstatt Karten.
- Für die "Halte"-Variable und die "Tiefe"-Variable:
- Verwenden Sie diedestinationName"Höhe" zur Identifizierung der Entfernung der Daten über dem Meeresspiegel (positive="up"-Werte) . Optional können Sie "Höhe" für Entfernungen unterhalb des Meeresspiegels verwenden, wenn die Werte unter dem Meer negativ sind (oder wenn Sie beispielsweise verwenden, (<att name="scale\_factor"typ="int">- 1</att> (#scale_factor) die Tiefenwerte in Höhenwerte umwandeln.
- Verwenden Sie diedestinationName"tiefe" zur Identifizierung der Datenabstand unter dem Meeresspiegel (positive="down"-Werte) .
- Ein Datensatz kann sowohl "Höhen" als auch "tiefen" Variablen nicht haben.
- Für diese variablen Namen, dieEinheitenmuss "m", "Meter" oder "Meter" sein. Wenn die Einheiten anders sind (zum Beispiel, Fathoms) , Sie können verwenden (<att name="scale\_factor> einige Wert </att> (#scale_factor) und [<att name="units">meter</att> (#units) die Einheiten in Meter umwandeln.
- Wenn Ihre Daten diesen Anforderungen nicht entsprechen, verwenden Sie eine anderedestinationName (z.B. oberhalbGround, Entfernung Zum Thema) .
- Wenn Sie das vertikale CRS kennen, geben Sie es bitte in den Metadaten an, z.B. "EPSG:5829" (momentane Höhe über dem Meeresspiegel) , "EPSG:5831" (momentane Tiefe unter dem Meeresspiegel) , oder "EPSG:5703" (NAVD88 Höhe) .
- Für"time"Variable:
- Verwenden Sie diedestinationName "time"nur für Variablen, die das gesamte Datum+Zeit enthalten (oder Datum, wenn das alles vorhanden ist) . Wenn zum Beispiel separate Spalten für Datum und Uhrzeit vorhanden sind, verwenden Sie nicht den variablen Namen"time".
- Vgl.Einheitenfür weitere Informationen über das Attribut Einheiten für Zeit und ZeitStamp-Variablen.
- Die Zeitvariable und verwandtZeit Stamp Variablensind einzigartig, indem sie immer Datenwerte aus dem Zeitformat der Quelle konvertieren (Was auch immer es ist) in einen numerischen Wert (Sekunden seit 1970-0100:00Z) oder einen String-Wert (ISO 8601:2004 (E) Format) , je nach Situation.
- Wenn ein Benutzer Zeitdaten anfordert, können sie ihn anfordern, indem er die Zeit als Zahlenwert angibt. (Sekunden seit 1970-0100:00Z) oder einen String-Wert (ISO 8601:2004 (E) Format) .
- ERDDAP™hat ein DienstprogrammNumerisch umrechnen Zeit für/von einer Streichzeit.
- Vgl.WieERDDAPAngebote mit Zeit.
Warum nur zwei grundlegende Datenstrukturen?
- Da es für menschliche Kunden und Computer-Clients schwierig ist, mit einem komplexen Satz von möglichen Datensatzstrukturen umzugehen,ERDDAP™verwendet nur zwei grundlegende Datenstrukturen:
- eineDatenstruktur (beispielsweise für Satellitendaten und Modelldaten) und
- einetabellarische Datenstruktur (beispielsweise für In-situ-Buoy-, Stations- und Trajektoriendaten) .
- Sicherlich können nicht alle Daten in diesen Strukturen ausgedrückt werden, aber viel davon kann. Insbesondere Tabellen sind sehr flexible Datenstrukturen (den Erfolg von relationalen Datenbankprogrammen ansehen) .
- Dies erleichtert die Datenabfrage.
- Dadurch haben Datenantworten eine einfache Struktur, die es einfacher macht, die Daten in einer größeren Vielfalt von Standarddateitypen zu bedienen (die oft nur einfache Datenstrukturen unterstützen) . Das ist der Hauptgrund, warum wirERDDAP™Hier entlang.
- Dies wiederum macht es für uns sehr einfach (oder jeder) um Client-Software zu schreiben, die mit allen arbeitetERDDAP™Datensätze.
- Dies erleichtert den Vergleich von Daten aus verschiedenen Quellen.
- Wir sind uns sehr bewusst, dass Sie, wenn Sie mit Daten in anderen Datenstrukturen arbeiten, zunächst denken können, dass dieser Ansatz vereinfacht oder unzureichend ist. Aber alle Datenstrukturen haben Abschlüsse. Keine ist perfekt. Selbst die do-it-all Strukturen haben ihre Nachteile: Die Zusammenarbeit mit ihnen ist komplex und die Dateien können nur mit speziellen Softwarebibliotheken geschrieben oder gelesen werden. Wenn Sie annehmenERDDAP's Ansatz genug, um mit ihm zu arbeiten, können Sie feststellen, dass es seine Vorteile hat (insbesondere die Unterstützung für mehrere Dateitypen, die die Datenantworten halten können) . DieERDDAP™Diashow (insbesondere dieDatenstrukturen Folie) spricht viel über diese Probleme.
- Und selbst wenn dieser Ansatz für Sie seltsam klingt, die meistenERDDAP™Clients werden nie bemerken -- sie werden einfach sehen, dass alle Datensätze eine schöne einfache Struktur haben und sie werden dankbar sein, dass sie Daten aus einer Vielzahl von Quellen in einer Vielzahl von Dateiformaten zurückgegeben bekommen können.
Abmessungen
- Was ist, wenn die Rastervariablen im Quelldatensatz DON'T die gleichen Achsenvariablen teilen?
InEDDGriddatasets, alle Datenvariablen MUST (Anteil) alle Achsgrößen. Wenn also ein Quelldatensatz einige Variablen mit einem Satz von Dimensionen und andere Variablen mit einem anderen Satz von Dimensionen aufweist, müssen Sie zwei Datensätze inERDDAP. Zum Beispiel könnten Sie einen machenERDDAP™Datensatz mit dem Titel "Einige Titel (an der Oberfläche) ", um Variablen zu halten, die nur verwenden\[Zeit\]\[Breite\]\[Länge\]Abmessungen und eine andereERDDAP™Datensatz mit dem Titel "Einige Titel (in Tiefen) "um die Variablen zu halten, die\[Zeit\]\[Höhe\]\[Breite\]\[Länge\]. Oder vielleicht können Sie die Datenquelle ändern, um eine Dimension mit einem einzigen Wert hinzuzufügen (z.B. Höhe =) die Variablen konsistent zu machen.
ERDDAP™nicht mit komplizierteren Datensätzen umgehen (zum Beispiel Modelle, die ein Netz von Dreiecken verwenden) Gut. Sie können diese Datensätze inERDDAP™indem zwei oder mehr Datensätze inERDDAP™ (so dass alle Datenvariablen in jedem neuen Datensatz den gleichen Satz von Achsenvariablen teilen) , aber das ist nicht, was die Nutzer wollen. Für einige Datensätze können Sie eine regelmäßige netzgebundene Version des Datensatzes und das Angebot berücksichtigen, dass zusätzlich zu den ursprünglichen Daten. Einige Client-Software kann nur mit einem regulären Netz umgehen, so dass Sie dadurch zusätzliche Clients erreichen.
Projektierte Gridded Data
Einige Gitterdaten haben eine komplexe Struktur. Zum Beispiel Satellitenebene 2 ("Unterweg") Daten verwenden keine einfache Projektion. Modelle (und andere) oft mit gegitterten Daten auf verschiedenen nicht-zylindrischen Projektionen arbeiten (z.B. conic, polar stereographic, tripolar) oder in unstrukturierten Gittern (eine komplexere Datenstruktur) . Einige Endbenutzer wollen diese Daten, wie es ist, so gibt es keinen Verlust an Informationen. Für diese Kunden,ERDDAP™den Daten dienen kann, wie dies ist, nur wennERDDAP™Administrator bricht den ursprünglichen Datensatz in ein paar Datensätze, wobei jeder Teil Variablen enthält, die die gleichen Achsenvariablen teilen. Ja, das scheint den Beteiligten seltsam zu sein und es ist anders als die meistenOPeNDAPServer. Aber...ERDDAP™betont die Bereitstellung der Daten in vielen Formaten. Das ist möglich, weilERDDAP™verwendet/erfordert eine einheitlichere Datenstruktur. Obwohl es ein wenig abscheulich ist (d.h., anders als erwartet) ,ERDDAP™kann die projizierten Daten verbreiten.
\[Ja.ERDDAP™könnte lockerere Anforderungen an die Datenstruktur haben, aber die Anforderungen an die Ausgabeformate behalten. Aber das würde zu Verwirrung unter vielen Benutzern führen, insbesondere Neulinge, da viele scheinbar gültige Anfragen an Daten mit unterschiedlichen Strukturen ungültig wären, weil die Daten nicht in den Dateityp passen würden. Wir kommen immer wieder zum aktuellen Systemdesign.\]
Einige Endbenutzer wollen Daten in einer Lat lon zylindrischen Projektion wie Equirectangular / Plate Carrée oder Mercator) für einfache Handhabung in verschiedenen Situationen. Für diese Situationen ermutigen wir dieERDDAP™Administrator, um einige andere Software zu verwenden (NCO?Matlab? R? IDV? ...?) um die Daten auf eine geographische (Equirectangular Projektion / Platte Carrée) oder anderen zylindrischen Vorsprung und dienen dieser Form der Daten inERDDAP™als anderer Datensatz. Dies ist ähnlich, was Menschen tun, wenn sie Satelliten Level 2 Daten in Level 3 Daten konvertieren. Ein solches Werkzeug istNCOdie Erweiterungsoptionen für Regrid-Daten bietet.
GIS und Reprojektion von Daten
Da die GIS-Welt oft kartenorientiert ist, bieten GIS-Programme in der Regel Unterstützung für die Reprojektierung der Daten, d.h. die Aufzeichnung der Daten auf einer Karte mit einer anderen Projektion.
Derzeit,ERDDAP™hat keine Werkzeuge, um Daten neu zu projizieren. Stattdessen empfehlen wir Ihnen, ein externes Werkzeug zu verwenden, um eine Variante des Datensatzes zu erstellen, wo Daten aus seiner ursprünglichen Form auf ein rechteckiges neu projiziert wurden. (Länge der Breite) Array geeignet fürERDDAP.
Unserer Meinung nach die CF/DAPDie Welt ist etwas anders als die GIS-Welt und arbeitet auf etwas niedrigerem Niveau.ERDDAP™reflektiert das. Im Allgemeinen,ERDDAP™ist in erster Linie mit Daten zu arbeiten (nicht Karten) und will sich nicht ändern (z.B. Reprojekt) diese Daten. FürERDDAP™, Gitterdaten werden oft/normal/vorzugsweise mit Lat-lon-Werten und einem zylindrischen Vorsprung und nicht einigen x-y-Werten der Projektion zugeordnet. In jedem FallERDDAP™nichts mit der Projektion der Daten zu tun; es leitet die Daten einfach durch, wie mit seiner aktuellen Projektion, über die Theorie, dass eine Reprojektion eine signifikante Änderung der Daten ist undERDDAP™will nicht mit signifikanten Veränderungen involviert sein. Auch spätere Nutzer könnten die Daten naiv wieder neu projizieren, was nicht so gut wäre wie nur eine Reprojektion. (Also, wenn dieERDDAP™Administrator will die Daten in einer anderen Projektion anbieten, fein; nur die Daten offline neu projizieren und anbieten, dass als ein anderer Datensatz inERDDAP. Viele satellitengestützte Datensätze werden als das angeboten, was die NASA Level 2 nennt (Schweine) und als Ebene 3 (Ausgewählte Projektion) Versionen.) WannERDDAP™Karten machen (direkt oder viaWMSoder KML) ,ERDDAP™derzeit nur bietet, Karten mit der Equirectangular / Platte Carrée Projektion zu machen, die glücklicherweise von den meisten Mapping-Programmen akzeptiert wird.
Wir ermutigenERDDAP™Administratoren verwenden einige andere Software (NCO?Matlab? R? IDV? ...?) um die Daten auf eine geographische (Equirectangular Projektion / Platte Carrée) oder anderen zylindrischen Vorsprung und dienen dieser Form der Daten inERDDAP™als anderer Datensatz. Dies ist ähnlich, was Menschen tun, wenn sie Satelliten Level 2 Daten in Level 3 Daten konvertieren. Ein solches Werkzeug istNCOdie Erweiterungsoptionen für Regrid-Daten bietet.
Wir hoffen, dassERDDAP™werden in Zukunft Karten mit anderen Projektionen anbieten können. Wir hoffen auch, in Zukunft bessere Verbindungen zur GIS-Welt zu haben (andere als der StromWMSService) . Es ist schrecklich, dass in dieser "modernen" Welt die Verbindungen zwischen den CF/DAPDie Welt und die GIS-Welt sind immer noch so schwach. Beides ist auf der To Do-Liste. (Wenn Sie helfen möchten, vor allem mit der VerbindungERDDAP™auf MapServer, bitte E-Mail Chris. John bei noaa.gov.)
Datentypen
ERDDAP™unterstützt die folgenden Datentypen (die Namen sind empfindlich;'u'prefix steht für "unsigned"; die Anzahl der Namen in anderen Systemen ist die Anzahl der Bits) :
Byte
- Byte ganze Werte mit einem Bereich von -128 bis 127 signiert. In anderen Systemen wird dies manchmal int8 genannt. Das nennt man "tinyint" von SQL und Cassandra. ERDDAP™konvertiertBorolenaus einigen Quellen (z.B. SQL und Cassandra) in Bytes inERDDAP™mit einem Wert von 0=false, 1=true und 127=missing\_value.
Ubyte
- Ubyte unsignierte ganze Werte mit einem Bereich von 0 bis 255 aufweist. In anderen Systemen wird dies manchmal uint8 genannt.
kurz
- kurz hat ganze Werte mit einem Bereich von -32768 bis 32767 signiert. In anderen Systemen wird dies manchmal int16 genannt. Das nennt man "smallint" von SQL und Cassandra.
Ussur
- Ussur unsignierte ganze Werte mit einem Bereich von 0 bis 65535 aufweist. In anderen Systemen wird dies manchmal uint16 genannt.
in
- in hat ganze Werte mit einem Bereich von -2147483648 bis 2147483647 signiert. In anderen Systemen wird dies manchmal int32 genannt. Dies nennt man "integer|Numerisch (?) " von SQL und "int" von Cassandra.
U.S.
- U.S. unsignierte ganze Werte mit einem Bereich von 0 bis 4294967295 aufweist. In anderen Systemen wird dies manchmal uint32 genannt.
lang
- lang hat ganze Werte mit einem Bereich von -9223372036854775808 bis 9223372036854775807 unterschrieben. In anderen Systemen wird dies manchmal int64 genannt. Das nennt man "bigint|Numerisch (?) " von SQL und "bigint" von Cassandra. Weil viele Dateitypen keine langen Daten unterstützen, wird ihre Verwendung entmutigt. Wenn möglich, verwenden Sie doppelt statt (siehe unten) .
Ulong
- Ulong unsignierte ganze Werte mit einem Bereich von 0 bis 18446744073709551615 In anderen Systemen wird dies manchmal uint64 genannt. Da viele Dateitypen ulong-Daten nicht unterstützen, wird ihre Verwendung entmutigt. Wenn möglich, verwenden Sie doppelt statt (siehe unten) .
Flossen
- Flossen ist ein IEEE 754 Schwimmer mit einer Reichweite von etwa +/- 3.402823466e+38. In anderen Systemen wird dies manchmal Float32 genannt. Dies nennt man "real|Flossen (?) |Dezimal (?) |Numerisch (?) " von SQL und "float" von Cassandra. Der Sonderwert NaN bedeutet Nicht-a-Number. ERDDAP™konvertiert positive und negative Infinity-Werte in NaN.
Doppelzimmer
- Doppelzimmer ist ein IEEE 754 Doppel mit einer Reichweite von ca. +/- 1.7976931348623157E+308. In anderen Systemen wird dies manchmal Float64 genannt. Dies nennt man "Doppelpräzision|Flossen (?) |Dezimal (?) |Numerisch (?) " von SQL und "double" von Cassandra. Der Sonderwert NaN bedeutet Nicht-a-Number. ERDDAP™konvertiert positive und negative Infinity-Werte in NaN.
!
- ! ist ein Single, 2-Byte (16-Bit) Unicode UCS-2 Zeichenvon\u0000 (#0) durch\uffff (#65535) . \uffff's Definition ist nicht-a-Character, analog zu einem doppelten Wert von NaN. Die Verwendung von char ist entmutigt, weil viele Dateitypen entweder keine Zeichen unterstützen oder nur 1-Byte Zeichen unterstützen (siehe unten) . Betrachten Sie stattdessen String. Benutzer können Char-Variablen verwenden, um Grafiken zu erstellen.ERDDAP™die Zeichen in ihre Unicode-Code-Punkt-Nummer umwandeln, die als numerische Daten verwendet werden können.
Streichung
- Streichung eine Sequenz von 0 oder mehr, 2-Byte (16-Bit) Unicode UCS-2 Zeichen. ERDDAP™verwendet/interpretiert eine 0-Länge-String als fehlender Wert.ERDDAP™unterstützt keine echte Null-String. Die theoretische maximale Stringlänge beträgt 2147483647 Zeichen, aber es gibt wahrscheinlich verschiedene Probleme an verschiedenen Stellen auch bei etwas kürzeren Strings. VerwendungERDDAP's String for SQL's Charakter, varchar, Charakter variierend, binär, varbinary, Intervall, Array, Multiset, xml, und jeder andere Datenbank-Datentyp, der nicht sauber mit jedem anderen passtERDDAP™Datentyp. VerwendungERDDAP's String for Cassandras "Text" und jeder andere Cassandra-Datentyp, der nicht sauber mit jedem anderen passtERDDAP™Datentyp.
VorERDDAP™v2.10,ERDDAP™nicht unterstützte unsignierte ganze Typen intern und bot begrenzte Unterstützung in seinen Datenlesern und Autoren.
Datentyp Einschränkungen
Sie können denken,ERDDAP™als System mit virtuellen Datensätzen, das durch das Lesen von Daten aus der Quelle eines Datensatzes in ein internes Datenmodell und Schreiben von Daten an verschiedene Dienste (z.(OPeN)DAP,WMS) und Dateitypen in Reaktion auf Benutzeranfragen.
- Jeder Eingabeleser unterstützt eine Teilmenge der Datentypen, dieERDDAP™unterstützt. So lesen Sie Daten inERDDAPDie internen Datenstrukturen sind kein Problem.
- Jeder Ausgabeschreiber unterstützt auch eine Teilmenge von Datentypen. Das ist ein Problem, weilERDDAPmuss beispielsweise lange Daten in Dateitypen drücken, die keine langen Daten unterstützen.
Im Folgenden sind Erläuterungen zu den Einschränkungen (oder keine) von verschiedenen Output-Autoren und wieERDDAP™behandelt die Probleme. Solche Komplikationen sind ein inhärenter BestandteilERDDAPDas Ziel, verschiedene Systeme interoperabel zu machen.
ASCII
- ASCII (.csv,.tsv, usw.) Textdateien -
-
Alle numerischen Daten werden über ihre String-Darstellung geschrieben (mit fehlenden Datenwerten, die als 0-Länge-Strings angezeigt werden) .
-
ObwohlERDDAP™schreibt lange und ulong Werte korrekt an ASCII Textdateien, viele Leser (z.B. Tabellenkalkulationsprogramme) kann nicht richtig mit langen und ulong Werten umgehen und sie stattdessen in doppelte Werte umwandeln (mit Präzisionsverlust in einigen Fällen) .
-
Char- und String-Daten werden über JSON Strings geschrieben, die alle Unicode-Zeichen verarbeiten (insbesondere die "ungewöhnlichen" Zeichen jenseits der ASCII #127, z.B. der Euro-Zeichen erscheint als "\u20ac") .
-
JSON
- JSON (.json,.jsonlCSV, usw.) Textdateien -
- Alle numerischen Daten werden über ihre String-Darstellung geschrieben.
- Char- und String-Daten werden als JSON Strings geschrieben, die alle Unicode-Zeichen verarbeiten (insbesondere die "ungewöhnlichen" Zeichen jenseits der ASCII #127, z.B. der Euro-Zeichen erscheint als "\u20ac") .
- Fehlende Werte für alle numerischen Datentypen erscheinen als Null.
.nc3 Dateien
- .nc3 Dateien unterstützen keine unsignierten Ganzzahl-Datentypen. Vor CF v1.9 unterstützte CF nicht unbezeichnete Ganzzahltypen. Um damit zu umgehen,ERDDAP™2.10+ folgt dem NUG-Standard und fügt immer ein "\_Unsigned"-Attribut mit einem Wert von "true" oder "false" hinzu, um anzuzeigen, ob die Daten aus einer nicht signierten oder signierten Variablen stammen. Alle Ganzzahl-Attribute werden als signierte Attribute geschrieben (z.B. Byte) mit signierten Werten (z.B. ein Ubyteactual\_rangeAttribut mit den Werten 0 bis 255 erscheint als Byte-Attribut mit den Werten 0 bis -1 (die Inverse des Komplementwerts der beiden Out-of-Range-Werte). Es gibt keine einfache Möglichkeit zu wissen, welche (signierten) Ganzzahl-Attribute als unbesignierte Attribute gelesen werden sollen.ERDDAP™unterstützt das Attribut "\_Unsigned", wenn es liest.nc3 Dateien.
- .nc3 Dateien unterstützen nicht die langen oder ulong Datentypen.ERDDAP™behandelt dies, indem sie vorübergehend in Doppelvariablen umwandeln. Doppel können alle Werte bis zu +/- 9,007,199,254,740,992 genau darstellen 2^53. Das ist eine unvollkommene Lösung.Unidataweigert sich, ein kleineres Upgrade zu machen.nc3 dies und die damit verbundenen Probleme zu behandeln, indem.ncANHANG (eine große Veränderung) als Lösung.
- Die CF-Spezifikation (Vor v1.9) sagte er unterstützt einen Datentyp, aber es ist unklar, ob char nur als Bausteine von Zeichenarrays gedacht ist, die effektiv Strings sind. Fragen an ihre Mailingliste ergaben nur verwirrende Antworten. Wegen dieser Komplikationen ist es am besten, Char Variablen in zu vermeidenERDDAP™und verwenden String-Variablen wann immer möglich.
- Traditionell,.nc3 Dateien nur unterstützt Strings mit ASCII-codiert (7-Bit, #0 - #127) Zeichen. NUG (undERDDAP) sich ausdehnen (~2017 ~) mit dem Attribut "\_Encoding" mit einem Wert von "ISO-8859-1" (eine Erweiterung von ASCII, die alle 256 Werte jedes 8-Bit-Zeichens definiert) oder "UTF-8", um anzuzeigen, wie die String-Daten kodiert werden. Andere Kodierungen können legal sein, werden aber entmutigt.
.nc4 Dateien
- .nc4 Dateien unterstützen alleERDDAPDatentypen.
NCCSV Dateien
NCCSV 1.0-Dateien unterstützen keine unsignierten ganzzahligen Datentypen. NCCSV 1.1+ Dateienalle unsignierten Ganzzahl-Datentypen unterstützen.
DAP
- (OPeN)DAP (.das, .dds, .asc ASCII Dateien und .dods binäre Dateien) - Ja.
- (OPeN)DAPbehandelt kurze, ushort, int, uint, Float und doppelte Werte richtig.
- (OPeN)DAPhat einen "byte" Datentyp, den er als unbezeichnet definiert, während historisch THREDDS undERDDAP™haben "byte" wie unterschrieben behandelt(OPeN)DAPDienstleistungen. Um das besser zu behandeln,ERDDAP™2.10+ folgt dem NUG-Standard und fügt immer ein "\_Unsigned"-Attribut mit einem Wert von "true" oder "false" hinzu, um anzuzeigen, ob die Daten das sind, wasERDDAP™telefonieren perte oder ubyte. Alle Byte- und Ubyte-Attribute werden als "byte"-Attribute mit signierten Werten geschrieben (z.B. ein Ubyteactual\_rangeAttribut mit den Werten 0 bis 255 erscheint als Byte-Attribut mit den Werten 0 bis -1 (die Inverse des Komplementwerts der beiden Out-of-Range-Werte). Es gibt keinen einfachen Weg zu wissen, welche "byte" Attribute als Ubyte-Attribute gelesen werden sollen.
- (OPeN)DAPunterstützt nicht unterzeichnete oder unbezeichnete Sehnen.ERDDAP™behandelt dies, indem sie vorübergehend zu Doppelvariablen und Attributen umwandeln. Doppel können alle Werte bis 9,007,199,254,740,992 genau darstellen 2^53. Das ist eine unvollkommene Lösung.OPeNDAP (die Organisation) weigert sich, ein kleineres Upgrade zu machenDAP2.0, um sich mit diesem und verwandten Problemen zu befassen,DAPANHANG (eine große Veränderung) als Lösung.
- Weil(OPeN)DAPhat keinen separaten Zeichentyp und unterstützt technisch nur 1-Byte ASCII Zeichen (#0 - #127) in Strings, char-Datenvariablen erscheinen als 1-Charakter-lange Strings in(OPeN)DAP.das, .ddds und .dods Antworten.
- Technisch gesehen,(OPeN)DAPSpezifikation unterstützt nur Strings mit ASCII-codierten Zeichen (#0 - #127) . NUG (undERDDAP) sich ausdehnen (~2017 ~) mit dem Attribut "\_Encoding" mit einem Wert von "ISO-8859-1" (eine Erweiterung von ASCII, die alle 256 Werte jedes 8-Bit-Zeichens definiert) oder "UTF-8", um anzuzeigen, wie die String-Daten kodiert werden. Andere Kodierungen können legal sein, werden aber entmutigt.
Datentyp Kommentare
- Aufgrund der schlechten Unterstützung für lange, ulong und Char-Daten in vielen Dateitypen, entmutigen wir die Verwendung dieser Datentypen inERDDAP. Wenn möglich, verwenden Sie doppelt statt lang und ulong, und verwenden Sie String anstelle von char.
- Metadaten - Weil(OPeN)DAP's .das und .dds Antworten unterstützen nicht lange oder ulong Attribute oder Datentypen (und stattdessen zeigen sie als Doppel) , Sie können stattdessen verwendenERDDAP's tabellarische Darstellung von Metadaten, wie in derhttp.../erdap/ Informationen / datasetID .html Webseite (zum Beispiel, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (die Sie auch in anderen Dateitypen erhalten können, z.B. .csv,.htmlTable,.itx,.json,.jsonlCSV1,.jsonlCSV,.jsonlKVP,.mat,.nc,.nccsv,.tsv,.xhtml) oder.nccsvAntwort von Metadaten (zum Beispiel, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata wenn.nccsvMetadaten sind nur für tabellarische Datensätze verfügbar) , die beide alle Datentypen unterstützen (insbesondere, lang, ulong und char) .
Mediendateien
Nicht alle Daten sind Arrays von Zahlen oder Text. Einige Datensätze bestehen aus oder beinhalten Mediendateien, wie Bild-, Audio- und Videodateien.ERDDAP™hat einige Besonderheiten, um es Benutzern zu erleichtern, Zugang zu Mediendateien zu erhalten. Es ist ein zweistufiger Prozess:
- Machen Sie jede Datei über eine eigene URL zugänglich, über ein System, das Byte Range Requests unterstützt. Der einfachste Weg, dies zu tun, ist, die Dateien in einem Verzeichnis, dasERDDAP™hat Zugang zu. (Wenn sie in einem Container wie ein.zipDatei, entpacken Sie sie, obwohl Sie die.zipauch für Benutzer.) Dann machen Sie einenEDDTableFromFileNamesDatensatz, um diese Dateien überERDDAP™, insbesondere überERDDAP'"files"System.
Alle Dateien, die über EDDTableFromFileNames undERDDAP'"files"SystemunterstützungByte-Range-Anfragen. Normalerweise, wenn ein Client (z.B. ein Browser) stellt eine Anfrage an eine URL, es bekommt die gesamte Datei als Antwort. Aber mit einer Byte-Range-Anfrage gibt die Anfrage eine Reihe von Bytes aus der Datei an, und der Server gibt nur diese Bytes zurück. Dies ist hier relevant, weil die Audio- und Videoplayer in Browsern nur funktionieren, wenn die Datei über Byte-Range-Anfragen aufgerufen werden kann.
Optional: Wenn Sie mehr als einen Datensatz mit zugehörigen Mediendateien haben, können Sie nur einen EDDTableFromFileNames erstellen, der für jede Gruppe von Dateien einen Unterordner hat. Der Vorteil ist, dass, wenn Sie neue Mediendateien für einen neuen Datensatz hinzufügen möchten, alles, was Sie tun müssen, einen neuen Ordner erstellen und die Dateien in diesen Ordner stecken. Der Ordner und Dateien werden automatisch zum EDDTableFromFileNames-Datensatz hinzugefügt.
- Optional: Wenn Sie einen Datensatz haben, der Referenzen zu Mediendateien enthält, fügen Sie ihn hinzuERDDAP. Zum Beispiel können Sie eine .csv-Datei mit einer Zeile für jedes Mal, wenn jemand einen Wal und eine Spalte sah, die den Namen einer Bilddatei, die mit diesem Sehen zusammenhängt, enthält. Wenn der Name der Bilddatei nur der Dateiname ist, z.B. Img20141024T192403Z, keine vollständige URL, dann müssen Sie hinzufügenDateiAccessBase Url und/oder DateiAccessSuffixAttribute zu den Metadaten dafürdataVariabledie die baseURL und Suffix für diese Dateinamen angibt. Wenn Sie die Dateien über EDDTableFromFileNames zugänglich gemacht haben, wird die URL im Formular BasisUrl /erddap/files/ datasetID / Zum Beispiel
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Wenn es.zipoder eine andere Containerdatei mit allen Mediendateien, die mit einer Datenvariable zusammenhängen, empfehlen wir Ihnen, diese Datei auch für Benutzer zugänglich zu machen. (Schritt 1 oben) und dann mit einemDateiAccessArchive UrlAttribut.
\[BeginnenERDDAP™V1.82\]Wenn Sie den ersten Schritt oben tun (oder beide Schritte) , dann, wenn ein Benutzer dieERDDAP™ "files"System für diesen Datensatz (oder fragt, ob eine Teilmenge des Datensatzes über eine.htmlTableBitte, wenn Sie den zweiten Schritt getan haben) ,ERDDAP™wird links vom Dateinamen ein '?'-Symbol zeigen. Wenn der Benutzer über dieses Symbol schwebt, werden sie einen Popup sehen, der das Bild oder einen Audioplayer oder einen Videoplayer zeigt. Browser unterstützen nur eine begrenzte Anzahl von Arten von
- Bild (in der Regel .gif, .jpg und .png) ,
- Audio (in der Regel .mp3, .ogg und .wav) , und
- Videodateien (in der Regel .mp4, .ogv und . Weber) .
Der Support variiert mit verschiedenen Versionen verschiedener Browser auf verschiedenen Betriebssystemen. Wenn Sie also eine Wahl haben, welche Dateityp zu bieten ist, ist es sinnvoll, diese Typen anzubieten.
Oder, wenn ein Benutzer auf den Dateinamen auf einenERDDAP™Web-Seite, ihr Browser zeigt die Bild-, Audio- oder Videodatei als separate Webseite. Dies ist meist nützlich, um ein sehr großes Bild oder Video skaliert auf Vollbild zu sehen, anstatt in einem Popup.
Arbeiten mit AWS S3 Dateien
Amazon Web Service (AWS) ist ein VerkäuferCloud ComputingDienstleistungen.S3ist ein von AWS angebotenes Objektspeichersystem. Anstelle des hierarchischen Systems von Verzeichnissen und Dateien eines traditionellen Dateisystems (wie eine Festplatte in Ihrem PC) , S3 bietet nur "Buckets", die "Objekte" halten (wir rufen sie an"files") .
Für ASCII-Dateien (z.B., .csv) ,ERDDAP™kann mit den Dateien in den Eimern direkt arbeiten. Das einzige, was Sie tun müssen, ist, die<fileDir> für den Datensatz mit einem bestimmten Format für den AWS-Bucket, z. https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . Sie sollten nicht verwenden<CacheFromUrl>. Siehe unten für Details.
Aber für binäre Dateien (z.B.,.nc, .grib, .bufr.hdfDateien) , Sie müssen die<ccheFromUrl> System unten beschrieben.ERDDAP, netcdf-java (dieERDDAP™verwendet, um Daten aus diesen Dateien zu lesen) , und andere wissenschaftliche Datensoftware entwickelt, um mit Dateien in einem traditionellen Dateisystem zu arbeiten, das bietetBlockhöheZugriff auf Dateien (die es erlaubt, Stücke einer Datei zu lesen) , aber S3 nur AngeboteDateiebene (Gegenstand) Zugriff auf Dateien (die nur das Lesen der gesamten Datei erlaubt) . AWS bietet eine Alternative zu S3,Elastic Block Store (EBS) ), die den Zugriff auf den Blockpegel auf Dateien unterstützt, aber es ist teurer als S3, so wird es selten für die Massenspeicherung großer Mengen von Datendateien verwendet. (Also, wenn Leute sagen, Daten in der Cloud zu speichern (S3) ist billig, es ist in der Regel ein Äpfel zu Orangen Vergleich.)
S3 Schnallen
Der Inhalt eines Eimers. Schlüssel. Objekte.
Technisch sind S3 Eimer nicht in einer hierarchischen Dateistruktur wie ein Dateisystem auf einem Computer organisiert. Stattdessen enthalten Eimer nur "Objekte" (Dateien) , von denen jeder einen "Schlüssel" hat (Name) . Ein Beispiel für einen Schlüssel darin, dass noaaa-goes17 Bucket ist
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
Das entsprechende URl für dieses Objekt ist
AWS unterstützt eine kleine Variation, wie diese URL aufgebaut ist, aberERDDAP™erfordert dieses ein bestimmtes Format:
https://bucketName.s3.region.amazonaws.com/key
Es ist üblich, wie mit diesem Beispiel, Schlüsselnamen wie einen hierarchischen Pfad plus einen Dateinamen aussehen zu lassen, aber technisch nicht. Da es üblich und nützlich ist,ERDDAP™behandelt Schlüssel mit /'s, als ob sie ein hierarchischer Pfad plus Dateiname sind, und diese Dokumentation wird sich auf sie als solche beziehen. Wenn die Schlüssel eines Eimers nicht verwenden /'s (z.B. ein Schlüssel wie
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575), dannERDDAP™wird nur den ganzen Schlüssel als langen Dateinamen behandeln.
Private vs Öffentliche Buckets -- Der Administrator für den S3 Eimer kann den Eimer und seinen Inhalt öffentlich oder privat machen. Falls öffentlich, kann jede Datei im Bucket von jedem heruntergeladen werden, der die URL für die Datei verwendet. Amazon hat eineOffene DatenProgramm, das öffentliche Datensätze beherbergt (einschließlich Daten vonNOAA, NASA und USGS) kostenlos und lädt nicht für jeden, die Dateien von diesen Eimern herunterladen. Wenn ein Eimer privat ist, sind Dateien im Eimer nur für autorisierte Benutzer zugänglich und AWS berechnet eine Gebühr (normalerweise vom Besitzer des Eimers bezahlt) zum Herunterladen von Dateien auf einen nicht-AWS S3 Computer.ERDDAP™kann mit Daten in öffentlichen und privaten Eimern arbeiten.
AWS Credentials
Um es so zu machen,ERDDAP™kann den Inhalt von privaten Eimern lesen, Sie benötigen AWS Anmeldeinformationen und Sie müssen eine Anmeldedatei an der Standard Stelle speichern, soERDDAP™die Informationen finden. Siehe das AWS SDK fürJava2.x Dokumentation:Standard-Anmeldeinformationen festlegen. (Die Option, die Werte als zu speichernJavaKommandozeilenparameter in\[Tomcat\]/bin/setenv.sh kann eine gute Option sein.)
AWS / Dateien/
- /Dateien/ System -- DieERDDAP™ /Dateien/ Systemermöglicht es Benutzern, die Quelldateien für einen Datensatz herunterzuladen. Wir empfehlen Ihnen, dies für alle Datensätze mit Quelldateien zu aktivieren, da viele Benutzer die Original-Quelldateien herunterladen möchten.
- Wenn die Dateien in einem privaten S3-Bucket sind, wird die Anfrage des Benutzers, eine Datei herunterzuladen, vonERDDAP™, die die Daten aus der Datei liest und dann an den Benutzer übermittelt, wodurch die Last auf IhremERDDAP™, mit eingehender und ausgehender Bandbreite, und machen Sie (dieERDDAP™Administrator) die Datenausgangsgebühr an AWS bezahlen.
- Wenn die Dateien in einem öffentlichen S3-Bucket sind, wird die Anfrage des Benutzers, eine Datei herunterzuladen, auf die AWS S3 URL für diese Datei umgeleitet, so dass die Daten nicht durchlaufen werdenERDDAP™, so dass die BelastungERDDAP. Und wenn die Dateien in einem Amazon Open Data sind (kostenlos) öffentliche Eimer, dann Sie (dieERDDAP™Administrator) muss keine Daten-Egressgebühr an AWS zahlen. So gibt es einen großen Vorteil, Daten von der Öffentlichkeit zu bedienen (nicht privat) S3 Eimer und ein großer Vorteil, um Daten von Amazon Open Data zu bedienen (kostenlos) Eimer.
ERDDAP™und AWS S3 Buckets
ERDDAP™und AWS S3 Buckets
Glücklicherweise, nach viel Mühe,ERDDAP™hat eine Reihe von Funktionen, die es ermöglichen, mit den inhärenten Problemen der Arbeit mit S3 Block-Level-Zugang zu Dateien auf eine vernünftige Weise effizient zu behandeln:
- \[Disclaimer: Die Arbeit mit AWS S3 Eimern ist viel extra Arbeit. AWS ist ein riesiges Ökosystem von Dienstleistungen und Funktionen. Es gibt viel zu lernen. Es braucht Zeit und Mühe, aber es ist machbar. Sei geduldig und du kriegst Sachen. Hilfe suchen
(AWS Dokumentation, Webseiten wieStack Overflow, und
ERDDAP™Support-Optionen) wenn/wenn du feststeckst.\]
- Es kann schwer sein, sogar die Verzeichnisstruktur und Dateinamen der Dateien in einem S3 Bucket zu finden.ERDDAP™hat eine Lösung für dieses Problem: EDDTableFromFileNames hat ein besonderes\*\*Mehr InformationenOption, mit der Sie einen EDDTableFromFileNames-Datensatz erstellen können, mit dem Benutzer den Inhalt eines S3-Buckets durchsuchen können (und Dateien herunterladen) über den Datensatz"files"Option. Es gibt eineBeispiel dafür unten.
- ERDDAP™kann Daten auslesenextern komprimierte Datendateien, so ist es gut, wenn die Dateien auf S3 gespeichert werden, wie.gz,.gzip,.bz2, .Z oder andere Arten von extern komprimierten Datendateien, die dramatisch (2 - 20X) die Kosten für die Dateispeicherung senken. Es gibt oft keine Zeitstrafe für die Verwendung von extern komprimierten Dateien, da die Zeit gespeichert, indem eine kleinere Datei von S3 aufERDDAPdie fürERDDAP™die Datei zu dekomprimieren. Um diese Funktion zu nutzen, müssen Sie nur sicherstellen, dass der Datensatz<DateiNameRegex> ermöglicht den komprimierten Dateityp (z.B. durch Hinzufügen (|.gz) bis zum Ende des Regex) .
- Für den häufigsten Fall, wo Sie eineERDDAP™installiert auf Ihrem PC für Test/Entwicklung und wo der Datensatz binäre Datendateien hat, die als Objekte in einem S3-Bucket gespeichert werden, ein Ansatz, um den Datensatz inERDDAP™ist:
-
Erstellen Sie ein Verzeichnis auf Ihrem PC, um ein paar Testdateien zu halten.
-
Laden Sie zwei Datendateien von der Quelle in das gerade erstellte Verzeichnis herunter.
-
VerwendungGenerateDatasetsXmlum den Haufen vondatasets.xmlfür den Datensatz basierend auf den beiden lokalen Datendateien.
-
Überprüfen Sie, ob der Datensatz beliebig funktioniert mitDasDdsund/oder Ihr LokalERDDAP.
Die folgenden Schritte machen eine Kopie dieses Datensatzes (die Daten vom S3-Bucket erhalten) in der ÖffentlichkeitERDDAP.
-
Kopieren Sie das Stückdatasets.xmlfür den Datensatzdatasets.xmlfür die ÖffentlichkeitERDDAP™die den Daten dienen.
-
Erstellen Sie ein Verzeichnis in der ÖffentlichkeitERDDAP's lokale Festplatte, um einen Cache von temporären Dateien zu halten. Das Verzeichnis wird nicht viel Speicherplatz verwenden (siehe cacheSizeGB unten) .
-
Änderung des Wertes des Datensatzes<fileDir> tag so dass es auf das gerade erstellte Verzeichnis verweist (obwohl das Verzeichnis leer ist) .
-
EineCacheFromUrltag, der den Namen des Datensatzes und optionales Präfix angibt (i.e., Verzeichnis) in derS3 URL Formatieren Sie dasERDDAP™Anforderungen.
-
Fügen Sie ein [<CacheSizeGB> (#cachefromurl) tag to the dataset's xml (z.B. 10 ist ein guter Wert für die meisten Datensätze) zu sagenERDDAP™die Größe des lokalen Caches zu begrenzen (d.h., versuchen Sie nicht, alle Remote-Dateien) .
-
Sehen Sie, ob das in der Öffentlichkeit funktioniertERDDAP. Beachten Sie, dass das erste MalERDDAP™lädt den Datensatz, es dauert eine lange Zeit zu laden, weilERDDAP™muss alle Datendateien herunterladen und lesen.
-
Wenn der Datensatz eine riesige Sammlung von riesigen Datendateien ist, wird dies sehr lange dauern und unpraktisch sein. In einigen Fällen für netzgebundene Datendateien,ERDDAP™kann die benötigten Informationen extrahieren (z.B. der Zeitpunkt für die Daten in einer netzgebundenen Datendatei) aus dem Dateinamen und vermeiden Sie dieses Problem. Vgl.Aggregat über Dateinamen.
- Optional (aber vor allem für EDDTableFromFiles-Datensätze) , Sie können einnThreadstag zum Datensatz zu sagenERDDAPmehr als 1 Thread zu verwenden, wenn Sie auf die Anforderung eines Benutzers für Daten reagieren. Dies minimiert die Auswirkungen der Verzögerung, die auftritt, wennERDDAP™liest Datendateien von (Fernbedienung) AWS S3 Eimer in den lokalen Cache und (vielleicht) sie zu dekomprimieren.
AWS S3 Open Data
Als Teil desNOAA'Großes Datenprogramm,NOAAhat Partnerschaften mit fünf Organisationen, darunter AWS, "um die potenziellen Vorteile der Speicherung von Kopien von Schlüsselbeobachtungen und Modellausgängen in der Cloud zu untersuchen, um das Computing direkt auf die Daten zu ermöglichen, ohne dass eine weitere Distribution erforderlich ist". AWS enthält die Datensätze, die vonNOAAim Rahmen seines Programms den öffentlichen Zugang zu einer großen Sammlung vonDaten auf AWS S3 öffnenvon jedem Computer, ob es sich um eine Amazon-Compute-Instanz handelt (einen gemieteten Computer) auf dem AWS-Netzwerk oder Ihrem eigenen PC auf jedem Netzwerk. Das folgende Beispiel geht davon aus, dass Sie mit einem öffentlich zugänglichen Datensatz arbeiten.
Zugriff auf Dateien in einem AWS S3 Bucket
Für einen privaten S3-Datenbecher muss der Besitzer des Eimers Ihnen den Zugang zum Eimer geben. (Siehe die AWS-Dokumentation.)
In allen Fällen benötigen Sie ein AWS-Konto, da das AWS SDK fürJava (dieERDDAP™verwendet, um Informationen über den Inhalt eines Eimers abzurufen) erfordert AWS-Account-Anmeldeinformationen. (Mehr dazu unten)
ERDDAP™kann nur auf AWS S3 Eimer zugreifen, wenn Sie die [<CacheFromUrl> (#cachefromurl) (oder<DateiDir>) in einem bestimmten Format:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
wenn
- Der bucketName ist die kurze Form des Bucketnamens, z.B. noaa-goes17 .
- Die aws-Region, z.B. us-east-1, stammt aus der Spalte "Region" in einem der Tabellen derAWS Service Endpointswo sich der Eimer tatsächlich befindet.
- Das Präfix ist optional. Wenn vorhanden, muss es enden mit'/'.
Zum Beispiel https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Dieses URL-Format ist eine der AWS S3 Empfehlungen: sieheZugang zu einem Eimerunddiese Beschreibung von Präfixen.ERDDAP™erfordert, dass Sie die Bucket-URL und das optionale Präfix in eine URL kombinieren, um die<ccheFromUrl> (oder<DateiDir>), wo sich die Dateien befinden.
Test Public AWS S3 Buckets
Für öffentliche Eimer können und sollten Sie die Eimer-URL des AWS S3 Verzeichnisses in Ihrem Browser testen, z.B. https://noaa-goes17.s3.us-east-1.amazonaws.com Wenn die Bucket-URL korrekt ist und fürERDDAP, es wird ein XML-Dokument zurückgeben, das (Teil) Auflistung der Inhalte dieses Eimers. Leider die volle URL (d.h., Bucket URL plus Präfix) dassERDDAP™will für einen bestimmten Datensatz funktioniert nicht in einem Browser. AWS bietet kein System, um die Hierarchie eines Eimers einfach in Ihrem Browser zu durchsuchen. (Wenn das falsch ist, mailen Sie Chris. John bei noaa.gov. Ansonsten, Amazon, bitte fügen Sie Unterstützung für diese!)
Die Inhalte eines Bucket ansehen
S3 Eimer enthalten oft ein paar Kategorien von Dateien, in einigen Pseudo-Unterverzeichnissen, die ein paar werden könnteERDDAP™Datensätze. Um dieERDDAP™datasets, Sie müssen das Startverzeichnis für<ccheFromUrl> (oder<fileDir>) und das Format der Dateinamen, die diese Untermenge von Dateien identifizieren. Wenn Sie versuchen, den gesamten Inhalt eines Eimers in einem Browser anzuzeigen, S3 zeigt Ihnen nur die ersten 1000 Dateien, die nicht ausreichend sind. Derzeit ist der beste Weg für Sie, alle Inhalte eines Eimers anzusehen, um einenEDDTableFromFileNamesDatensatz (auf Ihrem PCERDDAP™und/oderERDDAP) , die Ihnen auch eine einfache Möglichkeit gibt, die Verzeichnisstruktur zu durchsuchen und Dateien herunterzuladen. Die<fileDir> dafür wird die oben gemachte URL sein, z.B. https://noaa-goes17.s3.us-east-1.amazonaws.com .\[Warum bietet AWS S3 nicht einen schnellen und einfachen Weg, um das ohne AWS-Konto zu tun?\]Beachten Sie, dass, wenn ich dies auf meinem PC auf einem nicht-Amazon-Netzwerk, es scheint, dass Amazon verlangsamt die Antwort auf einen Trickle (etwa 100 (?) Dateien pro Stück) nach den ersten paar Stücken (von 1000 Dateien pro Stück) werden heruntergeladen. Da Eimer möglicherweise eine große Anzahl von Dateien haben (noaaa-goes17 hat 26 Millionen) , alle Inhalte eines Eimers zu erhalten, kann EDDTableFromFileNames mehrere Stunden dauern (z.B. 12!) zu beenden.\[Amazon, ist das richtig?!\]
EDDTable erstellen FromFileNames Dataset mit AWS S3 Bucket
Wenn Sie einen Bucket-Namen haben, aber nicht bereits eine Liste von Dateien im S3-Bucket oder das Präfix, das den Standort der entsprechenden Dateien im Bucket identifiziert, verwenden Sie die folgenden Anweisungen, um einen EDDTableFromFileNames-Datensatz zu erstellen, so dass Sie die Verzeichnishierarchie des S3-Buckets überERDDAP'"files"System.
- AWS-Konto eröffnen ERDDAP™Verwendung vonAWS SDK fürJavaBucket-Informationen von AWS zu erhalten, also müssen Sieein AWS-Konto erstellen und aktivieren. Das ist ein ziemlich großer Job, mit vielen Dingen zu lernen.
- Legen Sie Ihre AWS-Ergebnisse, woERDDAP™kann sie finden. Folgen Sie den Anweisungen beiAWS-Erstellungs- und Entwicklungsregion einrichtenalsoERDDAP™ (speziell das AWS SDK fürJava) wird in der Lage sein, Ihre AWS-Anmeldeinformationen zu finden und zu verwenden. wennERDDAP™die Anmeldeinformationen nicht finden können, sehen Sie eine java.lang. IllegalArgumentException: Profildatei kann nicht null Fehler seinERDDAP's log.txt-Datei.
Hinweis für Linux und Mac OS: Die Anmeldedatei muss im Home-Verzeichnis des Benutzers sein, der Tomcat läuft (undERDDAP) (für diesen Absatz übernehmen wir user=tomcat) in einer Datei namens ~/.aws/credentials . Nehmen Sie nicht an, dass ~ /home/tomcat -- tatsächlich verwenden cd ~ um herauszufinden, wo das Betriebssystem denkt ~ für user=tomcat ist. Erstellen Sie das Verzeichnis, wenn es nicht existiert. Auch, nachdem Sie die Anmeldeinformationen Datei in Platz gesetzt, stellen Sie sicher, dass der Benutzer und die Gruppe für die Datei sind tomcat und dann verwenden chmod 400 Anmeldeinformationen, um sicherzustellen, dass die Datei nur für user=tomcat gelesen wird.
- Erstellen Sie die Bucket URL in derFormat:ERDDAP™Anforderungen, z. https://noaa-goes17.s3.us-east-1.amazonaws.com , und (für öffentliche Eimer) testen Sie es in einem Browser, um sicherzustellen, dass es ein XML-Dokument zurückgibt, das eine teilweise Auflistung der Inhalte dieses Eimers hat.
- VerwendungGenerateDatasetsXmlum einEDDTableFromFileNamesDatensatz:
-
Für das Startverzeichnis verwenden Sie diese Syntax: \\( vonOnTheFly, IhrBucketUrl* zum Beispiel, \\\*vonTheFly, https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
Dateiname regex? .
-
Rekursiv? wahr
-
Nachladen EveryNMinutes? 10080
-
Institution?NOAA
-
Zusammenfassung? nichts (ERDDAP™wird automatisch eine anständige Zusammenfassung erstellen.)
-
Titel? nichts (ERDDAP™wird automatisch einen anständigen Titel erstellen.) Wie üblich, sollten Sie das resultierende XML bearbeiten, um die Korrektheit zu überprüfen und Verbesserungen vor dem Bruch von Datensätzen vorzunehmen, indem Sie es indatasets.xml.
-
- Wenn Sie die oben genannten Anweisungen befolgen und den Datensatz ladenERDDAP, Sie haben einen EDDTableFromFiles Datensatz erstellt. Als Beispiel haben wir EDDTableFromFileNames-Datensätze erstellt, um es jedem zu erleichtern, Dateien aus den AWS Open Data-Buckets zu durchsuchen und herunterzuladen.
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) für fast alleAWS S3 Open Data Eimer.
\[Die wenigen Eimer, die wir nicht enthalten haben entweder eine große Anzahl von Dateien im Rootverzeichnis (mehr als in angemessener Zeit heruntergeladen werden kann) , oder den öffentlichen Zugang nicht zulassen (sollen sie nicht alle öffentlich sein?) , oder sind Forderer bezahlt Eimer (z.B. Sentinel) .\]
Wenn Sie auf die"files"Link für einen dieser Datensätze, Sie können den Verzeichnisbaum und Dateien in diesem S3 Bucket durchsuchen. Wegen des Weges\\\*fromOnTheFly EDDTableFromFiles funktioniert, diese Verzeichnis-Listen sind immer perfekt aktuell, weilERDDAP™sie auf-die-fly. Wenn Sie den Verzeichnisbaum auf einen tatsächlichen Dateinamen klicken und auf den Dateinamen klicken,ERDDAP™wird Ihre Anfrage an AWS S3 umleiten, damit Sie die Datei direkt von AWS herunterladen können. Sie können diese Datei dann inspizieren.
Ärger? Wenn Ihr EDDTableFromFiles nicht geladen wirdERDDAP™ (oder DasDds) , suchen Sie in der log.txt-Datei für eine Fehlermeldung. Wenn Sie eine java.lang. IllegalArgumentException: Profildatei kann nicht null Fehler sein, das Problem ist, dass das AWS SDK fürJava (verwendet,ERDDAP) die Anmeldedatei nicht finden. Siehe oben die Anmeldehinweise.
Es ist bedauerlich, dass AWS nicht einfach Menschen erlaubt, einen Browser zu verwenden, um den Inhalt eines öffentlichen Eimers anzuzeigen.
Dann können SieERDDAP™Datensätze, die den Benutzern Zugriff auf die Daten in den Dateien geben.
Siehe die Anweisungen inERDDAP™und S3 Schnallen (oben) .
Für den Datensatz EDDTableFromFileNames, den Sie oben gemacht haben, wenn Sie mit dem Verzeichnis und den Dateinamen im Verzeichnisbaum ein wenig herumspielen, wird deutlich, dass die Verzeichnisnamen der obersten Ebene (z.B. ABI-L1b-RadC) entsprechen, wasERDDAP™würde separate Datensätze anrufen. Der Eimer, mit dem Sie arbeiten, kann ähnlich sein. Sie könnten dann die Erstellung von separaten Datensätzen inERDDAP™für jeden dieser Datensätze, z.
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
als<ccheFromUrl>. Leider scheinen für dieses spezielle Beispiel die Datensätze im Eimer alle Level 1 oder Level 2 Datensätze zu sein, dieERDDAP™ ist nicht besonders gut, weil der Datensatz eine kompliziertere Erfassung von Variablen ist, die verschiedene Dimensionen verwenden.
NcML-Dateien
NcML-Dateien lassen Sie on-the-fly Änderungen an einer oder mehreren Originalquelle angebenNetCDF (v3 oder v4) .nc.grib, .bufr oder.hdf (v4 oder v5) Dateien und dann habenERDDAP™behandeln die.ncml Dateien als Quelldateien.ERDDAP™datasets akzeptiert.ncml Dateien wann immer.ncDateien werden erwartet. Die NcML-Dateien haben die Erweiterung.ncml. SieheUnidataNcML-Dokumentation. NcML ist nützlich, weil Sie einige Dinge damit machen können (zum Beispiel verschiedene Änderungen an verschiedenen Dateien in einer Sammlung vorzunehmen, einschließlich Hinzufügen einer Dimension mit einem bestimmten Wert zu einer Datei) , dass Sie nicht mitERDDAP'datasets.xml.
- Änderungen an einer.ncDie letzteModified-Zeit der ml-Datei wird dazu führen, dass die Datei neu geladen wird, wenn der Datensatz neu geladen wird, aber Änderungen an der zugrunde liegenden.ncDatendateien werden nicht direkt bemerkt.
- Hinweis: NcML ist\*sehr\*empfindlich auf die Reihenfolge einiger Elemente in der NcML-Datei. Denken Sie an NcML als Angabe einer Reihe von Anweisungen in der angegebenen Reihenfolge, mit der Absicht, die Quelldateien zu ändern (der Zustand am Start/top der NcML-Datei) in die Zieldateien (der Zustand am Ende/unten der NcML-Datei) .
Eine Alternative zu NcML ist dieNetCDFBetreiber (NCO) . Der große Unterschied ist, dass NcML ein System ist, um Änderungen zu machen (so dass die Quelldateien nicht verändert werden) , währendNCOkann verwendet werden, um Änderungen an (oder neue Versionen) die Dateien. BeideNCOund NcML sind sehr, sehr flexibel und ermöglichen es Ihnen, fast jede Änderung, die Sie an die Dateien denken können. Für beide kann es schwierig sein, genau herauszufinden, wie Sie tun, was Sie tun wollen -- überprüfen Sie das Web für ähnliche Beispiele. Beide sind nützliche Werkzeuge zur Vorbereitung von netCDF undHDFDateien zur Verwendung mitERDDAP, vor allem, um Änderungen darüber hinaus vorzunehmen, wasERDDAP's Manipulation System kann tun.
Beispiel #1: Hinzufügen einer Zeitdimension mit einem Einzelwert Hier ist ein.ncml-Datei, die eine neue äußere Dimension erzeugt (Zeit, mit 1 Wert: 1041379200) und fügt diese Dimension der Bildvariablen in der Datei A2003001.L3m\_DAY\_PIC\_pic\_4km hinzu.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>
Beispiel #2: Änderung eines bestehenden Zeitwerts Manchmal die Quelle.ncDatei hat bereits eine Zeitdimension und Zeitwert, aber der Wert ist falsch (für Ihre Zwecke) . Das.ncml-Datei sagt: für die Datendatei ""19810825230030-NCEI...", für die Dimensionsvariable"time", setzen Sie die Einheiten Attribut 'Sekunden seit 1970-01T00:00:00Z' und setzen Sie den Zeitwert auf 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>
NetCDFBetreiber (NCO)
"Die Netzbetreiber (NCO) umfassen ein Dutzend Standalone, Kommandozeilenprogramme, die netCDF\[v3 oder v4\],HDF \[v4 oder v5\],\[.grib, .bufr,\]und/oderDAPDateien als Eingabe, dann bedienen (z.B. neue Daten ableiten, Statistiken berechnen, Druck, Hyperslab, Metadaten manipulieren) und die Ergebnisse auf Bildschirm oder Dateien in Text-, Binär- oder NetCDF-Formaten ausgeben.NCOUnterstützung bei der Analyse von netzgebundenen wissenschaftlichen Daten. Der Shell-Command-StilNCOermöglicht es Benutzern, Dateien interaktiv zu manipulieren und zu analysieren, oder mit ausdrucksstarken Skripten, die einige Overhead von höheren Programmierumgebungen vermeiden." (vonNCOHomepage) .
Eine Alternative zuNCOistNcML. Der große Unterschied ist, dass NcML ein System ist, um Änderungen zu machen (so dass die Quelldateien nicht verändert werden) , währendNCOkann verwendet werden, um Änderungen an (oder neue Versionen) die Dateien. BeideNCOund NcML sind sehr, sehr flexibel und ermöglichen es Ihnen, fast jede Änderung, die Sie an die Dateien denken können. Für beide kann es schwierig sein, genau herauszufinden, wie Sie tun, was Sie tun wollen -- überprüfen Sie das Web für ähnliche Beispiele. Beide sind nützliche Werkzeuge zur Vorbereitung von netCDF undHDFDateien zur Verwendung mitERDDAP, vor allem, um Änderungen darüber hinaus vorzunehmen, wasERDDAP's Manipulation System kann tun.
Zum Beispiel können Sie verwendenNCOdie Einheiten der Zeitvariablen in einer Gruppe von Dateien konsistent zu machen, wo sie ursprünglich nicht konsistent waren. Oder Sie können verwendenNCOAnwendungscale\_factorundadd\_offsetin einer Gruppe von Dateien, in denenscale\_factorundadd\_offsetverschiedene Werte in verschiedenen Quelldateien haben. (Oder Sie können jetzt mit diesen Problemen inERDDAP™überEDDGridVonNcFilesUnpacked, die eine Variante vonEDDGridFromNcFiles, die gepackte Daten entpackt und Zeitwerte auf einem niedrigen Niveau standardisiert, um mit einer Sammlungsdatei zu umgehen, die verschiedenescale\_factors undadd\_offset, oder verschiedene Zeiteinheiten.)
NCOist Freie und Open Source Software, die dieGPL 3.0Lizenz.
Beispiel #1: Einheiten konsistent machen
EDDGridVonFiles und EDDTable Aus Dateien bestehen darauf, dass die Einheiten für eine bestimmte Variable in allen Dateien identisch sein. Wenn einige der Dateien trivial sind (nicht funktionell) anders als andere (z.B. Zeiteinheiten von
"Sekunden seit 1970-01 00:00:00 Uhr UTC" versus
"seconds since 1970-01-01T00:00:00Z", Sie könnten verwendenNCO'nkaten. die Einheiten in allen Dateien zu ändern identisch mit
nco/ncatted -a units,time,o,c,'seconds since 1970-01-01T00:00Z' \*.nc
\[Für viele Probleme wie diese in EDDTableFrom... Dateien Datensätze, können Sie jetzt verwendenStandardisierung Was?zu sagenERDDAPdie Quelldateien zu standardisieren, wie sie eingelesen werdenERDDAP.\]
Grenzwerte für die Größe eines Datensatzes
Sie werden viele Hinweise auf "2 Milliarden" unten sehen. Genauer gesagt, das ist ein Hinweis auf 2,147,483.647 (2^31-1) , das ist der maximale Wert einer 32-Bit signierten Ganzzahl. In einigen Computersprachen zum BeispielJava (dieERDDAP™wird eingeschrieben) , das ist der größte Datentyp, der für viele Datenstrukturen verwendet werden kann (beispielsweise die Größe eines Arrays) .
Für Streichwerte (beispielsweise für Variablennamen, Attributnamen, String Attributwerte und String-Datenwerte) , die maximale Anzahl der Zeichen pro String inERDDAP™ist ~2 Milliarden. Aber in fast allen Fällen wird es kleine oder große Probleme geben, wenn ein String eine angemessene Größe überschreitet (z.B. 80 Zeichen für variable Namen und Attributnamen und 255 Zeichen für die meisten String Attributwerte und Datenwerte) . Zum Beispiel werden Webseiten, die lange Variablennamen anzeigen, umständlich breit und lange Variablennamen gekürzt, wenn sie die Grenze des Antwortdateityps überschreiten.
Für gegitterte Datensätze:
- Die maximale AnzahlaxisVariables ist ~2 Milliarden. Die maximale AnzahldataVariables ist ~2 Milliarden. Aber wenn ein Datensatz > 100 Variablen hat, wird es für Benutzer schwer zu verwenden sein. Und wenn ein Datensatz > 1 Million Variablen hat, wird Ihr Server eine Menge physischen Speicher benötigen und es werden andere Probleme.
- Die maximale Größe jeder Dimension (axisVariable) ist ~2 Milliarden Werte.
- Ich denke, die maximale Gesamtzahl der Zellen (das Produkt aller Dimensionsgrößen) ist unbegrenzt, aber es kann ~9e18 sein.
Für tabellarische Datensätze:
- Die maximale AnzahldataVariables ist ~2 Milliarden. Aber wenn ein Datensatz > 100 Variablen hat, wird es für Benutzer schwer zu verwenden sein. Und wenn ein Datensatz > 1 Million Variablen hat, wird Ihr Server eine Menge physischen Speicher benötigen und es werden andere Probleme.
- Die maximale Anzahl der Quellen (zum Beispiel Dateien) Das kann aggregiert werden ist ~2 Milliarden.
- In einigen Fällen die maximale Anzahl von Zeilen aus einer einzelnen Quelle (zum Beispiel eine Datei, aber keine Datenbank) ist ~2 Milliarden Zeilen.
- Ich glaube nicht, dass es andere Grenzen gibt.
Für sowohl gitterförmige als auch tabellarische Datensätze gibt es einige interne Grenzwerte für die Größe der Teilmenge, die von einem Benutzer in einer einzigen Anfrage angefordert werden können (oft mit >2 Milliarden von etwas oder ~9e18 von etwas verwandt) , aber es ist viel wahrscheinlicher, dass ein Benutzer die datentypspezifischen Grenzen trifft.
- NetCDFVersion 3.ncDateien sind auf 2GB Bytes begrenzt. (Wenn das wirklich ein Problem für jemanden ist, lassen Sie mich wissen: Ich könnte Unterstützung für dieNetCDFVersion 3.nc64-Bit-Erweiterung oderNetCDFVersion 4, die die Grenze deutlich erhöhen würde, aber nicht unendlich.)
- Browser abstürzen nach nur ~500MB der Daten, soERDDAP™die Antwort auf.htmlTableAnfragen an ~400MB der Daten.
- Viele Datenanalyseprogramme haben ähnliche Grenzen (zum Beispiel, die maximale Größe einer Dimension ist oft ~2 Milliarden Werte) , so gibt es keinen Grund, hart zu arbeiten um die datentypspezifischen Grenzen zu bekommen.
- Die datentypspezifischen Grenzen sind nützlich, indem sie naive Anfragen für wirklich riesige Datenmengen verhindern (z.B. "Gib mir all diesen Datensatz", wenn der Datensatz 20TB von Daten aufweist) , die Wochen oder Monate dauern würde, um herunterzuladen. Je länger der Download, desto wahrscheinlicher wird es aus verschiedenen Gründen scheitern.
- Die datentypspezifischen Grenzen sind nützlich, indem sie den Benutzer dazu zwingen, sich mit maßgebenden Teilmengen zu befassen. (z.B. über Dateien mit Daten von jeweils einem Zeitpunkt einen großen netzgebundenen Datensatz zu behandeln) .
Wechseln zu ACDD-1.3
Wir (insbesondereGenerateDatasetsXml) aktuell empfehlenACDD-Version 1.3, die Anfang 2015 ratifiziert wurde und im globalen Konventsattribut als "ACDD-1.3" bezeichnet wird. VorherERDDAP™Version 1.62 (veröffentlicht im Juni 2015) ,ERDDAP™das Original, Version 1.0, desNetCDFAttribut Convention for Dataset Discoverydie als " bezeichnet wurdeUnidataDataset Discovery v1.0" in den globalen Konventionen undMetadata\_ConventionsAttribute.
Wenn Ihre Datensätze frühere Versionen von ACDD verwenden, freuen wir uns, dass Sie auf ACDD-1.3 wechseln. Es ist nicht schwer. ACDD-1.3 ist sehr rückwärtskompatibel mit Version 1.0. Um zu wechseln, für alle Datensätze (ausgenommenEDDGridVonErddap und EDDTable AusErddap-Datensätze) :
- Entfernen Sie die neu deprecated globalMetadata\_ConventionsAttribut durch Hinzufügen (oder durch Änderung der bestehendenMetadata\_ConventionsEigenschaften)
<att name="Metadata\\_Conventions">null</att>
zum globalen Datensatz<addAttributes>. 2. Wenn der Datensatz ein Attribute von Konventionen im globalen<addAttributes>, alle ändern "UnidataDataset Discovery v1.0" verweist auf "ACDD-1.3". Wenn der Datensatz kein Konventsattribut im globalen<addAttributes>, dann fügen Sie einen, der sich auf ACDD-1.3 bezieht. Zum Beispiel
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Wenn der Datensatz global iststandard\_name\_vocabularyAttribut, ändern Sie bitte das Format des Wertes auf z.B.
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Wenn die Referenz auf eine ältere Version derCF Standard-Namenstabelle. es ist wahrscheinlich eine gute Idee, auf die aktuelle Version zu wechseln (65, wie wir das schreiben) , da neue Standardnamen zu dieser Tabelle mit folgenden Versionen hinzugefügt werden, aber alte Standardnamen werden selten depreciert und nie entfernt. 4. Obwohl ACDD-1.0 globale Attribute fürcreator\_name,creator\_email,creator\_url,GenerateDatasetsXmlhat sie nicht automatisch hinzugefügt, bis irgendwann umERDDAP™v1.50. Dies sind wichtige Informationen:
- creator\_namelässt Benutzer den Schöpfer des Datensatzes erkennen/ ansagen.
- creator\_emailerklärt den Benutzern die bevorzugte E-Mail-Adresse, um den Schöpfer des Datensatzes zu kontaktieren, beispielsweise wenn sie Fragen zum Datensatz haben.
- creator\_urlgibt Benutzern einen Weg, um mehr über den Schöpfer zu erfahren.
- ERDDAP™verwendet alle diese Informationen bei der Generierung von FGDC und ISO 19115-2/19139 Metadatendokumenten für jeden Datensatz. Diese Dokumente werden oft von externen Suchdiensten verwendet.
Bitte fügen Sie diese Attribute dem globalen Datensatz hinzu<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>
Das ist es. Ich hoffe, das war nicht zu hart.
Zar
Ab Version 2.25ERDDAP™kann lokal lesen Zarr Dateien mitEDDTableFromNcFisundEDDGridVon NcFiles.
(Ab August 2019) Wir könnten leicht falsch sein, aber wir sind noch nicht überzeugt, dassZar, oder ähnliche Systeme, die Datendateien in kleinere Stücke zerlegen, sind große Lösungen für das Problem derERDDAP™Daten, die in Cloud-Diensten wie Amazon AWS S3 gespeichert werden. Zarr ist eine großartige Technologie, die ihre Nützlichkeit in einer Vielzahl von Situationen gezeigt hat, wir sind einfach nicht sicher, dassERDDAP+S3 wird eine dieser Situationen sein. Meistens sagen wir: Bevor wir die Mühe machen, alle unsere Daten in Zarr zu speichern, machen wir einige Tests, um zu sehen, ob es tatsächlich eine bessere Lösung ist.
Die Probleme mit dem Zugriff auf Daten in der Cloud sind Latenz (die Verzögerung zuerst Daten erhalten) und Zugriff auf Dateiebene (anstatt zu blockieren) . Zarr löst das Problem auf Dateiebene, tut aber nichts über Latenz. Im Vergleich zum Download der Datei (so kann es als lokale Datei mit Block-Level-Zugang gelesen werden) , Zarr kann sogar das Latenz-Problem verschlimmern, weil mit Zarr, Lesen einer Datei jetzt eine Reihe von mehreren Aufrufen beinhaltet, um verschiedene Teile der Datei zu lesen (mit eigener Lagune) . Das Latenzproblem kann durch Parallelisierung der Anträge gelöst werden, das ist jedoch eine höhere Lösung, die nicht von Zarr abhängig ist.
Und mit Zarr (wie bei relationalen Datenbanken) , wir verlieren die Bequemlichkeit, eine Datendatei zu haben, ist eine einfache, einzelne Datei, die Sie leicht die Integrität zu überprüfen, oder eine Kopie von machen / herunterladen können.
ERDDAP™ (als v2) hat ein System zur Aufrechterhaltung eines lokalen Cache von Dateien aus einer URL-Quelle (z.B. S3) (siehe [<ccheFromUrl> und<CacheMaxGB> (#cachefromurl) ) Und der neue<nThreads>] (#nthreads) sollte das Latenzproblem durch Parallelisierung der Datenabrufung auf hohem Niveau minimieren.<ccheFromUrl> scheint für viele Szenarien sehr gut zu arbeiten. (Wir sind nicht sicher, wie nützlich<nThreads> ist ohne weitere Tests.) Wir geben zu, dass wir keine Timing-Tests an einer AWS-Instanz mit einer guten Netzwerkverbindung gemacht haben, aber wir haben erfolgreich mit verschiedenen Remote-URL-Quellen von Dateien getestet. UndERDDAP'<cacheFromUrl> arbeitet mit jeder Art von Datendatei (z.B.,.nc,.hdf, .csv,.jsonlCSV) , auch wenn extern komprimiert (z.B.,.gz) , ohne Änderungen der Dateien (z.B. sie als Zarr-Sammlungen neu schreiben) .
Es ist wahrscheinlich, dass verschiedene Szenarien verschiedene Lösungen bevorzugen, z.B. nur einen Teil einer Datei einmal lesen müssen (Zarr gewinnt) , vs. müssen alle Datei einmal lesen, vs. müssen Teil oder alle Datei mehrmals lesen (<ccheFromUrl> gewinnt).
Meistens sagen wir: Bevor wir die Mühe machen, alle unsere Daten in Zarr zu speichern, machen wir einige Tests, um zu sehen, ob es tatsächlich eine bessere Lösung ist.
-
- Ja.
Liste der Arten Datensätze
Wenn Sie Hilfe benötigen, um den richtigen Datensatztyp auszuwählen, sieheAuswahl des Datensatztyps.
Die Arten von Datensätzen fallen in zwei Kategorien. (Warum?)
EDDGrid
- EDDGrid datasets verarbeiten netzgebundene Daten.
- InEDDGridDatensätze, Datenvariablen sind mehrdimensionale Datenfelder.
- Für jede Dimension muss eine Achsgröße vorhanden sein. Axis-Variablen MUST werden in der Reihenfolge angegeben, in der die Datenvariablen sie verwenden.
- InEDDGriddatasets, alle Datenvariablen MUST (Anteil) alle Achsgrößen. (Warum? Und wenn sie es nicht tun?)
- Sortierte Maßwerte - In allenEDDGridDatensätze, jede Dimension MUST in sortierter Reihenfolge (aufsteigen oder absteigen) . Jeder kann unregelmäßig beabstandet sein. Es kann keine Krawatten geben. Dies ist eine Forderung derCF metadata standard. Wenn die Werte der Dimension nicht in sortierter Reihenfolge sind, wird der Datensatz nicht geladen undERDDAP™den ersten ungebrochenen Wert in der Protokolldatei identifizieren, BigParentDirectory /logs/log.txt .
Einige Unterklassen haben zusätzliche Einschränkungen (insbesondereEDDGridAggregateExistingDimension erfordert, dass die äußere (links, erste) Dimension aufsteigt.
Unsortierte Dimensionswerte geben fast immer ein Problem mit dem Quelldatensatz an. Dies geschieht am häufigsten, wenn in der Aggregation eine fehlerhafte oder unangemessene Datei enthalten ist, die zu einer ungestörten Zeitdimension führt. Um dieses Problem zu lösen, siehe die Fehlermeldung in derERDDAP™log.txt Datei, um den absteigenden Zeitwert zu finden. Dann schauen Sie in die Quelldateien, um die entsprechende Datei zu finden (oder vor oder nach) Das gehört nicht zur Aggregation.
- Siehe die vollständigere Beschreibung derEDDGridDatenmodell.
- DieEDDGridDatensatztypen sind:
- EDDGridVonAudioFilesaggregiert Daten aus einer Gruppe von lokalen Audiodateien.
- EDDGridVonDapnetzgebundene Daten vonDAPServer.
- EDDGridVonEDDTableSie können einen tabellarischen Datensatz in einen netzgebundenen Datensatz konvertieren.
- EDDGridVon Erddapnetzgebundene Daten von einer FernbedienungERDDAP.
- EDDGridVon Etopobehandelt nur die eingebauten ETOPO-Topographiedaten.
- EDDGridVonFilesist die Superklasse von allenEDDGridVon...Files-Kursen.
- EDDGridVonMergeIRFilesaggregierte Daten aus einer Gruppe von lokalen MergeIR.gzDateien.
- EDDGridVon NcFilesaggregierte Daten aus einer Gruppe von lokalenNetCDF (v3 oder v4) .ncund verwandte Dateien.
- EDDGridVonNcFilesUnpackedeine Variante ist, wennEDDGridFromNcFiles, die auch Daten aus einer Gruppe von lokalenNetCDF (v3 oder v4) .ncund verwandten Dateien, dieERDDAP™entpackt auf einem niedrigen Niveau.
- EDDGridLonPM180die Längenwerte eines Kindes modifiziertEDDGridso dass sie im Bereich -180 bis 180 liegen.
- EDDGridLon0360die Längenwerte eines Kindes modifiziertEDDGridso dass sie im Bereich 0 bis 360 liegen.
- EDDGridSideBysideAggregate zwei oder mehrEDDGridDatensätze nebeneinander.
- EDDGridGesamtexistierteDimensionAggregate zwei oder mehrEDDGridDatensätze, die jeweils einen unterschiedlichen Wertebereich für die erste Dimension aufweisen, jedoch gleiche Werte für die anderen Dimensionen.
- EDDGridKopiekann eine lokale Kopie eines anderen machenEDDGrid's Daten und dient Daten aus der lokalen Kopie.
- AlleEDDGriddatasets unterstützen eine nThreads-Einstellung, dieERDDAP™wie viele Threads zu verwenden, wenn auf eine Anfrage reagiert. SiehenThreadsDokumentation für Details.
EDDTable
- EDDTable datasets verarbeiten tabellarische Daten.
- Tabulardaten können als Datenbank-ähnliche Tabelle mit Zeilen und Spalten dargestellt werden. Jede Spalte (eine Datengröße) hat einen Namen, eine Reihe von Attributen und speichert nur eine Art von Daten. Jede Zeile hat eine Beobachtung (oder Gruppe von verwandten Werten) . Die Datenquelle kann die Daten in einer anderen Datenstruktur, einer komplizierteren Datenstruktur und/oder mehreren Datendateien aufweisen, aberERDDAP™muss in der Lage sein, die Quelldaten in eine Datenbank-ähnliche Tabelle zu platzieren, um die Daten als tabellarischer Datensatz an Nutzer vonERDDAP.
- Siehe die vollständigere Beschreibung derEDDTable Datenmodell.
- Die EDDTable-Datensatztypen sind:
-
EDDTableFromAllDatasetsist ein hochrangiger Datensatz, der Informationen über alle anderen Datensätze in IhremERDDAP.
-
EDDTableFromAsciiFilesaggregiert Daten aus Komma-, Tab-, Semikolon- oder platzgetrennten tabellarischen ASCII-Datendateien.
-
EDDTableFromAsciiServiceist die Superklasse aller EDDTableFromAsciiService... Klassen.
-
EDDTableFromAsciiServiceNOSbehandelt Daten von einigen derNOAANOS Web Services.
-
EDDTableFromAudioFilesaggregiert Daten aus einer Gruppe von lokalen Audiodateien.
-
EDDTableFrom AwsXmlFilesaggregierte Daten von einem Satz von Automatischer Wetterstation (AWS) XML-Dateien.
-
EDDTableFromCassandrabehandelt tabellarische Daten von einer Cassandra Tabelle.
-
EDDTableFromColumnarAsciiFilesaggregiert Daten aus tabellarischen ASCII-Datendateien mit festbreiten Datenspalten.
-
EDDTableFromDapSequenzhandhabt tabellarische Daten vonDAPSequenzserver.
-
EDDTableFromDatabasebehandelt tabellarische Daten aus einer Datenbanktabelle.
-
EDDTableFromEDDGridlässt Sie einen EDDTable-Datensatz aus einemEDDGridDatensatz.
-
EDDTableFromErddapbehandelt tabellarische Daten von einer FernbedienungERDDAP.
-
EDDTableFromFileNameserstellt einen Datensatz aus Informationen über eine Gruppe von Dateien im Dateisystem des Servers, aber es dient nicht Daten aus innerhalb der Dateien.
-
EDDTableFromFilesist die Superklasse aller EDDTableFrom...Files-Klassen.
-
EDDTableFromHtpGetistERDDAPDas einzige System für den Datenimport sowie den Datenexport.
-
EDDTableFromHyraxDateien (DEPRECATE) aggregierte Daten aus Dateien mit mehreren Variablen mit gemeinsamen Dimensionen, die von einemHyrax OPeNDAPServer.
-
EDDTableFromInvalidCRAFilesaggregierte Daten ausNetCDF (v3 oder v4) .ncDateien, die eine bestimmte, ungültige Variante des CF DSG Contiguous Ragged Array verwenden (CRA) Dateien. ObwohlERDDAP™unterstützt diesen Dateityp, es ist ein ungültiger Dateityp, den niemand verwenden sollte. Gruppen, die derzeit diesen Dateityp verwenden, werden stark ermutigt,ERDDAP™um gültige CF DSG CRA-Dateien zu generieren und mit diesen Dateien zu stoppen.
-
EDDTableFromJsonlCSVFisaggregierte Daten ausJSON Zeilen CSV-Dateien.
-
EDDTableFromMultidimNcFilesaggregierte Daten ausNetCDF (v3 oder v4) .ncDateien mit mehreren Variablen mit gemeinsamen Abmessungen.
-
EDDTableFromNcFisaggregierte Daten ausNetCDF (v3 oder v4) .ncDateien mit mehreren Variablen mit gemeinsamen Abmessungen. Es ist gut, diesen Datensatztyp für bestehende Datensätze weiterzuverwenden, aber für neue Datensätze empfehlen wir stattdessen EDDTableFromMultidimNcFiles.
-
EDDTableFromNcCFFilesaggregierte Daten ausNetCDF (v3 oder v4) .ncDateien, die eines der durch dieCF Diskrete Sampling Geometrien (DSG) Konventionen. Aber für Dateien mit einer der multidimensionalen CF DSG-Varianten verwendenEDDTableFromMultidimNcFilesstatt.
-
EDDTableFromNccsvFilesaggregierte Daten ausNCCSVASCII .csv Dateien.
-
EDDTableFromNOS (DEPRECATE) behandelt tabellarische Daten von NOS XML-Servern.
-
EDDTableFromOBISbehandelt tabellarische Daten von OBIS-Servern.
-
EDDTableFromParquetFisDaten vonParkett.
-
EDDTableFromSOShandhabt tabellarische Daten vonSOSServer.
-
EDDTableFromThreddsFiles (DEPRECATE) aggregierte Daten aus Dateien mit mehreren Variablen mit gemeinsamen Dimensionen, die von einemTHREDOPeNDAPServer.
-
EDDTableFromWFSDateien (DEPRECATE) eine lokale Kopie aller Daten aus einerArcGISKartenserverWFSServer so dass die Daten dann schnell reserviert werden können, umERDDAP™Benutzer.
-
EDDTableAggregateRowskann einen EDDTable-Datensatz aus einer Gruppe von EDDTable-Datensätzen machen.
-
EDDTableCopykann eine lokale Kopie von vielen Arten von EDDTable-Datensätzen erstellen und dann die Daten schnell aus der lokalen Kopie speichern.
-
-
- Ja.
Detaillierte Beschreibungen von Datensatztypen
EDDGridVonDap
EDDGridVonDap Griffe Rastervariablen vonDAPServer.
- Wir empfehlen dringend die Verwendung derDatensätze generieren Xml Programmeinen groben Entwurf derdatasets.xmlfür diesen Datensatz. Sie können die Informationen sammeln, die Sie benötigen, um diese zu tweak oder erstellen Sie Ihr eigenes XML für einEDDGridFromDap dataset durch einen Blick auf die DDS- und DAS-Dateien des Quelldatensatzes in Ihrem Browser (durch Hinzufügen von .das und .dds zusourceUrlz.B. https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridFromDap kann Daten von jeder mehrdimensionalen Variablen aus einerDAPDatenserver. (Zuvor,EDDGridVonDap war auf Variablen beschränkt, die als "Grid" bezeichnet werden, aber das ist keine Anforderung mehr.)
- Sortierte Maßwerte - Die Werte für jede Dimension MUST sind in sortierter Reihenfolge (aufsteigen oder absteigen) . Die Werte können unregelmäßig beabstandet sein. Es kann keine Krawatten geben. Dies ist eine Forderung derCF metadata standard. Wenn die Werte der Dimension nicht in sortierter Reihenfolge sind, wird der Datensatz nicht geladen undERDDAP™den ersten ungebrochenen Wert in der Protokolldatei identifizieren, BigParentDirectory /logs/log.txt .
Unsortierte Dimensionswerte geben fast immer ein Problem mit dem Quelldatensatz an. Dies geschieht am häufigsten, wenn in der Aggregation eine fehlerhafte oder unangemessene Datei enthalten ist, die zu einer ungestörten Zeitdimension führt. Um dieses Problem zu lösen, siehe die Fehlermeldung in derERDDAP™log.txt Datei, um den absteigenden Zeitwert zu finden. Dann schauen Sie in die Quelldateien, um die entsprechende Datei zu finden (oder vor oder nach) Das gehört nicht zur Aggregation.
EDDGridVonDap Skelett 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>
EDDGridVonEDDTable
EDDGridVonEDDTable Sie können einen EDDTable tabular dataset in einEDDGridnetzgebundener Datensatz. Denken Sie daran,ERDDAP™behandelt Datensätze als entwedernetzgebundene Datensätze (UnterklassenEDDGrid) oder tabellarische Datensätze (Unterklassen von EDDTable) .
- In der Regel, wenn Sie gegitterte Daten haben, haben Sie einfach eineEDDGridDatensatz direkt. Manchmal ist dies beispielsweise nicht möglich, wenn Sie die in einer relationalen Datenbank gespeicherten Daten haben, dieERDDAP™kann nur über EDDTableFromDatabase zugreifen.EDDGridVonEDDTable Klasse können Sie diese Situation beheben.
- Offensichtlich müssen die Daten im zugrunde liegenden EDDTable-Datensatz sein (grundsätzlich) netzgebundene Daten, aber in tabellarischer Form. Beispielsweise kann der EDDTable-Datensatz CTD-Daten aufweisen: Messungen von Ost- und Nordstrom, in mehreren Tiefen, mehrmals. Da die Tiefen an jedem Zeitpunkt gleich sind,EDDGridFromEDDTable kann einen netzgebundenen Datensatz mit einer Zeit und einer Tiefendimension erstellen, die über den zugrunde liegenden EDDTable-Datensatz auf die Daten zugreift.
- Datensätze generieren Xml -- Wir empfehlen dringend die Verwendung derDatensätze generieren Xml Programmeinen groben Entwurf derdatasets.xmlfür diesen Datensatz. Sie können die Informationen sammeln, die Sie benötigen, um den groben Entwurf zu verbessern.
- Quelle Attributes -- Wie bei allen anderen Arten von Datensätzen,EDDGridFromTable hat die Idee, dass es globale SourceAttribute undweltweitaddAttributes (spezifiziertdatasets.xml) , die zusammengeführt werden, um die globale Attribute, die Nutzer sehen. Für globale SourceAttributes,EDDGridFromEDDTable nutzt die globale Kombination Attribute des zugrunde liegenden EDDTable-Datensatzes. (Wenn Sie eine Minute darüber nachdenken, ergibt es Sinn.)
In ähnlicher Weise für jedeaxisVariableunddataVariable'addAttributes,EDDGridFromEDDTable verwendet die Variables kombiniert Attribute aus dem zugrunde liegenden EDDTable-Datensatz als derEDDGridFromEDDTable Variables sourceAttributes. (Wenn Sie eine Minute darüber nachdenken, ergibt es Sinn.)
Infolgedessen, wenn das EDDTable gute Metadaten hat,EDDGridFromEDDTable braucht oft sehr wenigaddAttributesmetadata -- nur ein paar Tweets hier und da.
-
dataVariables versaxisVariable-- Der zugrunde liegende EDDTable hat nurdataVariableS. EineEDDGridVonEDDTable Datensatz wird einigeaxisVariableS (erstellt von einigen der EDDTabledataVariableS) und einigedataVariableS (erstellt aus dem verbleibenden EDDTabledataVariableS) .GenerateDatasetsXmlwird raten, was EDDTabledataVariables sollteEDDGridVonEDDTableaxisVariables, aber es ist nur eine Vermutung. Sie müssen die Ausgabe von GenerateDatasetsXml ändern, um anzugeben, welchedataVariables will werdenaxisVariables, und in welcher Reihenfolge.
-
-- Es gibt nichts über die zugrunde liegende EDDTable zu sagenEDDGridFromEDDTable die möglichen Werte deraxisVariables in der gerasteten Version des Datensatzes, so dass Sie diese Informationen für jedenaxisVariableüber eines dieser Attribute:
- axiValues -- lässt Sie eine Liste von Werten angeben. Zum Beispiel <att name="axisWerte"Typ="doubleList"\>2, 2,5, 3, 3,5, 4</att> die Verwendung einesDatentypund das Wort List. Auch die Art der Liste (zum Beispiel doppelt) , MUST entspricht den Daten Typ der Variable im EDDTable undEDDGridVonEDDTable Datensätze.
- achsValuesStartStrideStop -- lässt Sie eine Folge von regelmäßigen Abstandswerten angeben, indem Sie die Start-, Stride- und Stoppwerte angeben. Hier ein Beispiel, das der obigen Achse entspricht: <att name="axisValuesStartStrideStop"Typ="doubleList"\>2, 0,5, 4</att> Beachten Sie erneut die Verwendung eines Listendatentyps. Auch die Art der Liste (zum Beispiel doppelt) , MUST entspricht den Daten Typ der Variable im EDDTable undEDDGridVonEDDTable Datensätze.
Updates -- So wie es keinen Weg gibtEDDGridVonEDDTable zur Bestimmung der AchsenWerte aus dem EDDTable gibt es auch keine zuverlässige Möglichkeit fürEDDGridVonEDDTable aus dem EDDTable zu bestimmen, wenn sich die AchsenWerte geändert haben (insbesondere bei neuen Werten für die Zeitvariable) . Derzeit ist die einzige Lösung, das axiValues Attribut indatasets.xmlund den Datensatz neu laden. Zum Beispiel könnten Sie ein Skript schreiben, um
- Suchedatasets.xmlfür datasetID= Die DatensatzID " so arbeiten Sie mit dem richtigen Datensatz.
- Suchedatasets.xmlfür das nächste Auftreten
DerVariablesSourceName
so arbeiten Sie mit der richtigen Variable. - Suchedatasets.xmlfür das nächste Auftreten
<att name="axisValuesStartStrideStop" type="doubleList">
so dass Sie die Startposition des Tags kennen. 4. Suchedatasets.xmlfür das nächste Auftreten
</att>
so kennen Sie die Endposition der Achsenwerte. 5. Ersetzen Sie die alten Start-, Stride-, Stop-Werte mit den neuen Werten. 6. KontaktZurück zur Übersichtfür den Datensatz zu sagenERDDAP™um den Datensatz neu zu laden.
Das ist nicht ideal, aber es funktioniert.
- Präzision -- WannEDDGridFromEDDTable reagiert auf die Anforderung eines Benutzers für Daten, es bewegt eine Reihe von Daten aus der EDDTable Antworttabelle in dieEDDGridAntwortgitter. Dazu muss es herausfinden, ob die "Achse"-Werte auf einer bestimmten Zeile in der Tabelle eine Kombination von Achswerten im Raster übereinstimmen. Für ganzzahlige Datentypen ist es leicht festzustellen, ob zwei Werte gleich sind. Aber für Schwimmer und Doppel bringt dies das schreckliche Problem der schwimmenden Punktzahlen aufnicht genau übereinstimmen. (beispielsweise 0,2 versus 0,199999999999999996) . Zu (versuchen,) damit umgehen,EDDGridFromTable lässt Sie ein Präzisionsattribut für jedes deraxisVariables, die die Gesamtzahl der Dezimalstellen angibt, die identisch sein muss.
- Zum Beispiel<beit name="precision" type="int">5</att>
- Für verschiedene Arten von Datenvariablen gibt es unterschiedliche Standardgenauigkeitswerte. Die Standardeinstellungen sind in der Regel angemessen. Wenn sie nicht sind, müssen Sie verschiedene Werte angeben.
- FüraxisVariables, dieZeit oder Zeit Stamp Variablen, der Standard ist volle Präzision (eine genaue Übereinstimmung) .
- FüraxisVariables, die Floaten sind, die Standardgenauigkeit ist 5.
- FüraxisVariables, die doppelt sind, die Standardgenauigkeit ist 9.
- FüraxisVariables mit ganzzahligen Datentypen,EDDGridFromEDDTable ignoriert das Präzisionsattribut und verwendet immer volle Präzision (eine genaue Übereinstimmung) .
- WARNING! Bei der Umwandlung eines Bruchs von tabellarischen Daten in einen Bruch von netzgebundenen Daten, wennEDDGridFromEDDTable kann nicht mit einem EDDTable "axis" Wert zu einem der erwartetenEDDGridVonEDDTable Achswerte,EDDGridFromEDDTable leise (kein Fehler) wirft die Daten von dieser Zeile der Tabelle weg. Es können beispielsweise andere Daten vorliegen (nicht auf dem Gitter) im EDDTable-Datensatz. (Und wenn Stride > 1, es ist nicht offensichtlich,EDDGridVonTabelle, welche Achswerte Sollwerte sind, und welche derjenige ist, der wegen des Verlaufs übersprungen werden soll.) Wenn also die Genauigkeitswerte zu hoch sind, sieht der Benutzer bei der Datenantwort fehlende Werte, wenn tatsächlich gültige Datenwerte vorliegen.
Umgekehrt, wenn die Präzisionswerte zu niedrig gesetzt werden, EDDTable "Achse" Werte, die nicht übereinstimmen solltenEDDGridVonEDDTable Achswerte werden (fälschlich) Match.
Diese potentiellen Probleme sind schrecklich, weil der Benutzer die falschen Daten erhält (oder fehlende Werte) wenn sie die richtigen Daten erhalten sollten (oder zumindest eine Fehlermeldung) . Das ist kein Fehler.EDDGridVonTabelle.EDDGridFromTable kann dieses Problem nicht lösen. Das Problem ist die Umwandlung von tabellarischen Daten in netzgebundene Daten. (wenn nicht andere Annahmen gemacht werden können, aber sie können hier nicht gemacht werden) . Es liegt an dir, dieERDDAP™Administrator, an Testen Sie IhreEDDGridAusgewählt um sicherzustellen, dass die Genauigkeitswerte eingestellt werden, um diese potenziellen Probleme zu vermeiden.
LückeThreshold
- LückeThreshold-- Dies ist eine sehr ungewöhnliche Art von Datensatz. Da die Arten von Abfragen, die gemacht werden können (von) eineEDDGridDatensatz (mit den Bereichen und Striden deraxisVariableS) sind sehr verschieden von den Arten von Abfragen, die gemacht werden können (von) ein EDDTable Datensatz (nur mit den Bereichen einiger Variablen verbunden) , die LeistungEDDGridVonEDDTable-Datensätzen werden je nach exakter Anforderung und der Geschwindigkeit des zugrunde liegenden EDDTable-Datensatzes stark variieren. Für Anträge mit einem Stridewert > 1.EDDGridFromEDDTable kann das zugrunde liegende EDDTable für einen relativ großen Datenbruch fragen (als ob Stride=1) und dann durch die Ergebnisse, halten die Daten aus einigen Zeilen und wegwerfen die Daten von anderen. Wenn es eine Menge Daten durchsieben muss, um die benötigten Daten zu erhalten, wird die Anfrage länger dauern, um zu füllen.
wennEDDGridFromEDDTable kann sagen, dass es große Lücken werden (mit Zeilen von unerwünschten Daten) zwischen den Zeilen mit gewünschten Daten,EDDGridFromEDDTable kann wählen, um mehrere Subrequests zum zugrunde liegenden EDDTable anstelle einer großen Anfrage zu machen, wodurch die unerwünschten Datenzeilen in den großen Lücken überspringen. Die Sensitivität für diese Entscheidung wird durch den in der<LückeThreshold> tag (default=1000 Zeilen Quelldaten) . Einstellen von LückeThreshold zu einer kleineren Zahl führt zu dem Datensatz (allgemein) mehr Unterforderungen. Einstellen von LückeThreshold zu einer größeren Zahl führt zu dem Datensatz (allgemein) weniger Unterforderungen.
Wenn LückeThreshold zu klein gesetzt ist,EDDGridFromEDDTable wird langsamer arbeiten, weil die Überleitung von mehreren Anfragen größer als die Zeit, die gespeichert wird, indem Sie einige überschüssige Daten erhalten. Wenn LückeThreshold zu groß ist,EDDGridFromEDDTable wird langsamer arbeiten, weil so viel überschüssige Daten aus dem EDDTable abgerufen werden, nur um verworfen zu werden. (Wie Goldilocks entdeckte, ist die Mitte "nur richtig".) Der Overhead für verschiedene Arten von EDDTable-Datensätzen variiert stark, so dass die einzige Möglichkeit, die eigentliche beste Einstellung für Ihren Datensatz zu kennen, über Experimente besteht. Aber Sie gehen nicht zu weit falsch an der Standardeinstellung festhalten.
Ein einfaches Beispiel ist: Imagine anEDDGridFromTable mit nur einemaxisVariable (Zeit mit einer Größe von 100000) , einsdataVariable (Temperatur) , und die StandardlückeThreshold von 1000.
- Wenn ein Benutzer Temperatur anfordert\[0💯5000\], der Streifen ist 100, so dass die Spaltgröße 99 ist, die kleiner ist als die LückeThreshold. So.EDDGridFromTable stellt nur eine Anfrage an EDDTable für alle Daten, die für die Anfrage benötigt werden (äquivalent zur Temperatur\[0:5000\]) und alle Datenreihen wegwerfen, die es nicht braucht.
- Wenn ein Benutzer Temperatur anfordert\[0:2500:5000\], dass Streifen ist 2500, so dass die Spaltgröße 2499, die größer als die LückeThreshold ist. So.EDDGridFromTable stellt separate Anfragen an EDDTable, die der Temperatur entsprechen\[0)\]Temperatur\[2500\]Temperatur\[5000\].
Die Berechnung der Spaltgröße ist komplizierter, wenn mehrere Achsen vorhanden sind.
Für jede Benutzeranforderung,EDDGridFromEDDTable druckt Diagnose-Nachrichten dazu in derPressemitteilungDatei.
- wenn<logLevel> (#loglevel) indatasets.xmlwird auf info gesetzt, dies druckt eine Nachricht wie \* nOuterAxes=1 von 4 nOuterRequests=22 Wenn nOuterAxes=0, LückeThreshold wurde nicht überschritten und nur eine Anfrage an EDDTable gestellt. Wenn nOuterAxes>0, LückeThreshold wurde überschritten und nOuterRequests auf EDDTable gestellt werden, entsprechend jeder gewünschten Kombination der linkssten nOuterAxes. Hat der Datensatz beispielsweise 4axisVariables unddataVariableWie östlich\[Zeit\]\[Breite\]\[Länge\]\[Tiefe\], links (erste) Achsgröße ist Zeit.
- wenn<logLevel> indatasets.xmlwird auf alle gesetzt, weitere Informationen werden in der log.txt-Datei geschrieben.
EDDGridVonEDDTable Skelett 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*FromERDDAP
EDDGridVon Erddap netzgebundene Daten von einer FernbedienungERDDAP™Server. EDDTableFromErddap behandelt tabellarische Daten von einer FernbedienungERDDAP™Server.
- EDDGridFromErddap und EDDTableFromErddap verhalten sich anders als alle anderen Arten von Datensätzen inERDDAP.
- Wie andere Arten von Datensätzen erhalten diese Datensätze Informationen über den Datensatz aus der Quelle und halten es im Speicher.
- Wie andere Arten von Datensätzen, wennERDDAP™sucht nach Datensätzen, zeigt das Datenzugriffsformular an ( datasetID .html) , oder zeigt das Formular Make A Graph ( datasetID .graph) ,ERDDAP™verwendet die Information über den Datensatz, der im Speicher ist.
- EDDGridVonErddap und EDDTable FromErddap ist die Basis fürNetz/Kunden/FöderationenvonERDDAPs, die die CPU-Nutzung effizient verteilen (meist für Kartenherstellung) , Speichernutzung, Datenspeicherung und Bandbreitennutzung eines großen Rechenzentrums.
Redirect
- Im Gegensatz zu anderen Arten von Datensätzen, wennERDDAP™von diesen Datensätzen eine Anforderung an Daten oder Bilder erhält,ERDDAP Umleitungendie Anfrage an die FernbedienungERDDAP™Server. Das Ergebnis ist:
- Dies ist sehr effizient (CPU, Speicher und Bandbreite) , weil sonst
- Der VerbundERDDAP™muss die Anfrage an den anderen sendenERDDAP™ (die Zeit braucht) .
- Der andereERDDAP™die Daten zu erhalten, zu reformieren und die Daten an den Verbund zu übermittelnERDDAP.
- Der VerbundERDDAP™muss die Daten empfangen (mit Bandbreite) , reformieren (mit CPU und Speicher) , und die Daten an den Benutzer übertragen (mit Bandbreite) . Durch Umleitung des Antrags und Genehmigung des anderenERDDAP™die Antwort direkt an den Benutzer zu senden, den VerbundERDDAP™verbringt im Wesentlichen keine CPU-Zeit, Speicher oder Bandbreite auf der Anfrage.
- Die Umleitung ist für den Benutzer unabhängig von der Client-Software transparent (ein Browser oder ein anderes Software- oder Befehlszeilentool) .
- Dies ist sehr effizient (CPU, Speicher und Bandbreite) , weil sonst
- Sie können es sagenERDDAP™keine Benutzerwünsche durch Einstellung umleiten<Umleitung>false</redirect>, aber diese negiert die meisten der Vorteile des ...FromErddap dataset Typs (insbesondere die Belastung des vorderen EndesERDDAP™in der Ferne/BackdERDDAP) .
Abonnements
Normalerweise, wenn einEDDGridVonErddap und EDDTable Von Erddap sind (Wiederholen) beladen auf IhreERDDAP, sie versuchen, ein Abonnement zum Remote-Datensatz über die Fernbedienung hinzuzufügenERDDAP's E-Mail/URL Abonnement System. Auf diese Weise, wenn sich der Remote-Datensatz ändert, die FernbedienungERDDAP™KontaktePressemitteilungen Seite nicht gefundenauf deinerERDDAP™so dass der lokale Datensatz ASAP neu geladen wird und der lokale Datensatz immer perfekt aktuell ist und den Remote-Datensatz mimiert. So, das erste Mal, dass dies passiert, sollten Sie eine E-Mail anfordern, dass Sie das Abonnement validieren. jedoch, wenn die lokaleERDDAP™kann keine E-Mail senden oder wenn die FernbedienungERDDAP's E-Mail/URL-Abonnement-System ist nicht aktiv, Sie sollten die Fernbedienung e-MailERDDAP™verwalter und anfordern, dass s/he manuell hinzufügen [<onChange> (#onchange) ...</onChange>-Tags zu allen relevanten Datensätzen, um Ihren Datensatz zu nennenPressemitteilungen Flaggen-URL. Sehen Sie?ERDDAP™täglicher Bericht für eine Liste von setDataset Fahnen-URLs, aber senden Sie einfach die fürEDDGridFromErddap und EDDTableFromErddap-Datensätze zur FernbedienungERDDAP™Administrator.
Funktioniert das nicht? Sind Ihre lokalen Datensätze nicht mit den entfernten Datensätzen synchron? Mehrere Dinge müssen für dieses System korrekt funktionieren, damit Ihre Datensätze aktuell bleiben. Überprüfen Sie jedes dieser Dinge in Ordnung:
- IhrERDDAP™muss in der Lage sein, E-Mails auszusenden. Sehen Sie die E-Mail-Einstellungen in Ihrem setup.xml.
- Allgemein (aber nicht immer) , duERDDAP'<baseUrl> und<baseHttpsUrl>must keine Portnummer haben (:8080, :8443) . Wenn sie es tun, benutzen Sie eineProxypassden Hafen vom Url zu entfernen.
- In Ihrem Setup.xml,<abonnierenToRemoteErdddapDataset> muss auf true gesetzt werden.
- Wenn Ihr lokaler EDD... FromErddap-Datensatz wird neu geladen, es sollte eine Anfrage an die Fernbedienung sendenERDDAP™den Remote-Datensatz abonnieren. Sieh log.txt an, um zu sehen, ob das passiert.
- Sie sollten eine E-Mail, die Sie bitten, die Abonnement-Anfrage zu validieren.
- Sie müssen auf den Link in dieser E-Mail klicken, um die Abonnement-Anfrage zu validieren.
- Die FernbedienungERDDAP™sollte sagen, dass die Validierung erfolgreich war. Zu jeder Zeit können Sie eine E-Mail von der Fernbedienung anfordernERDDAP™mit einer Liste Ihrer ausstehenden und gültigen Abonnements. Siehe das Formular RemoteErddapBase Url /erddap/subscriptions/list.html .
- Wenn sich der Remote-Datensatz ändert (z.B. erhält zusätzliche Daten) , die FernbedienungERDDAP™sollte versuchen, das FlagURL auf IhremERDDAP. Sie können das nicht überprüfen, aber Sie können den Administrator der Fernbedienung fragenERDDAP™um das zu überprüfen.
- IhrERDDAP™eine Aufforderung zur Festlegung dieses FlagURL erhalten. Schauen Sie in Ihrem log.txt für "setDatasetFlag.txt?" Anfrage (S) und sehen, ob eine Fehlermeldung mit den Anfragen verknüpft ist.
- IhrERDDAP™sollte dann versuchen, diesen Datensatz neu zu laden (vielleicht nicht sofort, aber ASAP) .
Aktuelles max (Zeit) ?
EDDGrid/TableFromErddap-Datensätze ändern nur ihre gespeicherten Informationen über jeden Quelldatensatz, wenn der Quelldatensatz"Reload"und einige Metadatenänderungen (z.B. die Zeitvariableactual\_range) , wodurch eine Abonnement-Benachrichtigung erzeugt wird. Hat der Quelldatensatz Daten, die sich häufig ändern (zum Beispiel neue Daten jede Sekunde) und nutzt die"update"System, um häufige Änderungen der zugrunde liegenden Daten zu bemerken,EDDGrid/TableFromErddap wird nicht über diese häufigen Änderungen informiert, bis der nächste Datensatz "Reload", also dieEDDGrid/TableFromErddap wird nicht perfekt auf dem neuesten Stand sein. Sie können dieses Problem durch Änderung des Quelldatensatzes minimieren<reloadEveryNMinutes> auf einen kleineren Wert (60? 15?) so dass es mehr Abonnement-Benachrichtigungen, um dieEDDGrid/TableFromErddap, um seine Informationen über den Quelldatensatz zu aktualisieren.
Oder wenn Ihr Datenmanagementsystem weiß, wann der Quelldatensatz neue Daten hat (z.B. über ein Skript, das eine Datendatei kopiert) , und wenn das nicht super häufig ist (z.B. alle 5 Minuten oder weniger häufig) Es gibt eine bessere Lösung:
- Nicht verwenden<updateEveryNMillis>, um den Quelldatensatz aktuell zu halten.
- Den Quelldatensatz festlegen<reloadEveryNMinutes> auf eine größere Anzahl (1440?) .
- Lassen Sie das Skript den Quelldatensatz kontaktierenZurück zur Übersichtrechts nachdem es eine neue Datendatei kopiert.
Dies führt dazu, dass der Quelldatensatz perfekt aktuell ist und dazu führt, dass er eine Abonnement-Benachrichtigung generiert, die an dieEDDGrid/TableFromErddap Datensatz. Das führtEDDGrid/TableFromErddap-Datensatz ist perfekt auf dem neuesten Stand (gut, innerhalb von 5 Sekunden neue Daten hinzugefügt) . Und alles, was effizient getan wird (ohne unnötige Datensatz-Reloads) .
NeinaddAttributes,axisVariable, oderdataVariable
Im Gegensatz zu anderen Arten von Datensätzen, EDDTableFromErddap undEDDGridFromErddap-Datensätze erlauben keine globale<addAttributes>,<axisVariable> oder<dataVariable> Abschnitte imdatasets.xmlfür diesen Datensatz. Das Problem besteht darin, dass es zu Unstimmigkeiten führen würde:
- Sagen wir, es war erlaubt und Sie haben ein neues globales Attribut hinzugefügt.
- Wenn ein Benutzer fragtERDDAP™für die globalen Attribute erscheint das neue Attribut.
- Aber wenn ein Benutzer fragtERDDAP™für eine Datendatei,ERDDAP™leitet die Anfrage an die Quelle umERDDAP. DasERDDAP™ist sich des neuen Attributs nicht bewusst. Wenn es also eine Datendatei mit Metadaten erstellt, z.B. a.ncDatei, die Metadaten haben nicht das neue Attribut.
Es gibt zwei Work-arounds:
- Überzeugen Sie den Admin der QuelleERDDAP™die Änderungen vorzunehmen, die Sie den Metadaten wünschen.
- Statt EDDTableFromErddap verwendenEDDTableFromDapSequenz. Oder stattEDDGridAusErdddap, verwendenEDDGridVonDap. Diese EDD-Typen ermöglichen es Ihnen, effizient mit einem Datensatz auf einem Remote zu verbindenERDDAP™ (aber ohne Umleitung von Datenanfragen) und sie ermöglichen es Ihnen, die globale<addAttributes>,<axisVariable> oder<dataVariable> Abschnitte imdatasets.xml. Ein anderer Unterschied: Sie müssen manuell den Remote-Datensatz abonnieren, so dass der Datensatz auf IhremERDDAP™wird notifiziert (über dieZurück zur Übersicht) wenn Änderungen am Remote-Datensatz vorhanden sind. So erstellen Sie einen neuen Datensatz, anstatt mit einem Remote-Datensatz zu verknüpfen.
Anmerkungen
- Aus SicherheitsgründenEDDGridVonErddap und EDDTable FromErdddap unterstützt nicht die [<zugänglichzu> (#accessibleto) tag und kann nicht mit Remote-Datensätzen verwendet werden, die einloggen müssen (weil sie verwenden [<zugänglichzu> (#accessibleto) ) Vgl.ERDDAP'Sicherheitssystemzur Einschränkung des Zugriffs auf einige Datensätze auf einige Benutzer.
- Beginnen mitERDDAP™v2.10,EDDGridFromErddap und EDDTableFromErdap unterstützen die [<zugänglichViaFiles>] (#accessibleviafiles) tag. Im Gegensatz zu anderen Arten von Datensätzen ist der Standard zwar zutreffend, aber die Dateien des Datensatzes werden nur dann zugänglich sein, wenn der Quelldatensatz auch<zugänglichViaFiles> auf true gesetzt.
- Sie können dieDatensätze generieren Xml Programmum diedatasets.xmlchunk für diese Art von Datensatz. Aber Sie können diese Arten von Datensätzen leicht von Hand.
EDDGridVonErddap Skelett XML
- EDDGridVonErddap Skelett XML-Datensatz ist sehr einfach, da die Absicht nur ist, den Remote-Datensatz zu mimieren, der bereits für den Einsatz inERDDAP:
<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 Skelett XML
- Das skeleton XML für einen EDDTableFromErdap-Datensatz ist sehr einfach, da die Absicht nur den entfernten Datensatz mimieren soll, der bereits für den Einsatz inERDDAP:
<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>
EDDGridVon Etopo
EDDGridVon Etopo dient nurETOPO1 Global 1-Minute Gridded Eleved Datensatz (Eisoberfläche, Gitter registriert, binär, 2byte int: etopo1\_ice\_g\_i2.zip) die mitERDDAP.
- Nur zweidatasetIDs werden unterstütztEDDGridFromEtopo, so dass Sie auf die Daten mit Längenwerten -180 bis 180 oder Längenwerte 0 bis 360 zugreifen können.
- Es gibt niemals Sub-Tags, da die Daten bereits innerhalb beschrieben werdenERDDAP.
- Also die beiden Optionen fürEDDGridFromEtopo-Datensätze sind (wörtlich) :
<!-- 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" />
EDDGridVonFiles
EDDGridVonFiles ist die Superklasse von allenEDDGridVon...Files-Kursen. Sie können nicht verwendenEDDGridVonFiles direkt. Verwenden Sie stattdessen eine Unterklasse vonEDDGridVonFiles zum Umgang mit dem spezifischen Dateityp:
- EDDGridVonMergeIRFilesDaten von netzgebundenenMergeIR.gzDateien.
- EDDGridVonAudioFilesaggregiert Daten aus einer Gruppe von lokalen Audiodateien.
- EDDGridVon NcFilesDaten von netzgebundenenGRIB .grbDateien,HDF (v4 oder v5) .hdfDateien,.ncmlDateien undNetCDF (v3 oder v4) .ncDateien. Dies kann mit anderen Dateitypen funktionieren (zum Beispiel BUFR) , wir haben es einfach nicht getestet -- bitte senden Sie uns einige Musterdateien, wenn Sie interessiert sind.
- EDDGridVonNcFilesUnpackedeine Variante vonEDDGridFromNcFiles, die Daten von netzgebundenenNetCDF (v3 oder v4) .ncund verwandten Dateien, dieERDDAP™entpackt auf einem niedrigen Niveau.
Derzeit werden keine anderen Dateitypen unterstützt. Aber es ist in der Regel relativ einfach, Unterstützung für andere Dateitypen hinzuzufügen. Kontaktieren Sie uns, wenn Sie eine Anfrage haben. Oder, wenn Ihre Daten in einem alten Dateiformat sind, von dem Sie wegziehen möchten, empfehlen wir, die Dateien zu konvertierenNetCDFV3.ncDateien.NetCDFist ein breit unterstütztes, binäres Format, ermöglicht schnellen Zugriff auf die Daten und wird bereits vonERDDAP.
Von Dateien Details
Die folgenden Informationen gelten für alle Unterklassen vonEDDGridVonFiles.
Aggregation einer vorhandenen Dimension
Alle VariationenEDDGridFromFiles kann Daten aus lokalen Dateien zusammenfassen, wobei jede Datei 1 (oder mehr) unterschiedliche Werte für links (erste) Dimension, in der Regel\[Zeit\], die aggregiert werden. Beispielsweise könnten die Abmessungen\[Zeit\]\[Höhe\]\[Breite\]\[Länge\], und die Dateien können die Daten für eine (oder ein paar) Zeitwert (S) pro Datei. Der resultierende Datensatz erscheint, als ob alle Daten der Datei zusammengefasst wurden. Die großen Vorteile der Aggregation sind:
- Die Größe des aggregierten Datensatzes kann viel größer sein als eine einzelne Datei kann bequem sein (~2GB) .
- Für Nah-Real-Time-Daten ist es einfach, eine neue Datei mit dem neuesten Datenklumpen hinzuzufügen. Sie müssen den gesamten Datensatz nicht neu schreiben.
Die Aggregationsanforderungen sind:
- Die lokalen Dateien müssen nicht die gleichen habendataVariableS (wie im Datensatz definiertdatasets.xml) . Der Datensatz wirddataVariables definiert indatasets.xml. Wenn eine bestimmte Datei keine gegebene Datei hatdataVariable,ERDDAP™wird bei Bedarf fehlende Werte hinzufügen.
- AlledataVariableUMWELTaxisVariables/Dimensionen (wie im Datensatz definiertdatasets.xml) . Die Dateien werden basierend auf dem ersten aggregiert (links-most) Dimension, in aufsteigender Reihenfolge sortiert.
- Jede Datei MAY hat Daten für einen oder mehrere Werte der ersten Dimension, aber es kann keine Überschneidung zwischen Dateien sein. Wenn eine Datei mehr als einen Wert für die erste Dimension hat, werden die Werte MUST in aufsteigender Reihenfolge sortiert, ohne Krawatten.
- Alle Dateien haben genau die gleichen Werte für alle anderen Dimensionen. Die Genauigkeit der Prüfung wird durchMatchAxisNDigits.
- Alle Dateien haben genau das gleicheEinheitenMetadaten für alleaxisVariables unddataVariableS. Wenn dies ein Problem ist, können SieNcMLoderNCOum das Problem zu beheben.
Aggregation über Dateinamen oder globale Metadaten
Alle VariationenEDDGridFromFiles kann auch eine Gruppe von Dateien aggregieren, indem ein neues linkmost (erste) Dimension, in der Regel Zeit, basierend auf einem Wert, der von jedem Dateinamen oder vom Wert eines globalen Attributs abgeleitet wird, das in jeder Datei ist. Beispielsweise kann der Dateiname den Zeitwert für die Daten in der Datei enthalten.ERDDAP™würde dann eine neue Zeitdimension schaffen.
Im Gegensatz zu der ähnlichen Funktion in THREDDS,ERDDAP™immer schafftaxisVariablemit Zahlenwerten (nach Bedarf durch CF) , nie String Werte (die von CF nicht zugelassen werden) . Auch,ERDDAP™wird die Dateien in der Aggregation basierend auf der numerischenaxisVariableWert, der jeder Datei zugeordnet ist, so dass die Achsgröße immer sortierte Werte nach CF haben wird. Der THREDDS-Ansatz, basierend auf den Dateinamen eine lexicographische Sortierung durchzuführen, führt zu Aggregationen, bei denen die Achsenwerte nicht sortiert werden (die von CF nicht zugelassen werden) wenn die Dateinamen anders sortieren als die abgeleitetenaxisVariableWerte.
Um eine dieser Aggregate einzurichtenERDDAP™, Sie definieren ein neues linkmost (erste) axisVariablemit einem speziellen Pseudo<sourceName>, dieERDDAP™wo und wie man den Wert für die neue Dimension aus jeder Datei findet.
- Das Format für das PseudosourceNameder den Wert eines Dateinamens erhält (nur Dateiname.ext) ist \\( DateiName, Daten Typ , ExtraktRegex , FanggruppeAnzahl*
- Das Format für das PseudosourceNamedie den Wert von dem absoluten Pfadnamen einer Datei erhält \\( PfadName, Daten Typ , ExtraktRegex , FanggruppeAnzahl* \[Dazu verwendet der Pfadname immer'/'als Verzeichniszeichen, nie ''.\]
- Das Format für das PseudosourceNamedie den Wert eines globalen Attributs erhält \\( global: Eigenschaften Name , Daten Typ , ExtraktRegex , FanggruppeAnzahl*
- Dieses PseudosourceNameDie Option funktioniert anders als die anderen: anstatt ein neues linkmost zu erstellen (erste) axisVariable, dies ersetzt den Wert des StromsaxisVariablemit einem Wert aus dem Dateinamen (nur Dateiname.ext) . Das Format ist \\( ersetzen FromFileName, Daten Typ , ExtraktRegex , FanggruppeAnzahl*
Die Beschreibungen der zu liefernden Teile sind:
- Eigenschaften Name -- der Name des globalen Attributs, das in jeder Datei ist und den Dimensionswert enthält.
- Daten Typ -- Dies gibt den Datentyp an, mit dem die Werte gespeichert werden. Siehe die StandardlisteDaten ArtendassERDDAP™unterstützt, außer dass String hier nicht erlaubt ist, da Achsengrößen inERDDAP™kann nicht String-Variablen sein.
Es gibt einen zusätzlichen PseudodatenTyp, timeFormat= Zeichen Zeitformat , was sagtERDDAP™dass der Wert ein String timeStamp istEinheiten geeignet für Stringzeiten. In den meisten Fällen wird das stringTimeFormat, das Sie benötigen, eine Variation eines dieser Formate sein:
- yyyy-MM-dd'T'HH:mm:ss.SSSZ -- die ISO 8601:2004 (E) Datum Zeitformat. Sie können eine verkürzte Version davon benötigen, z.B.yyyy-MM-dd'T'HH:mm:ss oderyyyy-MM-dd.
- yyyyMMddHHmmss.SSS -- die kompakte Version des ISO 8601 Datumsformats. Sie können eine verkürzte Version dieser benötigen, z.B. yyyyMMdHHmmss oder yyyyMMddd.
- M/d/yyyy H:mm:ss.SSS -- das ist das US-Slash-Datumsformat. Sie können eine verkürzte Version dieser, z.B. M/d/yyyy benötigen.
- yyyyDDDHHmmsSSS -- das ist das Jahr plus der null-gepolsterte Tag des Jahres (z.B. 001 = Jan 1, 365 = Dec 31 in einem Nicht-Leap-Jahr; dies wird manchmal irrtümlich als das Julianische Datum bezeichnet) . Sie können eine verkürzte Version dieser benötigen, z.B. yyyyDDD .
Wenn Sie diesen Pseudodatentyp verwenden, fügen Sie diese der neuen Variablen hinzu<addAttributes>
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Wenn Sie alle Zeitwerte verschieben möchten, verschieben Sie den Zeitwert in Einheiten, z. 1970-01T12:00Z.
- ExtraktRegex -- Das ist dieregelmäßiger Ausdruck (Tutorial) die eine Fanggruppe umfasst (in Klammern) die beschreibt, wie der Wert aus dem Dateinamen oder dem globalen Attributwert extrahiert wird. Zum Beispiel bei einem Dateinamen wie S19980011998031.L3b\_MO\_CHL.nc, Fanggruppe #1, "\dTutorial", im regulären Ausdruck S ((\dTutorial) (\dTutorial\.L3b.\* erfasst die ersten 7 Ziffern nach 'S': 1998001.
- FanggruppeNumber -- Dies ist die Anzahl der Fanggruppe (innerhalb eines Klammerpaares) im regelmäßigen Ausdruck, der die Informationen von Interesse enthält. Es ist in der Regel 1, die erste Fanggruppe. Manchmal müssen Sie Capture-Gruppen für andere Zwecke im Regex verwenden, so dass dann die wichtige Capture-Gruppe Nummer 2 (die zweite Fanggruppe) oder 3 (die dritte) , usw.
Ein vollständiges Beispiel einesaxisVariabledie einen aggregierten Datensatz mit einer neuen Zeitachse macht, die die Zeitwerte aus dem Dateinamen jeder Datei erhält
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
</axisVariable>
Wenn Sie die Pseudodaten "timeFormat=" verwenden Art,ERDDAP™2 Attribute zu demaxisVariableso dass sie von der Quelle kommen scheinen:
<att name="standard\\_name">time</att>
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Also in diesem Fall,ERDDAP™eine neue Achse namens"time"mit Doppelwerten (Sekunden seit 1970-0100:00Z) durch Extrahieren der 7 Ziffern nach 'S' und vor ".L3m" im Dateinamen und Dolmetschen der als yyyyDDD formatierten Zeitwerte.
Sie können die Standard-Basiszeit überschreiben (1970-01T00:00 UhrZ) durch Hinzufügen einesAddAttributedie ein anderes Einheitenattribut mit einer anderen Basiszeit angibt. Eine häufige Situation ist: Es gibt Gruppen von Datendateien, jede mit einem 1 Tag zusammengesetzt eines Satellitendatensatzes, wo Sie wollen, dass der Zeitwert Mittag des im Dateinamen genannten Tages sein (die zentrierte Zeit jedes Tages) und wollen die Variablelong\_name"Mitte Zeit" zu sein. Ein Beispiel dafür ist:
<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>
Anmerkung Stunden=12 in der Basiszeit, die 12 Stunden relativ zur ursprünglichen Basiszeit von 1970-01-01T00:00Z addiert.
Ein vollständiges Beispiel einesaxisVariabledie einen aggregierten Datensatz mit einer neuen "run" Achse macht (mit Int-Werten) die die Run-Werte aus dem "runID" globalen Attribut in jeder Datei erhält (mit Werten wie "r17\_global", wobei 17 die Laufnummer ist) ist
<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>
Beachten Sie die Verwendung der Erfassungsgruppe Nummer 2 zur Erfassung der nach 'r' oder 's' auftretenden Stellen und vor "\_global". Dieses Beispiel zeigt auch, wie man zusätzliche Attribute hinzufügt (z.B.,ioos\_categoryund Einheiten) zur Achsgröße.
Extern komprimierte Dateien
-
Datensätze, die Teilmengen vonEDDGridVonFiles und EDDTable FromFiles kann Daten direkt von extern komprimierten Datendateien, einschließlich.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2, und .Z Dateien.
-
Das funktioniert überraschend gut!
In den meisten Fällen ist die Verlangsamung im Zusammenhang mit der Dekomprimierung kleiner und mittlerer Dateien gering. Wenn Sie Speicherplatz benötigen, empfehlen wir die Verwendung dieser Funktion, insbesondere für ältere Dateien, die selten aufgerufen werden. -
Sparen Sie Geld!
Dies ist eine der wenigen Features inERDDAP™das bietet Ihnen eine Chance, viel Geld zu sparen (obwohl zu den Kosten der leicht verringerten Leistung) . Ist das Kompressionsverhältnis z.B. 6:1 (manchmal wird es viel höher) , dann werden die Datendateien des Datensatzes nur 1/6 des Speicherplatzes benötigen. Dann können Sie vielleicht mit 1 RAID (einer bestimmten Größe) anstatt 6 RAIDS (der gleichen Größe) . Das ist eine enorme Kostenersparnis. Hoffentlich die Fähigkeit, einige Dateien in einer Sammlung zu komprimieren (die älteren?) und nicht komprimieren andere (die neueren?) , und um das jederzeit zu ändern, lassen Sie uns den Nachteil minimieren, einige der Dateien zu komprimieren (langsamer Zugang) . Und wenn die Wahl zwischen dem Speichern der Dateien auf Band (und nur auf Anfrage nach einer Verzögerung zugänglich) vs speichern sie komprimiert auf einem RAID (und viaERDDAP) , dann gibt es einen großen Vorteil mit Kompression, so dass Benutzer interaktiv und (relativ) schnellen Zugriff auf die Daten. Und wenn dies Sie vor dem Kauf einer zusätzlichen RAID speichern kann, kann diese Funktion Sie ungefähr $30.000 speichern. -
Für alleEDDGridFromFiles Subclasses, wenn die Datendateien eine Erweiterung haben, die angibt, dass sie extern komprimierte Dateien sind (aktuell:.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2oder .Z) ,ERDDAP™dekomprimiert die Dateien in das Cache-Verzeichnis des Datensatzes, wenn es sie liest (wenn sie nicht schon im Cache sind) . Das gleiche gilt für binäre Datei (z.B.,.nc) Unterklassen von EDDTableFromFiles.
-
Für EDDTableFromFiles Unterklassen für nicht-binäre Dateien (z.B., .csv) , Datendateien mit einer Erweiterung, die angeben, dass sie extern komprimierte Dateien sind, werden beim Lesen der Datei auf-the-fly komprimiert.
-
ANFORDERUNG: Wenn die Art der extern komprimierten Datei verwendet wird (z.B.,.tgzoder.zip) unterstützt mehr als 1 Datei innerhalb der komprimierten Datei, die komprimierte Datei muss nur 1 Datei enthalten.
-
ANFORDERUNG: Diese Funktion geht davon aus, dass sich der Inhalt der extern komprimierten Dateien nicht ändert, so dass eine cached dekomprimierte Datei wieder verwendet werden kann. Wenn einige oder alle Datendateien eines Datensatzes manchmal geändert werden, komprimieren Sie diese Dateien nicht. Dies entspricht der gemeinsamen Nutzung, da Menschen normalerweise keine Dateien komprimieren, die sie manchmal ändern müssen.
-
<DateiNameRegex> Um diese Arbeit zu machen, ist der Datensatz<fileNameRegex> muss den Namen der komprimierten Dateien entsprechen. Natürlich, regexes wie .\wird alle Dateinamen entsprechen. Wenn Sie einen bestimmten Dateityp angeben, z.B., .\\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.nc, dann müssen Sie den Regex ändern, um die Kompressionserweiterung zu enthalten, z.B., .\ \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.nc\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.gz(wenn alle Dateien werden Was?.nc.gzDateien) .
-
Es ist gut, wenn Ihr Datensatz eine Mischung aus komprimierten und nicht komprimierten Dateien enthält. Dies kann nützlich sein, wenn Sie glauben, dass einige Dateien (z.B. ältere Dateien) wird weniger oft verwendet werden und daher wäre es nützlich, Speicherplatz durch Zusammendrücken zu speichern. Um diese Arbeit zu machen, die<fileNameRegex> muss den komprimierten und nicht komprimierten Dateien Namen entsprechen, z.B. .\oder\\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.nc (|\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.gz) (wo die Fanggruppe am Ende davon angibt, dass.gzist optional.
-
Es ist in Ordnung, wenn Sie bestimmte Dateien in der Sammlung jederzeit komprimieren oder dekomprimieren. Wenn der Datensatz nicht verwendet wird [<UpdateEveryNMillis>] (#updateeverynmillis) , den Datensatz einstellenFlaggezu sagenERDDAP™um den Datensatz neu zu laden und so die Änderungen zu bemerken. Interessanterweise können Sie verschiedene Kompressionsalgorithmen und Einstellungen für verschiedene Dateien im gleichen Datensatz verwenden (z.B.,.bz2für selten verwendete Dateien,.gzfür nicht häufig verwendete Dateien und keine Komprimierung für häufig verwendete Dateien) , stellen Sie einfach sicher, dass der regex alle in Gebrauch befindlichen Dateierweiterungen unterstützt, z.B. .\*\.nc (|\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.gz|\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \\\\\\\\\\\\\\\\\\\\\\.bz2) .
-
Selbstverständlich variieren Kompressionsverhältnisse und Geschwindigkeiten für die verschiedenen Kompressionsalgorithmen mit der Quelldatei und den Einstellungen (z.B. Druckniveau) . Wenn Sie dieses System für Ihre Dateien optimieren möchten, machen Sie einen Test der verschiedenen Kompressionsmethoden mit Ihren Dateien und mit einer Reihe von Kompressionseinstellungen. Wenn Sie sicher gut wollen (nicht unbedingt das Beste) Setup, wir werden leicht empfehlengzip (.gz) .gzipmacht die kleinste komprimierte Datei nicht (es ist ziemlich nah) , aber es komprimiert die Datei sehr schnell und (wichtiger fürERDDAP™Benutzer) dekomprimiert die Datei sehr schnell. Plus,gzipSoftware kommt standardmäßig mit jeder Linux- und Mac OS-Installation und ist für Windows über kostenlose Tools wie 7Zip und Linux Add-ons wie Git Bash verfügbar. Zum Beispiel, um eine Quelldatei in die.gzVersion der Datei (gleichen Dateinamen, aber mit.gzanhängig) , Verwendung (in Linux, Mac OS und Git Bash)
gzip sourceName
Um eine.gzzurück zum Original, verwenden Pistolenverschluss sourceName.gz
Um jede der Quelldateien im Verzeichnis und seinen Unterverzeichnissen zu komprimieren, verwenden Sie gzip-r RegieName
Um jeden der.gzDateien im Verzeichnis und dessen Unterverzeichnisse, wiederkehrend, verwenden Reißverschlüsse RegieName
-
WARNING: Nicht extern komprimieren (gzip) Dateien, die bereits intern komprimiert sind! Viele Dateien haben bereits komprimierte Daten intern. Wenn Siegzipdiese Dateien, die resultierenden Dateien werden nicht viel kleiner sein (<5 % undERDDAP™wird Zeit verlieren, sie zu dekomprimieren, wenn es sie lesen muss. Zum Beispiel:
-
Datendateien: z..nc4 und.hdf5 Dateien: Einige Dateien verwenden interne Kompression; einige nicht. Wie zu sagen: komprimierte Variablen haben "\_ChunkSize" Attribute. Auch, wenn eine Gruppe von Gittern.ncoder.hdfDateien sind alle unterschiedlichen Größen, sie sind wahrscheinlich intern komprimiert. Sind sie alle gleich groß, werden sie nicht intern komprimiert.
-
Bilddateien: z.B. .gif, .jpg und .png
-
Audiodateien: z.B. .mp3, und .ogg.
-
Videodateien: z.B. .mp4, .ogv und .webm.
-
Ein unglücklicher seltsamer Fall: .wav Audiodateien sind riesig und nicht intern komprimiert. Es wäre schön zu komprimieren (gzip) Sie, aber in der Regel sollten Sie nicht, weil, wenn Sie tun, Benutzer nicht in der Lage, die komprimierten Dateien in ihrem Browser zu spielen.
-
Testfall: Komprimierung (mitgzip) ein Datensatz mit 1523 gerastet.ncDateien.
- Die Daten in den Quelldateien waren spärlich (viele fehlende Werte) .
- Der gesamte Speicherplatz ging von 57 GB vor der Kompression auf 7 GB nach.
- Eine Anfrage für viele Daten ab einem Zeitpunkt ist<1 s vor und nach der Kompression.
- Eine Anfrage an 1 Datenpunkt für 365 Zeitpunkte (die schlimmste Situation) von 4 s auf 71 s.
Für mich ist das ein vernünftiger Kompromiss für jeden Datensatz, und sicherlich für Datensätze, die selten verwendet werden.
-
Interne gegen externe Kompression -- Im Vergleich zur internen Dateikompression, die von.nc4 und.hdf5 Dateien,ERDDAP's Ansatz für extern komprimierte binäre Dateien hat Vorteile und Nachteile. Der Nachteil ist: Zum einen ist die interne Komprimierung eines kleinen Teils einer Datei besser, weilEDDGridFromFiles muss nur ein paar Stück dekomprimieren (S) der Datei, nicht die gesamte Datei. Aber...ERDDAP's Ansatz hat einige Vorteile:
- ERDDAP™unterstützt die Komprimierung aller Arten von Dateien (binär und nichtbinär, z..nc3 und csv) nicht nur.nc4 und.hdf4.
- Wenn der Großteil einer Datei mehr als einmal in kurzer Zeit gelesen werden muss, spart es Zeit, die Datei einmal zu dekomprimieren und mehrmals zu lesen. Das passiert.ERDDAP™wenn ein Benutzer Make-A-Graph für den Datensatz verwendet und eine Reihe von kleinen Änderungen im Diagramm macht.
- Die Fähigkeit, komprimierte Dateien und nicht komprimierte Dateien in derselben Sammlung zu haben, ermöglicht Ihnen mehr Kontrolle darüber, welche Dateien komprimiert werden und welche nicht. Und diese zusätzliche Kontrolle kommt ohne wirklich die Quelldatei ändern (da Sie eine Datei mit z.B. komprimieren können,.gzund dann dekomprimieren es, um die ursprüngliche Datei zu erhalten) .
- Die Fähigkeit, jederzeit zu ändern, ob eine bestimmte Datei komprimiert wird und wie sie komprimiert wird (verschiedene Algorithmen und Einstellungen) gibt Ihnen mehr Kontrolle über die Leistung des Systems. Und Sie können leicht die ursprüngliche unkomprimierte Datei jederzeit wiederherzustellen.
Während weder Ansatz ein Gewinner in allen Situationen ist, ist klar, dassERDDAPDie Fähigkeit, Daten von extern komprimierten Dateien zu bedienen, macht die externe Komprimierung zu einer vernünftigen Alternative zur internen Komprimierung, die von.nc4 und.hdf5. Das ist wichtig, da die interne Komprimierung einer der Hauptgründe ist, aus denen die Menschen wählen, zu verwenden.nc4 und.hdf5.
Dekomprimiert Cache
ERDDAP™macht eine dekomprimierte Version jeder komprimierten binären (z.B.,.nc) Datendatei, wenn sie die Datei lesen muss. Die dekomprimierten Dateien werden innerhalb des Verzeichnisses des Datensatzes gespeichert BigParentDirectory /dekomprimiert/ . Dekomprimierte Dateien, die vor kurzem nicht verwendet wurden, werden gelöscht, um Platz zu freizuschalten, wenn die kumulative Dateigröße >10GB ist. Sie können das durch Einstellung ändern<dekomprimiertCacheMaxGB> (Standardeinstellungen) in Datensätzen Xml.xml, z.
<decompressedCacheMaxGB>40</decompressedCacheMaxGB>
Auch dekomprimierte Dateien, die in den letzten 15 Minuten nicht verwendet wurden, werden zu Beginn jedes großen Datensatz-Reloads gelöscht. Sie können das durch Einstellung ändern<dekomprimiertCacheMaxMinutesAlt> (Standardeinstellungen) in Datensätzen Xml.xml, z.
<decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>
Größere Zahlen sind nett, aber die kumulative Größe der dekomprimierten Dateien kann verursachen BigParentDirectory aus dem Festplattenraum zu laufen, was schwere Probleme verursacht.
- Weil eine Datei dekomprimiert kann eine erhebliche Zeit dauern (0,1 bis 10 Sekunden) , Datensätze mit komprimierten Dateien können von der Einstellung des Datensatzes profitieren [<nThreads>] (#nthreads) Einstellung zu einer höheren Zahl (2? 3? 4?) . Die Nachteile zu noch höheren Zahlen (z.B. 5? 6? 7?) schwächende Renditen sind und dass die Anfrage eines Benutzers dann einen hohen Prozentsatz der Ressourcen des Systems verwenden kann, wodurch die Bearbeitung der Anfragen anderer Benutzer erheblich verlangsamt wird. So gibt es keine ideale nThreads Einstellung, nur verschiedene Konsequenzen in verschiedenen Situationen mit unterschiedlichen Einstellungen.
Sortierte Maßwerte
Die Werte für jede Dimension MUST sind in sortierter Reihenfolge (aufsteigend oder absteigend, mit Ausnahme der ersten (links-most) Dimension, die aufsteigen muss) . Die Werte können unregelmäßig beabstandet sein. Es gibt keine Krawatten. Dies ist eine Forderung derCF metadata standard. Wenn die Werte der Dimension nicht in sortierter Reihenfolge sind, wird der Datensatz nicht geladen undERDDAP™den ersten ungebrochenen Wert in der Protokolldatei identifizieren, BigParentDirectory /logs/log.txt .
Unsortierte Dimensionswerte geben fast immer ein Problem mit dem Quelldatensatz an. Dies geschieht am häufigsten, wenn in der Aggregation eine fehlerhafte oder unangemessene Datei enthalten ist, die zu einer ungestörten Zeitdimension führt. Um dieses Problem zu lösen, siehe die Fehlermeldung in derERDDAP™log.txt Datei, um den absteigenden Zeitwert zu finden. Dann schauen Sie in die Quelldateien, um die entsprechende Datei zu finden (oder vor oder nach) Das gehört nicht zur Aggregation.
Verzeichnisse
Die Dateien MAY sind in einem Verzeichnis oder in einem Verzeichnis und seinen Unterverzeichnissen (rekursiv) . Wenn es eine große Anzahl von Dateien (zum Beispiel > 1.000) , das Betriebssystem (und damitEDDGridVonFiles) wird viel effizienter arbeiten, wenn Sie die Dateien in einer Reihe von Unterverzeichnissen speichern (eins pro Jahr, oder eins pro Monat für Datensätze mit sehr häufigen Dateien) , so dass es nie eine große Anzahl von Dateien in einem bestimmten Verzeichnis.
<ccheFromUrl>
AlleEDDGridFromFiles und alle EDDTableFromFiles-Datensätze unterstützen eine Reihe von Tags, die sagenERDDAP™eine Kopie aller Dateien eines entfernten Datensatzes herunterladen und aufrecht erhalten, oder einen Cache von wenigen Dateien (nach Bedarf heruntergeladen) . Das kann unglaublich nützlich sein. SieheCache VonUrl Dokumentation.
Remote Directories und HTTP Range Requests
(AKA Byte Servieren, Byte Range Anfragen, Akzept-RangeshttpKopf)
EDDGridVonNcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles und EDDTableFromNcCFFiles, kann manchmal Daten von.ncDateien auf Remoteservern und über HTTP aufgerufen, wenn der Server unterstütztByte Servierenüber HTTP-Bereichsanfragen (der HTTP-Mechanismus für Byte-Dienst) . Dies ist möglich, weil netcdf-java (dieERDDAP™Anwendungen zum Lesen.ncDateien) unterstützt Lesedaten von Remote.ncDateien über HTTP-Bereichsanfragen.
Tu das nicht! Es ist schrecklich ineffizient und langsam. Verwenden Sie stattdessen die [<cacheFromUrl> System) (#cachefromurl) .
ZugangERDDAP™datasets als Dateien über Byte range Requests -- Wenn du das hier umdrehst, (in der Theorie) einen Datensatz inERDDAP™als Riese.ncDatei per Appending ".nc" zur Basis OPenDAPURL für einen bestimmten Datensatz (z.B., https://myserver.org/erddap/griddap/datasetID.nc und auch durch Hinzufügen einer ?query danach eine Untermenge angeben) , es ist vielleicht vernünftig zu fragen, ob Sie netcdf-java verwenden können,Ferret, oder andereNetCDFClient-Software zum Lesen von Daten über HTTP Range Anfragen vonERDDAP. Die Antwort ist nein, denn es gibt nicht wirklich eine riesige ".nc" Datei. Wenn Sie dies tun möchten, tun Sie stattdessen eine dieser Optionen:
- Verwendung(OPeN)DAPClient-Software zur Verbindung mit den vonERDDAP. Das ist, wasDAP (und damitERDDAP) wurde entworfen. Es ist sehr effizient.
- Oder die Quelldatei herunterladen (S) von"files"System (oder eine Subsetdatei über eine.nc? Anfrage) auf Ihren Computer und verwenden netcdf-java,Ferret, oder andereNetCDFClient-Software zum Lesen der (Jetzt) lokale Datei (S) .
Gespeicherte Dateiinformationen
WennEDDGridFromFiles-Datensatz wird zuerst geladen,EDDGridFromFiles liest Informationen aus allen relevanten Dateien und erstellt Tabellen (eine Zeile für jede Datei) mit Informationen über jede gültige Datei und jedes "bad" (anders oder ungültig) Datei.
- Die Tabellen werden auch auf der Festplatte gespeichert, wieNetCDFV3.ncDateien in BigParentDirectory /Datensatz/ Letzte2CharsOfDatasetID / datasetID / in Dateien benannt: schmutzig.nc (die eine Liste der eindeutigen Verzeichnisnamen enthält) , Datei Tabelle.nc (die die Tabelle mit den Informationen jeder gültigen Datei hält) , BadFiles.nc (die die Tabelle mit den Informationen jeder schlechten Datei hält) .
- Um den Zugang zu einem zu beschleunigenEDDGridVonFiles-Datensatz (aber auf Kosten der Verwendung von mehr Speicher) , Sie können verwenden
true
zu sagenERDDAP™eine Kopie der Dateiinformationstabellen im Speicher zu halten.
- Die Kopie der Datei-Informationstabellen auf der Festplatte ist auch nützlich, wennERDDAP™wird geschlossen und neu gestartet: es spartEDDGridVonFiles, alle Datendateien neu zu lesen.
- Wenn ein Datensatz neu geladen wird,ERDDAP™muss nur die Daten in neuen Dateien und Dateien lesen, die sich geändert haben.
- Wenn eine Datei eine andere Struktur als die anderen Dateien hat (beispielsweise einen anderen Datentyp für eine der Variablen oder einen anderen Wert für die "Einheiten" Attribut) ,ERDDAPfügt die Datei in die Liste der "schlechten" Dateien. Informationen Ã1⁄4ber das Problem mit der Datei werden in der BigParentDirectory /logs/log.txt Datei.
- Sie sollten nie mit diesen Dateien löschen oder arbeiten müssen. Eine Ausnahme ist: wenn Sie noch Änderungen an einem Datensatz vornehmendatasets.xmlsetup, Sie können diese Dateien löschen möchten, um zu zwingenERDDAP™alle Dateien neu zu lesen, da die Dateien anders gelesen/interpretiert werden. Wenn Sie jemals diese Dateien löschen müssen, können Sie es tun, wennERDDAP™läuft. (Dann setzen Sie einFlaggeum den Datensatz ASAP neu zu laden.) AllerdingsERDDAP™in der Regel bemerkt, dassdatasets.xmlInformationen passen nicht zur Datei Tabelleninformationen und löschen die Dateitabellen automatisch.
- Wenn Sie fördern möchtenERDDAP™zur Aktualisierung der gespeicherten Datensatzinformationen (zum Beispiel, wenn Sie gerade hinzugefügt, entfernt oder geändert einige Dateien in das Datenverzeichnis des Datensatzes) , benutzen Sie dieFlaggensystemin KraftERDDAP™um die Cache-Dateiinformationen zu aktualisieren.
Bearbeitungsanforderungen
Wenn die Datenanforderung eines Clients bearbeitet wird,EDDGridFromFiles kann schnell in der Tabelle mit den gültigen Dateiinformationen sehen, welche Dateien die angeforderten Daten haben.
Aktualisierung der Cached File Information
Wenn der Datensatz neu geladen wird, wird die geätzte Dateiinformation aktualisiert.
- Der Datensatz wird, wie durch die<reloadEveryNMinutes> in den Informationen des Datensatzes indatasets.xml.
- Der Datensatz wird so schnell wie möglich nachgeladen, wennERDDAP™erkennt, dass Sie hinzugefügt, entfernt,anfassend (um die letzte Datei zu ändern Geänderte Zeit) , oder eine Datendatei geändert.
- Der Datensatz wird so schnell wie möglich nachgeladen, wenn Sie denFlaggensystem.
Wenn der Datensatz neu geladen wird,ERDDAP™vergleicht die aktuell verfügbaren Dateien mit den Cache-Datei-Informationstabellen. Neue Dateien werden gelesen und der gültigen Dateitabelle hinzugefügt. Dateien, die nicht mehr vorhanden sind, werden von der gültigen Dateitabelle fallen gelassen. Dateien, in denen sich der Dateizeitstempel geändert hat, werden gelesen und ihre Informationen werden aktualisiert. Die neuen Tabellen ersetzen die alten Tabellen im Speicher und auf der Festplatte.
Schlechte Dateien
Die Tabelle der schlechten Dateien und die Gründe, die die Dateien für schlecht erklärt wurden (beschädigte Datei, fehlende Variablen, etc.) wird an die E-Mail geschickt Alles Zur E-Mail-Adresse (wahrscheinlich du) jedes Mal, wenn der Datensatz neu geladen wird. Sie sollten diese Dateien so schnell wie möglich ersetzen oder reparieren.
Fehlende Variablen
Wenn einige der Dateien nicht einige derdataVariables definiert im Datensatzdatasets.xmlchunk, das ist okay. WannEDDGridFromFiles liest eine dieser Dateien, es wird als ob die Datei die Variable, aber mit allen fehlenden Werten.
FTP-Fehler/Advice
Wenn Sie FTP neue Datendateien an dieERDDAP™Server währendERDDAP™es läuft, es besteht die Chance,ERDDAP™wird den Datensatz während des FTP-Prozesses neu geladen. Es passiert öfter, als Sie denken könnten! Wenn es passiert, erscheint die Datei gültig (es hat einen gültigen Namen) , aber die Datei ist noch nicht gültig. wennERDDAP™versucht, Daten aus dieser ungültigen Datei zu lesen, der resultierende Fehler wird dazu führen, dass die Datei in der Tabelle der ungültigen Dateien hinzugefügt wird. Das ist nicht gut. Um dieses Problem zu vermeiden, verwenden Sie einen temporären Dateinamen, wenn FTP die Datei, zum Beispiel ABC2005.nc\_TEMP . Dann der DateiNameRegex-Test (siehe unten) wird angeben, dass dies keine relevante Datei ist. Nachdem der FTP-Prozess abgeschlossen ist, umbenennen Sie die Datei in den richtigen Namen. Der Umbenennvorgang bewirkt, dass die Datei in einem Augenblick relevant wird.
"0 Dateien" Fehlermeldung
Wenn SieGenerateDatasetsXmloderDasDds, oder wenn Sie versuchen, eineEDDGridVon...Files dataset inERDDAP™, und Sie erhalten eine "0 Dateien" Fehlermeldung, dassERDDAP™gefunden 0 passende Dateien im Verzeichnis (wenn Sie denken, dass es passende Dateien in diesem Verzeichnis) :
- Überprüfen Sie, ob die Dateien wirklich in diesem Verzeichnis sind.
- Überprüfen Sie die Rechtschreibung des Verzeichnisnamens.
- Überprüfen Sie die DateiNameRegex. Es ist wirklich, wirklich einfach, Fehler mit Regexes zu machen. Für Testzwecke, versuchen Sie die regex .\*, die alle Dateinamen entsprechen sollte. (Sieheregex dokumentationundNach oben.)
- Überprüfen Sie, ob der Benutzer, der das Programm läuft (z.B., user=tomcat (?) für Tomcat/ERDDAP) hat 'lesen' Erlaubnis für diese Dateien.
- In einigen Betriebssystemen (zum Beispiel SELinux) und je nach Systemeinstellungen, muss der Benutzer, der das Programm ausgeführt hat, 'lesen' Berechtigung für die gesamte Kette von Verzeichnissen, die zu dem Verzeichnis führen, das die Dateien hat.