Travailler avec lesdatasets.xmlFichier
\[Cette page Web ne sera intéressante que pourERDDAP™administrateurs.\]
Après avoir suiviERDDAP™ instructions d'installation, vous devez modifier ledatasets.xmlfichier dans Tomcat /content/erddap/ pour décrire les ensembles de donnéesERDDAP™l'installation servira.
Vous pouvez voir un exempledatasets.xmlsur GitHub.
-
- Oui.
Présentation
Quelques montages nécessaires
Configuration d'un ensemble de données dansERDDAP™Il ne s'agit pas seulement de pointer vers le répertoire ou l'URL de l'ensemble de données. Vous devez écrire un morceau de XML pourdatasets.xmlqui décrit l'ensemble de données.
- Pour les ensembles de données maillés, afin de rendre l'ensemble de données conformeERDDAPLa structure des données pour les données maillées, vous devez identifier un sous-ensemble des variables de l'ensemble de données qui partagent les mêmes dimensions. (Pourquoi ? Comment ça ?)
- Les métadonnées actuelles de l'ensemble de données sont importées automatiquement. Mais si vous voulez modifier ces métadonnées ou ajouter d'autres métadonnées, vous devez les spécifier dansdatasets.xml. EtERDDAP™a besoin d'autres métadonnées, notammentattributs globaux (tels queinfoUrl, institution,sourceUrl, résumé et titre) etattributs variables (tels quelong\_nameet unités) . Tout comme les métadonnées qui sont actuellement dans l'ensemble de données ajoutent des informations descriptives à l'ensemble de données, les métadonnées demandées parERDDAP™ajoute des informations descriptives à l'ensemble de données. Les métadonnées supplémentaires sont un bon ajout à votre ensemble de données et aidentERDDAP™faire un meilleur travail de présentation de vos données aux utilisateurs qui ne sont pas familiers avec elle.
- ERDDAP™a besoin de vous pour faire des choses spéciales avec lelongitude, latitude, altitude (ou profondeur) , et variables temporelles.
Si vous achetez dans ces idées et dépensez l'effort pour créer le XML pourdatasets.xml, vous obtenez tous les avantages deERDDAP™, y compris:
- Recherche en texte complet pour les ensembles de données
- Rechercher les ensembles de données par catégorie
- Formulaires d'accès aux données ( datasetID .html) afin que vous puissiez demander un sous-ensemble de données dans beaucoup de formats de fichiers différents
- Formulaires pour demander des graphiques et des cartes ( datasetID Graphique)
- Service de cartes Web (WMS) pour les ensembles de données maillés
- RESTfulaccès à vos données
Faire ledatasets.xmldemande des efforts considérables pour les premiers ensembles de données, mais ça devient plus facile . Après le premier jeu de données, vous pouvez souvent réutiliser beaucoup de votre travail pour le prochain jeu de données. Heureusement,ERDDAP™vient avec deuxOutilspour vous aider à créer le XML pour chaque ensemble de donnéesdatasets.xml. Si vous êtes coincé, voyez notresection sur l'obtention d'un soutien supplémentaire.
Fournisseur de données Formulaire
Quand un fournisseur de données vient à vous en espérant ajouter quelques données à votreERDDAP, il peut être difficile et long de collecter toutes les métadonnées (informations sur l'ensemble de données) nécessaire pour ajouter l'ensemble de donnéesERDDAP. Nombreuses sources de données (par exemple, fichiers .csv, Fichiers Excel, bases de données) n'ont pas de métadonnées internes, doncERDDAP™a un formulaire de fournisseur de données qui recueille les métadonnées du fournisseur de données et donne au fournisseur de données d'autres orientations, y compris des directives détaillées pourDonnées dans les bases de données. Les informations soumises sont converties endatasets.xmlformat puis envoyé par courriel auERDDAP™administrateur (vous) et écrit (Annexe) à BigParent Directory /logs/dataProviderForm.log . Ainsi, le formulaire semi-automatise le processus d'obtention d'un ensemble de donnéesERDDAPMais lesERDDAP™administrateur doit encore compléter ledatasets.xmlmorceaux et traiter avec obtenir le fichier de données (s) le fournisseur ou la connexion à la base de données.
La soumission de fichiers de données réels provenant de sources externes est un risque énorme pour la sécurité, doncERDDAP™ne s'occupe pas de ça. Vous devez trouver une solution qui fonctionne pour vous et le fournisseur de données, par exemple, email (pour les petits fichiers) , tirer du nuage (par exemple, DropBox ou Google Drive) , un site sftp (avec mots de passe) ou sneaker Montant net (un lecteur USB ou un disque dur externe) . Vous ne devriez probablement accepter que des fichiers de gens que vous connaissez. Vous devrez analyser les fichiers pour détecter les virus et prendre d'autres précautions de sécurité.
Il n'y a pas de lien.ERDDAP™au formulaire du fournisseur de données (par exemple, surERDDAP™page d'accueil) . Au lieu de cela, quand quelqu'un vous dit qu'ils veulent que leurs données soient servies par votreERDDAP, vous pouvez leur envoyer un email disant quelque chose comme: Oui, nous pouvons mettre vos données dansERDDAP. Pour commencer, veuillez remplir le formulaire à https://yourUrl/erddap/dataProviderForm.html (ouhttp://sihttps://n'est pas activé) . Une fois que vous aurez fini, je vous contacterai pour établir les derniers détails. Si vous voulez juste regarder le formulaire (sans le remplir) , vous pouvez voir le formulaire surERD'sERDDAP:Présentation,Première partie,Deuxième partie,Troisième partieetQuatrième partie. Ces liensERD ERDDAP™envoyer des informations à moi, pas vous, donc ne pas soumettre des informations avec eux à moins que vous voulez réellement ajouter des données à laERD ERDDAP.
Si vous voulez supprimer le formulaire de fournisseur de données de votreERDDAP™, mettre
<dataProviderFormActive>false</dataProviderFormActive>
dans votre fichier setup.xml.
L'impulsion pour cela a étéNOAA2014Accès du public aux résultats de la recherche (PARR) directive, qui exige que tousNOAAles données environnementales financées au moyen de l'argent des contribuables doivent être mises à disposition au moyen d'un service de données; (pas seulement des fichiers) dans les 12 mois suivant la création. Il y a donc un intérêt accru à utiliserERDDAP™de rendre les ensembles de données disponibles par un service dès que possible. Nous avions besoin d'un moyen plus efficace de traiter avec un grand nombre de fournisseurs de données.
Commentaires/suggestions? Ce formulaire est nouveau.erd dot data at noaa dot govsi vous avez des commentaires ou des suggestions pour améliorer cela.
Outils
ERDDAP™est livré avec deux programmes en ligne de commande qui sont des outils pour vous aider à créer le XML pour chaque jeu de données que vous voulezERDDAP™pour servir. Une fois que vous avez installéERDDAP™et lance-le (au moins une fois) , vous pouvez trouver et utiliser ces programmes dans le Tomcat répertoire /webapps/erddap/WEB-INF. Il y a des scripts shell Linux/Unix (avec l'extension .sh) et scripts Windows (avec l'extension .bat) pour chaque programme.\[Sur Linux, exécutez ces outils comme le même utilisateur (Tomcat ?) qui va diriger Tomcat.\]Lorsque vous exécutez chaque programme, il vous posera des questions. Pour chaque question, tapez une réponse, puis appuyez sur Entrée. Ou appuyez sur ^C pour quitter un programme à tout moment.
Le programme ne fonctionnera pas ?
- Si vous obtenez un programme inconnu (ou similaires) message d'erreur, le problème est probablement que le système d'exploitation ne pouvait pas trouverJava. Vous devez trouver oùJavaest sur votre ordinateur, puis éditer la référence java dans le fichier .bat ou .sh que vous essayez d'utiliser.
- Si vous obtenez un fichier jar non trouvé ou la classe pas trouvé message d'erreur, alorsJavaImpossible de trouver l'une des classes listées dans le fichier .bat ou .sh que vous essayez d'utiliser. La solution est de déterminer où se trouve ce fichier .jar et de modifier la référence java dans le fichier .bat ou .sh.
- Si vous utilisez une version deJavaqui est trop vieux pour un programme, le programme ne sera pas exécuté et vous verrez un message d'erreur comme
Exception dans le fil "main" java.lang.Non supportéClassVersionErreur:
un certain/classe/nom : Version non supportée major.minor certains nombres
La solution est de mettre à jour la version la plus récente deJavaet assurez-vous que le fichier .sh ou .bat pour le programme l'utilise.
Les outils impriment divers messages de diagnostic:
- Le mot «ERROR» est utilisé lorsque quelque chose s'est tellement mal passé que la procédure n'a pas été menée à bien. Bien qu'il soit ennuyeux d'obtenir une erreur, l'erreur vous force à traiter le problème.
- Le mot « WARNING » est utilisé lorsque quelque chose a mal tourné, mais la procédure a pu être terminée. C'est assez rare.
- Tout le reste n'est qu'un message informatif. Vous pouvez ajouter \-verbose auGénérer des ensembles de donnéesXmlouDasDdsligne de commande pour obtenir des messages informatifs supplémentaires, ce qui aide parfois à résoudre les problèmes.
Les deux outils sont une grande aide, mais vous devez toujours lire attentivement toutes ces instructions sur cette page et prendre des décisions importantes vous-même.
Générer des ensembles de donnéesXml
- Générer des ensembles de donnéesXml est un programme en ligne de commande qui peut générer une ébauche approximative de l'ensemble de données XML pour presque tout type d'ensemble de données.
Nous vous recommandons vivement d'utiliser GenerateDatasets Xml au lieu de créer des morceaux dedatasets.xmlà la main parce que:
- Générer des ensembles de données Xml fonctionne en quelques secondes. Faire ça à la main est au moins une heure de travail, même quand vous savez ce que vous faites.
- Générer des ensembles de données Xml fait un meilleur travail. Pour ce faire, il faut avoir une connaissance approfondie de la façon dontERDDAP™fonctionne. Il est peu probable que vous fassiez un meilleur travail à la main. (Bob Simons utilise toujours GenerateDatasets Xml pour la première ébauche, et il a écritERDDAP.)
- Générer des ensembles de données Xml génère toujours un morceau valide dedatasets.xml. Tout morceau dedatasets.xmlque vous écrivez aura probablement au moins quelques erreurs qui empêchentERDDAP™du chargement de l'ensemble de données. Il faut souvent des heures pour diagnostiquer ces problèmes. Ne perdez pas votre temps. Laisser naître Données Xml fait le dur labeur. Ensuite, vous pouvez affiner le .xml à la main si vous voulez.
Lorsque vous utilisez les ensembles de donnéesGénérer Programme Xml :
- Sur Windows, la première fois que vous exécutez GenerateDatasetsXml, vous devez modifier le fichier GenerateDatasetsXml.bat avec un éditeur de texte pour changer le chemin vers le java. exe fichier pour que Windows puisse trouverJava.
- Générer des ensembles de données Xml vous demande d'abord de spécifier le type EDD (Ensemble de données Erd Dap Type) des données. VoirListe des types de données (dans le présent document) pour déterminer le type approprié pour l'ensemble de données sur lequel vous travaillez. En plus des types EDD réguliers, il ya aussi quelquesTypes de données spéciales/de Pseudo (Par exemple, celui qui rampe un catalogue THREDS pour générer un morceau dedatasets.xmlpour chacun des ensembles de données du catalogue) .
- Générer des ensembles de données Xml vous pose ensuite une série de questions spécifiques à ce type EDD. Les questions recueillent les informations nécessaires pourERDDAP™pour accéder à la source de l'ensemble de données. Pour comprendreERDDAP™est demandé, voir la documentation pour le type EDD que vous avez spécifié en cliquant sur le même type de données dans leListe des types de données.
Si vous avez besoin d'entrer une chaîne avec des caractères spéciaux (Par exemple, caractères d'espace blanc au début ou à la fin, caractères non ASCII) , entrez uneChaîne de style JSON (avec des caractères spéciaux échappés avec des caractères \) . Par exemple, pour entrer juste un caractère d'onglet, saisissez "\t" (avec les guillemets doubles qui entourent, qui indiquentERDDAP™que c'est une corde de style JSON.
- Souvent, une de vos réponses ne sera pas ce dont GenerateDatasetsXml a besoin. Vous pouvez alors essayer à nouveau, avec des réponses révisées aux questions, jusqu'à ce que GenerateDatasets Xml peut trouver et comprendre avec succès les données sources.
- Si vous répondez correctement aux questions (ou suffisamment correctement) , Générer des ensembles de données Xml se connecte à la source de l'ensemble de données et recueille des informations de base (Par exemple, noms variables et métadonnées) . Pour les ensembles de données qui proviennentNetCDF .ncet fichiers connexes, Générer des ensembles de données Xml va souvent imprimer la structure ncdump-like du fichier après qu'il ait d'abord lu le fichier. Cela peut vous donner des informations pour mieux répondre aux questions sur une boucle ultérieure via GenerateDatasetsXml.
- Générer des ensembles de données Xml générera ensuite une ébauche de l'ensemble de données XML pour cet ensemble de données.
- Les informations diagnostiques et l'ébauche approximative de l'ensemble de données XML seront écrites à BigParent Directory /logs/GenerateDatasetsXml.log .
- L'ébauche approximative de l'ensemble de données XML sera écrite à BigParent Directory /logs/GenerateDatasetsXml.out .
"0 fichiers" Message d'erreur
Si vous exécutez GenerateDatasets Xml ouDasDds, ou si vous essayez de charger unEDDGridDe...Files ou EDDTableDe... FichiersERDDAP™, et vous obtenez un message d'erreur "0 fichiers" indiquant queERDDAP™trouvé 0 fichiers correspondants dans le répertoire (lorsque vous pensez qu'il y a des fichiers correspondants dans ce répertoire) :
-
Vérifiez que vous avez spécifié le nom complet du répertoire. Et si vous avez spécifié le nom du fichier, assurez-vous de spécifier le nom complet du fichier, y compris le nom complet du répertoire.
-
Vérifiez que les fichiers sont vraiment dans ce répertoire.
-
Vérifiez l'orthographe du nom du répertoire.
-
Vérifiez le fichierNameRegex. C'est vraiment, vraiment facile de faire des erreurs avec les régexes. Pour le test, essayez le regex .\* qui doit correspondre à tous les noms de fichiers. (Voir cecidocumentation régexettutoriel regex.)
-
Vérifiez que l'utilisateur qui exécute le programme (Par exemple, user=tomcat (?) pour Tomcat/ERDDAP) a la permission de lire ces fichiers.
-
Dans certains systèmes d'exploitation (par exemple, SELinux) et selon les paramètres du système, l'utilisateur qui a exécuté le programme doit avoir la permission de lire pour toute la chaîne de répertoires menant au répertoire qui possède les fichiers.
-
Si vous avez des problèmes que vous ne pouvez pas résoudre,demande de soutienavec autant d'informations que possible. De même, s'il semble que le type EDD approprié pour un ensemble de données donné ne fonctionne pas avec cet ensemble de données, ou s'il n'y a pas de type EDD approprié, veuillez déposer unNuméro sur GitHubavec les détails (et un exemple de fichier le cas échéant) .
Vous devez modifier la sortie à partir de GenerateDatasets Xml pour le rendre meilleur.
-
-
Oui. LE CHUNK DEdatasets.xmlMADE BE Générer des ensembles de données Xml n'est pas parfait. Vous devez lire et éditer le XML avant de l'utiliser dans un publicERDDAP. Générer des ensembles de données Xml se rattache à un tas de règles qui ne se corrompent pas toujours. Vous êtes responsable d'assurer la cohérence du XML auquel vous avez ajoutéERDDAP'Sdatasets.xmlDOSSIER.
(Fait amusant: Je ne crie pas. Pour des raisons juridiques historiques, les avertissements doivent être écrits dans tous les plafonds.)
-
La sortie de GenerateDatasetsXml est une ébauche grossière. Vous aurez presque toujours besoin de l'éditer. Nous avons fait et continuons à faire un énorme effort pour rendre la production aussi prête que possible, mais il y a des limites. Souvent, l'information nécessaire n'est tout simplement pas disponible à partir des métadonnées sources.
Un problème fondamental est que nous demandons un programme d'ordinateur (Générer des ensembles de donnéesXml) faire une tâche où, si vous avez donné la même tâche à 100 personnes, vous obtiendrez 100 résultats différents. Il n'y a pas de réponse "juste". Évidemment, le programme vient le plus près de la lecture de l'esprit de Bob (Pas le vôtre) , mais même ainsi, ce n'est pas un programme d'IA tout à fait compris, juste un tas d'heuristiques pavées ensemble pour faire une tâche similaire à l'IA. (Ce jour d'un programme d'IA tout compris peut venir, mais il ne l'a pas encore fait. Si c'est le cas, les humains pourraient avoir de plus gros problèmes. Faites attention à ce que vous voulez.)
-
Pour information, la sortie affiche la source globaleAttributes et la source variableAttributes sous forme de commentaires.ERDDAP™combine sourceAttributes etaddAttributes (qui ont priorité) pour faire le combiné Attributs qui sont affichés à l'utilisateur. (Et d'autres attributs sont automatiquement ajoutés aux variables longitude, latitude, altitude, profondeur et temps lorsqueERDDAP™fait réellement l'ensemble de données) .
-
Si vous n'aimez pas un sourceAttribute, écrasez-le en ajoutant un addAttribute avec le même nom mais une valeur différente (ou aucune valeur, si vous voulez la supprimer) .
-
Tous lesaddAttributessont des suggestions générées par ordinateur. Editez-les ! Si vous n'aimez pas addAttribute, changez-le.
-
Si vous voulez ajouter d'autresaddAttributes, ajoutez-les.
-
Si vous voulez changer undestinationNameÇa change. Mais ne changez passourceNamePar.
-
Vous pouvez changer l'ordre dudataVariables ou en retirer un.
- Vous pouvez alors utiliserDasDds (voir ci-dessous) de tester à plusieurs reprises le XML pour cet ensemble de données pour s'assurer que l'ensemble de données résultant apparaît comme vous le souhaitez dansERDDAP.
- N'hésitez pas à apporter de petits changementsdatasets.xmlun morceau qui a été généré, par exemple, fournit une meilleureinfoUrl, résumé ou titre.
Ne pas ajouter de noms standard
Si vous incluez \-doNotAddStandardNames comme paramètre de ligne de commande lorsque vous exécutez générer Données Xml, générer Données Xml n'ajoutera passtandard\_nameauxaddAttributespour toute variable autre que des variables nommées latitude, longitude, altitude, profondeur ou temps (qui sont évidentesstandard\_names) . Cela peut être utile si vous utilisez la sortie de générer Données Xml directement dansERDDAP™sans modifier la sortie, car générer Données Xml devine souventstandard\_names incorrectement. (Notez que nous vous recommandons toujours de modifier la sortie avant de l'utiliser dansERDDAP.) L'utilisation de ce paramètre aura d'autres effets mineurs liés parce que le devinéstandard\_nameest souvent utilisé à d'autres fins, par exemple pour créer une nouvellelong\_name, et pour créer les paramètres colorBar .
Scénario
Comme alternative à répondre aux questions interactivement au clavier et en boucle pour générer des ensembles de données supplémentaires, vous pouvez fournir des arguments en ligne de commande pour répondre à toutes les questions pour générer un ensemble de données. Générer des ensembles de données Xml traitera ces paramètres, écrira la sortie dans le fichier de sortie et quittera le programme.
Pour le configurer, utilisez d'abord le programme en mode interactif et écrivez vos réponses. Voici un exemple partiel : Disons que vous exécutez le script : ./GenerateDatasetsXml.sh Puis entrez: EDDTableFromAsciiFiles Puis entrez: /u00/data/ Puis saisissez: .\*\.asc Puis entrez: /u00/data/sampleFile.asc Puis entrez: ISO-8859-1
Pour l'exécuter de manière non interactive, utilisez cette ligne de commande : ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles /u00/data/ .\*\.asc /u00/data/sampleFile.asc ISO-8859-1 Donc, en gros, vous énumérez toutes les réponses sur la ligne de commande. Ceci devrait être utile pour les ensembles de données qui changent fréquemment d'une manière qui nécessite la ré-exécution de GenerateDatasets Xml (notammentEDDGridDeThreddsCatalog) .
Détails:
- Si un paramètre contient un espace ou un caractère spécial, encoder le paramètre comme unChaîne de style JSON, par exemple, "mon paramètre avec des espaces et deux\nles lignes".
- Si vous voulez spécifier une chaîne vide comme paramètre, utilisez : rien
- Si vous voulez spécifier la valeur par défaut d'un paramètre, utilisez : par défaut
- Générer des ensembles de données Xml supporte a -i ensembles de données Nom Xml ♪ Nom du tag paramètre ligne de commande qui insère la sortie dans le paramètre spécifiédatasets.xmlfichier (par défaut Tomcat /content/erddap/datasets.xml) . Générer des ensembles de données Xml recherche deux lignes dans les ensembles de données Nom Xml :
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
et
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
et remplace tout entre ces lignes par le nouveau contenu, et change le certainDatetime.
- L'interrupteur -i est seulement traité (et changements apportésdatasets.xmlne sont fabriqués que) si vous exécutez GenerateDatasets Xml avec des arguments en ligne de commande qui spécifient toutes les réponses à toutes les questions pour une boucle du programme. (Voir "Scripting" ci-dessus.) (La pensée est : Ce paramètre est à utiliser avec les scripts. Si vous utilisez le programme en mode interactif (dactylographie des informations sur le clavier) , vous êtes susceptible de générer des morceaux incorrects de XML avant de générer celui que vous voulez.)
- Si les lignes Begin et Fin ne sont pas trouvées, alors ces lignes et le nouveau contenu sont insérés juste avant</erddapDatasets>.
- Il y a aussi un -I (capital i) switch à des fins de test qui fonctionne comme -i, mais crée un fichier appelédatasets.xml DateHeure et ne modifie pasdatasets.xml.
- N'exécutez pas GenerateDatasets Xml avec -i en deux processus à la fois. Il y a une chance qu'un seul ensemble de changements soit conservé. Il peut y avoir de sérieux problèmes (par exemple, fichiers corrompus) .
Si vous utilisez "GenerateDatasetsXml -verbose", il va imprimer plus de messages de diagnostic que d'habitude.
Types de données spéciales/de Pseudo
En général, les options EDDType dans GenerateDatasets Match Xml des types EDD décrits dans ce document (voirListe des types de données) et générer undatasets.xmlpour créer un ensemble de données à partir d'une source de données spécifique. Il y a quelques exceptions et cas particuliers:
EDDGridDeErddap
Cette EDDType génère tous lesdatasets.xmldes morceaux nécessaires pour faireEDDGridDeErddapensembles de données de tous lesEDDGriddatasets dans une télécommandeERDDAP. Vous aurez la possibilité de garder l'originaldatasetIDs (qui peuvent faire double emploidatasetIDS déjà dans votreERDDAP) ou de générer de nouveaux noms qui seront uniques (mais généralement ne sont pas aussi lisibles par l'homme) .
EDDTableDeErddap
Cette EDDType génère tous lesdatasets.xmldes morceaux nécessaires pour faireEDDTableDeErddapensembles de données de tous les ensembles de données EDDTable dans une télécommandeERDDAP. Vous aurez la possibilité de garder l'originaldatasetIDs (qui peuvent faire double emploidatasetIDS déjà dans votreERDDAP) ou de générer de nouveaux noms qui seront uniques (mais généralement ne sont pas aussi lisibles par l'homme) .
EDDGridDeThreddsCatalog
Cette EDDType génère tous lesdatasets.xmldes morceaux nécessaires pour tous lesEDDGridDeDapensembles de données qu'il peut trouver en rampant récursivement à travers un THREDS (sous) catalogue. Il existe de nombreuses formes d'URL du catalogue THREDS. Cette option nécessite une URL THREDS .xml avec /catalog/ dedans, par exemple,
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml ou
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(un catalogue .html associé est à
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html , qui n'est pas acceptable pourEDDGridDeThreddsCatalog).
Si vous avez des problèmes avecEDDGridDe Threddes Catalogue :
- Assurez-vous que l'URL que vous utilisez est valide, inclut /catalog/, et se termine par /catalog.xml .
- Si possible, utilisez une adresse IP publique (par exemple, https://oceanwatch.pfeg.noaa.gov ) dans l'URL, pas une adresse IP numérique locale (par exemple, https://12.34.56.78 ) . Si le THREDDS est uniquement accessible via l'adresse IP numérique locale, vous pouvez utiliser [<convertirEnSourcePublicUrl>] (#convertir les ressources publiques) doncERDDAP™les utilisateurs voient l'adresse publique, même siERDDAP ™obtient les données de l'adresse numérique locale.
- Si vous avez des problèmes que vous ne pouvez pas résoudre,vérifier les conseils de dépannage.
- Le code de bas niveau pour cela utilise maintenant leUnidatanetcdf-java catalogue code de rampe (Des batteurs. classes de catalogue) afin qu'il puisse gérer tous les catalogues THREDS (qui peut être étonnamment complexe) Grâce àUnidatapour ce code.
EDDGridLonPM180DeErddapCatalog
Ce type EDD génère ledatasets.xmlà faireEDDGridLonPM180ensembles de données de tous lesEDDGridensembles de donnéesERDDAPqui ont des valeurs de longitude supérieures à 180.
- Si possible, utilisez une adresse IP publique (par exemple, https://oceanwatch.pfeg.noaa.gov ) dans l'URL, pas une adresse IP numérique locale (par exemple, https://12.34.56.78 ) . SiERDDAP™est uniquement accessible via l'adresse IP numérique locale, vous pouvez utiliser [<convertirEnSourcePublicUrl>] (#convertir les ressources publiques) doncERDDAP™les utilisateurs voient l'adresse publique, même siERDDAP™obtient les données de l'adresse numérique locale.
EDDGridLon0360DeErddapCatalog
Ce type EDD génère ledatasets.xmlà faireEDDGridLon0360ensembles de données de tous lesEDDGridensembles de donnéesERDDAPdont la longitude est inférieure à 0.
- Si possible, utilisez une adresse IP publique (par exemple, https://oceanwatch.pfeg.noaa.gov ) dans l'URL, pas une adresse IP numérique locale (par exemple, https://12.34.56.78 ) . SiERDDAP™est uniquement accessible via l'adresse IP numérique locale, vous pouvez utiliser [<convertirEnSourcePublicUrl>] (#convertir les ressources publiques) doncERDDAP™les utilisateurs voient l'adresse publique, même siERDDAP™obtient les données de l'adresse numérique locale.
EDDFromFiles
Avec un répertoire de démarrage, cela traverse le répertoire et tous les sous-répertoires et tente de créer un ensemble de données pour chaque groupe de fichiers de données qu'il trouve.
- Cela suppose que lorsqu'un ensemble de données est trouvé, l'ensemble de données comprend tous les sous-répertoires.
- Si un ensemble de données est trouvé, des répertoires similaires seront traités comme des ensembles de données séparés. (Par exemple, les répertoires pour les années 1990, les années 2000, les années 2010, généreront des ensembles de données distincts) . Ils devraient être faciles à combiner à la main -- il suffit de changer le premier ensemble de données<fileDir> vers le répertoire parent et supprimer tous les ensembles de données suivants.
- Cela va seulement essayer de générer un morceau dedatasets.xmlpour le type d'extension de fichier le plus courant dans un répertoire (sans compter .md5, qui est ignoré) . Donc, donné un répertoire avec 10.ncfichiers et 5 fichiers .txt, un ensemble de données sera généré pour le.ncfichiers seulement.
- Cela suppose que tous les fichiers d'un répertoire avec la même extension appartiennent au même ensemble de données. Si un répertoire en a.ncfichiers avec des données SST et certains.ncfichiers avec des données de chlorophylle, juste un échantillon.ncfichier sera lu (Ça va ? chlorophylle ?) et un seul jeu de données sera créé pour ce type de fichier. Cet ensemble de données échouera probablement à charger en raison des complications d'essayer de charger deux types de fichiers dans le même ensemble de données.
- S'il y a moins de 4 fichiers avec l'extension la plus courante dans un répertoire, cela suppose qu'ils ne sont pas des fichiers de données et saute simplement le répertoire.
- S'il y a 4 fichiers ou plus dans un répertoire, mais cela ne peut pas générer un morceau dedatasets.xmlpour les fichiers (par exemple, un type de fichier non supporté) , cela générera uneEDDTableFromFileNamesdataset pour les fichiers.
- À la fin des diagnostics que ceci écrit au fichier journal, juste avant ledatasets.xmldes morceaux, cela va imprimer une table avec un résumé des informations recueillies en traversant tous les sous-répertoires. Le tableau listera chaque sous-répertoire et indiquera le type d'extension de fichier le plus courant, le nombre total de fichiers et le type de jeu de données créé pour ces fichiers. (le cas échéant) . Si vous êtes confronté à une structure de fichier complexe et profondément imbriquée, pensez à exécuter GenerateDatasets Xml avec EDDType=EDDsFromFiles juste pour générer cette information,
- Cette option peut ne pas faire un grand travail de deviner le meilleur EDDType pour un groupe donné de fichiers de données, mais il est rapide, facile, et vaut la peine d'essayer. Si les fichiers sources sont appropriés, il fonctionne bien et est une bonne première étape dans la génération de ladatasets.xmlpour un système de fichiers avec beaucoup de sous-répertoires, chacun avec des fichiers de données de différents ensembles de données.
EDDTableFromEML et EDDTableFromEMLBatch
Ces EDDType spéciaux génère ladatasets.xmlpour faire uneEDDTableFromAsciiFilesdataset de chacun des tableauxLangue des métadonnées écologiquesFichier XML. La variante « Lot » fonctionne sur tous les fichiers EML dans un répertoire local ou distant. Veuillez voir lesdocumentation pour EDDTableFromEML.
EDDTableD'InPort
Cette spéciale EDDType génère ladatasets.xmlpour faire uneEDDTableFromAsciiFilesl'ensemble des données figurant dans lesinport-xmlfichier. Si vous pouvez accéder au fichier de données source (le fichier inport-xml devrait avoir des indices pour le trouver) , vous pouvez faire un ensemble de données de travail dansERDDAP.
Les étapes suivantes décrivent comment utiliser GenerateDatasets Xml avec un fichier inport-xml afin d'obtenir un jeu de données de travail dansERDDAP.
- Une fois que vous avez accès au fichier inport-xml (soit comme URL ou un fichier local) : exécuter Générer des ensembles de données Xml, spécifiez EDDType=EDDTableFromInPort, spécifiez l'URL inport-xml ou le nom complet du fichier, spécifiez quel enfant=0, et spécifiez les autres informations demandées (si connu) . (À ce stade, vous n'avez pas besoin d'avoir le fichier de données source ou de spécifier son nom.) Le paramètre queChild=0 indique Générer des ensembles de données Xml pour écrire les informations pour Tous des<entité-attribut-information><entity> est dans le fichier inport-xml (s'il y a) . Il imprime également un résumé des informations de fond, y compris tous les téléchargements-url listés dans le fichier inport-xml.
- Regardez toutes ces informations. (y compris les informations générales qui génèrent des ensembles de données Impressions Xml) et visitez le téléchargement-url (s) pour essayer de trouver le fichier de données source (s) . Si vous pouvez le trouver (eux) , télécharger (eux) dans un répertoire accessible àERDDAP. (Si vous ne trouvez aucun fichier source de données, il n'y a pas de raison de procéder.)
- Exécuter Générer Données Encore Xml. Si le fichier de données source correspond à l'un des fichiers inport-xml<entité-attribut-information><entity>'s, spécifiez quel enfant= Numéro de cette entité (Par exemple, 1, 2, 3, ...) .ERDDAP™tentera de faire correspondre les noms des colonnes du fichier de données source aux noms des informations de l'entité, et invitera à accepter/rejeter/fixer toute anomalie. Ou, si le fichier inport-xml n'en a pas<entité-attribut-information><entity>'s, spécifiez quel enfant=0.
- Dans la partie dedatasets.xmlqui a été fait par GenerateDatasets Xml, réviser le<addAttributes>] (#attributs globaux) selon les besoins/désirés.
- Dans la partie dedatasets.xmlqui a été fait par GenerateDatasetsXml, ajouter/réviser le [<dataVariable>] (#donnéesvariables) l'information nécessaire/désirée pour décrire chacune des variables. Assurez-vous d'identifier correctement chaque variable [<sourceName>] (#Nom de la source) (comme il apparaît dans la source) , [<destinationName>] (Nom de destination) (qui a plus de limites sur les caractères autorisés quesourceName) , [<unités>] (#unités) (surtout si c'est unvariable temps ou timestampoù les unités doivent spécifier le format) et [<missing\_value>] (#valeur manquante) ,
- Lorsque vous êtes près de terminer, utilisezDasDdsoutil pour voir rapidement si la description de l'ensemble de données est valide et si l'ensemble de données apparaîtra dansERDDAP™comme tu veux.
Il serait bon que les groupes utilisant InPort documentent leurs ensembles de donnéesERDDAP™de rendre disponibles les données réelles:
- ERDDAP™est une solution qui peut être utilisée dès maintenant afin que vous puissiez remplirNOAA'sAccès du public aux résultats de la recherche (PARR) exigencesen ce moment, pas à un moment vague à l'avenir.
- ERDDAP™met les données réelles à la disposition des utilisateurs, pas seulement les métadonnées. (À quoi servent les métadonnées sans données?)
- ERDDAP™prend en charge les métadonnées (notamment, les unités de variables) , contrairement à d'autres logiciels de serveur de données à l'étude. (À quoi sert les données sans métadonnées?) Utiliser un logiciel qui ne supporte pas les métadonnées est d'inviter les données à être mal comprises et mal utilisées.
- ERDDAP™est un logiciel libre et open-source contrairement à d'autres logiciels qui sont considérés. Développement en coursERDDAP™est déjà payé. AppuiERDDAP™les utilisateurs sont libres.
- ERDDAP'l'apparence peut être facilement personnalisé pour refléter et mettre en valeur votre groupe (pasERDouERDDAP) .
- ERDDAP™offre un moyen cohérent d'accéder à tous les ensembles de données.
- ERDDAP™peut lire des données de nombreux types de fichiers de données et de bases de données relationnelles.
- ERDDAP™peut traiter de gros ensembles de données, y compris des ensembles de données où les données sources se trouvent dans de nombreux fichiers de données.
- ERDDAP™peut écrire des données à de nombreux types de fichiers de données, à la demande de l'utilisateur, y compris des types de fichiers de données scientifiques comme netCDF, ESRI .csv, etODV .txt.
- ERDDAP™peut faire des graphiques personnalisés et des cartes de sous-ensembles des données, en fonction des spécifications de l'utilisateur.
- ERDDAP™peut traiter des ensembles de données autres que les données telles que des collections d'images, de vidéos ou de fichiers audio.
- ERDDAP™a été installé et utilisé àplus de 60 institutions dans le monde.
- ERDDAP™est listé comme l'un des serveurs de données recommandés pour une utilisation dansNOAAdans leNOAADirective procédurale sur l'accès aux données, contrairement à d'autres logiciels qui sont considérés.
- ERDDAP™est un produit deNMFS/NOAA, donc l'utiliser dansNMFSetNOAAdevrait être un point de fierté pourNMFSetNOAA.
Veuillez donnerERDDAP™un essai. Si vous avez besoin d'aide, veuillez poster un message dans leERDDAP™Groupe Google.
ajouterFillValueAttributes
Cette option spéciale EDDType n'est pas un type de jeu de données. C'est un outil qui peut ajouter des attributs \_FillValue à certaines variables de certains ensembles de données. VoirajouterFillValueAttributes.
trouverDupliquer Heure
Cette option spéciale EDDType n'est pas un type de jeu de données. Au lieu de cela, il indique GenerateDatasets Xml pour rechercher à travers une collection de grilles.nc (et connexes) fichiers pour trouver et imprimer une liste de fichiers avec des valeurs de temps dupliquées. Quand il regarde les valeurs de temps, il les convertit des unités originales en"seconds since 1970-01-01"dans le cas où différents fichiers utilisent des chaînes d'unités différentes. Vous devez fournir le répertoire de départ (avec ou sans la barre oblique) , le nom du fichier expression régulière (Par exemple,.nc ) , et le nom de la variable de temps dans les fichiers.
ncdump
Cette option spéciale EDDType n'est pas un type de jeu de données. Au lieu de cela, il indique GenerateDatasets Xml pour imprimerncdump\-comme impression d'un.nc,.ncml, ou.hdffichier. En fait, il utilise le netcdf-javaNCdump, qui est un outil plus limité que la version C de NCdump. Si vous utilisez cette option, GenerateDatasetsXml vous demandera d'utiliser une des options: "-h" (en-tête) , "-c" (coordonnées) "-vall" (par défaut) , "-v var1;var2", "-v var1 (0,010,0:20) ". C'est utile parce que, sans ncdump, il est difficile de savoir ce qui est dans un.nc,.ncml, ou.hdffichier et donc quel EDDType vous devez spécifier pour GenerateDatasets Xml. Pour.ncml fichier, cela va imprimer la sortie ncdump pour le résultat de la.ncml modifications de fichier appliquées au sous-jacent.ncou.hdffichier.
DasDds
- DasDds est un programme en ligne de commande que vous pouvez utiliser après avoir créé une première tentative au XML pour un nouvel ensemble de données dansdatasets.xml. Avec DasDds, vous pouvez tester et affiner le XML à plusieurs reprises. Lorsque vous utilisez le programme DasDds:
- Sous Windows, la première fois que vous exécutez DasDds, vous devez modifier les DasDds. fichier bat avec un éditeur de texte pour changer le chemin vers le java. exe fichier pour que Windows puisse trouverJava.
- DasDds vous demandedatasetIDpour le jeu de données sur lequel vous travaillez.
- DasDds essaie de créer l'ensemble de données avec celadatasetID.
- DasDds imprime toujours beaucoup de messages diagnostiques. Si vous utilisez "DasDds -verbose", DasDds va imprimer plus de messages de diagnostic que d'habitude.
- Pour la sécurité, DasDds supprime toujours toutes les informations de l'ensemble de données en cache (fichiers) pour le jeu de données avant d'essayer de créer le jeu de données. C'est l'équivalent d'un réglagedrapeau durAinsi, pour les ensembles de données agrégés, vous pouvez modifier temporairement le fichierNameRegex pour limiter le nombre de fichiers trouvés par le constructeur de données.
- Si l'ensemble de données ne se charge pas (pour quelque raison que ce soit) , DasDds s'arrêtera et vous montrera le message d'erreur pour la première erreur qu'il trouve.
N'essayez pas de deviner le problème. Lisez attentivement le message ERROR.
Si nécessaire, lisez les messages de diagnostic précédents pour trouver plus d'indices et d'informations, aussi. - Modifier le XML de l'ensemble de données pour essayer de résoudre ce problème
et laissez DasDds essayer de créer à nouveau le jeu de données. - Si vous résolvez chaque problème à plusieurs reprises, vous finirez par résoudre tous les problèmes
et l'ensemble de données sera chargé.
- Toutes les sorties DasDds (diagnostics et résultats) sont écrits à l'écran et à BigParent Directory /logs/DasDds.log .
- Si DasDds peut créer le jeu de données, DasDds vous montrera.das (Structure des attributs de données) ,.dds (Descripteur de données Structure) et.timeGaps (Lacunes temporelles) informations pour l'ensemble de données sur votre écran et les écrire à BigParent Directory /logs/DasDds.out .
- Souvent, vous voudrez faire un petit changement au XML de l'ensemble de données pour nettoyer les métadonnées de l'ensemble de données et rediriger DasDds.
Bonus Outil tiers :ERDDAP-Lint
ERDDAP-lint est un programme de Rob Fuller et Adam Leadbetter de l'Irish Marine Institute que vous pouvez utiliser pour améliorer les métadonnées de votreERDDAP™les ensembles de données.ERDDAP-lint "contient des règles et une simple application web statique pour exécuter certains tests de vérification contre votreERDDAP™serveur. Tous les tests sont exécutés dans le navigateur web." Comme leOutil de lint Unix/Linux, vous pouvez modifier les règles existantes ou ajouter de nouvelles règles. VoirERDDAP-Lintpour plus d'informations.
Cet outil est particulièrement utile pour les ensembles de données que vous avez créés il y a quelque temps et que vous voulez maintenant mettre à jour avec vos préférences actuelles en matière de métadonnées. Par exemple, les premières versions de GenerateDatasets Xml n'a pas fait d'efforts pour créer un mondecreator\_name,creator\_email, type de créateur, oucreator\_urlmétadonnées. Vous pourriez utiliserERDDAP-Intégrer les ensembles de données qui manquent de ces attributs de métadonnées.
Merci à Rob et Adam pour avoir créé cet outil et l'avoir mis à la disposition duERDDAP™communautaire.
La structure de basedatasets.xmlFichier
Les étiquettes obligatoires et optionnelles autorisées dans unedatasets.xmlfichier (et le nombre de fois qu'ils peuvent apparaître) sont indiqués ci-dessous. En pratique, votredatasets.xmlaura beaucoup de<tags de dataset> et n'utiliser que les autres tags<erddapDatasets> au besoin.
<?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>
Il est possible que d'autres encodages soient autorisés à l'avenir, mais pour l'instant, seul ISO-8859-1 est recommandé.
XInclure
Nouveau dans la version 2.25 est le support de XInclude. Cela exige que vous utilisiez l'analyseur SAX<utiliserSaxParser>true</useSaxParser> dans votre setup.xml. Cela peut vous permettre d'écrire chaque ensemble de données dans son propre fichier, puis les inclure tous dans le principaldatasets.xml, réutiliser des parties des définitions des ensembles de données, ou les deux. Si vous voulez voir un exemple,EDDTestDataset.javacrée XInclure pour réutiliser les définitions de variables.
-
- Oui.
Annexe
Travailler avec lesdatasets.xmlfichier est un projet non-trivial. Veuillez lire attentivement toutes ces notes. Après avoir choisitype d'ensemble de données, veuillez lire attentivement la description détaillée de celui-ci.
Choix du type de données
Dans la plupart des cas, il n'y en a qu'unERDDAP™type d'ensemble de données approprié pour une source de données donnée. Dans quelques cas (Par exemple,.ncfichiers) , il ya quelques possibilités, mais généralement l'un d'entre eux est certainement meilleur. La première et la plus grande décision que vous devez prendre est: est-il approprié de traiter l'ensemble de données comme un groupe de tableaux multidimensionnels (Si oui, voirEDDGridtypes de données) ou comme tableau de données similaire à une base de données (Si oui, voirTypes de données EDDTable) .
Le service des données
Habituellement, il n'est pas nécessaire de modifier la source de données (Par exemple, convertir les fichiers en un autre type de fichier) de sorte queERDDAP™peut le servir. Une des hypothèses deERDDAP™est que la source de données sera utilisée telle quelle. D'habitude, ça marche bien. Voici quelques exceptions:
- Bases de données relationnelles et Cassandra --ERDDAP™peut servir les données directement à partir des bases de données relationnelles et de Cassandra. Mais pour les problèmes de sécurité, d'équilibrage de charge et de performance, vous pouvez choisir de configurer une autre base de données avec les mêmes données ou enregistrer les données àNetCDFv3.ncfichiers et ontERDDAP™servir les données de la nouvelle source de données. VoirEDDTableFromDatabaseetEDDTableDeCassandra.
- Sources de données non prises en charge --ERDDAP™peut supporter un grand nombre de types de sources de données, mais le monde est rempli de 1000 (Des millions ?) de différentes sources de données (notamment, les structures des fichiers de données) . SiERDDAP™ne supporte pas votre source de données :
- Si la source de données estNetCDF .ncfichiers, vous pouvez utiliserNcMLpour modifier les fichiers de données à la volée, ou utiliserNCOmodifier définitivement les fichiers de données.
- Vous pouvez écrire les données à un type de source de données quiERDDAP™soutien.NetCDF-3.ncfichiers sont une bonne recommandation générale parce qu'ils sont des fichiers binaires quiERDDAP™peut lire très rapidement. Pour les données tabulaires, envisager de stocker les données dans une collection de.ncfichiers qui utilisent lesFC Géométries d'échantillonnage discrètes (DSG) Structures de données d'array contigües et peut être manipulé avecERDDAP'sEDDTableFromNcCFFiles) . S'ils sont organisés logiquement (avec des données pour un morceau d'espace et de temps) ,ERDDAP™peut extraire les données très rapidement.
- Vous pouvez demander que le support de cette source de données soit ajouté àERDDAP™par courriel à Chris. John à noaa.gov.
- Vous pouvez ajouter le support de cette source de données en écrivant le code pour le gérer vous-même. VoirdesERDDAP™Guide du programmeur
- Régime...ERDDAP™peut lire les données de certaines sources de données beaucoup plus rapidement que d'autres. Par exemple, lireNetCDFv3.ncfichiers est rapide et la lecture des fichiers ASCII est plus lente. Et s'il y a un grand (> 1000) ou énorme (> 10 000) nombre de fichiers de données sources,ERDDAP™répondra lentement à certaines demandes de données. Habituellement, la différence n'est pas perceptible pour les humains. Cependant, si vous pensezERDDAP™est lent pour un ensemble de données donné, vous pouvez choisir de résoudre le problème en écrivant les données à une configuration plus efficace (généralement: quelques-uns, bien structurés,NetCDFv3.ncfichiers) . Pour les données tabulaires, voirce conseil.
Conseil
Il est souvent plus facile de générer le XML pour un ensemble de données en faisant une copie de la description d'un ensemble de données de travail dans dataset.xml, puis en la modifiant.
Codage de caractères spéciaux
Depuisdatasets.xmlest un fichier XML, vous DOIT&-encoder"&"<", et ">" dans tout contenu comme "&", "<", et ">". Faux :<titre> Temps & marées</titre> À droite :<titre> Marques de & heure</titre>
XML ne tolère pas les erreurs de syntaxe
Après avoir modifié le fichier dataset.xml, il est bon de vérifier que le résultat estXML bien forméen collant le texte XML dans un vérificateur XML commexmlvalidation.
Conseils de dépannage
- Autres façons de diagnostiquer les problèmes avec les ensembles de données
En plus des deuxOutils, - Log.txtest un fichier journal avec tous lesERDDAPLes messages de diagnostic.
- LesRapport quotidienpossède plus d'informations que la page d'état, y compris une liste des ensembles de données qui n'ont pas été chargés et les exceptions (erreurs) ils ont généré.
- LesPage d'étatest un moyen rapide de vérifierERDDAPl'état de n'importe quel navigateur Web. Il comprend une liste des ensembles de données qui n'ont pas été chargés (mais pas les exceptions connexes) et les statistiques des tâches (montrant les progrès deEDDGridCopieretEDDTableCopyensembles de données etEDDGridFichiersouEDDTableFromFilesensembles de données utiliséscacheFromUrl (mais pas cache TailleGB) ) .
- Si vous êtes coincé, voyez notresection sur l'obtention d'un soutien supplémentaire.
Variables particulières
- longitude, latitude, altitude (ou profondeur) , et heure (LLAT) variable destinationNames sont spéciaux.
- En général:
- Les variables LLAT sont portées à la connaissanceERDDAP™si la variable d'axe (pourEDDGridensembles de données) ou variable de données (pour les ensembles de données EDDTable) destinationNameest "longitude", "latitude", "altitude", "profondeur", ou"time".
- Nous vous encourageons vivement à utiliser ces noms standard pour ces variables dans la mesure du possible. Aucun d'entre eux n'est requis. Si vous n'utilisez pas ces noms de variables spéciaux,ERDDAP™ne reconnaîtront pas leur signification. Par exemple, les variables LLAT sont traitées spécialement par Make A Graph ( datasetID Graphique) : si la variable X Axis est "longitude" et la variable Y Axis est "latitude", vous obtiendrez une carte (utilisant une projection standard, et avec un masque terrestre, des frontières politiques, etc.) au lieu d'un graphique.
- ERDDAP™ajoutera automatiquement beaucoup de métadonnées aux variables LLAT (par exemple, "ioos\_category", "unités", et plusieurs attributs liés aux normes comme "\_CoordonnéAxisType") .
- ERDDAP™sera automatiquement, à la volée, ajouter beaucoup de métadonnées globales liées aux valeurs LLAT du sous-ensemble de données sélectionné (Par exemple, "geospatial\_lon\_min") .
- Les clients qui appuient ces normes de métadonnées pourront profiter des métadonnées ajoutées pour positionner les données dans le temps et dans l'espace.
- Les clients trouveront plus facile de générer des requêtes qui incluent des variables LLAT parce que les noms de la variable sont les mêmes dans tous les ensembles de données pertinents.
- Pour la variable "longitude" et la variable "latitude":
- Utilisez ladestinationName"longitude" et "latitude" seulement si launitéssont des degrés\_est et\_nord, respectivement. Si vos données ne correspondent pas à ces exigences, utilisez différents noms de variables (Par exemple, x, y, lonRadians, latRadians) .
- Si vous avez des données de longitude et de latitude exprimées en différentes unités et donc avec différentesdestinationNames, par exemple, lonRadians et latRadians, Make A Graph ( datasetID Graphique) fera des graphiques (par exemple, séries chronologiques) au lieu de cartes.
- Pour la variable "altitude" et la variable "profondeur":
- Utilisez ladestinationName"altitude" pour identifier la distance des données au-dessus du niveau de la mer (Valeurs positives) . En option, vous pouvez utiliser "altitude" pour les distances sous le niveau de la mer si les valeurs sont négatives sous la mer (ou si vous utilisez, par exemple, [<Nom de l'entreprisescale\_factor"type"int">- 1</att>] (#facteur_échelle) pour convertir les valeurs de profondeur en valeurs d'altitude.
- Utilisez ladestinationName«profondeur» pour identifier la distance entre les données et le niveau de la mer (valeurs positives à la baisse) .
- Un ensemble de données peut ne pas avoir à la fois des variables d'altitude et de profondeur.
- Pour ces noms variables,unitésdoit être "m", "mètre" ou "mètres". Si les unités sont différentes (Par exemple, brasses) , vous pouvez utiliser [<Nom de l'entreprisescale\_factor"> certains Valeur </att>] (#facteur_échelle) et [<att name="unités">mètres</att>] (#unités) pour convertir les unités en compteurs.
- Si vos données ne correspondent pas à ces exigences, utilisez un autredestinationName (par exemple, ci-dessusGround, distance Pourbottom) .
- Si vous connaissez le SIR vertical, veuillez le préciser dans les métadonnées, par exemple "EPSG:5829" (hauteur instantanée au-dessus du niveau de la mer) , "EPSG:5831" (profondeur instantanée sous le niveau de la mer) , ou "EPSG:5703" (Hauteur NAVD88) .
- Pour"time"variable:
- Utilisez ladestinationName "time"seulement pour les variables qui incluent la date + heure entière (ou date, si c'est tout ce qu'il y a) . Si, par exemple, il existe des colonnes séparées pour la date et l'heureOfDay, n'utilisez pas le nom de la variable"time".
- Voirunitéspour plus d'informations sur l'attribut units pour les variables time et timeStamp.
- La variable temporelle etheure Variables des timbressont uniques dans la mesure où ils convertissent toujours les valeurs de données à partir du format de temps de la source (Quoi que ce soit) dans une valeur numérique (secondes depuis 1970-01-01T00:00:00Z) ou une valeur de chaîne (ISO 8601:2004 (E) format) , selon la situation.
- Lorsqu'un utilisateur demande des données temporelles, il peut le demander en spécifiant le temps comme valeur numérique (secondes depuis 1970-01-01T00:00:00Z) ou une valeur de chaîne (ISO 8601:2004 (E) format) .
- ERDDAP™a une utilité pourConvertir un numérique Temps de départ/vers une chaîne.
- VoirCommentERDDAPTraitement du temps.
Pourquoi seulement deux structures de données de base?
- Comme il est difficile pour les clients humains et les clients informatiques de faire face à un ensemble complexe de structures d'ensembles de données possibles,ERDDAP™utilise seulement deux structures de données de base:
- astructure des données maillées (par exemple, pour les données satellitaires et les données modèles) et
- aStructure des données tabulaires (par exemple, pour les données de bouée, de station et de trajectoire in situ) .
- Certes, toutes les données ne peuvent pas être exprimées dans ces structures, mais une grande partie peut l'être. Les tableaux, en particulier, sont des structures de données très flexibles. (examiner le succès des programmes de bases de données relationnelles) .
- Cela facilite la construction des requêtes de données.
- Cela rend les réponses de données ont une structure simple, ce qui facilite le service des données dans une plus grande variété de types de fichiers standard (qui prennent souvent en charge des structures de données simples) . C'est la raison principale pour laquelle nous avons mis en placeERDDAP™Par ici.
- Cela nous facilite la tâche. (ou n'importe qui) pour écrire le logiciel client qui fonctionne avec tousERDDAP™les ensembles de données.
- Cela facilite la comparaison des données provenant de différentes sources.
- Nous sommes très conscients que si vous êtes habitués à travailler avec des données dans d'autres structures de données, vous pouvez d'abord penser que cette approche est simpliste ou insuffisante. Mais toutes les structures de données ont des compromis. Aucun n'est parfait. Même les structures do-it-all ont leurs inconvénients: travailler avec eux est complexe et les fichiers peuvent seulement être écrits ou lus avec des bibliothèques logicielles spéciales. Si vous acceptezERDDAPL'approche assez pour essayer de travailler avec elle, vous pouvez trouver qu'il a ses avantages (notamment le support pour plusieurs types de fichiers qui peuvent contenir les réponses de données) . LesERDDAP™Diaporama (en particulierglissement des structures de données) parle beaucoup de ces questions.
- Et même si cette approche vous semble étrange,ERDDAP™les clients ne remarqueront jamais -- ils verront simplement que tous les ensembles de données ont une structure simple agréable et ils seront reconnaissants qu'ils puissent obtenir des données d'une grande variété de sources retournées dans une grande variété de formats de fichiers.
Dimensions
- Que faire si les variables de la grille dans l'ensemble de données source ne partagent pas les mêmes variables d'axe?
EnEDDGridensembles de données, toutes les variables de données DOIVENT être utilisées (part) toutes les variables d'axe. Donc, si un ensemble de données source a certaines variables avec un ensemble de dimensions, et d'autres variables avec un ensemble de dimensions différent, vous devrez faire deux ensembles de données dansERDDAP. Par exemple, vous pourriez en faire uneERDDAP™ensemble de données intitulé "Quelque titre (en surface) " pour tenir des variables qui utilisent simplement\[heure\]\[latitude\]\[longitude\]dimensions et faire une autreERDDAP™ensemble de données intitulé "Quelque titre (en profondeur) " pour tenir les variables qui utilisent\[heure\]\[altitude\]\[latitude\]\[longitude\]. Ou peut-être que vous pouvez changer la source de données pour ajouter une dimension avec une seule valeur (Par exemple, altitude=0) de rendre les variables cohérentes.
ERDDAP™ne gère pas des ensembles de données plus complexes (par exemple, des modèles utilisant un maillage de triangles) Et bien. Vous pouvez servir ces ensembles de données dansERDDAP™en créant deux ou plusieurs ensembles de données dansERDDAP™ (pour que toutes les variables de données de chaque nouvel ensemble de données partagent le même ensemble de variables d'axe) , mais ce n'est pas ce que les utilisateurs veulent. Pour certains ensembles de données, vous pourriez envisager de faire une version maillée régulière de l'ensemble de données et de l'offrir en plus des données originales. Certains logiciels clients peuvent seulement traiter avec une grille régulière, donc en faisant cela, vous atteindrez des clients supplémentaires.
Données projetées sur les mailles
Certaines données maillées ont une structure complexe. Par exemple, niveau 2 du satellite ("une longue piste") les données n'utilisent pas une projection simple. Modèles (et autres) souvent travailler avec des données maillées sur diverses projections non cylindriques (par exemple, conique, stéréographique polaire, tripolaire) ou dans des grilles non structurées (une structure de données plus complexe) . Certains utilisateurs finaux veulent ces données telles quelles, donc il n'y a pas de perte d'information. Pour ces clients,ERDDAP™ne peut servir les données, comme c'est le cas, que siERDDAP™l'administrateur divise l'ensemble de données d'origine en quelques ensembles de données, chaque partie comprenant des variables qui partagent les mêmes variables d'axe. Oui, cela semble étrange pour les gens impliqués et il est différent de la plupart desOPeNDAPles serveurs. MaisERDDAP™met l'accent sur la diffusion des données dans de nombreux formats. C'est possible parce queERDDAP™utilise/exige une structure de données plus uniforme. Bien que ce soit un peu gênant (c'est-à-dire différents des prévisions) ,ERDDAP™peut distribuer les données projetées.
\[Oui,ERDDAP™La structure des données pourrait être plus souple, mais conserver les exigences relatives aux formats de sortie. Mais cela conduirait à la confusion parmi de nombreux utilisateurs, en particulier les nouveaux-nés, car de nombreuses requêtes de données apparemment valides avec des structures différentes seraient invalides parce que les données ne correspondraient pas au type de fichier. Nous revenons à la conception actuelle du système.\]
Certains utilisateurs finals veulent des données dans une projection cylindrique lat lon comme Equirectangular / plate carrée ou Mercator) pour une facilité d'utilisation dans différentes situations. Pour ces situations, nous encourageonsERDDAP™administrateur pour utiliser un autre logiciel (NCO?Matlab? - Oui. Une carte d'identité ? ...?) pour reprojecter les données sur une (Projection equitectangulaire / plaque carrée) ou d'autres projections cylindriques et servir cette forme de donnéesERDDAP™comme un ensemble de données différent. Ceci est semblable à ce que les gens font lorsqu'ils convertissent les données de niveau 2 en données de niveau 3. Un tel outil estNCOqui offre des options d'extension pour le reconditionnement des données.
SIG et données de reprojecting
Étant donné que le monde des SIG est souvent axé sur la cartographie, les programmes des SIG offrent généralement un soutien pour la reprojection des données, c'est-à-dire la représentation des données sur une carte avec une projection différente.
Actuellement,ERDDAP™n'a pas d'outils pour reprojecter les données. Au lieu de cela, nous vous recommandons d'utiliser un outil externe pour faire une variante de l'ensemble de données, où les données ont été reprojectées de leur forme originale sur une forme rectangulaire (latitude longitude) tableau approprié pourERDDAP.
À notre avis, les FC/DAPLe monde est un peu différent du monde SIG et fonctionne à un niveau légèrement inférieur.ERDDAP™reflète cela. En général,ERDDAP™est conçu pour fonctionner principalement avec les données (pas de cartes) et ne veut pas changer (Par exemple, le projet) Ces données. PourERDDAP™, les données maillées sont souvent/généralement/de préférence associées aux valeurs lat lon et à une projection cylindrique, et non à certaines valeurs x,y de la projection. En tout cas,ERDDAP™ne fait rien avec la projection des données ; il passe simplement les données, comme c'est le cas avec sa projection actuelle, sur la théorie qu'une reprojection est un changement significatif aux données etERDDAP™ne veut pas être impliqué dans des changements importants. En outre, les utilisateurs ultérieurs pourraient naïvement reprojecter les données, ce qui ne serait pas aussi bon que de faire une seule reprojection. (Donc, si leERDDAP™administrateur veut offrir les données dans une projection différente, amende; juste reprojecter les données hors ligne et offrir que comme un ensemble de données différent dansERDDAP. Beaucoup de jeux de données satellitaires sont offerts comme ce que la NASA appelle le niveau 2 (swath) et comme niveau 3 (Projection équitectangulaire) les versions.) QuandERDDAP™fait des cartes (directement ou viaWMSou KML) ,ERDDAP™ne propose actuellement que de faire des cartes avec la projection Equirectangular / plate carrée qui, heureusement, est acceptée par la plupart des programmes de cartographie.
Nous encourageonsERDDAP™administrateurs pour utiliser d'autres logiciels (NCO?Matlab? - Oui. Une carte d'identité ? ...?) pour reprojecter les données sur une (Projection equitectangulaire / plaque carrée) ou d'autres projections cylindriques et servir cette forme de donnéesERDDAP™comme un ensemble de données différent. Ceci est semblable à ce que les gens font lorsqu'ils convertissent les données de niveau 2 en données de niveau 3. Un tel outil estNCOqui offre des options d'extension pour le reconditionnement des données.
Nous espérons queERDDAP™disposera d'outils intégrés pour proposer des cartes avec d'autres projections à l'avenir. Nous espérons également avoir de meilleurs liens avec le monde SIG à l'avenir (autres que le courantWMSservice) . Il est terrible que dans ce monde « moderne », les liens entre les FC/DAPle monde et le monde SIG sont encore si faibles. Ces deux choses sont sur la liste To Do. (Si vous voulez aider, notamment avec la connexionERDDAP™pour MapServer, veuillez envoyer un courriel à Chris. John à noaa.gov .)
Types de données
ERDDAP™prend en charge les types de données suivants (les noms sont sensibles à la casse;'u'préfixe signifie "non signé"; le nombre de noms dans d'autres systèmes est le nombre de bits) :
octet
- octet a signé des valeurs entières avec une plage de -128 à 127. Dans d'autres systèmes, cela s'appelle parfois int8. Ceci est appelé "tinyint" par SQL et Cassandra. ERDDAP™convertitbooléende certaines sources (Par exemple, SQL et Cassandra) en octetsERDDAP™avec une valeur de 0 = faux, 1 = vrai et 127 =missing\_value.
uoctet
- uoctet a des valeurs entières non signées de 0 à 255. Dans d'autres systèmes, cela s'appelle parfois uint8.
courte
- courte a signé des valeurs entieres avec une plage de -32768 à 32767. Dans d'autres systèmes, cela s'appelle parfois int16. Ceci est appelé "smallint" par SQL et Cassandra.
ucourt
- ucourt a des valeurs entières non signées de 0 à 65535. Dans d'autres systèmes, cela s'appelle parfois uint16.
Int
- Int a signé des valeurs entières avec une plage de -2147483648 à 2147483647. Dans d'autres systèmes, cela s'appelle parfois int32. Ceci est appelé "entier"|numérique (?) " par SQL et "int" par Cassandra.
uint
- uint a des valeurs entières non signées de 0 à 4294967295. Dans d'autres systèmes, cela s'appelle parfois uint32.
longue
- longue a signé des valeurs entières avec une plage de -9223372036854775808 à 9223372036854775807. Dans d'autres systèmes, cela s'appelle parfois int64. Ça s'appelle "bigint"|numérique (?) " par SQL et "bigint" par Cassandra. Parce que de nombreux types de fichiers ne supportent pas les données longues, leur utilisation est découragée. Dans la mesure du possible, utiliser deux fois (voir ci-dessous) .
longue
- longue a des valeurs entières non signées de 0 à 18446744073709551615 Dans d'autres systèmes, cela s'appelle parfois uint64. Parce que de nombreux types de fichiers ne supportent pas les données ulong, leur utilisation est découragée. Dans la mesure du possible, utiliser deux fois (voir ci-dessous) .
flotteur
- flotteur est un flotteur IEEE 754 ayant une plage d'environ +/- 3.402823466e+38. Dans d'autres systèmes, c'est parfois appelé float32. C'est ce qu'on appelle|flotteur (?) |décimale (?) |numérique (?) "par SQL et "float" par Cassandra. La valeur spéciale NaN signifie Not-a-Number. ERDDAP™convertit les valeurs positives et négatives de l'infini en NaN.
double
- double est un IEEE 754 double avec une gamme d'environ +/- 1,7976931348623157E+308. Dans d'autres systèmes, c'est parfois appelé float64. Ceci est appelé "double précision"|flotteur (?) |décimale (?) |numérique (?) " par SQL et "double" par Cassandra. La valeur spéciale NaN signifie Not-a-Number. ERDDAP™convertit les valeurs positives et négatives de l'infini en NaN.
Char
- Char est un seul, 2-octets (16 bits) caractère Unicode UCS-2allant de\u0000 (#0) par\uffff (#65535) . \uffff'sa définition est non-a-Caracter, analogue à une double valeur de NaN. L'utilisation de char est découragée parce que de nombreux types de fichiers ne prennent pas en charge les chars ou supportent seulement les chars de 1-octet (voir ci-dessous) . Envisagez plutôt d'utiliser String. Les utilisateurs peuvent utiliser des variables char pour faire des graphiques.ERDDAP™convertira les caractères en leur numéro de code Unicode, qui peut être utilisé comme données numériques.
Chaîne
- Chaîne est une séquence de 0 ou plus, 2-octets (16 bits) Unicode UCS-2 caractères. ERDDAP™utilise/interprète une chaîne 0-longueur comme une valeur manquante.ERDDAP™ne supporte pas une vraie chaîne null. La longueur maximale théorique des cordes est de 2147483647 caractères, mais il y a probablement différents problèmes dans différents endroits même avec des cordes un peu plus courtes. UtilisationERDDAP's String pour le caractère de SQL, varchar, variable de caractère, binaire, varbinaire, intervalle, tableau, multiset, xml, et tout autre type de données de base de données qui ne s'adapte pas proprement à aucun autreERDDAP™type de données. UtilisationERDDAP's String pour le "texte" de Cassandra et tout autre type de données Cassandra qui ne s'adapte pas proprement à aucun autreERDDAP™type de données.
AvantERDDAP™v2.10,ERDDAP™n'a pas supporté les types entiers non signés à l'interne et a offert un soutien limité dans ses lecteurs de données et les auteurs.
Limites des types de données
Vous pouvez penser àERDDAP™en tant que système qui possède des ensembles de données virtuels et qui fonctionne en lisant les données de la source d'un ensemble de données dans un modèle de données interne et en écrivant des données à divers services (par exemple,(OPeN)DAP,WMS) et types de fichiers en réponse aux demandes des utilisateurs.
- Chaque lecteur d'entrée prend en charge un sous-ensemble des types de données quiERDDAP™soutien. Donc, lire les données dansERDDAPLes structures de données internes ne posent pas de problème.
- Chaque auteur de sortie prend également en charge un sous-ensemble de types de données. C'est un problème parce queERDDAPdoit presser, par exemple, les données longues dans les types de fichiers qui ne prennent pas en charge les données longues.
Voici les explications des limitations (ou aucun) de divers auteurs et commentERDDAP™s'occupe des problèmes. Ces complications font partie intégrante deERDDAPL'objectif de rendre les systèmes disparates interopérables.
ASCII
- ASCII (.csv,.tsv, etc.) fichiers texte -
-
Toutes les données numériques sont écrites via sa représentation en chaîne (avec des valeurs de données manquantes apparaissant comme des chaînes de longueur 0) .
-
Bien queERDDAP™écrit des valeurs longues et ulonges correctement aux fichiers texte ASCII, de nombreux lecteurs (p.ex. programmes de tableurs) ne peut pas traiter correctement les valeurs longues et ulonges et les convertir en double valeurs (avec perte de précision dans certains cas) .
-
Les données Char et String sont écrites via JSON Strings, qui gère tous les caractères Unicode (notamment, les caractères "inhabituels" au-delà de ASCII #127, par exemple, le caractère Euro apparaît comme "\u20ac") .
-
JSON
- JSON (.json,.jsonlCSV, etc.) fichiers texte -
- Toutes les données numériques sont écrites via sa représentation en chaîne.
- Les données Char et String sont écrites sous forme de chaînes JSON, qui gèrent tous les caractères Unicode (notamment, les caractères "inhabituels" au-delà de ASCII #127, par exemple, le caractère Euro apparaît comme "\u20ac") .
- Les valeurs manquantes pour tous les types de données numériques apparaissent comme nulles.
.nc3 fichiers
- .nc3 fichiers ne supportent pas nativement les types de données entiers non signés. Avant la v1.9 des FC, elles n'appuyaient pas les types entiers non signés. Pour gérer ça,ERDDAP™2.10+ suit la norme NUG et ajoute toujours un attribut "\_Unsigned" avec une valeur de "true" ou "faux" pour indiquer si les données proviennent d'une variable non signée ou signée. Tous les attributs entiers sont écrits comme attributs signés (Par exemple, octet) avec des valeurs signées (par exemple, un ubyteactual\_rangeattribut avec des valeurs 0 à 255, apparaît comme un attribut octet avec des valeurs 0 à -1 (l'inverse de la valeur de complément des deux de la valeur hors gamme). Il n'y a pas de moyen facile de savoir quels attributs entiers (signés) doivent être lus comme attributs non signés.ERDDAP™prend en charge l'attribut "\_Unsigned" lorsqu'il lit.nc3 dossiers.
- .nc3 fichiers ne supportent pas les types de données longs ou longs.ERDDAP™traite avec cela en les convertissant temporairement en deux variables. Les doubles peuvent représenter exactement toutes les valeurs jusqu'à +/- 9 007,199,254,740,992 C'est-à-dire 253. C'est une solution imparfaite.Unidatarefuse de faire une mise à niveau mineure à.nc3 pour résoudre ce problème et les problèmes connexes, citant.nc4 (un changement majeur) comme la solution.
- La spécification des FC (avant v1.9) dit qu'il prend en charge un type de données char, mais il n'est pas clair si char n'est destiné que comme les éléments de construction de tableaux char, qui sont effectivement des cordes. Les questions posées à leur liste de diffusion n'ont donné que des réponses confuses. En raison de ces complications, il est préférable d'éviter les variables char dansERDDAP™et d'utiliser les variables String dans la mesure du possible.
- Traditionnellement,.nc3 fichiers supportés uniquement les chaînes avec ASCII-encodé (7 bits, #0 - #127) caractères. NUCEAU (etERDDAP) étendre cette (commençant ~2017) en incluant l'attribut "\_Encoding" avec une valeur de "ISO-8859-1" (une extension d'ASCII qui définit les 256 valeurs de chaque caractère de 8 bits) ou "UTF-8" pour indiquer comment les données de la chaîne sont encodées. D'autres codages peuvent être légaux mais sont découragés.
.nc4 fichiers
- .nc4 fichiers supportent tous lesERDDAPles types de données.
Fichiers CCNSV
Les fichiers CCNSV 1.0 ne supportent pas les types de données entiers non signés. Fichiers NCCSV 1.1+prend en charge tous les types de données entiers non signés.
DAP
- (OPeN)DAP (.das, .dds, .asc fichiers ASCII, et .dods fichiers binaires) - Oui.
- (OPeN)DAPshort, ushort, int, uint, flotteur et double valeurs correctement.
- (OPeN)DAPa un type de données "octet" qu'il définit comme non signé, alors que historiquement, THREDS etERDDAP™ont traité "octet" comme signé dans leur(OPeN)DAPservices. Pour mieux gérer ça,ERDDAP™2.10+ suit la norme NUG et ajoute toujours un attribut "\_Nonsigné" avec une valeur de "vrai" ou "faux" pour indiquer si les données sont ce queERDDAP™appels octet ou ubyte. Tous les attributs d'octet et d'octet sont écrits comme attributs d'octet avec des valeurs signées (p. ex., un octetactual\_rangeattribut avec des valeurs 0 à 255, apparaît comme un attribut octet avec des valeurs 0 à -1 (l'inverse de la valeur de complément des deux de la valeur hors gamme). Il n'y a pas de moyen facile de savoir quels attributs "octets" doivent être lus comme attributs uoctets.
- (OPeN)DAPne supporte pas les longs signés ou non signés.ERDDAP™traite avec cela en les convertissant temporairement en deux variables et attributs. Les doubles peuvent représenter exactement toutes les valeurs jusqu'à 9 007,199,254,740,992 C'est-à-dire 253. C'est une solution imparfaite.OPeNDAP (l ' organisation) refuse de faire une mise à niveau mineure àDAP2.0 pour résoudre ce problème et les problèmes connexes, citantDAP4 (un changement majeur) comme la solution.
- Parce que(OPeN)DAPn'a pas de type de données char distinctes et supporte techniquement seulement les caractères ASCII à 1 octet (#0 - #127) dans Strings, les variables de données char apparaîtront comme des Strings 1-caractère-long dans(OPeN)DAP.das, .dds, et .dods réponses.
- Techniquement,(OPeN)DAPspécification ne prend en charge que les chaînes de caractères codés ASCII (#0 - #127) . NUCEAU (etERDDAP) étendre cette (commençant ~2017) en incluant l'attribut "\_Encoding" avec une valeur de "ISO-8859-1" (une extension d'ASCII qui définit les 256 valeurs de chaque caractère de 8 bits) ou "UTF-8" pour indiquer comment les données de la chaîne sont encodées. D'autres codages peuvent être légaux mais sont découragés.
Type de données Commentaires
- En raison de la faible prise en charge des données longues, ulonges et char dans de nombreux types de fichiers, nous décourageons l'utilisation de ces types de données dansERDDAP. Lorsque c'est possible, utilisez le double au lieu du long et du long, et utilisez String au lieu du char.
- Métadonnées - Parce que(OPeN)DAPLes réponses .das et .dds ne prennent pas en charge les attributs ou types de données longs ou ulongs (et les montrer en double) , vous pouvez plutôt vouloir utiliserERDDAPLa représentation tabulaire des métadonnées, telle qu'elle est présentée danshttp.../erddap/ Informations / datasetID Page web .html (par exemple, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (que vous pouvez également obtenir dans d'autres types de fichiers, par exemple, .csv,.htmlTable,.itx,.json,.jsonlCSV1,.jsonlCSV,.jsonlKVP,.mat,.nc,.nccsv,.tsv,.xhtml) ou les.nccsvRéponse aux métadonnées (par exemple, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata bien que.nccsvLes métadonnées ne sont disponibles que pour les ensembles de données tabulaires) , qui prennent en charge tous les types de données (notamment, long, long et char) .
Fichiers multimédias
Toutes les données ne sont pas des tableaux de nombres ou de texte. Certains ensembles de données comprennent des fichiers multimédias, tels que des fichiers d'image, audio et vidéo.ERDDAP™a quelques fonctionnalités spéciales pour faciliter l'accès des utilisateurs aux fichiers multimédias. C'est un processus en deux étapes :
- Rendre chaque fichier accessible via sa propre URL, via un système qui prend en charge les requêtes de plage d'octets. La façon la plus facile de le faire est de mettre les fichiers dans un répertoire quiERDDAP™a accès à. (Si elles sont dans un conteneur comme un.zipfichier, les décompresser, bien que vous pourriez vouloir offrir.zipfichier pour les utilisateurs aussi.) Alors, faites uneEDDTableFromFileNamesdataset pour rendre ces fichiers accessibles viaERDDAP™, notamment parERDDAP's"files"système.
Tous les fichiers rendus accessibles via EDDTableFromFileNames etERDDAP's"files"appui au systèmerequêtes de plage d'octets. Normalement, quand un client (Par exemple, un navigateur) fait une requête à une URL, il obtient le fichier entier comme la réponse. Mais avec une requête de plage d'octets, la requête spécifie une gamme d'octets du fichier, et le serveur ne renvoie que ces octets. Ceci est pertinent ici parce que les lecteurs audio et vidéo dans les navigateurs ne fonctionnent que si le fichier peut être consulté via des requêtes de plage d'octets.
Facultatif: Si vous avez plus d'un ensemble de données avec des fichiers multimédias associés, vous pouvez faire seulement un EDDTableFromFileNames qui a un sous-dossier pour chaque groupe de fichiers. L'avantage est que lorsque vous voulez ajouter de nouveaux fichiers multimédias pour un nouvel ensemble de données, tout ce que vous avez à faire est de créer un nouveau dossier et de mettre les fichiers dans ce dossier. Le dossier et les fichiers seront automatiquement ajoutés à l'ensemble de données EDDTableFromFileNames.
- Facultatif: Si vous avez un ensemble de données qui contient des références à des fichiers multimédias, ajoutez-le àERDDAP. Par exemple, vous pouvez avoir un fichier .csv avec une ligne pour chaque fois que quelqu'un a vu une baleine et une colonne qui comprend le nom d'un fichier image lié à cette observation. Si le nom du fichier image est juste le nom du fichier, par exemple, Img20141024T192403Z, pas une URL complète, alors vous devez ajouterfichierAccessBase Url et/ou fichierAccessSuffixattributs aux métadonnées pour celadataVariablequi spécifie la baseURL et suffixe pour ces noms de fichiers. Si vous avez rendu les fichiers accessibles via EDDTableFromFileNames, l'URL sera dans le formulaire baseUrl /erddap/files/ datasetID / Par exemple,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
S'il y a.zipou autre fichier conteneur avec tous les fichiers multimédias liés à une variable de données, nous vous recommandons également de rendre ce fichier accessible aux utilisateurs (Voir étape 1 ci-dessus) et l'identifier avec unfichierAccessArchive Autresattribut.
\[À partir deERDDAP™v1.82\]Si vous faites la première étape ci-dessus (ou les deux étapes) , alors quand un utilisateur voit leERDDAP™ "files"système pour cet ensemble de données (ou demande de voir un sous-ensemble de données via un.htmlTabledemande, si vous avez fait la deuxième étape) ,ERDDAP™affichera une icône '?' à gauche du nom de fichier. Si l'utilisateur survole cette icône, il verra un popup montrant l'image, un lecteur audio ou un lecteur vidéo. Les navigateurs supportent seulement un nombre limité de types de
- image (habituellement .gif, .jpg et .png) ,
- audio (habituellement .mp3, .ogg et .wav) et
- fichiers vidéo (habituellement .mp4, .ogv, et . webm) .
Le support varie selon les versions de différents navigateurs sur différents systèmes d'exploitation. Donc, si vous avez le choix du type de fichier à offrir, il est logique d'offrir ces types.
Ou, si un utilisateur clique sur le nom de fichier affiché sur unERDDAP™page web, leur navigateur affichera l'image, audio ou fichier vidéo comme une page Web séparée. Ceci est surtout utile pour voir une très grande image ou vidéo à l'échelle de plein écran, au lieu d'un popup.
Travailler avec les fichiers AWS S3
Service Web Amazon (AWS) est un vendeur decalcul en nuageservices.S3est un système de stockage d'objets offert par AWS. Au lieu du système hiérarchique des répertoires et des fichiers d'un système de fichiers traditionnel (comme un disque dur dans votre PC) , S3 offre juste des "buckets" qui tiennent des "objets" (Nous les appellerons"files") .
Pour les fichiers ASCII (Par exemple, .csv) ,ERDDAP™peut fonctionner avec les fichiers dans les seaux directement. La seule chose que vous devez faire est de spécifier le<fichierDir> pour l'ensemble de données utilisant un format spécifique pour le seau AWS, p.ex., https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . Vous ne devriez pas utiliser<cacheFromUrl> . Voir ci-dessous pour plus de détails.
Mais pour les fichiers binaires (Par exemple,.nc, .grib, .bufr et.hdffichiers) , vous devez utiliser le<cacheFromUrl> système décrit ci-dessous.ERDDAP, netcdf-java (quiERDDAP™utilise pour lire les données de ces fichiers) , et d'autres logiciels de données scientifiques sont conçus pour travailler avec des fichiers dans un système de fichiers traditionnel qui offreniveau de blocaccès aux fichiers (qui permet de lire des morceaux d'un fichier) , mais S3 offre seulementniveau de fichier (objet) accès aux fichiers (qui permet seulement de lire le fichier entier) . AWS offre une alternative à S3,Magasin de blocs élastiques (EBS) ), qui prend en charge l'accès de niveau de bloc aux fichiers mais il est plus cher que S3, donc il est rarement utilisé pour le stockage en vrac de grandes quantités de fichiers de données. (Donc quand les gens disent stocker des données dans le cloud (S3) est bon marché, c'est généralement une comparaison pommes-oranges.)
S3 Boucles
Le contenu d'un seau. Les clés. Objets, délimiteurs.
Techniquement, les seaux S3 ne sont pas organisés dans une structure hiérarchique de fichiers comme un système de fichiers sur un ordinateur. Au lieu de cela, les seaux ne contiennent que des "objets" (fichiers) , dont chacun a une "clé" (un nom) . Un exemple de clé dans ce seau noaa-goes17 est
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
L'URl correspondant pour cet objet est
AWS prend en charge une petite variation dans la façon dont cette URL est construite, maisERDDAP™exige ce format spécifique:
https://bucketName.s3.region.amazonaws.com/key
Il est courant, comme dans cet exemple, de faire ressembler les noms de clés à un chemin hiérarchique plus un nom de fichier, mais techniquement ils ne le sont pas. Comme elle est commune et utile,ERDDAP™traite les clés avec /'s comme s'il s'agissait d'un chemin hiérarchique plus nom de fichier, et cette documentation les désignera comme tels. Si les clés d'un seau n'utilisent pas / (par exemple, une clé comme
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s2018052247575), alorsERDDAP™traitera l'ensemble de la clé comme un long nom de fichier.
Buckets privés vs publics -- L'administrateur du seau S3 peut rendre le seau et son contenu public ou privé. Si public, tout fichier dans le seau peut être téléchargé par quiconque utilisant l'URL du fichier. Amazon a uneOuvrir les donnéesprogramme qui héberge des ensembles de données publics (y compris les donnéesNOAA, NASA, et USGS) gratuitement et ne charge personne de télécharger les fichiers de ces seaux. Si un seau est privé, les fichiers dans le seau ne sont accessibles qu'aux utilisateurs autorisés et AWS facture des frais (généralement payés par le propriétaire du seau) pour télécharger des fichiers sur un ordinateur S3 non-AWS.ERDDAP™peut travailler avec des données dans des seaux publics et privés.
Pouvoirs
Pour faire en sorte queERDDAP™peut lire le contenu des seaux privés, vous avez besoin d'identifiants AWS et vous devez stocker un fichier d'identifiants dans le lieu standard ainsiERDDAP™peut trouver l'information. Voir le SDK AWS pourJava2.x documentation:Définir les identifiants par défaut. (L'option pour stocker les valeurs commeJavaparamètres de ligne de commande dans\[Tomcat\]/bin/setenv.sh peut être une bonne option.)
AWS /files/
- /files/ système -- LesERDDAP™ /files/ systèmepermet aux utilisateurs de télécharger les fichiers sources pour un ensemble de données. Nous vous recommandons d'activer cette option pour tous les ensembles de données avec des fichiers source car de nombreux utilisateurs veulent télécharger les fichiers source originaux.
- Si les fichiers sont dans un seau S3 privé, la demande de l'utilisateur de télécharger un fichier sera traitée parERDDAP™, qui lira les données du fichier puis les transmettra à l'utilisateur, augmentant ainsi la charge sur votreERDDAP™, en utilisant la bande passante entrante et sortante, et en vous rendant (desERDDAP™administrateur) payer les frais d'évacuation des données à AWS.
- Si les fichiers sont dans un seau public S3, la demande de l'utilisateur de télécharger un fichier sera redirigé vers l'URL S3 AWS pour ce fichier, de sorte que les données ne passeront pas parERDDAP™, réduisant ainsi la charge surERDDAP. Et si les fichiers sont dans une Amazon Open Data (gratuit) Seau public, puis vous (desERDDAP™administrateur) n'aura pas à payer de frais d'évacuation de données à AWS. Ainsi, il y a un grand avantage à servir les données du public (non privés) S3 seaux, et un énorme avantage pour servir les données d'Amazon Open Data (gratuit) Des seaux.
ERDDAP™et AWS S3 Buckets
ERDDAP™et AWS S3 Buckets
Heureusement, après beaucoup d'efforts,ERDDAP™a un certain nombre de fonctionnalités qui lui permettent de traiter les problèmes inhérents à travailler avec l'accès au niveau de bloc de S3 aux fichiers d'une manière raisonnablement efficace:
- \[Avertissement : Travailler avec les seaux AWS S3 est beaucoup de travail supplémentaire. AWS est un vaste écosystème de services et de caractéristiques. Il y a beaucoup à apprendre. Il faut du temps et des efforts, mais c'est faisable. Soyez patient et vous allez faire fonctionner les choses. Demander de l'aide
(Documentation relative aux systèmes d'alerte rapide, des sites web commeDépassement de la pile, et les
ERDDAP™Options de soutien) si / quand vous êtes coincé.\]
- Il peut même être difficile de trouver la structure du répertoire et les noms des fichiers dans un seau S3.ERDDAP™a une solution pour ce problème: EDDTableFromFileNames a une spéciale\\\*deOnTheFlyoption qui vous permet de faire un jeu de données EDDTableFromFileNames qui permet aux utilisateurs de parcourir le contenu d'un seau S3 (et télécharger des fichiers) via les ensembles de données"files"option. Il y a uneexemple ci-dessous.
- ERDDAP™peut lire des données defichiers de données compressés externes, donc il est bon si les fichiers sur S3 sont stockés comme.gz,.gzip,.bz2, .Z, ou d'autres types de fichiers de données compressés externes, qui peuvent considérablement (2 - 20 X) réduire les coûts de stockage des fichiers. Il n'y a souvent pas de pénalité pour l'utilisation de fichiers compressés externes, puisque le temps économisé en transférant un fichier plus petit de S3 àERDDAPenviron équilibre le temps supplémentaire nécessaire pourERDDAP™pour décompresser le fichier. Pour utiliser cette fonctionnalité, il suffit de s'assurer que l'ensemble de données<fichierNomRegex> permet le type de fichier compressé (Par exemple, en ajoutant (|.gz) à la fin du régex) .
- Pour le cas le plus fréquent, où vous avezERDDAP™installé sur votre PC pour le test / développement et où l'ensemble de données a des fichiers de données binaires qui sont stockés comme objets dans un seau S3, une approche pour obtenir l'ensemble de données dansERDDAP™est:
-
Créez un répertoire sur votre PC pour tenir quelques fichiers de données de test.
-
Téléchargez deux fichiers de données depuis la source vers le répertoire que vous venez de créer.
-
UtilisationGénérer des ensembles de donnéesXmlpour générer le morceau dedatasets.xmlpour l'ensemble de données basé sur les deux fichiers de données locaux.
-
Vérifiez que ce jeu de données fonctionne comme désiré avecDasDdset/ou votre localERDDAP.
Les étapes suivantes font une copie de cet ensemble de données (qui obtiendra les données du seau S3) sur un publicERDDAP.
-
Copier le morceau dedatasets.xmlpour l'ensemble de donnéesdatasets.xmlpour le publicERDDAP™qui servira les données.
-
Créer un répertoire sur le publicERDDAPLe disque dur local pour tenir un cache de fichiers temporaires. Le répertoire n'utilisera pas beaucoup d'espace disque (voir cacheSizeGB ci-dessous) .
-
Modifier la valeur de l'ensemble de données<tag fileDir> de sorte qu'il pointe vers le répertoire que vous venez de créer (même si le répertoire est vide) .
-
Ajouter uncacheFromUrltag qui spécifie le nom de l'ensemble de données et préfixe optionnel (i.e., répertoire) dans le casAws S3 URL Format queERDDAP™nécessite.
-
Ajouter un [<cacheSizeGB>] (#cachefromurl) tag vers le xml de l'ensemble de données (Par exemple, 10 est une bonne valeur pour la plupart des ensembles de données) à direERDDAP™pour limiter la taille du cache local (Ne cachez pas tous les fichiers distants) .
-
Voir si cela fonctionne dans le publicERDDAP. Notez que la première foisERDDAP™charge l'ensemble de données, il faudra beaucoup de temps pour charger, parce queERDDAP™doit télécharger et lire tous les fichiers de données.
-
Si l'ensemble de données est une énorme collection de fichiers de données maillés, cela prendra beaucoup de temps et ne sera pas pratique. Dans certains cas, pour les fichiers de données maillés,ERDDAP™peut extraire les informations nécessaires (Par exemple, le point de temps pour les données dans un fichier de données maillées) du nom du fichier et éviter ce problème. VoirAgrégation par Noms des fichiers.
- Facultatif (mais surtout pour les ensembles de données EDDTableFromFiles) , vous pouvez ajouter unnThreadstag à l'ensemble de données à indiquerERDDAPutiliser plus d'un thread pour répondre à la demande de données d'un utilisateur. Cela minimise les effets du retard qui survient lorsqueERDDAP™lit les fichiers de données (télécommande) AWS S3 godets dans le cache local et (Peut-être) les décompresser.
AWS S3 Données ouvertes
Dans le cadreNOAA'sProgramme de Big Data,NOAAa des partenariats avec cinq organisations, y compris AWS, «pour explorer les avantages potentiels de stocker des copies d'observations clés et des sorties de modèles dans le Cloud pour permettre l'informatique directement sur les données sans nécessiter de distribution ultérieure». AWS inclut les ensembles de données qu'il obtient deNOAAdans le cadre de son programme d'accès public à une vaste collection deOuvrir les données sur AWS S3de n'importe quel ordinateur, que ce soit une instance de calcul Amazon (un ordinateur loué) sur le réseau AWS ou votre propre PC sur n'importe quel réseau. L'exemple ci-dessous suppose que vous travaillez avec un ensemble de données accessible au public.
Accès aux fichiers dans un seau AWS S3
Pour un seau de données S3 privé, le propriétaire du seau doit vous donner accès au seau. (Voir la documentation AWS.)
Dans tous les cas, vous aurez besoin d'un compte AWS parce que le SDK AWS pourJava (quiERDDAP™utilise pour récupérer des informations sur le contenu d'un seau) nécessite des identifiants de compte AWS. (plus sur ceci ci-dessous)
ERDDAP™ne peut accéder aux seaux AWS S3 que si vous spécifiez le [<cacheFromUrl>] (#cachefromurl) (ou<fileDir>) dans un format spécifique:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
où
- Le nom du seau est la forme courte du nom du seau, p.ex. noaa-goes17 .
- La région aws, par exemple, nous-est-1, est de la colonne "Région" dans l'un des tableaux dePoints de service AWSoù le seau est situé.
- Le préfixe est facultatif. Si elle est présente, elle doit se terminer par'/'.
Par exemple, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Ce format d'URL est l'une des recommandations AWS S3 : voirAccès à un seauetcette description des préfixes.ERDDAP™exige que vous combinez l'URL du seau et le préfixe optionnel en une URL afin de spécifier le<cacheFromUrl> (ou<fichierDir>) où les fichiers sont situés.
Tester les seauts publics AWS S3
Pour les seaux publics, vous pouvez et devriez tester l'URL du seau du répertoire AWS S3 dans votre navigateur, par exemple, https://noaa-goes17.s3.us-east-1.amazonaws.com Si l'URL du seau est correcte et appropriée pourERDDAP, il retournera un document XML qui a (partielle) liste du contenu de ce seau. Malheureusement, l'URL complète (i.e., URL seau plus préfixe) quiERDDAP™veut pour un ensemble de données donné ne fonctionne pas dans un navigateur. AWS n'offre pas de système pour parcourir la hiérarchie d'un seau facilement dans votre navigateur. (Si c'est incorrect, veuillez envoyer un courriel à Chris. John à noaa.gov. Sinon, Amazon, s'il vous plaît ajouter un support pour cela!)
Affichage du contenu d'un seau
Les seaux S3 contiennent souvent quelques catégories de fichiers, dans quelques pseudo-sous-répertoires, qui pourraient devenir un couple deERDDAP™les ensembles de données. Pour faire leERDDAP™datasets, vous devez connaître le répertoire de départ pour<cacheFromUrl> (ou<fileDir>) et le format des noms de fichiers qui identifient ce sous-ensemble de fichiers. Si vous essayez de voir l'intégralité du contenu d'un seau dans un navigateur, S3 vous montrera les 1000 premiers fichiers, ce qui est insuffisant. Actuellement, la meilleure façon pour vous de voir tout le contenu d'un seau est de faire unEDDTableFromFileNamesensemble de données (sur votre PCERDDAP™et/ou sur votre publicERDDAP) , qui vous permet également de parcourir facilement la structure du répertoire et de télécharger des fichiers. Les<fileDir> pour cela sera l'URL que vous avez faite ci-dessus, par exemple, https://noaa-goes17.s3.us-east-1.amazonaws.com .\[Pourquoi AWS S3 n'offre-t-il pas un moyen rapide et facile à quiconque de le faire sans compte AWS ?\]Notez que lorsque je le fais sur mon PC sur un réseau non-Amazon, il semble qu'Amazon ralentisse la réponse à un filet (environ 100 (?) fichiers par morceau) après les premiers morceaux (de 1000 fichiers par morceau) sont téléchargés. Puisque les seaux peuvent avoir un grand nombre de fichiers (noaa-goes17 a 26 millions) , obtenir tout le contenu d'un seau peut prendre EDDTableFromFileNames plusieurs heures (Par exemple, 12 !) pour finir.\[Amazon, c'est vrai ?!\]
Faire une table EDD FromFileNames Dataset avec un seau AWS S3
Si vous avez un nom de seau, mais n'avez pas déjà une liste de fichiers dans le seau S3 ou le préfixe qui identifie l'emplacement des fichiers pertinents dans le seau, utilisez les instructions ci-dessous pour faire un jeu de données EDDTableFromFileNames afin que vous puissiez parcourir la hiérarchie de répertoire du seau S3 viaERDDAP's"files"système.
- Ouvrir un compte AWS ERDDAP™utilise lesAWS SDK pourJavapour obtenir des informations de seau de AWS, donc vous devezcréer et activer un compte AWS. C'est un gros boulot, avec beaucoup de choses à apprendre.
- Placez vos lettres de créances AWS oùERDDAP™peut les trouver. Suivez les instructionsCréer des titres de compétence AWS et une région pour le développementdoncERDDAP™ (spécifiquement, le SDK AWS pourJava) sera en mesure de trouver et d'utiliser vos identifiants AWS. SiERDDAP™ne trouve pas les références, vous verrez un
- Oui. Argument illégalException: fichier de profil ne peut pas être une erreur nulle dansERDDAPLe fichier log.txt.
Conseil pour Linux et Mac OS: le fichier d'identification doit être dans le répertoire personnel de l'utilisateur qui exécute Tomcat (etERDDAP) (pour ce paragraphe, nous supposerons user=tomcat) dans un fichier appelé ~/.aws/credentials . Ne supposez pas que ~ est /home/tomcat -- utilise réellement cd ~ pour savoir où le système d'exploitation pense ~ pour user=tomcat est. Créer le répertoire s'il n'existe pas. Aussi, après avoir mis le fichier d'identification en place, assurez-vous que l'utilisateur et le groupe pour le fichier sont tomcat, puis utilisez les identifiants chmod 400 pour vous assurer que le fichier est en lecture seule pour user=tomcat.
- Créer l'URL du seauformat quiERDDAP™nécessite, par exemple, https://noaa-goes17.s3.us-east-1.amazonaws.com et (pour les seaux publics) testez-le dans un navigateur pour vous assurer qu'il retourne un document XML qui a une liste partielle du contenu de ce seau.
- UtilisationGénérer des ensembles de donnéesXmlcréer unEDDTableFromFileNamesensemble de données:
-
Pour le répertoire de démarrage, utilisez cette syntaxe : \\\ deOnTheFly, votreBucketUrl* par exemple, \\\*deOnTheFly, https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
Nom du fichier Regex ? .\*
-
Récursif ? vrai
-
recharger Tous les NMinutes ? 10080
-
l'institution?NOAA
-
Résumé ? rien (ERDDAP™créera automatiquement un résumé décent.)
-
titre ? rien (ERDDAP™créera automatiquement un titre décent.) Comme d'habitude, vous devez éditer le XML résultant pour vérifier l'exactitude et faire des améliorations avant le morceau de datasets l'utiliser dansdatasets.xml.
-
- Si vous suivez les instructions ci-dessus et chargez l'ensemble de donnéesERDDAP, vous avez créé un jeu de données EDDTableFromFiles. À titre d'exemple, et pour faciliter la navigation et le téléchargement des fichiers à partir des seaux AWS Open Data, nous avons créé des ensembles de données EDDTableFromFileNames (voir la liste à
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) pour presque tous lesAWS S3 Seaux de données ouverts.
\[Les quelques seaux que nous n'avons pas inclus non plus ont un grand nombre de fichiers dans le répertoire racine (plus que ce qui peut être téléchargé dans un délai raisonnable) , ou ne permettent pas l'accès public (Ils ne sont pas tous censés être publics ?) , ou sont des seaux de paiement du demandeur (Par exemple, Sentinel) .\]
Si vous cliquez sur le"files"lien pour l'un de ces ensembles de données, vous pouvez parcourir l'arborescence de répertoire et les fichiers dans ce seau S3. À cause du chemin\\\*fromOnTheFly EDDTableFromFiles fonctionne, ces listes de répertoires sont toujours parfaitement à jour carERDDAP™Je les fais voler. Si vous cliquez sur l'arborescence du répertoire vers un nom de fichier réel et cliquez sur le nom du fichier,ERDDAP™redirigera votre demande vers AWS S3 afin que vous puissiez télécharger le fichier directement depuis AWS. Vous pouvez ensuite inspecter ce fichier.
Des problèmes ? Si votre EDDTableFromFiles ne se charge pas dansERDDAP™ (ou DasDds) , cherchez un message d'erreur dans le fichier log.txt. Si vous voyez un
- Oui. Argument illégalException: fichier de profil ne peut pas être une erreur nulle, le problème est que le SDK AWS pourJava (utilisés parERDDAP) ne trouve pas le dossier d'identification. Voir les instructions de vérification des pouvoirs ci-dessus.
Il est regrettable que AWS ne permet pas simplement aux gens d'utiliser un navigateur pour voir le contenu d'un seau public.
Alors tu peux faireERDDAP™ensembles de données qui donnent aux utilisateurs accès aux données dans les fichiers.
Voir les instructionsERDDAP™et S3 (ci-dessus) .
Pour l'échantillon EDDTableFromFileNames datas ensemble que vous avez fait ci-dessus, si vous faites un petit tour avec le répertoire et les noms de fichiers dans l'arborescence des répertoires, il devient clair que les noms de répertoires de haut niveau (Par exemple, ABI-L1b-RadC) correspondent à ceERDDAP™appellerait des ensembles de données séparés. Le seau avec lequel vous travaillez peut être similaire. Vous pourriez ensuite continuer à créer des ensembles de données séparés dansERDDAP™pour chacun de ces ensembles de données, en utilisant, par exemple,
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
en tant que<cacheFromUrl>. Malheureusement, pour cet exemple particulier, les ensembles de données du seau semblent tous être des ensembles de données de niveau 1 ou 2, quiERDDAP™ n'est pas particulièrement bon à, parce que l'ensemble de données est une collection plus compliquée de variables qui utilisent différentes dimensions.
Fichiers NcML
Les fichiers NcML vous permettent de spécifier les modifications à la volée à une ou plusieurs sources originalesNetCDF (v3 ou v4) .nc, .grib, .bufr, ou.hdf (v4 ou v5) fichiers, et puis avoirERDDAP™traiter.ncfichiers ml comme les fichiers source.ERDDAP™les ensembles de données accepteront.ncfichiers ml chaque fois.ncles dossiers sont attendus. Les fichiers NcML DOIVENT avoir l'extension.ncml. VoirUnidataDocumentation sur le NcML. NcML est utile parce que vous pouvez faire certaines choses avec elle (par exemple, apporter différentes modifications à différents fichiers dans une collection, y compris l'ajout d'une dimension avec une valeur spécifique à un fichier) Tu ne peux pas faire avecERDDAP'sdatasets.xml.
- Changements à une.ncle dernier temps modifié du fichier ml fera que le fichier sera rechargé chaque fois que l'ensemble de données est rechargé, mais des modifications au sous-jacent.ncles fichiers de données ne seront pas directement remarqués.
- Conseil: NcML est\*Très\*sensible à l'ordre de certains éléments du fichier NcML. Pensez à NcML comme spécifiant une série d'instructions dans l'ordre spécifié, dans l'intention de changer les fichiers source (l'état au début/haut du fichier NcML) dans les fichiers de destination (l'état à la fin/au bas du fichier NcML) .
Une alternative au NcML estNetCDFOpérateurs (NCO) . La grande différence est que NcML est un système pour faire des changements à la volée (donc les fichiers sources ne sont pas modifiés) , alors queNCOpeut être utilisé pour apporter des modifications à (ou de nouvelles versions) les dossiers. Les deuxNCOet NcML sont très, très flexibles et vous permettent de faire presque tout changement que vous pouvez penser aux fichiers. Pour les deux, il peut être difficile de comprendre exactement comment faire ce que vous voulez faire -- vérifier le web pour des exemples similaires. Les deux sont des outils utiles pour préparer netCDF etHDFfichiers à utiliser avecERDDAP, notamment pour apporter des changementsERDDAPLe système de manipulation peut faire.
Exemple #1: Ajout d'une dimension temporelle avec une valeur unique Voici un.ncfichier ml qui crée une nouvelle dimension extérieure (durée, avec 1 valeur: 1041379200) et ajoute cette dimension à la variable pic dans le fichier A2003001.L3m\_DAY\_PIC\_pic\_4km.nc:
<netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'>
<variable name='time' type='int' shape='time' />
<aggregation dimName='time' type='joinNew'>
<variableAgg name='pic'/>
<netcdf location='A2003001.L3m\\_DAY\\_PIC\\_pic\\_4km.nc' coordValue='1041379200'/>
</aggregation>
</netcdf>
Exemple 2 : Modifier une valeur temporelle existante Parfois la source.ncfichier a déjà une dimension temporelle et une valeur temporelle, mais la valeur est incorrecte (à vos fins) . Cette.ncfichier ml dit: pour le fichier de données nommé "" 19810825233030-NCEI...", pour la variable dimension"time", définissez l'attribut unit pour être 'secondes depuis 1970-01-01T00:00:00Z' et définissez la valeur temporelle pour être 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>
NetCDFOpérateurs (NCO)
"Les opérateurs netCDF (NCO) comprennent une douzaine de programmes autonomes en ligne de commande qui prennent netCDF\[v3 ou v4\],HDF \[v4 ou v5\],\[.grib, .bufr,\]et/ouDAPfichiers comme entrée, puis actionner (Par exemple, puiser de nouvelles données, calculer des statistiques, imprimer, hyperslab, manipuler des métadonnées) et affiche les résultats à l'écran ou aux fichiers en formats texte, binaire ou netCDF.NCOaide à l'analyse de données scientifiques maillées. Le style shell-command deNCOpermet aux utilisateurs de manipuler et d'analyser les fichiers de façon interactive, ou avec des scripts expressifs qui évitent certains survols d'environnements de programmation de niveau supérieur." (desNCOpage d'accueil) .
Une alternativeNCOestNcML. La grande différence est que NcML est un système pour faire des changements à la volée (donc les fichiers sources ne sont pas modifiés) , alors queNCOpeut être utilisé pour apporter des modifications à (ou de nouvelles versions) les dossiers. Les deuxNCOet NcML sont très, très flexibles et vous permettent de faire presque tout changement que vous pouvez penser aux fichiers. Pour les deux, il peut être difficile de comprendre exactement comment faire ce que vous voulez faire -- vérifier le web pour des exemples similaires. Les deux sont des outils utiles pour préparer netCDF etHDFfichiers à utiliser avecERDDAP, notamment pour apporter des changementsERDDAPLe système de manipulation peut faire.
Par exemple, vous pouvez utiliserNCOpour rendre les unités de la variable temporelle cohérente dans un groupe de fichiers où elles n'étaient pas cohérentes à l'origine. Ou, vous pouvez utiliserNCOà appliquerscale\_factoretadd\_offsetdans un groupe de fichiers oùscale\_factoretadd\_offsetont des valeurs différentes dans différents fichiers sources. (Ou, vous pouvez maintenant gérer ces problèmes enERDDAP™parEDDGridDeNcFilesNon emballé, qui est une variante deEDDGridDeNcFiles qui déballe les données emballées et standardise les valeurs de temps à un niveau bas afin de traiter avec une collection de fichiers qui ont différentsscale\_factors etadd\_offset, ou différentes unités de temps.)
NCOest un logiciel libre et ouvert qui utilise leGPL 3.0licence.
Exemple 1 : rendre les unités cohérentes
EDDGridFromFiles et EDDTable Des fichiers insistent pour que les unités d'une variable donnée soient identiques dans tous les fichiers. Si certains fichiers sont triviaux (non fonctionnellement) différent des autres (p. ex.
"secondes depuis 1970-01-01 00:00:00 UTC" versus
"seconds since 1970-01-01T00:00:00Z", tu pourrais utiliserNCO'sncatté. pour changer les unités de tous les fichiers à être identiques avec
nco/ncatted -a unités,temps,o,c,'secondes depuis 1970-01-01T00:00:00Z' \*.nc
\[Pour de nombreux problèmes comme ça dans EDDTableFrom... Fichiers datasets, vous pouvez maintenant utiliseruniformiser Quoi ?à direERDDAPpour standardiser les fichiers sources tels qu'ils sont lus dansERDDAP.\]
Limites à la taille d'un ensemble de données
Vous verrez de nombreuses références à "2 milliards" ci-dessous. Plus précisément, c'est une référence à 2 147 483 647 (231-1) , qui est la valeur maximale d'un entier signé 32 bits. Dans certains langages informatiques, par exempleJava (quiERDDAP™est écrit en) , c'est le type de données le plus important qui peut être utilisé pour de nombreuses structures de données (par exemple, la taille d'un tableau) .
Pour les valeurs de chaîne (par exemple, pour les noms de variables, les noms d'attributs, les valeurs d'attributs de chaîne et les valeurs de données de chaîne) , le nombre maximal de caractères par chaîneERDDAP™est ~2 milliards. Mais dans presque tous les cas, il y aura de petits ou grands problèmes si une corde dépasse une taille raisonnable (Par exemple, 80 caractères pour les noms de variables et les noms d'attributs, et 255 caractères pour la plupart des valeurs d'attributs chaîne et des valeurs de données) . Par exemple, les pages Web qui affichent de longs noms de variables seront maladroitement larges et de longs noms de variables seront tronqués si elles dépassent la limite du type de fichier de réponse.
Pour les ensembles de données maillés:
- Le nombre maximal deaxisVariables est de ~2 milliards. Le nombre maximal dedataVariables est de ~2 milliards. Mais si un jeu de données a > 100 variables, il sera lourd pour les utilisateurs à utiliser. Et si un jeu de données a >1 million de variables, votre serveur aura besoin de beaucoup de mémoire physique et il y aura d'autres problèmes.
- Taille maximale de chaque dimension (axisVariable) est ~2 milliards de valeurs.
- Je pense que le nombre maximal de cellules (le produit de toutes les dimensions) est illimité, mais il peut être ~9e18.
Pour les ensembles de données tabulaires:
- Le nombre maximal dedataVariables est de ~2 milliards. Mais si un jeu de données a > 100 variables, il sera lourd pour les utilisateurs à utiliser. Et si un jeu de données a >1 million de variables, votre serveur aura besoin de beaucoup de mémoire physique et il y aura d'autres problèmes.
- Nombre maximal de sources (par exemple, les fichiers) qui peut être agrégée est environ 2 milliards.
- Dans certains cas, le nombre maximal de lignes d'une source (par exemple, un fichier, mais pas une base de données) est ~2 milliards de lignes.
- Je ne pense pas qu'il y ait d'autres limites.
Pour les ensembles de données maillées et tabulaires, il y a des limites internes sur la taille du sous-ensemble qui peuvent être demandées par un utilisateur dans une seule requête (souvent liés à >2 milliards de quelque chose ou ~9e18 de quelque chose) , mais il est beaucoup plus probable qu'un utilisateur touche les limites spécifiques au type de fichier.
- NetCDFversion 3.ncles fichiers sont limités à 2 Go octets. (Si c'est vraiment un problème pour quelqu'un, prévenez-moi : Je pourrais ajouter le soutien pour leNetCDFversion 3.ncExtension 64 bits ouNetCDFLa version 4, qui augmenterait sensiblement la limite, mais pas infiniment.)
- Navigateurs planter après seulement ~500 Mo de données, doncERDDAP™limite la réponse à.htmlTabledemande à ~400 Mo de données.
- De nombreux programmes d'analyse de données ont des limites semblables (par exemple, la taille maximale d'une dimension est souvent ~2 milliards de valeurs) , donc il n'y a aucune raison de travailler dur pour contourner les limites spécifiques au type de fichier.
- Les limites spécifiques au type de fichier sont utiles en ce sens qu'elles empêchent les demandes naïves pour des quantités vraiment énormes de données (par exemple, "donnez-moi toutes ces données" lorsque l'ensemble de données a 20 To de données) , qui prendrait des semaines ou des mois à télécharger. Plus le téléchargement est long, plus il risque d'échouer pour diverses raisons.
- Les limites spécifiques au type de fichier sont utiles dans la mesure où elles obligent l'utilisateur à traiter des sous-ensembles de taille raisonnable (par exemple, traiter avec un grand ensemble de données maillées via des fichiers avec des données à partir d'un point de temps chaque) .
Passez à ACDD-1.3
Nous (notammentGénérer des ensembles de donnéesXml) actuellement recommandéACDD version 1.3, qui a été ratifié au début de 2015 et qui est appelé "ACDD-1.3" dans l'attribut conventions mondiales. AvantERDDAP™version 1.62 (publié en juin 2015) ,ERDDAP™l ' original, version 1.0, de la versionNetCDFConvention sur les attributs pour la découverte de donnéesqui a été appelé "UnidataDataset Discovery v1.0" dans les conventions mondiales etMetadata\_Conventionsattributs.
Si vos ensembles de données utilisent des versions antérieures d'ACDD, nous vous recommandons de passer à ACDD-1.3. Ce n'est pas dur. ACDD-1.3 est très rétrocompatible avec la version 1.0. Pour changer, pour tous les ensembles de données (saufEDDGridDeErddap et EDDTable Les ensembles de données d'Erddap) :
- Supprimer le nouveau déprécié globalMetadata\_Conventionsattribut en ajoutant (ou en modifiantMetadata\_Conventionsattribut)
<att name="Metadata\\_Conventions">null</att>
à l'ensemble de données<addAttributes>. 2. Si l'ensemble de données a un attribut Conventions dans le<addAttributes>, tout changer "UnidataDataset Discovery v1.0" fait référence à "ACDD-1.3". Si l'ensemble de données n'a pas d'attribut Conventions dans le global<addAttributes>, puis ajouter une référence à ACDD-1.3. Par exemple,
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Si l'ensemble de données a unstandard\_name\_vocabularyattribut, veuillez modifier le format de la valeur, par exemple,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Si la référence est à une ancienne version de laTableau des noms standard des FC. c'est probablement une bonne idée de passer à la version actuelle (65, alors que nous écrivons) , puisque de nouveaux noms standard sont ajoutés à cette table avec des versions ultérieures, mais les anciens noms standard sont rarement dépréciés et jamais supprimés. 4. Bien que ACDD-1.0 ait inclus des attributs globaux pourcreator\_name,creator\_email,creator\_url,Générer des ensembles de donnéesXmlne les a pas automatiquement ajoutés avant un certain tempsERDDAP™v1.50. Cette information est importante :
- creator\_namepermet aux utilisateurs de connaître/citer le créateur du jeu de données.
- creator\_emailindique aux utilisateurs l'adresse électronique privilégiée pour contacter le créateur de l'ensemble de données, par exemple s'ils ont des questions sur l'ensemble de données.
- creator\_urldonne aux utilisateurs un moyen d'en savoir plus sur le créateur.
- ERDDAP™utilise toutes ces informations lors de la production de documents de métadonnées FGDC et ISO 19115-2/19139 pour chaque ensemble de données. Ces documents sont souvent utilisés par les services de recherche externe.
Veuillez ajouter ces attributs à l'ensemble de données<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>
C'est ça. J'espère que ce n'était pas trop dur.
Zarr
En date de la version 2.25ERDDAP™peut lire local Fichiers Zarr utilisantEDDTableFromNcFilesetEDDGridDeNcFiles.
(En août 2019) Nous pourrions facilement nous tromper, mais nous ne sommes pas encore convaincus queZarr, ou des systèmes similaires qui décomposent les fichiers de données en petits morceaux, sont de grandes solutions au problème deERDDAP™lecture de données stockées dans des services cloud comme Amazon AWS S3. Zarr est une grande technologie qui a démontré son utilité dans une variété de situations, nous ne sommes tout simplement pas sûrs queERDDAP+S3 sera l'une de ces situations. La plupart du temps, nous disons: avant de nous précipiter pour faire l'effort de stocker toutes nos données dans Zarr, faisons quelques tests pour voir si c'est en fait une meilleure solution.
Les problèmes d'accès aux données dans le cloud sont latences (le décalage pour obtenir les données) et accès au niveau des fichiers (plutôt que l'accès au niveau des blocs) . Zarr résout le problème d'accès au niveau des fichiers, mais ne fait rien sur la latence. Comparé au téléchargement du fichier (il peut donc être lu comme un fichier local avec un accès au niveau bloc) , Zarr peut même aggraver le problème de latence parce que, avec Zarr, lire un fichier implique maintenant une série de plusieurs appels pour lire différentes parties du fichier (chacun avec son propre décalage) . Le problème de latence peut être résolu en parallélisant les demandes, mais c'est une solution de niveau supérieur, non dépendante de Zarr.
Et avec Zarr (comme pour les bases de données relationnelles) , nous perdons la commodité d'avoir un fichier de données être un fichier simple, unique que vous pouvez facilement vérifier l'intégrité de, ou faire / télécharger une copie de .
ERDDAP™ (en date de v2) dispose d'un système pour maintenir un cache local de fichiers à partir d'une source URL (Par exemple, S3) (voir [<cacheFromUrl> et<cacheMaxGB>] (#cachefromurl) ) . Et le nouveau [<nThreads>] (#Nthreads) devrait minimiser le problème de latence en parallélisant la récupération des données à un niveau élevé.<cacheFromUrl> semble très bien fonctionner pour de nombreux scénarios. (Nous ne savons pas à quel point<nThreads> est sans autres tests.) Nous admettons que nous n'avons pas fait de tests de synchronisation sur une instance AWS avec une bonne connexion réseau, mais nous avons testé avec succès avec diverses sources d'URL distantes de fichiers. EtERDDAP's<cacheFromUrl> fonctionne avec tout type de fichier de données (Par exemple,.nc,.hdf, .csv,.jsonlCSV) , même si comprimé externement (Par exemple,.gz) , sans aucune modification des fichiers (Par exemple, les réécrire comme collections Zarr) .
Il est probable que différents scénarios favoriseront différentes solutions, par exemple, il suffit de lire une partie d'un fichier une fois (Zarr va gagner) , vs. besoin de lire tout un fichier une fois, vs. besoin de lire une partie ou la totalité d'un fichier à plusieurs reprises (<cacheFromUrl> gagnera).
La plupart du temps, nous disons: avant de nous précipiter pour faire l'effort de stocker toutes nos données dans Zarr, faisons quelques tests pour voir si c'est en fait une meilleure solution.
-
- Oui.
Liste des types
Si vous avez besoin d'aide pour choisir le bon type de données, consultezChoix du type de données.
Les types de séries de données se répartissent en deux catégories. (Pourquoi ?)
EDDGrid
- EDDGrid les ensembles de données gèrent les données maillées.
- EnEDDGridles ensembles de données, les variables de données sont des tableaux multidimensionnels de données.
- Il DOIT y avoir une variable d'axe pour chaque dimension. Les variables d'axe DOIVENT être spécifiées dans l'ordre où les variables de données les utilisent.
- EnEDDGridensembles de données, toutes les variables de données DOIVENT être utilisées (part) toutes les variables d'axe. (Pourquoi ? Et s'ils ne le font pas ?)
- Valeurs de dimension triées - En toutEDDGridensembles de données, chaque dimension DOIT être triée (ascendant ou descendant) . Chacun peut être irrégulièrement espacé. Il ne peut y avoir de liens. C'est une exigence de laNorme sur les métadonnées des FC. Si les valeurs d'une dimension ne sont pas triées, l'ensemble de données ne sera pas chargé etERDDAP™identifiera la première valeur non triée dans le fichier journal, BigParent Directory /logs/log.txt .
Quelques sous-classes ont des restrictions supplémentaires (notamment :EDDGridAgrégateExistingDimension exige que la dimension extérieure (la plus gauche, la première) soit ascendante.
Les valeurs de dimension non triées indiquent presque toujours un problème avec l'ensemble de données source. Cela se produit le plus souvent lorsqu'un fichier mal nommé ou inapproprié est inclus dans l'agrégation, ce qui conduit à une dimension temporelle non triée. Pour résoudre ce problème, voir le message d'erreurERDDAP™log.txt fichier pour trouver la valeur de temps offensif. Ensuite, regardez dans les fichiers sources pour trouver le fichier correspondant (ou une avant ou une après) Ça n'appartient pas à l'agrégation.
- Voir la description plus complète de laEDDGridmodèle de données.
- LesEDDGridles types de données sont:
- EDDGridDepuisAudioFilesregroupe les données d'un groupe de fichiers audio locaux.
- EDDGridDeDapgère les données maillées deDAPles serveurs.
- EDDGridD'EDDTablevous permet de convertir un ensemble de données tabulaires en un ensemble de données maillées.
- EDDGridDeErddapgère les données maillées d'une télécommandeERDDAP.
- EDDGridDe EtopoIl suffit de gérer les données de topographie ETOPO intégrées.
- EDDGridFichiersest la superclasse de tousEDDGridDes cours sur les fichiers.
- EDDGridDeMergeIRFilesdonnées agrégées provenant d'un groupe de MergeIR local.gzfichiers.
- EDDGridDeNcFilesdonnées agrégées provenant d'un groupeNetCDF (v3 ou v4) .ncet les dossiers connexes.
- EDDGridDeNcFilesNon emballéest une variante siEDDGridDeNcFiles qui regroupe également des données d'un groupe deNetCDF (v3 ou v4) .ncet les fichiers connexes, quiERDDAP™Déballe à un niveau bas.
- EDDGridLonPM180modifie les valeurs de longitude d'un enfantEDDGridde sorte qu'ils soient dans la gamme -180 à 180.
- EDDGridLon0360modifie les valeurs de longitude d'un enfantEDDGridde sorte qu'ils se situent entre 0 et 360.
- EDDGridSideBySideagrégats deux ou plusEDDGridles ensembles de données côte à côte.
- EDDGridTotalExistingDimensionagrégats deux ou plusEDDGridles ensembles de données, dont chacun a une gamme différente de valeurs pour la première dimension, mais des valeurs identiques pour les autres dimensions.
- EDDGridCopierpeut faire une copie locale d'un autreEDDGridles données et sert les données de la copie locale.
- TousEDDGridles ensembles de données prennent en charge un paramètre nThreads, qui indiqueERDDAP™combien de threads à utiliser pour répondre à une demande. VoirnThreadsdocumentation pour plus de détails.
Tableau EDD
- Tableau EDD les ensembles de données gèrent les données tabulaires.
- Les données tabulaires peuvent être représentées comme une table de base de données avec des lignes et des colonnes. Chaque colonne (une variable de données) a un nom, un ensemble d'attributs, et stocke seulement un type de données. Chaque rangée a une observation (ou groupe de valeurs apparentées) . La source de données peut avoir les données dans une structure de données différente, une structure de données plus compliquée et/ou plusieurs fichiers de données, maisERDDAP™doit pouvoir aplatir les données sources dans un tableau semblable à une base de données afin de présenter les données comme un ensemble de données tabulaires aux utilisateurs deERDDAP.
- Voir la description plus complète de laModèle de données EDDTable.
- Les types de données EDDTable sont:
-
EDDTableFromAllDatasetsest un ensemble de données de niveau supérieur qui a des informations sur tous les autres ensembles de données dans votreERDDAP.
-
EDDTableFromAsciiFilesagrége les données des fichiers de données ASCII tabulaires séparés par des virgules, des onglets, des point-virgules ou des espaces.
-
EDDTableFromAsciiServiceest la superclasse de toutes les classes EDDTableFromAsciiService...
-
EDDTableFromAsciiServiceNOSgère les données de certains desNOAAServices Web NOS.
-
EDDTableFromAudioFilesregroupe les données d'un groupe de fichiers audio locaux.
-
Tableau EDD de Fichiers AwsXmlagrégats de données d'un ensemble de Station météorologique automatique (AWS) Fichiers XML.
-
EDDTableDeCassandragère les données tabulaires d'une table Cassandra.
-
EDDTableDeColumnarAsciiFilesregroupe les données des fichiers de données ASCII tabulaires avec des colonnes de données à largeur fixe.
-
EDDTableFromDapSéquencegère les données tabulaires deDAPles serveurs de séquence.
-
EDDTableFromDatabasegère les données tabulaires d'une table de base de données.
-
Tableau EDD deEDDGridvous permet de créer un ensemble de données EDDTable à partir d'unEDDGridensemble de données.
-
EDDTableDeErddapgère les données tabulaires d'une télécommandeERDDAP.
-
EDDTableFromFileNamescrée un ensemble de données à partir d'informations sur un groupe de fichiers dans le système de fichiers du serveur, mais il ne sert pas de données à partir des fichiers.
-
EDDTableFromFilesest la superclasse de toutes les classes EDDTableFrom...Files.
-
EDDTableFromHttpGetestERDDAPLe seul système d'importation de données et d'exportation de données.
-
Tableau EDD deHyraxFichiers (DÉPREUVE) agrégats données de fichiers avec plusieurs variables avec dimensions partagées desservies par unHyrax OPeNDAPserveur.
-
EDDTableFromInvalidCRAFilesdonnées agrégéesNetCDF (v3 ou v4) .ncfichiers qui utilisent une variante spécifique, non valide, du DSG Contiguous Array (ARC) fichiers. Bien queERDDAP™prend en charge ce type de fichier, c'est un type de fichier invalide que personne ne devrait commencer à utiliser. Les groupes qui utilisent actuellement ce type de fichier sont fortement encouragés à utiliserERDDAP™pour générer des fichiers valides de l'ARC DSG des FC et cesser d'utiliser ces fichiers.
-
Tableau EDD deJsonlCSVFilesdonnées agrégéesJSON Fichiers CSV de lignes.
-
EDDTableFromMultidimNcFilesdonnées agrégéesNetCDF (v3 ou v4) .ncfichiers avec plusieurs variables avec des dimensions partagées.
-
EDDTableFromNcFilesdonnées agrégéesNetCDF (v3 ou v4) .ncfichiers avec plusieurs variables avec des dimensions partagées. Il est bon de continuer à utiliser ce type d'ensemble de données pour les ensembles de données existants, mais pour les nouveaux ensembles de données, nous recommandons plutôt d'utiliser EDDTableFromMultidimNcFiles.
-
EDDTableFromNcCFFilesdonnées agrégéesNetCDF (v3 ou v4) .ncfichiers qui utilisent un des formats de fichiers spécifiés par leFC Géométries d'échantillonnage discrètes (DSG) Convention. Mais pour les fichiers utilisant une des variantes multidimensionnelles CF DSG, utiliserEDDTableFromMultidimNcFilesà la place.
-
EDDTableFromNccsvFilesdonnées agrégéesNCCSVFichiers ASCII .csv.
-
EDDTableFromNOS (DÉPREUVE) gère les données tabulaires des serveurs XML NOS.
-
EDDTableFromOBISgère les données tabulaires des serveurs OBIS.
-
EDDTableFromParquetFilesgère les données deParquet.
-
Tableau EDD deSOSgère les données tabulaires deSOSles serveurs.
-
EDDTableFromThreddsFiles (DÉPREUVE) agrégats données de fichiers avec plusieurs variables avec dimensions partagées desservies par unTHÉRÈDESOPeNDAPserveur.
-
Tableau EDD deWFSFichiers (DÉPREUVE) fait une copie locale de toutes les données d'unArcGISCarteServeurWFSpour que les données puissent ensuite être ré-servées rapidement àERDDAP™utilisateurs.
-
EDDTableAgrégatRowspeut faire un ensemble de données EDDTable à partir d'un groupe de séries de données EDDTable.
-
EDDTableCopypeut faire une copie locale de nombreux types d'ensembles de données EDDTable et ensuite ré-server les données rapidement à partir de la copie locale.
-
-
- Oui.
Descriptions détaillées des types de données
EDDGridDeDap
EDDGridDeDap gère les variables de grilleDAPles serveurs.
- Nous recommandons fortement l'utilisation deGénérer des ensembles de données Programme Xmlpour faire une ébauche de ladatasets.xmlun morceau pour cet ensemble de données. Vous pouvez recueillir les informations dont vous avez besoin pour modifier cela ou créer votre propre XML pour unEDDGridDeDap dataset en regardant les fichiers DDS et DAS de la source dans votre navigateur (en ajoutant .das et .dds ausourceUrl, par exemple, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridDeDap peut obtenir des données à partir de n'importe quelle variable multidimensionnelle d'unDAPserveur de données. (Précédemment,EDDGridDeDap était limité aux variables désignées comme « réseau », mais ce n'est plus une exigence.)
- Valeurs de dimension triées - Les valeurs de chaque dimension DOIVENT être triées dans l'ordre (ascendant ou descendant) . Les valeurs peuvent être irrégulièrement espacées. Il ne peut y avoir de liens. C'est une exigence de laNorme sur les métadonnées des FC. Si les valeurs d'une dimension ne sont pas triées, l'ensemble de données ne sera pas chargé etERDDAP™identifiera la première valeur non triée dans le fichier journal, BigParent Directory /logs/log.txt .
Les valeurs de dimension non triées indiquent presque toujours un problème avec l'ensemble de données source. Cela se produit le plus souvent lorsqu'un fichier mal nommé ou inapproprié est inclus dans l'agrégation, ce qui conduit à une dimension temporelle non triée. Pour résoudre ce problème, voir le message d'erreurERDDAP™log.txt fichier pour trouver la valeur de temps offensif. Ensuite, regardez dans les fichiers sources pour trouver le fichier correspondant (ou une avant ou une après) Ça n'appartient pas à l'agrégation.
EDDGridA partir du squelette Dap XML
<dataset type="EDDGridFromDap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDGridD'EDDTable
EDDGridD'EDDTable vous permet de convertir un ensemble de données tabulaires EDDTable en unEDDGridensemble de données maillées. Rappelez-vous queERDDAP™traite les ensembles de données commeensembles de données maillés (Sous-classesEDDGrid) ou tabulaires (Sous-classes du tableau EDD) .
- Normalement, si vous avez des données maillées, vous venez de configurer unEDDGriddataset directement. Parfois, ce n'est pas possible, par exemple, lorsque vous avez les données stockées dans une base de données relationnelle quiERDDAP™ne peut accéder qu'avec EDDTableFromDatabase.EDDGridDe la classe EDDTable vous permet de remédier à cette situation.
- De toute évidence, les données de l'ensemble de données EDDTable sous-jacent doivent (fondamentalement) données maillées, mais sous forme de tableau. Par exemple, l'ensemble de données EDDTable peut avoir des données CTD : mesures du courant est et nord, à plusieurs profondeurs, à plusieurs reprises. Puisque les profondeurs sont les mêmes à chaque point,EDDGridDe EDDTable peut créer un ensemble de données maillées avec une dimension temps et profondeur qui accède aux données via l'ensemble de données EDDTable sous-jacent.
- Générer des ensembles de données Xml -- Nous recommandons fortement l'utilisation deGénérer des ensembles de données Programme Xmlpour faire une ébauche de ladatasets.xmlun morceau pour cet ensemble de données. Vous pouvez recueillir l'information dont vous avez besoin pour améliorer le brouillon.
- Attributs de source -- Comme pour tous les autres types de ensembles de données,EDDGridDeTable a l'idée qu'il y a des sources mondialesAttributes etmondialaddAttributes (spécifiée dansdatasets.xml) , qui sont combinés pour faire le Attributs, qui sont ce que les utilisateurs voient. Pour source mondialeAttributes,EDDGridFromEDDTable utilise la combinaison mondiale Attributs de l'ensemble de données EDDTable sous-jacent. (Si vous y réfléchissez une minute, c'est logique.)
De même, pour chaqueaxisVariableetdataVariable'saddAttributes,EDDGridFromEDDTable utilise la combinaison de la variable Attributs de l'ensemble de données EDDTable sous-jacentEDDGridSource de la variable EDDTableAttributes. (Si vous y réfléchissez une minute, c'est logique.)
Par conséquent, si la table EDD a de bonnes métadonnées,EDDGridFromEDDTable a souvent besoin de très peuaddAttributesmétadonnées -- juste quelques modifications ici et là.
-
dataVariables versusaxisVariableS... La table EDD sous-jacente n'adataVariablePar. UneEDDGridL'ensemble de données d'EDDTable aura quelquesaxisVariables (créé à partir de certains des EDDTabledataVariables) et certainsdataVariables (créé à partir du reste de la table EDDdataVariables) .Générer des ensembles de donnéesXmlfera une estimation de quel EDDTabledataVariables devrait devenirEDDGridD'EDDTableaxisVariableS, mais c'est juste une supposition. Vous devez modifier la sortie de GenerateDatasetsXml pour spécifierdataVariables deviendraaxisVariables, et dans quel ordre.
-
AxeValeurs -- Il n'y a rien à dire sur la table EDD sous-jacenteEDDGridD'EDDTableaur les valeurs possibles duaxisVariables dans la version maillée de l'ensemble de données, de sorte que vous DOIVENT fournir ces informations pour chaqueaxisVariablevia l'un de ces attributs:
- axisValues -- vous permet de spécifier une liste de valeurs. Par exemple, <att name="axisValues"type "doubleListe"\>2, 2.5, 3, 3.5, 4</att> Noter l'utilisation detype de donnéesplus le mot Liste. Aussi, le type de liste (Par exemple, double) DOIT correspondre aux données Type de variable dans la table EDD etEDDGridLes ensembles de données d'EDDTable.
- axisValuesStartStrideStop -- permet de spécifier une séquence de valeurs régulièrement espacées en spécifiant les valeurs de début, de marche et d'arrêt. Voici un exemple qui est équivalent à l'axeValues exemple ci-dessus: <att name=AxisValuesStartStrideStop"type "doubleListe"\>2, 0,5, 4</att> Encore une fois, notez l'utilisation d'un type de données de liste. Aussi, le type de liste (Par exemple, double) DOIT correspondre aux données Type de variable dans la table EDD etEDDGridLes ensembles de données d'EDDTable.
Mises à jour -- Comme il n'y a aucun moyen pourEDDGridDe la table EDD pour déterminer l'axeValues de la table EDD initialement, il n'y a pas non plus de moyen fiable pourEDDGridDe la table EDD pour déterminer à partir de la table EDD lorsque l'axeValeurs ont changé (notamment quand il y a de nouvelles valeurs pour la variable temps) . Actuellement, la seule solution est de modifier l'attribut axisValues dansdatasets.xmlet recharge l'ensemble de données. Par exemple, vous pouvez écrire un script à
- Recherchedatasets.xmlpour datasetID=" l'IDDataset " donc vous travaillez avec le bon jeu de données.
- Recherchedatasets.xmlpour la prochaine
leNomSourceVariables
donc vous travaillez avec la bonne variable. - Recherchedatasets.xmlpour la prochaine
<att name="axisValuesStartStrideStop" type="doubleList">
Donc vous connaissez la position de départ de l'étiquette. 4. Recherchedatasets.xmlpour la prochaine
</att>
pour connaître la position finale des valeurs de l'axe. 5. Remplacez l'ancienne valeur de départ, marchez, arrêtez les valeurs avec les nouvelles valeurs. 6. Contactez laURL du drapeaupour l'ensemble de données à indiquerERDDAP™pour recharger l'ensemble de données.
Ce n'est pas idéal, mais ça marche.
- précision -- QuandEDDGridD'EDDTable répond à la demande de données d'un utilisateur, il déplace une ligne de données du tableau de réponse EDDTable dans leEDDGridgrille de réponse. Pour ce faire, il faut déterminer si les valeurs "axe" sur une ligne donnée dans le tableau correspondent à une combinaison de valeurs d'axe dans la grille. Pour les types de données entiers, il est facile de déterminer si deux valeurs sont égales. Mais pour les flotteurs et les doubles, cela soulève l'horrible problème des nombres de points flottantsne correspond pas exactement. (par exemple, 0,2 versus 0.199999999999996) . Aux (essayer de) traiter avec ça,EDDGridDeTable vous permet de spécifier un attribut de précision pour n'importe lequel desaxisVariables, qui spécifie le nombre total de décimales qui doivent être identiques.
- Par exemple,<nom de l'att"précision" type"int">5</att>
- Pour différents types de variables de données, il existe différentes valeurs de précision par défaut. Les valeurs par défaut sont généralement appropriées. Sinon, vous devez spécifier différentes valeurs.
- PouraxisVariables qui sontheure ou heure Variables du timbre, la précision par défaut est pleine (une correspondance exacte) .
- PouraxisVariables qui sont des flotteurs, la précision par défaut est 5.
- PouraxisVariables qui sont des doubles, la précision par défaut est 9.
- PouraxisVariables qui ont des types de données entiers,EDDGridFromEDDTable ignore l'attribut de précision et utilise toujours la pleine précision (une correspondance exacte) .
- ATTENTION ! Lors de la conversion d'un morceau de données tabulaires en un morceau de données maillées, siEDDGridD'EDDTable ne peut pas correspondre à une valeur "axe" EDDTable à l'une des valeurs attenduesEDDGridValeurs de l'axe d'EDDTable,EDDGridD'EDDTable silencieusement (pas d'erreur) jette les données de cette ligne de la table. Par exemple, il peut y avoir d'autres données (pas sur la grille) dans l'ensemble de données EDDTable. (Et si stride > 1, ce n'est pas évidentEDDGridDeTable, quelles valeurs d'axe sont souhaitées et lesquelles sont celles qui doivent être ignorées à cause de la foulée.) Ainsi, si les valeurs de précision sont trop élevées, l'utilisateur verra des valeurs manquantes dans la réponse aux données lorsque des valeurs de données valides existent réellement.
Inversement, si les valeurs de précision sont trop basses, les valeurs de l'axe EDDTable ne devraient pas correspondreEDDGridLes valeurs de l'axe d'EDDTable (par erreur) C'est égal.
Ces problèmes potentiels sont horribles, parce que l'utilisateur obtient les mauvaises données (ou valeurs manquantes) quand ils devraient obtenir les bonnes données (ou au moins un message d'erreur) . Ce n'est pas un défautEDDGridDe la Table.EDDGridDeTable ne peut pas résoudre ce problème. Le problème est inhérent à la conversion des données tabulaires en données maillées (sauf si d'autres hypothèses peuvent être faites, mais elles ne peuvent pas être faites ici) . C'est à vous de décider.ERDDAP™administrateur, testez votreEDDGridDe la table EDD veiller à ce que les valeurs de précision soient fixées pour éviter ces problèmes potentiels.
écartSeuil
- écartSeuil-- C'est un type de données très inhabituel. Depuis les types de requêtes qui peuvent être faites à (géré par) uneEDDGridensemble de données (liés aux portées et aux étapes de laaxisVariables) sont très différents des types de requêtes qui peuvent être faites à (géré par) un ensemble de données EDDTable (simplement lié aux plages de certaines variables) , la performance deEDDGridLes ensembles de données d'EDDTable varient considérablement selon la demande exacte qui est faite et la vitesse de l'ensemble de données EDDTable sous-jacent. Pour les requêtes ayant une valeur de marche > 1,EDDGridD'EDDTable peut demander à l'EDDTable sous-jacente une partie relativement importante des données (comme si la marche =1) puis passer en revue les résultats, en gardant les données de certaines lignes et en jetant les données d'autres. S'il doit passer en revue beaucoup de données pour obtenir les données dont il a besoin, la demande prendra plus de temps à remplir.
SiEDDGridD'EDDTable peut indiquer qu'il y aura de grandes lacunes (avec des lignes de données indésirables) entre les lignes avec les données souhaitées,EDDGridFromEDDTable peut choisir de faire plusieurs sous-requêtes à la table EDD sous-jacente au lieu d'une grande requête, sauter ainsi les lignes indésirables de données dans les grandes lacunes. La sensibilité pour cette décision est contrôlée par la valeur de seuil d'écart spécifiée dans la<tag gapThreshold> (par défaut=1000 lignes de données sources) . Définir l'écartLe seuil à un nombre plus petit conduira à la création de l'ensemble de données (en général) plus de sous-demandes. Définir l'écartLe seuil à un plus grand nombre conduira à la création de l'ensemble de données (en général) moins de sous-demandes.
Si le seuil est trop petit,EDDGridDeEDDTable fonctionnera plus lentement parce que les frais généraux de plusieurs demandes seront plus élevés que le temps économisé en obtenant certaines données excédentaires. Si gapThreshold est trop grand,EDDGridDeEDDTable fonctionnera plus lentement parce que tant de données excédentaires seront récupérées de la table EDD, seulement pour être éliminées. (Comme Goldilocks l'a découvert, le milieu est "juste à droite".) Les frais généraux pour différents types d'ensembles de données EDDTable varient considérablement, de sorte que la seule façon de connaître le meilleur réglage réel pour votre ensemble de données est par expérimentation. Mais vous n'allez pas trop loin vous en tenir au défaut.
Un exemple simple est: Imaginez unEDDGridDeTable avec un seulaxisVariable (durée, avec une taille de 100000) UnedataVariable (température) , et l'écart par défautSeuil de 1000.
- Si un utilisateur demande une température\[0💯5000\], l'écart est de 100 donc la taille de l'écart est de 99, ce qui est inférieur à l'écartSeuil. AlorsEDDGridDeTable fera une seule demande à EDDTable pour toutes les données nécessaires à la demande (équivalent à la température\[0:5000\]) et jetez toutes les lignes de données dont il n'a pas besoin.
- Si un utilisateur demande une température\[0:2500:5000\], cette étape est 2500 donc la taille de l'écart est 2499, ce qui est plus grand que l'écartSeuil. AlorsEDDGridDeTable fera des demandes distinctes à EDDTable qui sont équivalentes à la température\[0\], température\[2500\], température\[5000\].
Le calcul de la taille de l'écart est plus compliqué lorsqu'il y a plusieurs axes.
Pour chaque demande d'utilisateur,EDDGridDe EDDTable imprime des messages de diagnostic liés à ceci dans leLog.txtfichier.
- Si [<niveau de log>] (Niveau) endatasets.xmlest défini à info, ce message est imprimé comme \* nOuterAxes=1 de 4 nOuterRequests=22 Si nOuterAxes=0, gapThreshold n'a pas été dépassé et une seule demande sera faite à EDDTable. Si nOuterAxes>0, gapThreshold a été dépassé et nOuterRequests sera fait à EDDTable, correspondant à chaque combinaison demandée de nOuterAxes le plus à gauche. Par exemple, si l'ensemble de données a 4axisVariables etdataVariableComme vers l'est\[heure\]\[latitude\]\[longitude\]\[profondeur\], le plus à gauche (première) La variable d'axe est le temps.
- Si<Niveau de log> endatasets.xmlest défini à tous, des informations supplémentaires sont écrites dans le fichier log.txt.
EDDGridD'EDDTable squelette XML
<dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromEDDTable, this only works if the underlying EDDTable
supports updateEveryNMillis. -->
<gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
</dataset>
EDD*ERDDAP
EDDGridDeErddap gère les données maillées d'une télécommandeERDDAP™serveur. EDDTableDeErddap gère les données tabulaires d'une télécommandeERDDAP™serveur.
- EDDGridDeErddap et EDDTableDeErddap se comportent différemment de tous les autres types de ensembles de donnéesERDDAP.
- Comme d'autres types de ensembles de données, ces ensembles de données obtiennent des informations sur l'ensemble de données de la source et les gardent en mémoire.
- Comme d'autres types de ensembles de données, lorsqueERDDAP™recherche des ensembles de données, affiche le formulaire d'accès aux données ( datasetID .html) , ou affiche le formulaire Make A Graph ( datasetID Graphique) ,ERDDAP™utilise les informations sur l'ensemble de données qui est en mémoire.
- EDDGridDeErddap et EDDTable FromErddap sont la base pourquadrillages/clusters/federationsdesERDDAPs, qui distribue efficacement l'utilisation du processeur (principalement pour faire des cartes) , l'utilisation de la mémoire, le stockage des ensembles de données et l'utilisation de la bande passante d'un grand centre de données.
Réorienter
- Contrairement à d'autres types de ensembles de données, lorsqueERDDAP™reçoit une demande de données ou d'images de ces ensembles de données,ERDDAP redirectionsla demande à la télécommandeERDDAP™serveur. Le résultat est:
- C'est très efficace (CPU, mémoire et bande passante) , parce que autrement
- Le compositeERDDAP™doit envoyer la demande à l'autreERDDAP™ (qui prend du temps) .
- L'autreERDDAP™doit obtenir les données, les reformater et les transmettre au compositeERDDAP.
- Le compositeERDDAP™doit recevoir les données (utilisant la bande passante) , reformater (utilisant le processeur et la mémoire) , et transmettre les données à l'utilisateur (utilisant la bande passante) . En redirigeant la requête et en autorisant l'autreERDDAP™pour envoyer la réponse directement à l'utilisateur, le compositeERDDAP™dépense essentiellement aucun temps CPU, mémoire, ou bande passante sur la demande.
- La redirection est transparente pour l'utilisateur quel que soit le logiciel client (un navigateur ou tout autre logiciel ou outil de ligne de commande) .
- C'est très efficace (CPU, mémoire et bande passante) , parce que autrement
- Vous pouvez le direERDDAP™ne pas rediriger les requêtes des utilisateurs en paramétrant<redirection>faux</redirect>, mais cela nie la plupart des avantages du type de données ...FromErddap (notamment en dispersant la charge à l'avantERDDAP™vers la télécommande/arrière-planERDDAP) .
Abonnements
Normalement, lorsqueEDDGridDeErddap et EDDTable D'Erddap sont (re) chargé sur votreERDDAP, ils essaient d'ajouter un abonnement à l'ensemble de données distant via la télécommandeERDDAPLe système d'abonnement email/URL. Ainsi, chaque fois que l'ensemble de données distant change, la distanteERDDAP™contacte lesetDataset URL du drapeausur votreERDDAP™afin que l'ensemble de données local soit rechargé ASAP et que l'ensemble de données local soit toujours parfaitement à jour et imite l'ensemble de données distant. Donc, la première fois que cela arrive, vous devriez obtenir un email demandant que vous validez l'abonnement. Toutefois, si lesERDDAP™ne peut pas envoyer un email ou si la télécommandeERDDAP's e-mail/URL abonnement système n'est pas actif, vous devriez envoyer la télécommandeERDDAP™administrateur et demander qu'il ajoute manuellement [<surChange>] (#sur le changement) ...</onChange> tags vers tous les ensembles de données pertinents pour appeler les données de votre ensemblesetDataset URLs d'affichage. Voyez votreERDDAP™rapport quotidien pour une liste de setDataset Marquer les URL, mais envoyer celles pourEDDGridDeErddap et EDDTableDe l'ensemble de données d'Erddap à la télécommandeERDDAP™administrateur.
Ça ne marche pas ? Vos ensembles de données locaux ne restent-ils pas synchronisés avec les ensembles de données distants? Plusieurs choses doivent fonctionner correctement pour que ce système fonctionne afin que vos ensembles de données restent à jour. Vérifiez chacune de ces choses dans l'ordre :
- VotreERDDAP™doit pouvoir envoyer des courriels. Voir les paramètres d'email dans votre setup.xml.
- En général (mais pas toujours) , votreERDDAP's<baseUrl> et<baseHttpsUrl>ne doit pas avoir de numéro de port (Par exemple: 8080, 8443) . Si c'est le cas, utilisez uneproxypasspour enlever le port de l'Url.
- Dans votre setup.xml,<s'abonnerToRemoteErddapDataset> doit être défini à true.
- Quand votre EDD locale... De l'ensemble de données d'Erddap est rechargé, il devrait envoyer une demande à la télécommandeERDDAP™pour vous abonner au jeu de données distant. Regardez dans log.txt pour voir si ça arrive.
- Vous devriez recevoir un courriel vous demandant de valider la demande d'abonnement.
- Vous devez cliquer sur le lien dans ce courriel pour valider la demande d'abonnement.
- La télécommandeERDDAP™devrait dire que la validation a été réussie. A tout moment, vous pouvez demander un email de la télécommandeERDDAP™avec une liste de vos abonnements en cours et valides. Voir le formulaire distantErddapBase Autres /erddap/abonnements/list.html .
- Lorsque l'ensemble de données distant change (Par exemple, obtenir des données supplémentaires) , la télécommandeERDDAP™devrait essayer de contacter le flagURL sur votreERDDAP. Vous ne pouvez pas vérifier cela, mais vous pouvez demander à l'administrateur de la télécommandeERDDAP™pour vérifier ça.
- VotreERDDAP™devrait recevoir une demande pour définir ce flagURL. Recherchez dans votre log.txt pour "setDatasetFlag.txt?" requête (s) et voir s'il y a un message d'erreur associé aux requêtes.
- VotreERDDAP™devrait ensuite essayer de recharger cet ensemble de données (Peut-être pas immédiatement, mais au plus vite) .
Mise à jour max (heure) ?
EDDGrid/TableFromErddap datasets ne modifie leurs informations stockées sur chaque dataset source que lorsque le dataset source est"recharger"et quelques modifications de métadonnées (Par exemple, la variable temporelleactual\_range) , générant ainsi une notification d'abonnement. Si l'ensemble de données source a des données qui changent fréquemment (Par exemple, de nouvelles données chaque seconde) et utilise les"mise à jour"système pour remarquer les changements fréquents aux données sous-jacentes,EDDGrid/TableFromErddap ne sera pas informé de ces changements fréquents jusqu'à ce que le prochain jeu de données "recharge", donc leEDDGrid/TableFromErddap ne sera pas parfaitement à jour. Vous pouvez minimiser ce problème en modifiant les données source<recharger chaque NMinutes> à une valeur plus petite (60 ? 15 ?) pour qu'il y ait plus de notifications d'abonnementEDDGrid/TableFromErddap pour mettre à jour ses informations sur l'ensemble de données source.
Ou, si votre système de gestion des données sait quand l'ensemble de données source a de nouvelles données (Par exemple, via un script qui copie un fichier de données en place) , et si ce n'est pas super fréquent (Par exemple, toutes les 5 minutes ou moins) , il y a une meilleure solution:
- Ne pas utiliser<mettre à jour EveryNMillis> pour tenir l'ensemble de données source à jour.
- Définir les données de la source<recharger chaque NMinutes> à un nombre plus grand (1440 ?) .
- Demandez au script de contacter l'ensemble de données sourceURL du drapeaujuste après avoir copié un nouveau fichier de données en place.
Cela permettra à l'ensemble de données source d'être parfaitement à jour et de générer une notification d'abonnement, qui sera envoyée auEDDGrid/TableFromErddap dataset. Cela conduira àEDDGrid/TableFromErddap dataset pour être parfaitement à jour (Eh bien, dans les 5 secondes de l'ajout de nouvelles données) . Et tout ce qui sera fait efficacement (sans recharge de données inutiles) .
NuméroaddAttributes,axisVariableoudataVariable
Contrairement à d'autres types de données, EDDTableFromErddap etEDDGridLes ensembles de données d'Erddap ne permettent pas de<addAttributes>,<axisVariable> ou<dataVariableLes sections de > dans ladatasets.xmlpour cet ensemble de données. Le problème, c'est que le fait de les autoriser entraînerait des incohérences :
- Disons qu'il a été autorisé et vous avez ajouté un nouvel attribut global.
- Quand un utilisateur vous demandeERDDAP™pour les attributs globaux, le nouvel attribut apparaîtra.
- Mais quand un utilisateur demandeERDDAP™pour un fichier de données, votreERDDAP™redirige la demande vers la sourceERDDAP. ÇaERDDAP™n'est pas au courant du nouvel attribut. Donc, si elle crée un fichier de données avec des métadonnées, p. ex..ncfichier, les métadonnées n'auront pas le nouvel attribut.
Il y a deux solutions :
- Convaincre l'administrateur de la sourceERDDAP™pour apporter les modifications que vous voulez aux métadonnées.
- Au lieu de EDDTableFromErddap, utiliserEDDTableFromDapSéquence. Ou au lieu deEDDGridD'Erddap, utiliserEDDGridDeDap. Ces types EDD vous permettent de vous connecter efficacement à un jeu de données sur une télécommandeERDDAP™ (mais sans rediriger les requêtes de données) et ils vous permettent d'inclure<addAttributes>,<axisVariable> ou<dataVariableLes sections de > dans ladatasets.xml. Une autre différence: vous devrez vous abonner manuellement à l'ensemble de données distant, de sorte que l'ensemble de données sur votreERDDAP™sera notifié (parURL du drapeau) quand il y a des changements à l'ensemble de données distant. Ainsi, vous créez un nouvel ensemble de données, au lieu de vous connecter à un ensemble de données distant.
Autres notes
- Pour des raisons de sécurité,EDDGridDeErddap et EDDTable DeErddap ne soutiennent pas le [<accessibleÀ>] (#accessible à) tag et ne peut pas être utilisé avec des ensembles de données distants qui nécessitent une connexion (parce qu'ils utilisent [<accessibleÀ>] (#accessible à) ) .. VoirERDDAP'ssystème de sécuritépour restreindre l'accès à certains ensembles de données à certains utilisateurs.
- En commençant parERDDAP™v2.10,EDDGridDeErddap et EDDTableDeErddap soutiennent le [<accèsViaFiles>] (#accessibleviafiles) étiquette. Contrairement à d'autres types de ensembles de données, la valeur par défaut est vraie, mais les fichiers de l'ensemble de données seront accessiblesViaFiles seulement si l'ensemble de données source a également<accessibleViaFiles> défini à true.
- Vous pouvez utiliser leGénérer des ensembles de données Programme Xmlpour faire ledatasets.xmlmorceaux pour ce type de jeu de données. Mais vous pouvez faire ces types de données facilement à la main.
EDDGridDu squelette d'Erddap XML
- EDDGridDu squelette d'Erddap L'ensemble de données XML est très simple, parce que l'intention est simplement d'imiter l'ensemble de données distant qui est déjà adapté à l'utilisation dansERDDAP:
<dataset type="EDDGridFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>...</accessibleViaFiles> <!-- 0 or 1, default=true. -->