Lavorare con ildatasets.xmlFile
\[Questa pagina web sarà solo di interesseERDDAP™amministratori.\]
Dopo aver seguito ilERDDAP™ istruzioni di installazione, è necessario modificare ildatasets.xmlfile in tomcat /content/erddap/ per descrivere i dataset che ilERDDAP™l'installazione servirà.
Si può vedere un esempiodatasets.xmlsu GitHub.
-
- No.
Introduzione
Qualche assemblaggio richiesto
Impostazione di un set di datiERDDAP™non è solo una questione di puntare alla directory o URL del dataset. Devi scrivere un pezzo di XML perdatasets.xmlche descrive il dataset.
- Per i dataset grigliati, al fine di rendere il dataset conforme aERDDAPLa struttura dei dati per i dati grigliati, è necessario identificare un sottoinsieme delle variabili del dataset che condividono le stesse dimensioni. (Perche'? Come?)
- I metadati attuali del dataset vengono importati automaticamente. Ma se si desidera modificare i metadati o aggiungere altri metadati, è necessario specificarlo indatasets.xml. EERDDAP™ha bisogno di altri metadati, compresoattributi globali (comeinfoUrl, istituzione,sourceUrl, sommario e titolo) eattributi variabili (comelong\_namee unità) . Proprio come i metadati attualmente presenti nel dataset aggiungono informazioni descrittive al dataset, i metadati richiesti daERDDAP™aggiunge informazioni descrittive al dataset. I metadati aggiuntivi sono una buona aggiunta al dataset e aiutanoERDDAP™fare un lavoro migliore di presentare i tuoi dati agli utenti che non hanno familiarità con esso.
- ERDDAP™ha bisogno di fare cose speciali conlongitudine, latitudine, altitudine (o profondità) , e variabili di tempo.
Se acquisti in queste idee ed espedi lo sforzo di creare l'XML perdatasets.xml, si ottiene tutti i vantaggi diERDDAP™, incluso:
- Ricerca completa di testo per set di dati
- Ricerca per datasets per categoria
- Moduli di accesso ai dati ( datasetID .html) in modo da poter richiedere un sottoinsieme di dati in molti formati di file diversi
- Forme per richiedere grafici e mappe ( datasetID .)
- Servizio Mappa Web (WMS) per set di dati grigliati
- RESTfulaccesso ai dati
Fare ildatasets.xmlrichiede notevoli sforzi per i primi set di dati, ma diventa più facile . Dopo il primo dataset, è spesso possibile riutilizzare un sacco di lavoro per il prossimo set di dati. Fortunatamente,ERDDAP™viene con dueStrumentiper aiutarti a creare l'XML per ogni dataset indatasets.xml. Se ti bloccano, vedi il nostrosezione per ottenere supporto aggiuntivo.
Fornitore di dati Forma
Quando un fornitore di dati viene a voi sperando di aggiungere alcuni dati al vostroERDDAP, può essere difficile e richiede tempo per raccogliere tutti i metadati (informazioni sul dataset) necessario aggiungere i dati inseritiERDDAP. Molte fonti di dati (per esempio, file .csv, File Excel, database) non hanno metadati interni, quindiERDDAP™ha un modulo Data Provider che raccoglie i metadati dal fornitore di dati e fornisce al fornitore di dati un'altra guida, tra cui una vasta guida perDati nei database. Le informazioni inviate sono convertite indatasets.xmlformato e quindi inviato alERDDAP™amministratore (Tu sei) e scritto (allegato) a BigParentDirectory /logs/dataProviderForm.log . Così, la forma semi-automatizza il processo di ottenere un set di dati inERDDAP, ma ilERDDAP™l'amministratore deve ancora completaredatasets.xmlchunk e trattare con ottenere il file di dati (#) dal fornitore o la connessione al database.
L'invio di file di dati reali da fonti esterne è un enorme rischio di sicurezza, quindiERDDAP™non si occupa di questo. Devi capire una soluzione che funziona per te e per il fornitore di dati, ad esempio, e-mail (per piccoli file) , tirare dal cloud (per esempio, DropBox o Google Drive) , un sito sftp (con password) , o sneaker Rete (una chiavetta USB o un disco rigido esterno) . Probabilmente dovresti accettare solo i file delle persone che conosci. È necessario eseguire la scansione dei file per i virus e prendere altre precauzioni di sicurezza.
Non c'è un collegamentoERDDAP™al modulo Data Provider (per esempio, sulERDDAP™home page) . Invece, quando qualcuno ti dice che vogliono avere i loro dati serviti dai tuoiERDDAP, è possibile inviare loro una e-mail dicendo qualcosa come: Sì, possiamo far entrare i tuoi datiERDDAP. Per iniziare, si prega di compilare il modulo a https://yourUrl/erddap/dataProviderForm.html (ohttp://sehttps://non è abilitato) . Dopo aver finito, ti contattero' per scoprire i dettagli finali. Se vuoi solo guardare il modulo (senza riempirlo) , potete vedere il modulo suERD'ERDDAP:Introduzione♪Parte 1♪Parte 2♪Parte 3eParte 4. Questi collegamentiERD ERDDAP™inviare informazioni a me, non a te, quindi non inviare informazioni con loro a meno che non si desidera effettivamente aggiungere i dati alERD ERDDAP.
Se si desidera rimuovere il modulo Data Provider dal proprioERDDAP™#
<dataProviderFormActive>false</dataProviderFormActive>
nel file setup.xml.
L'impeto per questo eraNOAA2014Accesso pubblico ai risultati della ricerca (PARERI) Direttiva, che richiede tuttoNOAAi dati ambientali finanziati tramite il pagamento fiscale sono messi a disposizione tramite un servizio dati (non solo file) entro 12 mesi di creazione. Quindi c'è un maggiore interesse nell'usoERDDAP™per rendere disponibili i set di dati tramite un servizio ASAP. Abbiamo bisogno di un modo più efficiente per affrontare un gran numero di fornitori di dati.
Feedback/Suggestions? Questo modulo è nuovo, quindi si prega di e-mailerd dot data at noaa dot govse avete qualche feedback o suggerimenti per migliorare questo.
Strumenti
ERDDAP™viene fornito con due programmi di riga di comando che sono strumenti per aiutarti a creare l'XML per ogni set di dati che desideriERDDAP™per servire. Una volta che hai impostatoERDDAP™e correte (almeno una volta) , è possibile trovare e utilizzare questi programmi nel tomcat /webapps/erddap/WEB-INF directory. Ci sono script di shell Linux/Unix (con l'estensione .sh) e script di Windows (con l'estensione .bat) per ogni programma.\[Su Linux, eseguire questi strumenti come lo stesso utente (Tomcat?) che gestirà Tomcat.\]Quando si esegue ogni programma, ti farà domande. Per ogni domanda, digitare una risposta, quindi premere Invio. Oppure premere ^C per uscire da un programma in qualsiasi momento.
Il programma non correrà?
- Se si ottiene un programma sconosciuto (o simili) messaggio di errore, il problema è probabilmente che il sistema operativo non ha trovatoJava. Devi capire doveJavaè sul computer, quindi modificare il riferimento java nel file .bat o .sh che si sta cercando di utilizzare.
- Se si ottiene un file jar non trovato o la classe non trovato messaggio di errore, alloraJavaNon è stato possibile trovare una delle classi elencate nel file .bat o .sh che si sta cercando di utilizzare. La soluzione è quella di capire dove si trova quel file .jar, e modificare il riferimento java ad esso nel file .bat o .sh.
- Se si utilizza una versione diJavache è troppo vecchio per un programma, il programma non verrà eseguito e vedrete un messaggio di errore come
Eccezione nel thread "main" java.lang.UnsupportedClassVersionError:
alcuni/classe/nome : Versione non supportata major.minor alcuni
La soluzione è quella di aggiornare alla versione più recente diJavae assicurarsi che il file .sh o .bat per il programma lo stia usando.
Gli strumenti stampano vari messaggi diagnostici:
- La parola "ERROR" viene usata quando qualcosa è andato così male che la procedura non è riuscita a completare. Anche se è fastidioso per ottenere un errore, l'errore ti costringe a affrontare il problema.
- La parola "WARNING" viene usata quando qualcosa è andato storto, ma la procedura è stata completata. Sono piuttosto rari.
- Qualunque altra cosa è solo un messaggio informativo. È possibile aggiungere \-verbose alGenerareDatasetsXmloDasDdsriga di comando per ottenere ulteriori messaggi informativi, che a volte aiuta a risolvere i problemi.
I due strumenti sono un grande aiuto, ma è ancora necessario leggere tutte queste istruzioni su questa pagina con attenzione e prendere decisioni importanti da soli.
GenerareDatasetsXml
- GenerareDatasetsXml è un programma di riga di comando che può generare una bozza approssimativa del dataset XML per quasi qualsiasi tipo di dataset.
Rendiamo STRONGLY che si utilizza GenerateDatasets Xml invece di creare pezzi didatasets.xmla mano perché:
- Genera i dati Xml funziona in pochi secondi. Fare questo a mano è almeno un'ora di lavoro, anche quando sai cosa stai facendo.
- Genera i dati Xml fa un lavoro migliore. Fare questo a mano richiede una vasta conoscenza di comeERDDAP™funziona. È improbabile che si farà un lavoro migliore a mano. (Bob Simons usa sempre GenerateDatasets Xml per la prima bozza, e ha scrittoERDDAP.)
- Genera i dati Xml genera sempre un pezzo valido didatasets.xml. Qualsiasi pezzo didatasets.xmlche si scrive probabilmente avrà almeno alcuni errori che impedisconoERDDAP™dal caricamento del dataset. Spesso ci vogliono ore per diagnosticare questi problemi. Non sprecare tempo. Lasciare Generare Datasets Xml fa il duro lavoro. Quindi è possibile affinare il .xml a mano se si desidera.
Quando si utilizza GenerateDatasets Programma Xml:
- Su Windows, la prima volta che si esegue GenerateDatasetsXml, è necessario modificare il file GenerateDatasetsXml.bat con un editor di testo per cambiare il percorso per la java. exe file in modo che Windows possa trovareJava.
- Genera i dati Xml ti chiede prima di specificare l'EDDType (Erd Dap Dataset Tipo) del dataset. Vedi ilElenco dei tipi di Dataset (in questo documento) per capire su quale sia il tipo appropriato per il dataset su cui stai lavorando. Oltre al regolare EDDTypes, ci sono anche alcuniTipi di Dataset speciali/Pseudo (ad esempio, uno che striscia un catalogo THREDDS per generare un pezzo didatasets.xmlper ciascuno dei set di dati del catalogo) .
- Genera i dati Xml poi ti fa una serie di domande specifiche a quella EDDType. Le domande raccolgono le informazioni necessarie perERDDAP™accedere alla sorgente del dataset. Per capire cosaERDDAP™è chiedere, vedere la documentazione per il EDDType che hai specificato facendo clic sullo stesso tipo di set di dati nelElenco dei tipi di Dataset.
Se è necessario inserire una stringa con caratteri speciali (ad esempio, caratteri whitespace all'inizio o alla fine, caratteri non-ASCII) , entrare in unstringa in stile JSON (con caratteri speciali scappati con caratteri \) . Ad esempio, per entrare solo un carattere scheda, inserire "\t" (con le citazioni doppie circostanti, che diconoERDDAP™che questa è una stringa in stile JSON.
- Spesso, una delle vostre risposte non sarà ciò di cui ha bisogno GenerateDatasetsXml. Si può poi riprovare, con risposte revisionate alle domande, fino a GenerateDatasets Xml può trovare e capire con successo i dati di origine.
- Se rispondi correttamente alle domande (o sufficientemente correttamente) , GenerateDatasets Xml si connetterà alla sorgente del dataset e raccoglierà informazioni di base (per esempio, nomi variabili e metadati) . Per i datasets che provengono da localiNetCDF .nce i file correlati, GenerateDatasets Xml spesso stampa la struttura ncdump-like del file dopo che legge prima il file. Questo può darvi informazioni per rispondere meglio alle domande su un loop successivo attraverso GenerateDatasetsXml.
- Genera i dati Xml genererà quindi una bozza approssimativa del dataset XML per quel dataset.
- Informazioni diagnostiche e la bozza approssimativa del dataset XML saranno scritte a BigParentDirectory /logs/GenerateDatasetsXml.log .
- La bozza approssimativa del dataset XML sarà scritta a BigParentDirectory /logs/GenerateDatasetsXml.out .
"0 file" Messaggio di errore
Se esegue GenerateDatasets Xml oDasDds, o se si tenta di caricare unEDDGridDa...Files o EDDTableDa... File dataset inERDDAP™, e si ottiene un messaggio di errore "0 file" che indica cheERDDAP™trovato 0 file corrispondenti nella directory (quando pensi che ci siano file corrispondenti in quella directory) :
-
Controlla che hai specificato il nome completo della directory. E se hai specificato il nome del file campione, assicurati di specificare il nome completo del file, incluso il nome della directory completa.
-
Controllare che i file sono davvero in quella directory.
-
Controlla l'ortografia del nome della directory.
-
Controlla il fileNameRegex. E 'davvero, davvero facile fare errori con regexe. Per scopi di prova, prova il regex .\* che dovrebbe corrispondere a tutti i nomi di file. (Vedi questodocumentazione regexetutorial regex.)
-
Controllare che l'utente che esegue il programma (ad esempio, user=tomcat (?) per Tomcat/ERDDAP) ha il permesso "leggere" per quei file.
-
In alcuni sistemi operativi (per esempio, SELinux) e a seconda delle impostazioni di sistema, l'utente che ha eseguito il programma deve avere 'leggi' il permesso per l'intera catena di directory che porta alla directory che ha i file.
-
Se hai problemi che non puoi risolvere,richiesta supportocon quante più informazioni possibile. Allo stesso modo, se sembra che il EDDType appropriato per un dato set di dati non funziona con quel dataset, o se non c'è un EDDType appropriato, si prega di presentare unproblema su GitHubcon i dettagli (e un file di esempio se necessario) .
È necessario modificare l'output da GenerateDatasets Xml per migliorare.
-
DISCLAIMER: IL PAESEdatasets.xmlMADE BE GenerateDataset Xml non e' perfetto. Devi solo recuperare e cancellare l'XML prima di usarlo in una PUBBLICAERDDAP. Genera i dati Xml si ricollega ad un sacco di regole-OF-THUMB che non è sempre stato aggiornato. Lei è responsabile per l'adempimento della competenza dell'XML che lei haERDDAP#datasets.xmlFILE.
(- Non sto urlando. Per motivi legali storici, i disclaimer devono essere scritti in tutti i caps.)
L'output di GenerateDatasetsXml è una bozza grezza. Dovrai quasi sempre modificarlo. Abbiamo fatto e continuiamo a fare un enorme sforzo per rendere l'output il più possibile pronto per andare, ma ci sono limiti. Spesso, le informazioni necessarie non sono semplicemente disponibili dai metadati di origine.
Un problema fondamentale è che stiamo chiedendo un programma per computer (GenerareDatasetsXml) per fare un compito dove, se avete dato lo stesso compito a 100 persone, si otterrebbe 100 risultati diversi. Non c'è una sola risposta "destra". Ovviamente, il programma si avvicina alla lettura della mente di Bob (non tuo) , ma anche così, non è un programma AI tutto compreso, solo un gruppo di euristica acciottolato insieme per fare un compito simile a AI. (Quel giorno di un programma AI tutto compreso può venire, ma non è ancora. Se / quando lo fa, noi umani possono avere problemi più grandi. Fai attenzione a quello che desideri.)
-
Per scopi informativi, l'output mostra la fonte globaleAttributi e sorgenti variabiliAttributi come commenti.ERDDAP™combina sorgenteAttributi eaddAttributes (che hanno la precedenza) per fare il combinato Attributi che vengono visualizzati all'utente. (E altri attributi vengono automaticamente aggiunti a longitudine, latitudine, altitudine, profondità e variabili di tempo quandoERDDAP™effettivamente rende il dataset) .
-
Se non ti piace una fonteAttributo, sovrascrivilo aggiungendo un addAttributo con lo stesso nome ma un valore diverso (o nessun valore, se si desidera rimuoverlo) .
-
TuttiaddAttributessono suggerimenti generati dal computer. Modificali! Se non ti piace un addAttribute, cambialo.
-
Se vuoi aggiungere altroaddAttributesaggiungeteli.
-
Se vuoi cambiare undestinationName, cambialo. Ma non cambiaresourceNameS.
-
È possibile modificare l'ordine deldataVariables o rimuovere qualsiasi di loro.
- Si può quindi utilizzareDasDds (vedi sotto) per testare ripetutamente l'XML per quel dataset per garantire che il dataset risultante appare come si desidera che inERDDAP.
- Sentitevi liberi di fare piccole modifiche aldatasets.xmlchunk che è stato generato, per esempio, fornire un meglioinfoUrl, sommario, o titolo.
doNotAddStandardNames
Se si include \-doNotAddStandardNames come parametro di riga di comando quando si esegue generare Datasets Xml, generare Datasets Xml non aggiungeràstandard\_namealaddAttributesper qualsiasi variabile diversa dalle variabili denominate latitudine, longitudine, altitudine, profondità o tempo (che hanno ovviastandard\_name#) . Questo può essere utile se si utilizza l'output da generare Datasets Xml direttamente inERDDAP™senza modificare l'output, perché generare Datasets Xml spesso indovinastandard\_nameErroneamente. (Si noti che si consiglia sempre di modificare l'output prima di utilizzarlo inERDDAP.) Utilizzando questo parametro avrà altri effetti correlati minori perché l'ipotesistandard\_nameè spesso usato per altri scopi, ad esempio, per creare un nuovolong\_name, e per creare le impostazioni di ColorBar.
Scripting
Come alternativa per rispondere interattivamente alle domande alla tastiera e looping per generare ulteriori set di dati, è possibile fornire argomenti di riga di comando per rispondere a tutte le domande per generare un dataset. Genera i dati Xml elaborerà tali parametri, scriverà l'output al file di output e e esce dal programma.
Per impostare questo, prima utilizzare il programma in modalità interattiva e scrivere le risposte. Ecco un esempio parziale: Diciamo che si esegue lo script: ./GenerateDatasetsXml.sh Poi entrare: EDDTableFromAsciiFiles Quindi inserire: /u00/data/ Quindi inserire: .\*\.asc Quindi inserire: /u00/data/sampleFile.asc Quindi inserire: ISO-8859-1
Per eseguire questo in modo non interattivo, utilizzare questa riga di comando: ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles /u00/data/ .\*\\.asc /u00/data/sampleFile.asc ISO-8859-1 Quindi, in fondo, elenca tutte le risposte sulla riga di comando. Questo dovrebbe essere utile per i set di dati che cambiano frequentemente in un modo che richiede la re-running GenerateDatasets Xml (in particolareEDDGridDaThreddsCatalog) .
Dettagli:
- Se un parametro contiene uno spazio o un carattere speciale, quindi codificare il parametro come unstringa in stile JSON, ad esempio, "il mio parametro con spazi e due\nlinee".
- Se si desidera specificare una stringa vuota come parametro, utilizzare: niente
- Se si desidera specificare il valore predefinito di un parametro, utilizzare: predefinito
- Generare i dati Xml supporta un -i set di dati XmlName # tagName parametro riga di comando che inserisce l'output nel parametro specificatodatasets.xmlfile (il default è tomcat / contenuto/erddap/datasets.xml) . Genera i dati Xml cerca due linee in dataset XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
e
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
e sostituisce tutto tra quelle righe con il nuovo contenuto, e cambia il SomeDatetime.
- L'interruttore -i è solo elaborato (e modifichedatasets.xmlsono fatti solo) se si esegue GenerateDatasets Xml con argomenti di riga di comando che specificano tutte le risposte a tutte le domande per un loop del programma. (Vedere 'Scripting' sopra.) (Il pensiero è: Questo parametro è da utilizzare con gli script. Se si utilizza il programma in modalità interattiva (digitando informazioni sulla tastiera) , si rischia di generare alcuni pezzi errati di XML prima di generare quello che si desidera.)
- Se le linee Begin e End non sono trovate, allora quelle linee e il nuovo contenuto vengono inseriti subito prima</erddapDatasets>.
- C'è anche un -I (capitale) commutare per scopi di prova che funziona lo stesso di -i, ma crea un file chiamatodatasets.xml Data e non cambiadatasets.xml.
- Non eseguire GenerateDatasets Xml con -i in due processi contemporaneamente. C'è una possibilità che solo una serie di cambiamenti saranno mantenuti. Ci può essere un problema serio (per esempio, file corrotti) .
Se si utilizza "GenerateDatasetsXml -verbose", stamperà più messaggi diagnostici del solito.
Tipi di Dataset speciali/Pseudo
In generale, le opzioni EDDType in GenerateDatasets Xml match dei tipi EDD descritti in questo documento (vedi ilElenco dei tipi di Dataset) e generare unodatasets.xmlchunk per creare un dataset da una specifica fonte di dati. Ci sono alcune eccezioni e casi speciali:
EDDGridDa Erddap
Questo EDDType genera tuttidatasets.xmlpezzi necessari per fareEDDGridDa Erddapset di dati da tuttiEDDGridset di dati in un telecomandoERDDAP. Avrete la possibilità di mantenere l'originaledatasetID# (che possono duplicare alcunidatasetIDgià nel tuoERDDAP) o generare nuovi nomi che saranno unici (ma di solito non sono come leggibili dall'uomo) .
EDDTableFromErddap
Questo EDDType genera tuttidatasets.xmlpezzi necessari per fareEDDTableFromErddapset di dati da tutti i dataset EDDTable in un telecomandoERDDAP. Avrete la possibilità di mantenere l'originaledatasetID# (che possono duplicare alcunidatasetIDgià nel tuoERDDAP) o generare nuovi nomi che saranno unici (ma di solito non sono come leggibili dall'uomo) .
EDDGridDaThreddsCatalog
Questo EDDType genera tuttidatasets.xmlpezzi necessari per tuttiEDDGridDamascoset di dati che può trovare strisciando ricorsivamente attraverso un THREDDS (sub) catalogo. Ci sono molte forme di URL del catalogo THREDDS. Questa opzione REQUIRES un URL THREDDS .xml con /catalog/ in esso, ad esempio,
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml o
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(un relativo catalogo .html è a
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html , che non è accettabileEDDGridDaThreddsCatalog).
Se avete problemiEDDGridDa tre Catalogo:
- Assicurarsi che l'URL che si sta utilizzando sia valido, include /catalog/, e termina con /catalog.xml .
- Se possibile, utilizzare un indirizzo IP pubblico (per esempio, https://oceanwatch.pfeg.noaa.gov ) nell'URL, non un indirizzo IP numerico locale (per esempio, https://12.34.56.78 ) . Se il THREDDS è accessibile solo tramite l'indirizzo IP numerico locale, è possibile utilizzare [<convertToPublicSourceUrl>] (#converttopublicsourceurl) CosìERDDAP™gli utenti vedono l'indirizzo pubblico, anche seERDDAP™ottiene i dati dall'indirizzo numerico locale.
- Se hai problemi che non puoi risolvere,controllare i consigli di risoluzione dei problemi.
- Il codice a basso livello per questo ora utilizzaUnidatanetcdf-java catalogo crawler codice (Tre. classi di catalogo) in modo che possa gestire tutti i cataloghi THREDDS (che può essere sorprendentemente complesso) Grazie aUnidataper quel codice.
EDDGridLonPM180Da ErddapCatalog
Questo EDDType genera ildatasets.xmlper fareEDDGridLonPM180set di dati da tuttiEDDGridset di dati in unERDDAPche hanno valori di longitudine superiori a 180.
- Se possibile, utilizzare un indirizzo IP pubblico (per esempio, https://oceanwatch.pfeg.noaa.gov ) nell'URL, non un indirizzo IP numerico locale (per esempio, https://12.34.56.78 ) . SeERDDAP™è accessibile solo tramite l'indirizzo IP numerico locale, è possibile utilizzare [<convertToPublicSourceUrl>] (#converttopublicsourceurl) CosìERDDAP™gli utenti vedono l'indirizzo pubblico, anche seERDDAP™ottiene i dati dall'indirizzo numerico locale.
EDDGridLon0360Da ErddapCatalog
Questo EDDType genera ildatasets.xmlper fareEDDGridLon0360set di dati da tuttiEDDGridset di dati in unERDDAPche hanno valori di longitudine inferiori a 0.
- Se possibile, utilizzare un indirizzo IP pubblico (per esempio, https://oceanwatch.pfeg.noaa.gov ) nell'URL, non un indirizzo IP numerico locale (per esempio, https://12.34.56.78 ) . SeERDDAP™è accessibile solo tramite l'indirizzo IP numerico locale, è possibile utilizzare [<convertToPublicSourceUrl>] (#converttopublicsourceurl) CosìERDDAP™gli utenti vedono l'indirizzo pubblico, anche seERDDAP™ottiene i dati dall'indirizzo numerico locale.
EDDsFromFiles
Data una directory di avvio, questo attraversa la directory e tutte le sottodirectory e cerca di creare un set di dati per ogni gruppo di file di dati che trova.
- Ciò presuppone che quando si trova un dataset, il dataset include tutte le sottodirectory.
- Se si trova un dataset, le directory sibling simili verranno trattate come set di dati separati (Ad esempio, le directory per gli anni '90, i 2000, i 2010, genereranno set di dati separati) . Dovrebbero essere facili da combinare a mano -- basta cambiare il primo set di dati<fileDir> nella directory principale ed eliminare tutti i seguenti set di dati di semplificazione.
- Questo cercherà solo di generare un pezzo didatasets.xmlper il tipo più comune di estensione di file in una directory (non contare .md5, che è ignorato) . Così, dato una directory con 10.ncfile e 5 .txt file, un dataset verrà generato per.ncSolo i file.
- Ciò presuppone che tutti i file in una directory con la stessa estensione appartengano allo stesso dataset. Se una directory ha qualcosa.ncfile con dati SST e alcuni.ncfile con dati clorofill, solo un campione.ncil file sarà letto (SST? clorofilla?) e solo un set di dati verrà creato per quel tipo di file. Questo dataset probabilmente non riesce a caricare a causa di complicazioni dal tentativo di caricare due tipi di file nello stesso dataset.
- Se ci sono meno di 4 file con l'estensione più comune in una directory, questo presuppone che non siano file di dati e semplicemente salta la directory.
- Se ci sono 4 o più file in una directory, ma questo non può generare con successo un pezzo didatasets.xmlper i file (per esempio, un tipo di file non supportato) , questo genereràEDDTableFromFileNamesdataset per i file.
- Alla fine della diagnostica che questo scrive al file di registro, poco prima deldatasets.xmlchunks, questo stamperà un tavolo con una sintesi di informazioni raccolte attraversando tutte le sottodirectory. La tabella elenca ogni sottodirectory e indica il tipo più comune di estensione del file, il numero totale di file, e quale tipo di dataset è stato creato per questi file (se c'è) . Se si trova di fronte a una struttura di file complessa, profondamente nidificata, considerare l'esecuzione GenerateDatasets Xml con EDDType=EDDsFromFiles solo per generare queste informazioni,
- Questa opzione non può fare un ottimo lavoro di indovinare il miglior EDDType per un determinato gruppo di file di dati, ma è veloce, facile e vale la pena di provare. Se i file sorgente sono adatti, funziona bene ed è un buon primo passo nella generazionedatasets.xmlper un file system con un sacco di sottodirectory, ciascuno con file di dati da diversi set di dati.
EDDTableFromEML e EDDTableFromEMLBatch
Questo speciale EDDType genera ildatasets.xmlper fareEDDTableFromAsciiFilesdataset da ciascuna delle tabelle descritte inLingua ecologica dei metadatiFile XML. La variante "Batch" funziona su tutti i file EML in una directory locale o remota. Si prega di vedere il separatodocumentazione per EDDTableFromEML.
EDDTableDal porto
Questo speciale EDDType genera ildatasets.xmlper fareEDDTableFromAsciiFilesdataset dalle informazioni in uninport-xmlfile. Se è possibile accedere al file di dati sorgente (il file inport-xml dovrebbe avere indizi per dove trovarlo) , è possibile effettuare un set di dati di lavoroERDDAP.
I seguenti passaggi delineano come utilizzare GenerateDatasets Xml con un file inport-xml al fine di ottenere un set di dati di lavoroERDDAP.
- Una volta che hai accesso al file inport-xml (o come URL o file locale) : eseguire GenerateDatasets Xml, specificare EDDType=EDDTableFromInPort, specificare l'URL inport-xml o il nome completo del file, specificare qualeChild=0, e specificare le altre informazioni richieste (se noto) . (A questo punto, non è necessario avere il file di dati di origine o specificare il suo nome.) L'impostazione di cheChild=0 dice GenerateDatasets Xml per scrivere le informazioni per Tutto della<entità-attributo-informazione><entità> nel file inport-xml (se ci sono) . Stampa anche un riassunto delle informazioni di sfondo, tra cui tutti i download-url elencati nel file inport-xml.
- Guarda tutte queste informazioni (comprese le informazioni di sfondo che generanoDatasets Stampe Xml) e visitare il download-url (#) per cercare di trovare il file di dati sorgente (#) . Se riesci a trovarlo (loro) , scaricare (loro) in una directory accessibileERDDAP. (Se non riesci a trovare alcun file di dati di origine, non c'è alcun punto di procedere.)
- Correre Generate Datasets Ancora Xml. Se il file di dati di origine corrisponde a uno dei file inport-xml<entità-attributo-informazione><l'entità, specificare quale bambino= che l'Entità è ilNumero (ad esempio, 1, 2, 3, ...) .ERDDAP™cercherà di abbinare i nomi delle colonne nel file di dati di origine a nomi nelle informazioni dell'entità, e richiedere di accettare/rifiggere/fissare eventuali discrepanze. O, se il file inport-xml non ha alcun<entità-attributo-informazione><l'entità, specificare quale bambino=0.
- Nel pezzo didatasets.xmlche è stato fatto da GenerateDatasets Xml, rivedere il [globale<addAttributes> (#global-attributi) come necessario / desiderato.
- Nel pezzo didatasets.xmlche è stato fatto da GenerateDatasetsXml, aggiungere / rivedere il [<dataVariable> (#datavariabile #) informazioni necessarie/desiderate per descrivere ciascuna delle variabili. Assicurati di identificare correttamente ogni variabile [<sourceName> (#) (come appare nella fonte) ♪ [<destinationName> (#destinationname) (che ha più limitazioni sui caratteri consentiti chesourceName) ♪ [<unità > (# Units #) (soprattutto se è untempo o timestamp variabiledove le unità devono specificare il formato) e [<missing\_value> (#missing_value) ♪
- Quando si è vicini alla finitura, ripetutamente utilizzareDasDdsstrumento per vedere rapidamente se la descrizione del dataset è valida e se il dataset apparirà inERDDAP™come vuoi.
Sarebbe bello se i gruppi che utilizzano InPort per documentare i loro set di dati utilizzassero ancheERDDAP™per rendere disponibili i dati effettivi:
- ERDDAP™è una soluzione che può essere utilizzata in questo momento in modo da poter soddisfareNOAA'Accesso pubblico ai risultati della ricerca (PARERI) requisitiin questo momento, non in un momento vago in futuro.
- ERDDAP™rende i dati reali disponibili agli utenti, non solo i metadati. (Che bene sono i metadati senza dati?)
- ERDDAP™supporta i metadati (in particolare, le unità delle variabili) , a differenza di alcuni altri software del server dati in essere considerato. (Che bene sono i dati senza metadati?) Utilizzare software che non supporta i metadati è invitare i dati ad essere fraintesi e abusati.
- ERDDAP™è software libero e open-source a differenza di alcuni altri software che vengono considerati. Sviluppo continuoERDDAP™è già pagato. Supporto perERDDAP™gli utenti sono liberi.
- ERDDAP'l'aspetto può essere facilmente personalizzato per riflettere ed evidenziare il vostro gruppo (nonERDoERDDAP) .
- ERDDAP™offre un modo coerente per accedere a tutti i set di dati.
- ERDDAP™può leggere i dati da molti tipi di file di dati e da database relazionali.
- ERDDAP™può trattare con grandi set di dati, compresi i set di dati in cui i dati sorgente sono in molti file di dati.
- ERDDAP™può scrivere dati a molti tipi di file di dati, a richiesta dell'utente, compresi i tipi di file di dati scientifici come netCDF, ESRI .csv, eODV .txt.
- ERDDAP™può fare grafici personalizzati e mappe di sottoinsiemi dei dati, in base alle specifiche dell'utente.
- ERDDAP™può trattare con non-data datasets come le collezioni di immagini, video o file audio.
- ERDDAP™è stato installato e utilizzato apiù di 60 istituzioni nel mondo.
- ERDDAP™è elencato come uno dei server di dati consigliati per l'uso all'internoNOAAnelNOAADirettiva procedurale di accesso ai dati, a differenza di un altro software che viene considerato.
- ERDDAP™è un prodotto diNMFS/NOAA, così usando dentroNMFSeNOAAdovrebbe essere un punto di orgoglio perNMFSeNOAA.
Per favore.ERDDAP™un tentativo. Se avete bisogno di aiuto, si prega di inviare un messaggio nelERDDAP™Gruppo di Google.
aggiungereFillValueAttributi
Questa speciale opzione EDDType non è un tipo di dataset. È uno strumento che può aggiungere attributi \_FillValue ad alcune variabili in alcuni set di dati. VediaggiungereFillValueAttributi.
trovareDuplicato Tempo
Questa speciale opzione EDDType non è un tipo di dataset. Invece, dice GenerateDatasets Xml per cercare attraverso una raccolta di griglie.nc (e relative) file per trovare e stampare un elenco di file con valori di tempo duplicati. Quando guarda i valori del tempo, li converte dalle unità originali alle"seconds since 1970-01-01"nel caso in cui i file diversi utilizzino stringhe diverse unità. È necessario fornire la directory di partenza (con o senza lo slash trailing) , il nome del file espressione regolare (ad esempio, .\*\.nc ) , e il nome della variabile di tempo nei file.
NC
Questa speciale opzione EDDType non è un tipo di dataset. Invece, dice GenerateDatasets Xml per stampare unNC\-come stampa di un.nc♪.nco.hdffile. In realtà usa il netcdf-javaNCdump, che è uno strumento più limitato della versione C di NCdump. Se si utilizza questa opzione, GenerateDatasetsXml vi chiede di utilizzare una delle opzioni: "-h" (intestazione) "-c" (vassoi di coordinate) , "-vall" (predefinito) , "-v var1;var2", "-v var1 (0,0:10,0:20) ". Questo è utile perché, senza ncdump è difficile sapere cosa è in un.nc♪.nco.hdffile e quindi quale EDDType si dovrebbe specificare per GenerateDatasets Xml. Per una.ncfile ml, questo stamperà l'uscita ncdump per il risultato del.ncmodifiche di file ml applicate al sottostante.nco.hdffile.
DasDds
- DasDds è un programma di riga di comando che è possibile utilizzare dopo aver creato un primo tentativo all'XML per un nuovo dataset indatasets.xml. Con DasDds, è possibile testare ripetutamente e affinare l'XML. Quando si utilizza il programma DasDds:
- Su Windows, la prima volta che si esegue DasDds, è necessario modificare i DasDds. bat file con un editor di testo per cambiare il percorso alla java. exe file in modo che Windows possa trovareJava.
- DasDds ti chiededatasetIDper il set di dati su cui stai lavorando.
- DasDds cerca di creare il dataset con questodatasetID.
- DasDds stampa sempre un sacco di messaggi diagnostici. Se si utilizza "DasDds -verbose", DasDds stamperà più messaggi diagnostici del solito.
- Per la sicurezza, DasDds elimina sempre tutte le informazioni del dataset cache (file) per il dataset prima di cercare di creare il dataset. Questo è l'equivalente dell'impostazione di unbandiera duraCosì per i dataset aggregati, si potrebbe desiderare di regolare temporaneamente il fileNameRegex per limitare il numero di file che il costruttore di dati trova.
- Se il dataset non riesce a caricare (per qualsiasi ragione) , DasDds si fermerà e vi mostrerà il messaggio di errore per il primo errore che trova.
Non provare a indovinare quale potrebbe essere il problema. Leggi attentamente il messaggio ERROR.
Se necessario, leggere i messaggi diagnostici precedenti per trovare più indizi e informazioni, troppo. - Modificare l'XML del dataset per cercare di risolvere questo problema
e lasciare che DasDds provi a creare nuovamente il dataset. - Se risolvi ripetutamente ogni problema, alla fine risolverai tutti i problemi
e il dataset verrà caricato.
- Tutti gli output DasDds (diagnostica e risultati) sono scritti sullo schermo e su BigParentDirectory /logs/DasDds.log .
- Se DasDds può creare il dataset, DasDds vi mostrerà il.das (Struttura di attributi di dataset) ♪.dds (Descrittore di dataset Struttura) e.timeGaps (lacune di tempo) informazioni per il set di dati sullo schermo e scriverle a BigParentDirectory /logs/DasDds.out .
- Spesso, si desidera fare qualche piccolo cambiamento all'XML del dataset per pulire i metadati del dataset e eseguire DasDds.
Bonus Strumento di terze parti:ERDDAP- Ci siamo.
ERDDAP-lint è un programma di Rob Fuller e Adam Leadbetter dell'Irish Marine Institute che è possibile utilizzare per migliorare i metadati del vostroERDDAP™Datasets.ERDDAP-lint "contiene regole e una semplice applicazione web statica per eseguire alcuni test di verifica contro il vostroERDDAP™server. Tutti i test sono eseguiti nel browser web." ComeUnix/Linux lint tool, è possibile modificare le regole esistenti o aggiungere nuove regole. VediERDDAP- Ci siamo.per maggiori informazioni.
Questo strumento è particolarmente utile per i set di dati che hai creato qualche tempo fa e ora vuoi aggiornarti con le tue preferenze dei metadati attuali. Ad esempio, le prime versioni di GenerateDatasets Xml non ha messo alcuno sforzo nella creazione globalecreator\_name♪creator\_email, creatore\_type, ocreator\_urlmetadati. Potresti usareERDDAP-lint per identificare i set di dati che mancano quegli attributi dei metadati.
Grazie a Rob e Adam per la creazione di questo strumento e renderlo disponibile alERDDAP™comunità.
La struttura di base deldatasets.xmlFile
I tag richiesti e facoltativi consentiti in undatasets.xmlfile (e il numero di volte che possono apparire) sono mostrati di seguito. In pratica, il tuodatasets.xmlavrà molti<tag di dataset> e utilizzare solo gli altri tag all'interno<erddapDatasets> come necessario.
<?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>
È possibile che altre codifiche saranno consentite in futuro, ma per ora, solo ISO-8859-1 è raccomandato.
XI.
Nuovo nella versione 2.25 è il supporto per XInclude. Questo richiede che si sta utilizzando il parser SAX<utilizzareSaxParser>true</useSaxParser> nel vostro setup.xml. Questo può consentire di scrivere ogni dataset nel proprio file, quindi includerli tutti nel principaledatasets.xml, riutilizzare parti di definizioni di dataset, o entrambi. Se vuoi vedere un esempio,EDDTestDataset.javaimposta XInclude per riutilizzare le definizioni variabili.
-
- No.
Note
Lavorare con ildatasets.xmlfile è un progetto non banale. Si prega di leggere attentamente tutte queste note. Dopo aver sceltotipo di dataset, si prega di leggere la descrizione dettagliata di esso attentamente.
Scegliere il tipo Dataset
Nella maggior parte dei casi, c'è solo unoERDDAP™tipo di dataset appropriato per una data fonte di dati. In alcuni casi (ad esempio,.ncfile) , ci sono alcune possibilità, ma di solito uno di loro è sicuramente meglio. La prima e più grande decisione che dovete prendere è: è opportuno trattare il dataset come un gruppo di array multidimensionali (se così vediEDDGridtipi di dataset) o come una tabella di dati simile a database (se così vediTipi di dataset EDDTable) .
Servire i dati come è
Di solito, non c'è bisogno di modificare la fonte di dati (ad esempio, convertire i file in un altro tipo di file) cosìERDDAP™può servire. Uno dei presupposti diERDDAP™è che la fonte di dati verrà utilizzata come è. Di solito questo funziona bene. Alcune eccezioni sono:
- Database relazionali e Cassandra --ERDDAP™può servire i dati direttamente da database relazionali e Cassandra. Ma per problemi di sicurezza, bilanciamento del carico e prestazioni, è possibile scegliere di impostare un altro database con gli stessi dati o salvare i dati perNetCDFV.ncfile e hannoERDDAP™servire i dati dalla nuova fonte di dati. VediEDDTableDatabaseeEDDTable FromCassandra.
- Fonti dati non supportate --ERDDAP™può supportare un gran numero di tipi di fonti di dati, ma il mondo è pieno di 1000 (milioni?) di diverse fonti di dati (in particolare, le strutture dei file di dati) . SeERDDAP™non supporta la fonte di dati:
- Se la fonte di dati èNetCDF .ncfile, è possibile utilizzareNCMLper modificare i file di dati on-the-fly, o utilizzareNCOper modificare definitivamente i file di dati.
- È possibile scrivere i dati a un tipo di sorgente dati cheERDDAP™supporti.NetCDF-3.nci file sono una buona, raccomandazione generale perché sono file binari cheERDDAP™può leggere molto rapidamente. Per i dati tabulari, considerare la memorizzazione dei dati in una raccolta di.ncfile che utilizzanoCFU Geometrie di smorzamento discreto (DSG) Contiguous Ragged Array strutture di dati e così può essere gestito conERDDAP'EDDTableFromNcCFFiles). Se sono organizzati logicamente (ciascuno con i dati per un pezzo di spazio e tempo) ♪ERDDAP™può estrarre i dati da loro molto rapidamente.
- È possibile richiedere che venga aggiunto il supporto per tale fonte di datiERDDAP™e-mail Chris. John a Noaa.gov.
- È possibile aggiungere supporto per quella fonte di dati scrivendo il codice per gestirlo da soli. VediilERDDAP™Guida del programmatore
- Velocità...ERDDAP™può leggere i dati da alcune fonti di dati molto più veloce di altri. Ad esempio, la letturaNetCDFV.ncfile è veloce e la lettura di file ASCII è più lento. E se c'è un grande (> 1000) o enorme (> 10.000) numero di file di dati di origine,ERDDAP™risponderà ad alcune richieste di dati lentamente. Di solito, la differenza non è evidente per gli esseri umani. Tuttavia, se si pensaERDDAP™è lento per un dato set di dati, è possibile scegliere di risolvere il problema scrivendo i dati a una configurazione più efficiente (di solito: alcuni, ben strutturati,NetCDFV.ncfile) . Per i dati tabulari, vederequesto consiglio.
Salve.
Spesso è più facile generare l'XML per un set di dati facendo una copia di una descrizione del set di dati di lavoro in dataset.xml e quindi modificandolo.
Codifica caratteri speciali
Dadatasets.xmlè un file XML, DOVE&-encode"&", "<", e ">" in qualsiasi contenuto come "&", "<", e ">". Sbagliato:<Titolo Tempo e maree<> Bene.<Titolo Tempo e maree<>
XML non tollera errori di sintassi
Dopo aver modificato il file dataset.xml, è una buona idea verificare che il risultato siaXML ben formatoincollando il testo XML in un checker XML comexmlvalidazione.
Consigli per la risoluzione dei problemi
- Altri modi per diagnosticare i problemi con i set di dati
Oltre ai due principaliStrumenti♪ - log.txtè un file di log con tuttiERDDAPSono messaggi diagnostici.
- TheRapporto giornalieroha più informazioni rispetto alla pagina di stato, incluso un elenco di set di dati che non hanno caricato e le eccezioni (errori) hanno generato.
- ThePagina di statoè un modo rapido per controllareERDDAP's stato da qualsiasi browser web. Include un elenco di set di dati che non hanno caricato (anche se non le relative eccezioni) e attivitàStatistiche (mostrare il progressoEDDGridCopiaeEDDTableCopyset di dati e qualsiasiEDDGridDa FilioEDDTableFromFilesset di dati che utilizzanocachedall'Url (ma non la cache Dimensione GB) ) .
- Se ti bloccano, vedi il nostrosezione per ottenere supporto aggiuntivo.
Variazioni speciali
- La longitudine, latitudine, altitudine (o profondità) e il tempo (LL) variabile destinationNamesono speciali.
- In generale:
- Le variabili LLAT sono rese note aERDDAP™se la variabile dell'asse (perEDDGridset di dati) o variabili di dati (per set di dati EDDTable) destinationNameè "longitudine", "latitudine", "altitudine", "profondità", o"time".
- Vi incoraggiamo fortemente a utilizzare questi nomi standard per queste variabili quando possibile. Nessuno di loro è richiesto. Se non si utilizzano questi nomi variabili speciali,ERDDAP™non riconosceranno il loro significato. Ad esempio, le variabili LLAT sono trattate appositamente da Make A Graph ( datasetID .) : se la variabile X Axis è "longitudine" e la variabile Y Axis è "latitudine", otterrete una mappa (utilizzando una proiezione standard, e con una maschera di terra, confini politici, ecc.) invece di un grafico.
- ERDDAP™aggiungerà automaticamente molti metadati a variabili LLAT (per esempio, "ioos\_category", "unità", e diversi attributi correlati agli standard come "\_CoordinateAxisType") .
- ERDDAP™automaticamente, on-the-fly, aggiungere un sacco di metadati globali relativi ai valori LLAT del sottoinsieme di dati selezionato (per esempio, "geospatial\_lon\_min") .
- I clienti che supportano questi standard di metadati saranno in grado di sfruttare i metadati aggiunti per posizionare i dati nel tempo e nello spazio.
- I client troveranno più facile generare query che includono variabili LLAT perché i nomi della variabile sono gli stessi in tutti i dataset rilevanti.
- Per la variabile "longitudine" e la variabile "Latitudine":
- UtilizzaredestinationNames "longitudine" e "latitudine" solo se launitàsono gradi\_east e gradi\_north, rispettivamente. Se i dati non si adattano a questi requisiti, utilizzare nomi variabili diversi (per esempio, x, y, lonRadians, latRadians) .
- Se avete dati di longitudine e latitudine espressi in unità diverse e quindi con differentidestinationNames, per esempio, lonRadians e latRadians, fare un grafico ( datasetID .) farà grafici (per esempio, serie di tempo) invece delle mappe.
- Per la variabile "altitude" e la variabile "profondità":
- UtilizzaredestinationName"latitudine" per identificare la distanza dei dati sopra il livello del mare (positivo="up" valori) . Opzionalmente, è possibile utilizzare "altitudine" per distanze sotto il livello del mare se i valori sono negativi sotto il mare (o se si utilizza, per esempio, [<#scale\_factor"tipo="int">- 1</att>] (#scale_factor) per convertire valori di profondità in valori di altitudine.
- UtilizzaredestinationName"profondità" per identificare la distanza dei dati sotto il livello del mare (valori positivi="down") .
- Un dataset potrebbe non avere variabili "altitudine" e "profondità".
- Per questi nomi variabili, ilunitàdeve essere "m", "meter", o "meters". Se le unità sono diverse (per esempio, fathoms) , si può usare [<#scale\_factor> alcuni Valore </att>] (#scale_factor) E...<at name="units">meters</att>] (# Units #) per convertire le unità a metri.
- Se i dati non si adattano a questi requisiti, utilizzare un diversodestinationName (per esempio, sopraGround, distanza ToBottom) .
- Se si conosce il CRS verticale si prega di specificarlo nei metadati, ad esempio, "EPSG:5829" (Altezza istantanea sopra il livello del mare) , "EPSG:5831" (profondità istantanea sotto il livello del mare) , o "EPSG:5703" (Altezza NAVD88) .
- Per il"time"variabile:
- UtilizzaredestinationName "time"solo per variabili che includono l'intera data+time (o data, se è tutto quello che c'è) . Se, ad esempio, ci sono colonne separate per data e oraOfDay, non usare il nome variabile"time".
- Vediunitàper maggiori informazioni sull'attributo delle unità per tempo e tempoStamp variabili.
- La variabile di tempo e relativatempo Variazioni di francobollisono unici in quanto convertono sempre i valori di dati dal formato di tempo della sorgente (qualunque cosa sia) in un valore numerico (secondi dal 1970-01-01T00:00:00:00Z) o un valore di stringa (ISO 8601:2004 (E) formato) , a seconda della situazione.
- Quando un utente richiede dati temporali, può richiederlo specificando il tempo come valore numerico (secondi dal 1970-01-01T00:00:00:00Z) o un valore di stringa (ISO 8601:2004 (E) formato) .
- ERDDAP™ha una utilità perConvertire un Numerico Tempo di / da un tempo di stress.
- VediCome?ERDDAPOfferte con il tempo.
Perché solo due strutture di dati di base?
- Dal momento che è difficile per i clienti umani e client di computer affrontare un insieme complesso di possibili strutture di dataset,ERDDAP™utilizza solo due strutture di dati di base:
- astruttura dati grigliata (per esempio, per dati satellitari e dati di modello) e
- astruttura dei dati tabulati (per esempio, per i dati in-situ buoy, stazione e traiettoria) .
- Certamente, non tutti i dati possono essere espressi in queste strutture, ma gran parte di esso può. Le tabelle, in particolare, sono strutture di dati molto flessibili (guardare il successo dei programmi di database relazionali) .
- Questo rende le query dei dati più facili da costruire.
- Ciò rende le risposte dei dati hanno una struttura semplice, che rende più facile servire i dati in una più ampia varietà di tipi di file standard (che spesso supporta solo semplici strutture di dati) . Questo è il motivo principale che abbiamo istituitoERDDAP™Da questa parte.
- Questo, a sua volta, rende molto facile per noi (o chiunque) scrivere software client che funziona con tuttiERDDAP™Datasets.
- Questo rende più facile confrontare i dati da diverse fonti.
- Siamo molto consapevoli che se si utilizza per lavorare con i dati in altre strutture di dati si può inizialmente pensare che questo approccio sia semplicistico o insufficiente. Ma tutte le strutture dei dati hanno degli scambi. Nessuno è perfetto. Anche le strutture do-it-all hanno i loro svantaggi: lavorare con loro è complesso e i file possono essere scritti o letti solo con librerie software speciali. Se accettiERDDAP's approccio abbastanza per cercare di lavorare con esso, si può scoprire che ha i suoi vantaggi (in particolare il supporto per più tipi di file che possono contenere le risposte dei dati) . TheERDDAP™presentazione (in particolarestrutture di dati slide) parla molto di questi problemi.
- E anche se questo approccio ti sembra strano, la maggior parteERDDAP™i clienti non noteranno mai -- vedranno semplicemente che tutti i dataset hanno una bella struttura semplice e saranno grati che possano ottenere i dati da una vasta gamma di fonti restituiti in una vasta gamma di formati di file.
Dimensioni
- E se le variabili di rete nel dataset sorgente non condividono le stesse variabili di asse?
InEDDGriddatasets, tutte le variabili di dati (Condividi) tutte le variabili dell'asse. Quindi, se un dataset di origine ha alcune variabili con un insieme di dimensioni, e altre variabili con una diversa serie di dimensioni, dovrete fare due set di dati inERDDAP. Per esempio, si potrebbe fare unoERDDAP™dataset intitolato "Alcuni titoli (in superficie) " per tenere variabili che usano\[tempo\]\[latitudine\]\[longitudine\]dimensioni e ne fanno un altroERDDAP™dataset intitolato "Alcuni titoli (a profondità) " per tenere le variabili che utilizzano\[tempo\]\[altitudine\]\[latitudine\]\[longitudine\]. O forse è possibile modificare la fonte di dati per aggiungere una dimensione con un unico valore (per esempio, altitudine=0) per rendere le variabili coerenti.
ERDDAP™non gestisce più set di dati complicati (per esempio, modelli che utilizzano una maglia di triangoli) Bene. È possibile servire questi set di dati inERDDAP™creando due o più set di dati inERDDAP™ (in modo che tutte le variabili di dati in ogni nuovo set di dati condividono lo stesso set di variabili di asse) , ma non è quello che gli utenti vogliono. Per alcuni set di dati, si potrebbe considerare di fare una regolare versione grigliata del dataset e l'offerta che oltre ai dati originali. Alcuni software client possono gestire solo una griglia regolare, quindi facendo questo, si raggiungono clienti aggiuntivi.
Dati rettificati proiettati
Alcuni dati grigliati hanno una struttura complessa. Ad esempio, livello satellitare 2 ("along track") i dati non utilizzano una semplice proiezione. Modelli (e altri) spesso lavorano con dati grigliati su varie proiezioni non cilindriche (per esempio, conico, polare stereographic, tripolar) o in reti non strutturate (una struttura dati più complessa) . Alcuni utenti finali vogliono questi dati, così non c'è perdita di informazioni. Per quei clienti,ERDDAP™può servire i dati, come è, solo seERDDAP™l'amministratore interrompe il dataset originale in alcuni set di dati, con ogni parte comprese variabili che condividono le stesse variabili di asse. Sì, sembra strano per le persone coinvolte ed è diverso dalla maggior parteOPeNDAPserver. MaERDDAP™sottolinea rendere i dati disponibili in molti formati. Questo è possibile perchéERDDAP™utilizza/richiede una struttura dati più uniforme. Anche se è un po' imbarazzante (cioè, diverso dal previsto) ♪ERDDAP™può distribuire i dati proiettati.
\[Sì,ERDDAP™potrebbe avere più requisiti per la struttura dei dati, ma mantenere i requisiti per i formati di output. Ma questo porterebbe a confusione tra molti utenti, in particolare i neofiti, poiché molte richieste apparentemente valide per i dati con strutture diverse sarebbero invalide perché i dati non si adattano al tipo di file. Continuiamo a tornare al design del sistema attuale.\]
Alcuni utenti finali vogliono i dati in una proiezione cilindrica lat lon come Equirectangular / plate carrée o Mercator) per facilità d'uso in situazioni diverse. Per queste situazioni, incoraggiamoERDDAP™amministratore per utilizzare alcuni altri software (NCO?Matlab? R? IDV? ...?) per riprogettare i dati su un geografico (Proiezione equirettangolare / piastra carrée) o altra proiezione cilindrica e servire quella forma dei dati inERDDAP™come dataset diverso. Questo è simile a quello che le persone fanno quando convertono i dati del livello 2 del satellite in dati di livello 3. Uno di questi strumenti èNCOche offre opzioni di estensione per la registrazione dei dati.
GIS e Reprojecting Data
Dal momento che il mondo GIS è spesso orientato alla mappa, i programmi GIS di solito offrono supporto per la riproiezione dei dati, cioè, la trama dei dati su una mappa con una proiezione diversa.
Attualmente,ERDDAP™non ha strumenti per riprogettare i dati. Invece, si consiglia di utilizzare uno strumento esterno per fare una variante del dataset, dove i dati sono stati riprogettati dalla sua forma originale su una rettangolare (latitudine longitudine) array adatto perERDDAP.
A nostro parere, il CF/DAPil mondo è un po' diverso dal mondo GIS e lavora a un livello leggermente inferiore.ERDDAP™riflette questo. In generale,ERDDAP™è progettato per funzionare principalmente con i dati (non mappe) e non vuole cambiare (ad esempio, riprogetto) quei dati. PerERDDAP™, i dati grigliati sono spesso/solitamente/preferibilmente associati ai valori lat lon e a una proiezione cilindrica, e non alcuni valori x,y di proiezione. In ogni caso,ERDDAP™non fa nulla con la proiezione dei dati; semplicemente passa i dati attraverso, come è, con la sua proiezione attuale, sulla teoria che una riproiezione è un cambiamento significativo ai dati eERDDAP™non vuole essere coinvolto con cambiamenti significativi. Inoltre, gli utenti successivi potrebbero ingenuamente riprogettare i dati di nuovo, che non sarebbe così buono come solo fare una riproiezione. (Quindi, se ilERDDAP™l'amministratore vuole offrire i dati in una diversa proiezione, fine; basta riprogettare i dati offline e offrire che come dataset diverso inERDDAP. Un sacco di dataset satellitari sono offerti come ciò che la NASA chiama Livello 2 (Scambio) e come Livello 3 (Proiezione equattangolare) versioni.) QuandoERDDAP™rende le mappe (direttamente o viaWMSo KML) ♪ERDDAP™Attualmente solo offre di fare mappe con la proiezione di carrée Equirectangular / Plate che, fortunatamente, è accettato dalla maggior parte dei programmi di mappatura.
Noi incoraggiamoERDDAP™amministratori per utilizzare alcuni altri software (NCO?Matlab? R? IDV? ...?) per riprogettare i dati su un geografico (Proiezione equirettangolare / piastra carrée) o altra proiezione cilindrica e servire quella forma dei dati inERDDAP™come dataset diverso. Questo è simile a quello che le persone fanno quando convertono i dati del livello 2 del satellite in dati di livello 3. Uno di questi strumenti èNCOche offre opzioni di estensione per la registrazione dei dati.
Speriamo cheERDDAP™avrà strumenti integrati per offrire mappe con altre proiezioni in futuro. Speriamo anche di avere legami migliori con il mondo del GIS in futuro (diverso dalla correnteWMSservizio) . È terribile che in questo mondo "moderno", i legami tra il CF/DAPil mondo e il mondo del GIS sono ancora così deboli. Entrambe queste cose sono nella lista "To Do". (Se si desidera aiutare, in particolare con la connessioneERDDAP™a MapServer, si prega di e-mail Chris. John a noaa.gov.)
Tipi di dati
ERDDAP™supporta i seguenti tipi di dati (i nomi sono sensibili al caso;'u'prefisso sta per "non firmato"; il numero molti dei nomi in altri sistemi è il numero di bit) :
byte
- byte ha firmato valori interi con una gamma di -128 a 127. In altri sistemi, questo è talvolta chiamato int8. Si chiama "tinyint" di SQL e Cassandra. ERDDAP™convertibooleanda alcune fonti (ad esempio, SQL e Cassandra) in byte inERDDAP™con un valore di 0=false, 1=true, e 127=missing\_value.
Ubyte
- Ubyte ha valori interi senza firma con un range da 0 a 255. In altri sistemi, questo è talvolta chiamato uint8.
breve
- breve ha firmato valori interi con una gamma di -32768 a 32767. In altri sistemi, questo è talvolta chiamato int16. Questo è chiamato "piccolo" di SQL e Cassandra.
noihort
- noihort ha valori interi senza firma con una gamma da 0 a 65535. In altri sistemi, questo è talvolta chiamato uint16.
In
- In ha firmato valori interi con una gamma di -2147483648 a 2147483647. In altri sistemi, questo è talvolta chiamato int32. Questo si chiama "integer|numerico (?) "di SQL e "int" di Cassandra.
U.
- U. ha valori interi senza firma con una gamma da 0 a 4294967295. In altri sistemi, questo è talvolta chiamato uint32.
lungo
- lungo ha firmato valori interi con una gamma di -9223372036854775808 a 9223372036854775807. In altri sistemi, questo è talvolta chiamato int64. Questo si chiama "bigint|numerico (?) "di SQL e "bigint" di Cassandra. Poiché molti tipi di file non supportano i dati lunghi, il loro utilizzo è scoraggiato. Quando possibile, utilizzare il doppio invece (vedi sotto) .
*
- ***** ha valori interi senza firma con una gamma da 0 a 18446744073709551615 In altri sistemi, questo è talvolta chiamato uint64. Poiché molti tipi di file non supportano i dati ulong, il loro uso è scoraggiato. Quando possibile, utilizzare il doppio invece (vedi sotto) .
galleggiante
- galleggiante è un galleggiante IEEE 754 con una gamma di circa +/- 3.402823466e+38. In altri sistemi, questo è talvolta chiamato float32. Questo si chiama "reale"|galleggiante (?) |decimale (?) |numerico (?) "di SQL e "float" di Cassandra. Il valore speciale NaN significa Not-a-Number. ERDDAP™converte i valori infiniti positivi e negativi in NaN.
doppio
- doppio è un IEEE 754 doppio con una gamma di circa +/- 1.7976931348623157E+308. In altri sistemi, questo è talvolta chiamato float64. Questo si chiama "doppia precisione|galleggiante (?) |decimale (?) |numerico (?) "di SQL e "doppio" di Cassandra. Il valore speciale NaN significa Not-a-Number. ERDDAP™converte i valori infiniti positivi e negativi in NaN.
carbone
- carbone è un singolo, 2 byte (16 bit) Unicode UCS-2 carattereda\u0000 (#) attraverso\uffff (#65535 #) . \uffffLa definizione è Not-a-Character, analoga ad un doppio valore di NaN. L'uso di char è scoraggiato perché molti tipi di file non supportano i carboni o supportano solo i carboni da 1 byte (vedi sotto) . Considera di usare String. Gli utenti possono utilizzare variabili di beneficenza per fare grafici.ERDDAP™convertirà i caratteri al loro numero di codice Unicode, che può essere utilizzato come dati numerici.
String
- String è una sequenza di 0 o più, 2 byte (16 bit) Unicode UCS-2 caratteri. ERDDAP™utilizza/interpreta una stringa 0-lunghezza come valore mancante.ERDDAP™non supporta una vera stringa null. La lunghezza massima teorica della stringa è 2147483647 caratteri, ma ci sono probabilmente vari problemi in vari luoghi anche con stringhe un po 'più corte. UsoERDDAP's String for SQL's carattere, varchar, carattere variabile, binario, varbinary, intervallo, array, multiset, xml, e qualsiasi altro tipo di dati del database che non si adatta in modo pulito con qualsiasi altroERDDAP™tipo di dati. UsoERDDAP's String for Cassandra's "text" e qualsiasi altro tipo di dati Cassandra che non si adatta in modo pulito con qualsiasi altroERDDAP™tipo di dati.
PrimaERDDAP™V2.10,ERDDAP™non ha supportato i tipi interi non firmati internamente e ha offerto un supporto limitato nei suoi lettori e scrittori di dati.
Limitazioni di tipo di dati
Si può pensareERDDAP™come sistema che ha set di dati virtuali, e che funziona leggendo i dati dalla fonte di un dataset in un modello di dati interno e scrivendo i dati a vari servizi (ad esempio,(OPeN)DAP♪WMS) e tipi di file in risposta alle richieste degli utenti.
- Ogni lettore di input supporta un sottoinsieme dei tipi di dati cheERDDAP™supporti. Così la lettura dei dati inERDDAPLa struttura dei dati interni non è un problema.
- Ogni produttore di output supporta anche un sottoinsieme di tipi di dati. Questo è un problema perchéERDDAPdeve spremere, per esempio, dati lunghi in tipi di file che non supportano i dati lunghi.
Qui di seguito sono le spiegazioni dei limiti (o nessuno) di vari scrittori di uscita e comeERDDAP™si occupa dei problemi. Tali complicazioni sono una parte intrinseca diERDDAPl'obiettivo di rendere interoperabili sistemi disparati.
ASCII
- ASCII (.csv,.tsv, ecc.) file di testo -
-
Tutti i dati numerici sono scritti tramite la sua rappresentazione String (con valori di dati mancanti che appaiono come stringhe di 0-lunghezza) .
-
Anche seERDDAP™scrive valori lunghi e ulong correttamente ai file di testo ASCII, molti lettori (ad esempio, programmi di foglio di calcolo) non può trattare correttamente con valori lunghi e ulong e invece convertirli in valori doppi (con perdita di precisione in alcuni casi) .
-
I dati Char e String sono scritti tramite JSON Strings, che gestiscono tutti i caratteri Unicode (in particolare, i caratteri "insoliti" al di là di ASCII #127, ad esempio, il carattere Euro appare come "\u20ac") .
-
JSON
- JSON (.json♪.jsonlCSV, ecc.) file di testo -
- Tutti i dati numerici sono scritti tramite la sua rappresentazione String.
- I dati Char e String sono scritti come JSON Strings, che gestiscono tutti i caratteri Unicode (in particolare, i caratteri "insoliti" al di là di ASCII #127, ad esempio, il carattere Euro appare come "\u20ac") .
- I valori mancanti per tutti i tipi di dati numerici appaiono nulli.
.nc3 file
- .nc3 file non supportano in modo nativo alcun tipo di dati interi non firmati. Prima di CF v1.9, CF non ha supportato tipi interi non firmati. Per affrontare questo,ERDDAP™2.10+ segue lo standard NUG e aggiunge sempre un attributo "\_Unsigned" con un valore di "vero" o "falso" per indicare se i dati provengono da una variabile non firmata o non firmata. Tutti gli attributi interi sono scritti come attributi firmati (ad esempio, byte) con valori firmati (ad esempio, un ubyteactual\_rangeattributo con valori da 0 a 255, appare come attributo byte con valori da 0 a -1 (l'inverso del valore di complemento dei due del valore out-of-range). Non c'è modo facile di sapere quali (segnati) attributi interi devono essere letti come attributi non firmati.ERDDAP™supporta l'attributo "\_Unsigned" quando legge.nc3 file.
- .nc3 file non supportano i tipi di dati lunghi o lunghi.ERDDAP™si occupa di questo convertendoli temporaneamente in due variabili. I doppi possono rappresentare esattamente tutti i valori fino a +/- 9,007,199,254,740,992 che è 2^53. Questa è una soluzione imperfetta.Unidatarifiuta di fare un aggiornamento minore per.nc3 per affrontare questo e problemi connessi, citando.nc4 (un cambiamento importante) come soluzione.
- La specifica CF (prima della data) ha detto che supporta un tipo di dati di beneficenza, ma non è chiaro se char è destinato solo come i blocchi di costruzione di array di beneficenza, che sono efficacemente Strings. Le domande alla loro mailing list hanno fornito solo risposte confuse. A causa di queste complicazioni, è meglio evitare variabili di carbone inERDDAP™e usare variabili di stringa quando possibile.
- Tradizionalmente,.nc3 file supportati solo stringhe con codifica ASCII (7 bit, #0 - #127) caratteri. NUG (eERDDAP) estendere (a partire dal 2017) includendo l'attributo "\_Encoding" con un valore di "ISO-8859-1" (un'estensione di ASCII che definisce tutti i 256 valori di ogni carattere a 8 bit) o "UTF-8" per indicare come i dati String sono codificati. Altre codifiche possono essere legali ma scoraggiate.
.nc4 file
- .nc4 file supportano tuttiERDDAPi tipi di dati.
File NCCSV
I file NCCSV 1.0 non supportano i tipi di dati interi non firmati. File NCCSV 1.1+supporta tutti i tipi di dati interi non firmati.
DAP
- (OPeN)DAP (.das, .dds, .asc file ASCII e .dods file binari) - No.
- (OPeN)DAPmaniglie brevi, ushort, int, uint, galleggiante e doppi valori correttamente.
- (OPeN)DAPha un tipo di dati "byte" che definisce come non firmato, mentre storicamente, THREDDS eERDDAP™hanno trattato "byte" come firmato nel loro(OPeN)DAPservizi. Per affrontare meglio questo,ERDDAP™2.10+ segue lo standard NUG e aggiunge sempre un attributo "\_Unsigned" con un valore di "vero" o "falso" per indicare se i dati sono ciòERDDAP™chiama byte o ubyte. Tutti gli attributi byte e ubyte sono scritti come attributi "byte" con valori firmati (ad esempio, un ubyteactual\_rangeattributo con valori da 0 a 255, appare come attributo byte con valori da 0 a -1 (l'inverso del valore di complemento dei due del valore out-of-range). Non c'è modo facile di sapere quali attributi "byte" devono essere letti come attributi ubyte.
- (OPeN)DAPnon supporta lunghi firmati o non firmati.ERDDAP™si occupa di questo convertendoli temporaneamente in due variabili e attributi. I doppi possono rappresentare esattamente tutti i valori fino a 9,007,199,254,740,992 che è 2^53. Questa è una soluzione imperfetta.OPeNDAP (l'organizzazione) rifiuta di fare un aggiornamento minore perDAP2.0 per affrontare questo e problemi correlati, citandoDAP4 (un cambiamento importante) come soluzione.
- Perché?(OPeN)DAPnon ha alcun tipo di dati di beneficenza separato e tecnicamente supporta solo i caratteri ASCII 1 byte (#0 - #127) in Strings, le variabili di dati di beneficenza appariranno come stringhe lunghe 1-character in(OPeN)DAP.das, .dds e .dods risposte.
- Tecnicamente, il(OPeN)DAPla specifica supporta solo stringhe con caratteri codificati ASCII (#0 - #127) . NUG (eERDDAP) estendere (a partire dal 2017) includendo l'attributo "\_Encoding" con un valore di "ISO-8859-1" (un'estensione di ASCII che definisce tutti i 256 valori di ogni carattere a 8 bit) o "UTF-8" per indicare come i dati String sono codificati. Altre codifiche possono essere legali ma scoraggiate.
Tipo di dati
- A causa del povero supporto per lunghi, ulong e dati di beneficenza in molti tipi di file, scoraggiamo l'uso di questi tipi di dati inERDDAP. Quando possibile, utilizzare il doppio invece di lungo e lungo, e utilizzare String invece di carbone.
- Metadati - Perché(OPeN)DAP's .das e .dds risposte non supportano attributi lunghi o ulong o tipi di dati (e invece mostrare loro come doppie) , potresti invece voler usareERDDAPLa rappresentazione tabulare dei metadati come si vede nellahttp... Informazioni / datasetID Pagina web .html (per esempio, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (che è anche possibile ottenere in altri tipi di file, ad esempio, .csv,.htmlTable♪.itx♪.json♪.jsonlCSV1♪.jsonlCSV♪.jsonlKVP♪.mat♪.nc♪.nccsv♪.tsv♪.xhtml) o.nccsvRisposta dei metadati (per esempio, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata Anche se.nccsvI metadati sono disponibili solo per i set di dati tabulari) , entrambi supportano tutti i tipi di dati (in particolare, lungo, ulong e char) .
File multimediali
Non tutti i dati sono array di numeri o di testo. Alcuni dataset sono costituiti da o includono file multimediali, come immagini, audio e file video.ERDDAP™ha alcune caratteristiche speciali per rendere più facile per gli utenti di ottenere l'accesso ai file multimediali. E' un processo di due fasi:
- Rendere ogni file accessibile tramite il proprio URL, tramite un sistema che supporta le richieste dell'intervallo byte. Il modo più semplice per farlo è mettere i file in una directory cheERDDAP™ha accesso a. (Se sono in un contenitore come.zipfile, staccarli, anche se si può desiderare di offrire.zipfile anche agli utenti.) Allora, fai unEDDTableFromFileNamesdataset per rendere accessibili tali file tramiteERDDAP™, in particolare viaERDDAP'"files"sistema.
Tutti i file resi accessibili tramite EDDTableFromFileNames eERDDAP'"files"supporto di sistemabyte gamma richieste. Normalmente, quando un cliente (ad esempio, un browser) fa una richiesta a un URL, ottiene l'intero file come risposta. Ma con una richiesta di intervallo byte, la richiesta specifica una gamma di byte dal file, e il server restituisce solo quelle byte. Questo è importante qui perché i lettori audio e video nei browser funzionano solo se il file può essere accessibile tramite le richieste dell'intervallo byte.
Opzionale: Se si dispone di più di un set di dati con i file multimediali associati, è possibile fare solo un EDDTableFromFileNames che ha una sottocartella per ogni gruppo di file. Il vantaggio è che quando si desidera aggiungere nuovi file multimediali per un nuovo dataset, tutto quello che dovete fare è creare una nuova cartella e mettere i file in quella cartella. La cartella e i file verranno aggiunti automaticamente al dataset EDDTableFromFileNames.
- Opzionale: Se hai un set di dati che include riferimenti ai file multimediali, aggiungilo aERDDAP. Ad esempio, si può avere un file .csv con una riga per ogni volta che qualcuno ha visto una balena e una colonna che include il nome di un file di immagine relativo a tale avvistamento. Se il nome del file immagine è solo il nome del file, ad esempio, Img20141024T192403Z, non un URL completo, allora è necessario aggiungerefileAccessBase Url e/o fileAccessSuffixattributi ai metadati per questodataVariableche specifica la baseURL e il suffisso per quei nomi di file. Se hai reso i file accessibili tramite EDDTableFromFileNames, l'URL sarà nel modulo di base /erddap/files/ datasetID / Per esempio,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Se c'è un.zipo altro file contenitore con tutti i file multimediali relativi a una variabile di dati, si consiglia di rendere anche quel file accessibile agli utenti (vedi passo 1 sopra) e poi identificarlo con unfileAccessArchive Urattributo.
\[A partire daERDDAP™Voce principale:\]Se fai il primo passo sopra (o entrambi i passaggi) , allora quando un utente visualizza ilERDDAP™ "files"sistema per quel dataset (o chiede di vedere un sottoinsieme del dataset tramite un.htmlTablerichiesta, se hai fatto il secondo passo) ♪ERDDAP™mostrerà un'icona '?' a sinistra del nome del file. Se l'utente salta su quell'icona, vedrà un popup che mostra l'immagine, o un lettore audio, o un lettore video. I browser supportano solo un numero limitato di tipi di
- immagine (di solito .gif, .jpg, e .png) ♪
- audio (di solito .mp3, .ogg, e .wav) e
- file video (di solito .mp4, .ogv, e . webm) .
Il supporto varia con diverse versioni di diversi browser su diversi sistemi operativi. Quindi, se avete una scelta di quale tipo di file da offrire, ha senso offrire questi tipi.
Oppure, se un utente clicca sul nome del file mostrato su unERDDAP™pagina web, il loro browser mostrerà l'immagine, il file audio o video come una pagina web separata. Questo è per lo più utile per vedere un'immagine molto grande o un video scalato a schermo intero, invece di in un popup.
Lavorare con AWS S3 file
Servizio web Amazon (AWS) è un venditore dicloud computingservizi.S3è un sistema di archiviazione di oggetti offerto da AWS. Invece del sistema gerarchico di directory e file di un file system tradizionale (come un disco rigido nel tuo PC) , S3 offre solo "buchi" che tengono "oggetti" (noi li chiameremo"files") .
Per i file ASCII (ad esempio, .csv) ♪ERDDAP™può lavorare con i file nei secchi direttamente. L'unica cosa che devi fare è specificare il<fileDir> per il set di dati utilizzando un formato specifico per il secchio AWS, ad esempio, https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . Non dovresti usare<cacheFromUrl> . Vedere di seguito per i dettagli.
Ma per i file binari (ad esempio,.nc, .grib, .bufr e.hdffile) , devi usare il<cacheFromUrl> sistema descritto di seguito.ERDDAP, netcdf-java (cheERDDAP™utilizza per leggere i dati da questi file) , e altri software di dati scientifici sono progettati per lavorare con i file in un file system tradizionale che offrelivello di bloccoaccesso ai file (che consente la lettura di pezzi di un file) , ma S3 offre sololivello di file (oggetto) accesso ai file (che permette solo di leggere l'intero file) . AWS offre un'alternativa a S3,Negozio di blocco elastico (EBS) ), che supporta l'accesso a livello di blocco ai file, ma è più costoso di S3, quindi è raramente utilizzato per la memorizzazione in massa di grandi quantità di file di dati. (Così quando la gente dice di memorizzare i dati nel cloud (S3) è economico, di solito è un confronto di mele arance.)
S3 Secchi
Il contenuto di un secchio. Le chiavi. Oggetti, delimitatori.
Tecnicamente, i secchi S3 non sono organizzati in una struttura di file gerarchici come un file system su un computer. Invece, i secchi contengono solo "oggetti" (file) , ognuno dei quali ha un "chiave" (un nome) . Un esempio di chiave in quel secchio noaa-goes17 è
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
L'URl corrispondente per quell'oggetto è
AWS supporta una piccola variazione nel modo in cui l'URL è costruito, maERDDAP™richiede questo formato specifico:
https://bucketName.s3.region.amazonaws.com/key
È pratica comune, come con questo esempio, far apparire i nomi chiave come un percorso gerarchico più un nome di file, ma tecnicamente non lo sono. Poiché è comune e utile,ERDDAP™tratta le chiavi con /'s come se fossero un percorso gerarchico più il nome del file, e questa documentazione li farà riferimento come tale. Se le chiavi di un secchio non usano /'s (ad esempio, una chiave come
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575ERDDAP™tratterà l'intera chiave come nome di file lungo.
Secchi privati e pubblici -- L'amministratore del secchio S3 può rendere pubblico o privato il secchio e il suo contenuto. Se pubblico, qualsiasi file nel secchio può essere scaricato da chiunque utilizzi l'URL per il file. Amazon ha unDati apertiprogramma che ospita i set di dati pubblici (compresi i dati daNOAA, NASA e USGS) gratuitamente e non addebita a nessuno di scaricare i file da quei secchi. Se un secchio è privato, i file nel secchio sono accessibili solo agli utenti autorizzati e AWS addebita una tassa (di solito pagato dal proprietario del secchio) per scaricare i file in un computer S3 non AWS.ERDDAP™può lavorare con i dati in secchi pubblici e privati.
AWS Credenziali
per far sì cheERDDAP™può leggere il contenuto di benne private, è necessario credenziali AWS e è necessario memorizzare un file credenziali nel luogo standard in modo daERDDAP™può trovare le informazioni. Vedere il SDK AWS perJavaDocumentazione 2.x:Impostare le credenziali di default. (L'opzione per memorizzare i valori comeJavaparametri della riga di comando in\[tomcat\]/bin/setenv.sh può essere una buona opzione.)
AWS /files/
- /files/ system -- TheERDDAP™ /files/ sistemaconsente agli utenti di scaricare i file sorgente per un dataset. Si consiglia di accendere questo per tutti i dataset con i file di origine perché molti utenti vogliono scaricare i file di origine originali.
- Se i file sono in un secchio S3 privato, la richiesta dell'utente di scaricare un file verrà gestita daERDDAP™, che leggerà i dati dal file e poi lo trasmetterà all'utente, aumentando così il carico sul vostroERDDAP™, usando la larghezza di banda in entrata e in uscita, e facendoti (ilERDDAP™amministratore) pagare la tassa di avanzamento dei dati a AWS.
- Se i file sono in un secchio S3 pubblico, la richiesta dell'utente di scaricare un file verrà reindirizzata all'URL AWS S3 per quel file, in modo che i dati non fluiscano attraversoERDDAP™, riducendo così il carico suERDDAP. E se i file sono in un Amazon Open Data (gratis) secchio pubblico, poi tu (ilERDDAP™amministratore) non dovrà pagare alcuna tassa di egresso dei dati a AWS. Così, c'è un grande vantaggio che serve i dati da pubblico (non privato) Secchi S3 e un enorme vantaggio per servire i dati da Amazon Open Data (gratis) Secchi.
ERDDAP™e AWS S3 Buckets
ERDDAP™e AWS S3 Buckets
Fortunatamente, dopo molto sforzo,ERDDAP™ha una serie di caratteristiche che permettono di affrontare i problemi inerenti al lavoro con l'accesso a livello di blocco di S3 ai file in modo ragionevolmente efficiente:
- \[Disclaimer: Lavorare con i secchi AWS S3 è molto lavoro in più. AWS è un enorme ecosistema di servizi e caratteristiche. C'è molto da imparare. Ci vuole tempo e fatica, ma è fattibile. Sii paziente e farai funzionare le cose. Cerca/chiedi aiuto
(Documentazione AWS, siti web comeStack Overflow, e il regolare
ERDDAP™opzioni di supporto) se/quando vi bloccate.\]
- Può essere difficile perfino scoprire la struttura della directory e i nomi dei file dei file in un secchio S3.ERDDAP™ha una soluzione per questo problema: EDDTableFromFileNames ha uno speciale\\\*dall'inizioopzione che consente di fare un EDDTableFromFileNames dataset che consente agli utenti di navigare il contenuto di un secchio S3 (e scaricare i file) tramite il dataset"files"opzione. C'è unesempio di questo di seguito.
- ERDDAP™può leggere i dati dafile di dati compressi esternamente, quindi va bene se i file su S3 vengono memorizzati come.gz♪.gzip♪.bz2, .Z, o altri tipi di file di dati compressi esternamente, che possono drammaticamente (2 - 20X) ridurre i costi di archiviazione dei file. Non c'è spesso alcuna penalità di tempo per l'utilizzo di file compressi esternamente, dal momento che il tempo salvato trasferendo un file più piccolo da S3 aERDDAPapprossimativamente bilancia il tempo extra necessario perERDDAP™decomprimere il file. Per utilizzare questa funzione, è sufficiente assicurarsi che il set di dati<fileNameRegex> consente il tipo di file compresso (ad esempio, aggiungendo (|.gz) alla fine del regex) .
- Per il caso più comune, dove hai unERDDAP™installato sul PC per il test/sviluppo e dove il dataset ha file di dati binari che vengono memorizzati come oggetti in un secchio S3, un approccio per ottenere il dataset inERDDAP™è:
-
Crea una directory sul tuo PC per tenere alcuni file di dati di prova.
-
Scarica due file di dati dalla sorgente alla directory appena creata.
-
UsoGenerareDatasetsXmlper generare il pezzo didatasets.xmlper il dataset basato sui due file di dati locali.
-
Verificare che tale dataset funzioni come desideratoDasDdse/o il tuo localeERDDAP.
I seguenti passaggi fanno una copia di quel dataset (che otterrà i dati dal secchio S3) su un pubblicoERDDAP.
-
Copia il pezzo didatasets.xmlper il dataset aldatasets.xmlper il pubblicoERDDAP™che servirà i dati.
-
Creare una directory sul pubblicoERDDAPIl disco rigido locale per contenere una cache di file temporanei. La directory non userà molto spazio su disco (vedi cacheSizeGB qui sotto) .
-
Modificare il valore del dataset<fileDir> tag in modo che punti alla directory appena creato (anche se la directory è vuota) .
-
Aggiungi uncachedall'Urltag che specifica il nome del secchio del dataset e il prefisso opzionale (i.e., directory) nella specificaAws S3 URL Formato cheERDDAP™richiede.
-
Aggiungi un [<cacheSizeGB>] (# Cachefromurl #) tag al set di dati xml (ad esempio, 10 è un buon valore per la maggior parte dei set di dati) per direERDDAP™per limitare la dimensione della cache locale (cioè, non cercare di nascondere tutti i file remoti) .
-
Vedi se funziona in pubblicoERDDAP. Nota che la prima voltaERDDAP™carica il dataset, ci vorrà molto tempo per caricare, perchéERDDAP™ha bisogno di scaricare e leggere tutti i file di dati.
-
Se il dataset è un'enorme raccolta di file di dati grigliati, questo richiederà molto tempo e sarà impraticabile. In alcuni casi, per i file di dati grigliati,ERDDAP™può estrarre le informazioni necessarie (ad esempio, il punto di tempo per i dati in un file di dati grigliato) dal nome del file ed evitare questo problema. VediAggregazione tramite Nome di file.
- Opzionalmente (ma soprattutto per EDDTableFromFiles datasets) , si può aggiungere unnPartitag al dataset da raccontareERDDAPutilizzare più di 1 thread quando si risponde alla richiesta di dati di un utente. Ciò minimizza gli effetti del ritardo che si verifica quandoERDDAP™legge i file di dati da (telecomando) Secchi AWS S3 nella cache locale e (Forse) decomprimendoli.
AWS S3 Dati aperti
Come parte diNOAA'Big Data Program♪NOAAha partnership con cinque organizzazioni, tra cui AWS, "per esplorare i potenziali vantaggi di memorizzare copie di osservazioni chiave e uscite di modelli nel Cloud per consentire il calcolo direttamente sui dati senza richiedere ulteriore distribuzione". AWS include i dataset che ottiene daNOAAcome parte del suo programma per offrire accesso pubblico a una grande collezione diDati aperti su AWS S3da qualsiasi computer, se si tratta di un'istanza di calcolo Amazon (un computer affittato) sulla rete AWS o il proprio PC su qualsiasi rete. L'esempio seguente presuppone che si sta lavorando con un set di dati accessibile pubblicamente.
Accedere ai file in un secchio AWS S3
Per un secchio dati S3 privato, il proprietario del secchio deve darvi accesso al secchio. (Vedere la documentazione AWS.)
In tutti i casi, avrete bisogno di un account AWS perché il SDK AWS perJava (cheERDDAP™utilizza per recuperare informazioni sul contenuto di un secchio) richiede le credenziali dell'account AWS. (più su questo sotto)
ERDDAP™può accedere solo ai secchi AWS S3 se si specifica il [<Condividi su Google (# Cachefromurl #) O<fileDir>) in un formato specifico:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
dove
- Il secchioName è la forma corta del nome del secchio, ad esempio noa-goes17 .
- La regione aws, ad esempio, noi-est-1, è dalla colonna "Regione" in una delle tabelleAWS Service Endpointsdove si trova il secchio.
- Il prefisso è facoltativo. Se presente, deve finire con'/'.
Per esempio, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Questo formato URL è una delle raccomandazioni AWS S3: vediAccedere a un secchioequesta descrizione dei prefissi.ERDDAP™richiede di combinare l'URL del secchio e il prefisso opzionale in un URL al fine di specificare<cacheFromUrl> (o<fileDir>) dove si trovano i file.
Test pubblico AWS S3 Secchi
Per i secchi pubblici, è possibile e dovrebbe testare l'URL del secchio della directory AWS S3 nel browser, ad esempio, https://noaa-goes17.s3.us-east-1.amazonaws.com Se l'URL del secchio è corretto e appropriato perERDDAP, restituirà un documento XML che ha (parziale) elenco dei contenuti di quel secchio. Purtroppo, l'URL completo (i.e., secchio URL più prefisso) cheERDDAP™vuole per un dato dataset non funziona in un browser. AWS non offre un sistema per navigare la gerarchia di un secchio facilmente nel browser. (Se non è corretto, si prega di e-mail Chris. John a Noaa.gov. In caso contrario, Amazon, si prega di aggiungere il supporto per questo!)
Visualizzare il contenuto di un secchio
Secchi S3 spesso contengono un paio di categorie di file, in un paio di sottodirectory pseudo, che potrebbero diventare un paio diERDDAP™Datasets. Per fare ilERDDAP™datasets, è necessario conoscere la directory di partenza per<cacheFromUrl> (o<fileDir>) e il formato dei nomi dei file che identificano quel sottoinsieme di file. Se si tenta di visualizzare l'intero contenuto di un secchio in un browser, S3 vi mostrerà solo i primi 1000 file, che è insufficiente. Attualmente, il modo migliore per visualizzare tutto il contenuto di un secchio è quello di fare unEDDTableFromFileNamesset di dati (sul tuo PCERDDAP™e/o sul tuo pubblicoERDDAP) , che ti dà anche un modo semplice per navigare la struttura della directory e scaricare i file. The<fileDir> per questo sarà l'URL che hai fatto sopra, ad esempio, https://noaa-goes17.s3.us-east-1.amazonaws.com .\[Perché AWS S3 non offre un modo semplice e veloce per chiunque di farlo senza un account AWS?\]Si noti che quando faccio questo sul mio PC su una rete non-Amazon, sembra che Amazon rallenta la risposta a un trickle (circa 100 (?) file per chunk) dopo i primi pezzi (di 1000 file per pezzo) sono scaricati. Dal momento che i secchi possono avere un numero enorme di file (noaa-goes17 ha 26 milioni) , ottenere tutti i contenuti di un secchio può prendere EDDTableFromFileNames diverse ore (Ad esempio, 12!) per finire.\[Amazon, è così?!\]
Fare un EDDTable FromFileNames Dataset con un secchio AWS S3
Se si dispone di un nome di secchio, ma non hanno già un elenco di file nel secchio S3 o il prefisso che identifica la posizione dei file rilevanti nel secchio, utilizzare le istruzioni qui sotto per fare un EDDTableFromFileNames dataset in modo da poter navigare la gerarchia directory del secchio S3 tramiteERDDAP'"files"sistema.
- Aprire un account AWS ERDDAP™utilizza ilAWS SDK perJavaper ottenere informazioni di secchio da AWS, quindi è necessariocreare e attivare un account AWS. E' un bel lavoro, con un sacco di cose da imparare.
- Metti le credenziali AWS doveERDDAP™può trovarli. Seguire le istruzioniImpostare Credenziali AWS e Regione per lo SviluppoCosìERDDAP™ (specificamente, il SDK AWS perJava) sarà in grado di trovare e utilizzare le credenziali AWS. SeERDDAP™non riesci a trovare le credenziali, vedrai un Java.lang. IllegalArgumentException: il file del profilo non può essere un errore nullERDDAPIl file log.txt.
Presa per Linux e Mac OS: il file delle credenziali deve essere nella home directory dell'utente che esegue Tomcat (eERDDAP) (per questo paragrafo, assumiamo user=tomcat) in un file chiamato ~/.aws/credentials . Non presumere che ~ è /home/tomcat -- effettivamente utilizzare cd ~ per scoprire dove il sistema operativo pensa ~ per user=tomcat è. Crea la directory se non esiste. Inoltre, dopo aver messo in atto il file delle credenziali, assicurarsi che l'utente e il gruppo per il file siano tomcat e quindi utilizzare le credenziali chmod 400 per assicurarsi che il file sia in sola lettura per user=tomcat.
- Creare l'URL del secchio nelformato cheERDDAP™richiedePer esempio, https://noaa-goes17.s3.us-east-1.amazonaws.com e (per secchi pubblici) provarlo in un browser per assicurarsi che ritorni un documento XML che ha una lista parziale del contenuto di quel secchio.
- UsoGenerareDatasetsXmlper creare unEDDTableFromFileNamesdataset:
-
Per la directory di avvio, utilizzare questa sintassi: \\. daOnTheFly, * per esempio, \*\**dall'inizio, https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
Nome file regex? .
-
Ricorrente? vero
-
ricarica EveryNMinutes? 10080
-
Istituzione?NOAA
-
Riepilogo? niente (ERDDAP™creerà automaticamente un riassunto decente.)
-
titolo? niente (ERDDAP™creerà automaticamente un titolo decente.) Come al solito, è necessario modificare l'XML risultante per verificare la correttezza e apportare miglioramenti prima del blocco dei set di dati utilizzandolo indatasets.xml.
-
- Se si seguono le istruzioni sopra e caricare il dataset inERDDAP, hai creato un dataset EDDTableFromFiles. Come esempio, e per rendere più facile per chiunque di navigare e scaricare i file dai secchi AWS Open Data, abbiamo creato EDDTableFromFileNames datasets (vedere l'elenco a
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) per quasi tuttiAWS S3 Secchi di dati aperti.
\[I pochi secchi che non abbiamo incluso hanno un gran numero di file nella directory root (più che può essere scaricato in una quantità ragionevole di tempo) , o non consentire l'accesso pubblico (Non dovrebbero essere tutti pubblici?) , o sono Secchi di Paga di Richiesta (ad esempio, Sentinel) .\]
Se fai clic su"files"link per uno di questi set di dati, è possibile sfogliare l'albero della directory e i file in quel secchio S3. A causa della via\\\*dall'OnTheFly EDDTableFromFiles funziona, questi elenchi di directory sono sempre perfettamente aggiornati perchéERDDAP™Li mette in moto. Se fai clic sull'albero della directory su un nome del file reale e fai clic sul nome del file,ERDDAP™reindirizza la tua richiesta a AWS S3 in modo da poter scaricare il file direttamente da AWS. Allora puoi ispezionare quel file.
Problemi? Se il tuo EDDTableFromFiles non verrà caricatoERDDAP™ (o DasDds) , guarda nel file log.txt per un messaggio di errore. Se vedi un Java.lang. IllegalArgumentException: il file del profilo non può essere un errore nullo, il problema è che il SDK AWS perJava (usato daERDDAP) non trova il file delle credenziali. Vedere le istruzioni delle credenziali sopra.
È spiacevole che AWS non permetta semplicemente alle persone di utilizzare un browser per visualizzare il contenuto di un secchio pubblico.
Poi si può fareERDDAP™datasets che danno agli utenti l'accesso ai dati nei file.
Vedere le istruzioni inERDDAP™e S3 Buckets (sopra) .
Per il campione EDDTableFromFileNames dataset che hai fatto sopra, se si fa un po 'in giro con la directory e i nomi di file nell'albero della directory, diventa chiaro che i nomi delle directory di livello superiore (ad esempio, ABI-L1b-RadC) corrisponde a quello cheERDDAP™chiamerebbe set di dati separati. Il secchio con cui lavori può essere simile. Si potrebbe quindi perseguire la creazione di set di dati separati inERDDAP™per ciascuno di questi set di dati, utilizzando, ad esempio,
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
come<cacheFromUrl>. Purtroppo, per questo esempio particolare, i dataset nel secchio sembrano tutti essere set di dati di livello 1 o livello 2, cheERDDAP™ non è particolarmente buono a, perché il dataset è una raccolta più complicata di variabili che utilizzano dimensioni diverse.
File NcML
I file NcML consentono di specificare le modifiche on-the-fly a una o più sorgenti originaliNetCDF (v3 o v4) .nc, .grib, .bufr, o.hdf (v4 o v5) file, e poi hannoERDDAP™tratta il.nci file ml come i file sorgente.ERDDAP™i set di dati accetteranno.ncfile ml ogni volta.nci file sono attesi. I file NcML Devono avere l'estensione.ncml. Vedere laUnidataDocumentazione NcML. NcML è utile perché si può fare alcune cose con esso (ad esempio, apportando diverse modifiche a diversi file in una raccolta, incluso l'aggiunta di una dimensione con un valore specifico a un file) che non puoi fareERDDAP'datasets.xml.
- Modifiche a un.ncl'ultimo tempo modificato del file ml causerà il caricamento del file ogni volta che il dataset viene ricaricato, ma le modifiche al sottostante.nci file di dati non saranno notati direttamente.
- Punti positivi: NcML is\*Molto bene.\*sensibile all'ordine di alcuni elementi nel file NcML. Pensa a NcML come specificare una serie di istruzioni nell'ordine specificato, con l'intenzione di cambiare i file sorgente (lo stato all'inizio/inizio del file NcML) nei file di destinazione (lo stato alla fine/in basso del file NcML) .
Un'alternativa a NcML è ilNetCDFOperatori (NCO) . La grande differenza è che NcML è un sistema per fare cambiamenti sul volo (in modo che i file sorgente non siano modificati) , mentreNCOpuò essere utilizzato per apportare modifiche (o nuove versioni di) I file. EntrambiNCOe NcML sono molto, molto flessibile e consentono di fare quasi qualsiasi cambiamento si può pensare ai file. Per entrambi, può essere difficile capire esattamente come fare quello che si desidera fare -- controllare il web per esempi simili. Entrambi sono strumenti utili per la preparazione di netCDF eHDFfile da utilizzareERDDAP, in particolare per apportare modifiche al di là di quantoERDDAPIl sistema di manipolazione puo' fare.
Esempio #1: Aggiungere una dimensione temporale con un valore unico Ecco un.ncfile ml che crea una nuova dimensione esterna (tempo, con 1 valore: 1041379200) e aggiunge quella dimensione alla variabile pic nel file denominato 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>
Esempio #2: Cambiare un Valore Tempo esistente A volte la fonte.ncfile ha già una dimensione del tempo e il valore del tempo, ma il valore è errato (per i tuoi scopi) . Questo.ncil file ml dice: per il file di dati denominato ""19810825230030-NCEI...", per la variabile di dimensione"time", impostare l'attributo unità di essere 'secondi dal 1970-01-01T00:00:00Z' e impostare il valore di tempo di essere 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>
NetCDFOperatori (NCO)
"Gli operatori netCDF (NCO) compongono una dozzina di programmi standalone, linea di comando che prendono netCDF\[v3 o v4\]♪HDF \[v4 o v5\]♪\[.grib, .bufr,\]e/oDAPfile come input, quindi utilizzare (ad esempio, derivano nuovi dati, statistiche di calcolo, stampa, iperslab, manipolano i metadati) e l'output dei risultati a schermo o file in formati di testo, binario o netCDF.NCOaiuta l'analisi dei dati scientifici grigliati. Lo stile delle copertureNCOconsente agli utenti di manipolare e analizzare i file in modo interattivo, o con script espressivi che evitano alcuni overhead di ambienti di programmazione di livello superiore." (dalNCOhomepage) .
Un'alternativa aNCOèNCML. La grande differenza è che NcML è un sistema per fare cambiamenti sul volo (in modo che i file sorgente non siano modificati) , mentreNCOpuò essere utilizzato per apportare modifiche (o nuove versioni di) I file. EntrambiNCOe NcML sono molto, molto flessibile e consentono di fare quasi qualsiasi cambiamento si può pensare ai file. Per entrambi, può essere difficile capire esattamente come fare quello che si desidera fare -- controllare il web per esempi simili. Entrambi sono strumenti utili per la preparazione di netCDF eHDFfile da utilizzareERDDAP, in particolare per apportare modifiche al di là di quantoERDDAPIl sistema di manipolazione puo' fare.
Per esempio, è possibile utilizzareNCOper rendere le unità del tempo variabile coerente in un gruppo di file in cui non erano coerenti originariamente. Oppure, puoi usareNCOda applicarescale\_factoreadd\_offsetin un gruppo di file dovescale\_factoreadd\_offsethanno valori diversi in diversi file sorgente. (Oppure, ora puoi occuparti di questi problemiERDDAP™viaEDDGridDaNcFilesUnpacked, che è una varianteEDDGridFromNcFiles che disacco i dati imballati e standardizza i valori di tempo a basso livello al fine di affrontare un file di raccolta che hanno diversiscale\_factoreadd\_offset, o diverse unità temporali.)
NCOè Software Libero e Open Source che utilizzaGPL 3.0La patente.
Esempio #1: rendere le unità coerenti
EDDGridDaFiles ed EDDTable Da File insistere che le unità per una determinata variabile siano identiche in tutti i file. Se alcuni dei file sono banalmente (non funzionale) diversi da altri (ad esempio, unità temporali di
"secondi dal 1970-01-01 00:00:00:00 UTC" contro
"seconds since 1970-01-01T00:00:00Z"# Potresti usare #NCO'Ncatted. cambiare le unità in tutti i file per essere identici con
nco/ncatted -a unit,time,o,c,'seconds from 1970-01-01T00:00:00:00Z' \*.nc
\[Per molti problemi come questo in EDDTableDa... File datasets, è ora possibile utilizzarestandardizzare Cosa?per direERDDAPstandardizzare i file sorgente in cui vengono lettiERDDAP.\]
Limiti alla dimensione di un Dataset
Vedrete molti riferimenti a "2 miliardi" di seguito. Più precisamente, questo è un riferimento a 2,147,483,647 (2.31-1) , che è il valore massimo di un intero a 32 bit firmato. In alcune lingue del computer, ad esempioJava (cheERDDAP™è scritto in) , questo è il più grande tipo di dati che può essere utilizzato per molte strutture di dati (per esempio, la dimensione di un array) .
Per valori di stringa (per esempio, per nomi variabili, nomi di attributo, valori di attributo String e valori di dati di stringa) , il numero massimo di caratteri per String inERDDAP™- 2 miliardi. Ma in quasi tutti i casi, ci saranno problemi piccoli o grandi se uno String supera una dimensione ragionevole (ad esempio, 80 caratteri per nomi e nomi di attributo variabili e 255 caratteri per la maggior parte dei valori di attributo String e valori di dati) . Ad esempio, le pagine web che visualizzano nomi variabili lunghi saranno goffamente larghe e i nomi variabili lunghi saranno troncati se superano il limite del tipo di file di risposta.
Per i set di dati grigliati:
- Il numero massimo diaxisVariables è di circa 2 miliardi. Il numero massimo didataVariables è di circa 2 miliardi. Ma se un dataset ha >100 variabili, sarà ingombrante per gli utenti da utilizzare. E se un dataset ha >1 milioni di variabili, il server avrà bisogno di un sacco di memoria fisica e ci saranno altri problemi.
- La dimensione massima di ogni dimensione (axisVariable) è ~2 miliardi di valori.
- Credo che il numero totale massimo di cellule (il prodotto di tutte le dimensioni) è illimitato, ma può essere ~9e18.
Per set di dati tabulari:
- Il numero massimo didataVariables è di circa 2 miliardi. Ma se un dataset ha >100 variabili, sarà ingombrante per gli utenti da utilizzare. E se un dataset ha >1 milioni di variabili, il server avrà bisogno di un sacco di memoria fisica e ci saranno altri problemi.
- Il numero massimo di fonti (per esempio, file) che può essere aggregato è ~2 miliardi.
- In alcuni casi, il numero massimo di righe da una fonte individuale (per esempio, un file, ma non un database) è ~2 miliardi di file.
- Non credo ci siano altri limiti.
Per i set di dati grigliati e tabulari, ci sono alcuni limiti interni sulla dimensione del sottoinsieme che possono essere richiesti da un utente in una singola richiesta (spesso legato a >2 miliardi di qualcosa o ~9e18 di qualcosa) , ma è molto più probabile che un utente colpirà i limiti specifici del tipo di file.
- NetCDFversione 3.nci file sono limitati a 2GB byte. (Se questo è davvero un problema per qualcuno, fammi sapere: Potrei aggiungere il supporto perNetCDFversione 3.ncEstensione a 64 bit oNetCDFVersione 4, che aumenterebbe significativamente il limite, ma non infinitamente.)
- Browser crash dopo solo ~500MB di dati, quindiERDDAP™limita la risposta.htmlTablerichieste a ~400MB di dati.
- Molti programmi di analisi dei dati hanno limiti simili (per esempio, la dimensione massima di una dimensione è spesso ~2 miliardi di valori) , quindi non c'è motivo di lavorare duramente per aggirare i limiti specifici del tipo di file.
- I limiti specifici del tipo di file sono utili in quanto impediscono richieste ingenue di quantità veramente enormi di dati (per esempio, "darmi tutto questo dataset" quando il dataset ha 20TB di dati) , che richiederebbe settimane o mesi per scaricare. Più a lungo il download, più probabilmente fallirà per una varietà di motivi.
- I limiti specifici del tipo di file sono utili in quanto costringono l'utente a trattare con sottoinsiemi di dimensioni ragionevoli (per esempio, trattare con un grande dataset grigliato tramite file con dati da un punto di volta ogni) .
Passare a ACDD-1.3
Noi (in particolareGenerareDatasetsXml) attualmente consigliamoVersione ACDD 1.3, che è stato ratificato all'inizio del 2015 e che è denominato "ACDD-1.3" nell'attributo delle Convenzioni globali. Prima diERDDAP™versione 1.62 (pubblicato nel giugno 2015) ♪ERDDAP™usato/ricomposto l'originale, versione 1.0, delNetCDFConvegno Attributo per Dataset Discoveryche è stato indicato come "UnidataDataset Discovery v1.0" nelle Convenzioni globali eMetadata\_Conventionsattributi.
Se i tuoi set di dati utilizzano le versioni precedenti di ACDD, noi RECOMMEND che si passa a ACDD-1.3. Non e' difficile. ACDD-1.3 è altamente compatibile con la versione 1.0. Per passare, per tutti i set di dati (eccettoEDDGridDa Erddap e EDDTable DaErddap datasets) :
- Rimuovere il nuovo deprecato globaleMetadata\_Conventionsattributo aggiungendo (o modificando l'esistenteMetadata\_Conventionsattributo)
<att name="Metadata\\_Conventions">null</att>
a livello globale del dataset<addAttributes>. 2. Se il dataset ha un attributo Conventions nel mondo<addAttributes>, cambiare tutto "UnidataDataset Discovery v1.0" riferimenti a "ACDD-1.3". Se il dataset non ha un attributo Conventions nel mondo<addAttributes>, quindi aggiungere uno che si riferisce a ACDD-1.3. Per esempio,
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Se il dataset ha un livello globalestandard\_name\_vocabularyattributo, si prega di modificare il formato del valore a, ad esempio,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Se il riferimento è a una versione precedente dellaTabella dei nomi standard CF. è probabilmente una buona idea passare alla versione attuale (65, come scriviamo questo) , poiché vengono aggiunti nuovi nomi standard a quella tabella con versioni successive, ma i vecchi nomi standard sono raramente deprecati e mai rimossi. 4. Anche se ACDD-1.0 includeva attributi globali percreator\_name♪creator\_email♪creator\_url♪GenerareDatasetsXmlnon li ha aggiunti automaticamente fino a qualche volta intornoERDDAP™v1.50. Si tratta di informazioni importanti:
- creator\_nameconsente agli utenti di conoscere/citare il creatore del dataset.
- creator\_emaildice agli utenti l'indirizzo email preferito per contattare il creatore del dataset, ad esempio se hanno domande sul dataset.
- creator\_urldà agli utenti un modo per saperne di più sul creatore.
- ERDDAP™utilizza tutte queste informazioni quando si generano documenti metadati FGDC e ISO 19115-2/19139 per ogni dataset. Questi documenti sono spesso utilizzati da servizi di ricerca esterni.
Si prega di aggiungere questi attributi al dataset globale<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>
Tutto qui. Spero non sia stato troppo difficile.
Zar
A partire dalla versione 2.25ERDDAP™può leggere locale File Zarr utilizzandoEDDTableFromNcFileseEDDGridDa NcFiles.
(A partire da agosto 2019) Possiamo facilmente sbagliare, ma non siamo ancora convinti cheZar, o sistemi simili che rompe i file di dati in piccoli pezzi, sono grandi soluzioni al problema diERDDAP™dati di lettura memorizzati in servizi cloud come Amazon AWS S3. Zarr è una grande tecnologia che ha mostrato la sua utilità in una varietà di situazioni, non siamo sicuri cheERDDAP+S3 sarà una di quelle situazioni. Per lo più stiamo dicendo: prima di correre per fare lo sforzo per memorizzare tutti i nostri dati in Zarr, facciamo alcuni test per vedere se è in realtà una soluzione migliore.
I problemi di accesso ai dati nel cloud sono latenza (il ritardo per ottenere i dati) e accesso a livello di file (piuttosto che l'accesso a livello di blocco) . Zarr risolve il problema di accesso a livello di file, ma non fa nulla sulla latenza. Rispetto al semplice download del file (così può essere letto come file locale con accesso a livello di blocco) , Zarr può anche esacerbare il problema di latenza perché, con Zarr, la lettura di un file ora comporta una serie di diverse chiamate per leggere diverse parti del file (ciascuno con il proprio lag) . Il problema della latenza può essere risolto parallelizzando le richieste, ma è una soluzione di livello superiore, non dipendente da Zarr.
E con Zarr (come con database relazionali) , perdiamo la convenienza di avere un file di dati essere un semplice, singolo file che è possibile verificare facilmente l'integrità di, o fare / scaricare una copia di.
ERDDAP™ (a partire da v2) ha un sistema per mantenere una cache locale di file da un'origine URL (ad esempio, S3) (v.<cacheFromUrl> e<cacheMaxGB>] (# Cachefromurl #) ). E il nuovo [<) (#Nthreads) dovrebbe ridurre al minimo il problema di latenza parallelizzando il recupero dei dati ad un livello elevato.<cacheFromUrl> sembra funzionare molto bene per molti scenari. (Non siamo sicuri di quanto benefico<nThreads> è senza ulteriori test.) Ammettiamo che non abbiamo fatto test di temporizzazione su un'istanza AWS con una buona connessione di rete, ma abbiamo testato con successo con varie fonti di URL remote di file. EERDDAP'<cacheFromUrl> funziona con qualsiasi tipo di file di dati (ad esempio,.nc♪.hdf,.jsonlCSV) , anche se compressa esternamente (ad esempio,.gz) , senza modifiche ai file (ad esempio, riscrivendoli come collezioni Zarr) .
È probabile che diversi scenari favoriranno diverse soluzioni, ad esempio, solo bisogno di leggere parte di un file una volta (Zarr vincerà) , vs. bisogno di leggere tutti i file una volta, vs. bisogno di leggere parte o tutti i file ripetutamente (<cacheFromUrl> vincerà).
Per lo più stiamo dicendo: prima di correre per fare lo sforzo per memorizzare tutti i nostri dati in Zarr, facciamo alcuni test per vedere se è in realtà una soluzione migliore.
-
- No.
Elenco dei tipi Datasets
Se hai bisogno di aiuto per scegliere il tipo di dataset giusto, vediScegliere il tipo Dataset.
I tipi di dataset rientrano in due categorie. (Perche'?)
EDDGrid
- EDDGrid datasets gestiscono dati grigliati.
- InEDDGriddataset, le variabili di dati sono array multidimensionali di dati.
- C'è una variabile di asse per ogni dimensione. Le variabili di asse devono essere specificate nell'ordine in cui le variabili di dati le utilizzano.
- InEDDGriddatasets, tutte le variabili di dati (Condividi) tutte le variabili dell'asse. (Perche'? E se non lo facessero?)
- Valori di Dimensione Ordinati - In tuttoEDDGridset di dati, ogni dimensione DEVE essere in ordine ordinato (salire o scendere) . Ciascuno può essere distanziato in modo irregolare. Non ci possono essere legami. Questo è un requisito delCF metadati standard. Se i valori di qualsiasi dimensione non sono in ordine ordinato, il dataset non verrà caricato eERDDAP™identificherà il primo valore non selezionato nel file di registro, BigParentDirectory /logs/log.txt .
Alcune sottoclassi hanno restrizioni aggiuntive (in particolare,EDDGridAggregateExistingDimension richiede che la dimensione esterna (più sinistra, prima) sia ascendente.
I valori di dimensione non assortiti indicano quasi sempre un problema con il dataset sorgente. Questo più comunemente si verifica quando un file misnamed o inappropriato è incluso nell'aggregazione, che porta ad una dimensione temporale non assortita. Per risolvere questo problema, vedere il messaggio di errore nelERDDAP™log.txt file per trovare il valore temporale offensivo. Quindi guardare nei file sorgente per trovare il file corrispondente (o uno prima o uno dopo) non appartiene all'aggregazione.
- Vedere la descrizione più completa dellaEDDGridmodello di dati.
- TheEDDGridi tipi di dataset sono:
- EDDGridDa AudioFilesaggrega i dati da un gruppo di file audio locali.
- EDDGridDamascogestisce i dati grigliati daDAPserver.
- EDDGridDaEDDTableconsente di convertire un set di dati tabulari in un set di dati grigliato.
- EDDGridDa Erddapgestisce i dati grigliati da un telecomandoERDDAP.
- EDDGridDa Etopogestisce solo i dati di topografia ETOPO integrati.
- EDDGridDa Filiè la superclasse di tuttiEDDGridDa... cinque classi.
- EDDGridDaMergeIRFilesaggrega i dati di un gruppo di MergeIR locale.gzfile.
- EDDGridDa NcFilesaggrega i dati da un gruppo di localiNetCDF (v3 o v4) .nce file correlati.
- EDDGridDaNcFilesUnpackedè una variante seEDDGridFromNcFiles che aggrega anche i dati di un gruppo di localiNetCDF (v3 o v4) .nce file correlati, cheERDDAP™disacco a basso livello.
- EDDGridLonPM180modifica i valori di longitudine di un bambinoEDDGridin modo che siano nella gamma -180 a 180.
- EDDGridLon0360modifica i valori di longitudine di un bambinoEDDGridin modo che siano nella gamma da 0 a 360.
- EDDGridSideBySideaggregati due o piùEDDGridset di dati fianco a fianco.
- EDDGridAggregateExistingDimensionaggregati due o piùEDDGriddataset, ognuno dei quali ha una diversa gamma di valori per la prima dimensione, ma identici valori per le altre dimensioni.
- EDDGridCopiapuò fare una copia locale di un altroEDDGrid's dati e serve dati dalla copia locale.
- TuttiEDDGriddatasets supporta un'impostazione nThreads, che diceERDDAP™quanti thread da utilizzare quando si risponde a una richiesta. Vedi ilnPartidocumentazione per i dettagli.
EDDTable
- EDDTable i dataset gestiscono i dati tabulari.
- I dati tabulari possono essere rappresentati come una tabella simile al database con righe e colonne. Ogni colonna (una variabile di dati) ha un nome, un insieme di attributi e memorizza solo un tipo di dati. Ogni riga ha un'osservazione (o gruppo di valori correlati) . La fonte di dati può avere i dati in una diversa struttura dei dati, una struttura dei dati più complicata e/o più file di dati, maERDDAP™deve essere in grado di adulare i dati di origine in una tabella simile al database per presentare i dati come set di dati tabulari agli utenti diERDDAP.
- Vedere la descrizione più completa dellaModello di dati EDDTable.
- I tipi di dataset EDDTable sono:
-
EDDTableFromAllDatasetsè un dataset di livello superiore che ha informazioni su tutti gli altri set di dati nel vostroERDDAP.
-
EDDTableFromAsciiFilesaggrega i dati dai file di dati tabulari ASCII virgola-, tab-, semicolon- o separati dallo spazio.
-
EDDTableFromAsciiServiceè la superclasse di tutte le classi EDDTableFromAsciiService.
-
EDDTableFromAsciiServiceNOSgestisce i dati da alcuni deiNOAAServizi web NOS.
-
EDDTableFromAudioFilesaggrega i dati da un gruppo di file audio locali.
-
EDDTEDD OhsXmlFilesaggrega i dati da un insieme di Stazione Meteo Automatica (AWS) File XML.
-
EDDTable FromCassandragestisce i dati tabulari da una tabella Cassandra.
-
EDDTableFromColumnarAsciiFilesaggrega i dati dai file di dati tabular ASCII con colonne di dati a larghezza fissa.
-
EDDTableFromDapSequenzagestisce i dati tabulari daDAPserver di sequenza.
-
EDDTableDatabasegestisce i dati tabulari da una tabella di database.
-
EDDTEDDEDDGridconsente di creare un dataset EDDTable da unEDDGridDataset.
-
EDDTableFromErddapgestisce i dati tabulari da un telecomandoERDDAP.
-
EDDTableFromFileNamescrea un set di dati da informazioni su un gruppo di file nel file system del server, ma non serve dati dall'interno dei file.
-
EDDTableFromFilesè la superclasse di tutti EDDTableDa...Files classi.
-
EDDTableDaHttpGetèERDDAP's solo sistema per l'importazione di dati e l'esportazione di dati.
-
EDDTEDDHyraxFile (DEPRECATE) aggrega i dati da file con diverse variabili con dimensioni condivise servite da unHyrax OPeNDAPserver.
-
EDDTableFrom non validoaggrega i dati daNetCDF (v3 o v4) .ncfile che utilizzano una specifica, non valida, variante del CF DSG Contiguous Ragged Array (CRA) file. Anche seERDDAP™supporta questo tipo di file, è un tipo di file non valido che nessuno dovrebbe iniziare a usare. I gruppi che attualmente utilizzano questo tipo di file sono fortemente incoraggiati ad utilizzareERDDAP™generare file CF DSG CRA validi e smettere di utilizzare questi file.
-
EDDTableFromJsonlCSVFilesaggrega i dati daJSON Linee file CSV.
-
EDDTableFromMultidimNcFilesaggrega i dati daNetCDF (v3 o v4) .ncfile con diverse variabili con dimensioni condivise.
-
EDDTableFromNcFilesaggrega i dati daNetCDF (v3 o v4) .ncfile con diverse variabili con dimensioni condivise. È bene continuare a utilizzare questo tipo di dataset per i set di dati esistenti, ma per i nuovi set di dati si consiglia di utilizzare EDDTableFromMultidimNcFiles invece.
-
EDDTableFromNcCFFilesaggrega i dati daNetCDF (v3 o v4) .ncfile che utilizzano uno dei formati di file specificati dalCFU Geometrie di smorzamento discreto (DSG) convenzioni. Ma per i file che utilizzano una delle varianti multidimensionali CF DSG, utilizzareEDDTableFromMultidimNcFilesInvece.
-
EDDTableFromNccsvFilesaggrega i dati daNCCSVFile ASCII .csv.
-
EDDTableFromNOS (DEPRECATE) gestisce i dati tabulari dai server XML NOS.
-
EDDTable FromOBISgestisce i dati tabulari dai server OBIS.
-
EDDTableFromParquetFilesgestisce i dati daParquet.
-
EDDTEDDSOSgestisce i dati tabulari daSOSserver.
-
EDDTableFromThreddsFiles (DEPRECATE) aggrega i dati da file con diverse variabili con dimensioni condivise servite da unTHREDOPeNDAPserver.
-
EDDTEDDWFSFile (DEPRECATE) fa una copia locale di tutti i dati da unArcGISMappaServerWFSserver in modo che i dati possano essere ri-servati rapidamente aERDDAP™utenti.
-
EDDTableAggregateRowspuò creare un set di dati EDDTable da un gruppo di set di dati EDDTable.
-
EDDTableCopypuò fare una copia locale di molti tipi di set di dati EDDTable e quindi conservare i dati rapidamente dalla copia locale.
-
-
- No.
Descrizioni dettagliate dei tipi di Dataset
EDDGridDamasco
EDDGridDamasco maniglie variabili di griglia daDAPserver.
- Si consiglia vivamente di utilizzareGenerare i dati Programma Xmlper fare una bozza ruvida deldatasets.xmlchunk per questo dataset. È possibile raccogliere le informazioni che è necessario modificare che o creare il proprio XML per unEDDGridFromDap dataset guardando i file DDS e DAS del set di dati di origine nel tuo browser (aggiungendo .das e .dds alsourceUrl, per esempio, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridFromDap può ottenere dati da qualsiasi variabile multidimensionale da unaDAPserver dati. (Negli episodi precedenti...EDDGridFromDap era limitato alle variabili designate come "grid", ma non è più un requisito.)
- Valori di Dimensione Ordinati - I valori per ogni dimensione DEVE essere in ordine ordinato (salire o scendere) . I valori possono essere irregolari. Non ci possono essere legami. Questo è un requisito delCF metadati standard. Se i valori di qualsiasi dimensione non sono in ordine ordinato, il dataset non verrà caricato eERDDAP™identificherà il primo valore non selezionato nel file di registro, BigParentDirectory /logs/log.txt .
I valori di dimensione non assortiti indicano quasi sempre un problema con il dataset sorgente. Questo più comunemente si verifica quando un file misnamed o inappropriato è incluso nell'aggregazione, che porta ad una dimensione temporale non assortita. Per risolvere questo problema, vedere il messaggio di errore nelERDDAP™log.txt file per trovare il valore temporale offensivo. Quindi guardare nei file sorgente per trovare il file corrispondente (o uno prima o uno dopo) non appartiene all'aggregazione.
EDDGridScheletro di 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>
EDDGridDaEDDTable
EDDGridDaEDDTable consente di convertire un EDDTable dataset tabular in unEDDGridDataset grigliato. Ricordate cheERDDAP™tratta i set di dati comeset di dati grigliati (sottoclassi diEDDGrid) o set di dati tabulari (sottoclassi di EDDTable) .
- Normalmente, se si dispone di dati grigliati, è sufficiente impostare unEDDGridset di dati direttamente. A volte questo non è possibile, per esempio, quando si hanno i dati memorizzati in un database relazionale cheERDDAP™può accedere solo tramite EDDTableFromDatabase.EDDGridDaEDDTable classe ti permette di rimediare a quella situazione.
- Ovviamente, i dati nel dataset EDDTable sottostante devono essere (fondamentalmente) dati grigliati, ma in forma tabulare. Ad esempio, il dataset EDDTable può avere dati CTD: misurazioni della corrente est e nord, a più profondità, più volte. Poiché le profondità sono le stesse ad ogni punto di tempo,EDDGridFromEDDTable può creare un dataset grigliato con un tempo e una dimensione di profondità che accede ai dati tramite il dataset EDDTable sottostante.
- Generare i dati Xml... Si consiglia vivamente di utilizzareGenerare i dati Programma Xmlper fare una bozza ruvida deldatasets.xmlchunk per questo dataset. È possibile raccogliere le informazioni necessarie per migliorare la bozza ruvida.
- Attributi di origine -- Come con tutti gli altri tipi di dataset,EDDGridFromTable ha l'idea che ci siano fonti globaliAttributi eglobaleaddAttributes (specificatodatasets.xml) , che sono combinati per rendere la combinazione globale Attributi, che sono ciò che gli utenti vedono. Per la fonte globaleAttributi,EDDGridFromEDDTable utilizza la combinazione globale Attributi del set di dati EDDTable sottostante. (Se ci pensi per un minuto, ha senso.)
Analogamente, per ciascunoaxisVariableedataVariable'addAttributes♪EDDGridFromEDDTable utilizza la combinazione della variabile Attributi dal set di dati EDDTable sottostante comeEDDGridDalla sorgente della variabile EDTable Attributi. (Se ci pensi per un minuto, ha senso.)
Di conseguenza, se la EDDTable ha buoni metadati,EDDGridDaEDDTable spesso ha pochissimoaddAttributesmetadati -- solo un paio di modifiche qui e là.
-
dataVariablecontroaxisVariableS... Il sottostante EDDTable ha solodataVariableS. AnEDDGridFromEDDTable dataset avrà alcuniaxisVariable# (creato da alcune delle EDDTabledataVariable#) e alcunidataVariable# (creato dal restante EDDTabledataVariable#) .GenerareDatasetsXmlfarà un'ipotesi su cui EDDTabledataVariabledovrebbe diventareEDDGridDaEDDTableaxisVariables, ma è solo un'ipotesi. È necessario modificare l'output di GenerateDatasetsXml per specificare qualedataVariablesaràaxisVariables, e in quale ordine.
-
asseValori -- Non c'è niente di cui parlare l'EDDTable sottostanteEDDGridDaEDDTable i valori possibili delaxisVariables nella versione grigliata del dataset, quindi devi fornire tali informazioni per ogniaxisVariabletramite uno di questi attributi:
- assiValori -- consente di specificare un elenco di valori. Per esempio, <at name="axisValues"tipo="doubleList"\>2, 2.5, 3, 3.5, 4<// Nota l'uso di untipo di datipiù la parola Lista. Inoltre, il tipo di lista (per esempio, doppio) , DEVE corrispondere ai dati Tipo della variabile in EDDTable eEDDGridDatasets.
- asseValuesStartStrideStop -- consente di specificare una sequenza di valori regolarmente distanziati specificando i valori di avvio, passo e stop. Ecco un esempio che è equivalente all'asseValues esempio sopra: <att name="axisValuesStartStrideStop"tipo="doubleList"\>2, 0,5, 4<// Ancora una volta, si noti l'uso di un tipo di dati elenco. Inoltre, il tipo di lista (per esempio, doppio) , DEVE corrispondere ai dati Tipo della variabile in EDDTable eEDDGridDatasets.
Aggiornamenti -- Come non c'è modo diEDDGridDaEDDTable per determinare l'asseValore dall'EDDTable inizialmente, non c'è anche modo affidabile perEDDGridDaEDDTable per determinare dal EDDTable quando l'asseValori sono cambiati (in particolare, quando ci sono nuovi valori per la variabile di tempo) . Attualmente, l'unica soluzione è quella di modificare l'attributo dell'asseValuesdatasets.xmle ricaricare il dataset. Per esempio, si potrebbe scrivere uno script per
- Ricercadatasets.xmlper datasetID= theDatasetID " così si sta lavorando con il corretto dataset.
- Ricercadatasets.xmlper il prossimo evento
il nome della Vergine
così si sta lavorando con la variabile corretta. - Ricercadatasets.xmlper il prossimo evento
<att name="axisValuesStartStrideStop" type="doubleList">
quindi conosci la posizione di partenza del tag. 4. Ricercadatasets.xmlper il prossimo evento
</att>
quindi conosci la posizione finale dei valori dell'asse. 5. Sostituisci il vecchio inizio, stride, ferma i valori con i nuovi valori. 6. ContattareURL della bandieraper il dataset da raccontareERDDAP™per ricaricare il dataset.
Non è l'ideale, ma funziona.
- precisione -- QuandoEDDGridFromEDDTable risponde alla richiesta di dati di un utente, sposta una riga di dati dalla tabella di risposta EDDTable nellaEDDGridgriglia di risposta. Per fare questo, deve capire se i valori "assi" su una determinata riga nella tabella corrispondono a una combinazione di valori di asse nella griglia. Per i tipi di dati interi, è facile determinare se due valori sono uguali. Ma per galleggianti e doppie, questo solleva il problema orribile di numeri di punti galleggiantinon abbinato esattamente. (per esempio, 0.2 versus 0.199999999999996) . A (cercare di) affrontare questo,EDDGridFromTable consente di specificare un attributo di precisione per uno qualsiasi deiaxisVariables, che specifica il numero totale di cifre decimali che devono essere identiche.
- Per esempio,<at name="precision" type="int">5<//
- Per diversi tipi di variabili di dati, ci sono diversi valori di precisione di default. I default sono di solito appropriati. Se non lo sono, è necessario specificare valori diversi.
- PeraxisVariableche sonotempo o tempo Variazioni di francobolli, il default è piena precisione (una corrispondenza esatta) .
- PeraxisVariables che sono galleggianti, la precisione predefinita è 5.
- PeraxisVariables che sono doppie, la precisione predefinita è 9.
- PeraxisVariables che hanno tipi di dati interi,EDDGridFromEDDTable ignora l'attributo di precisione e utilizza sempre la massima precisione (una corrispondenza esatta) .
- ATTENZIONE! Quando si effettua la conversione di un pezzo di dati tabulari in un pezzo di dati grigliati, seEDDGridFromEDDTable non può corrispondere ad un valore "assi" EDDTable ad uno dei prevedibiliEDDGridValori asse daEDDTable,EDDGridDaEDDTable silenziosamente (nessun errore) butta via i dati da quella riga della tabella. Per esempio, ci possono essere altri dati (non sulla griglia) nel Dataset EDDTable. (E se lo sforzo > 1, non è ovvio aEDDGridDaTabella quali valori asse sono valori desiderati e quali sono quelli da saltare a causa del passo.) Quindi, se i valori di precisione sono troppo elevati, l'utente vedrà i valori mancanti nella risposta dei dati quando esistono valori di dati validi.
Al contrario, se i valori di precisione sono troppo bassi, EDDTable "assis" valori che non dovrebbero corrispondereEDDGridDaEDDI valori dell'asse (erroneamente) Corrisponde.
Questi potenziali problemi sono terribili, perché l'utente ottiene i dati sbagliati (o valori mancanti) quando dovrebbero ottenere i dati giusti (o almeno un messaggio di errore) . Questo non è un difettoEDDGridFromTable.EDDGridFromTable non riesce a risolvere questo problema. Il problema è inerente alla conversione dei dati tabulari in dati grigliati (a meno che non possano essere fatte altre ipotesi, ma non possono essere fatte qui) . spetta a te,ERDDAP™amministratore, a prova il tuoEDDGridDaEDDTable accuratamente per garantire che i valori di precisione siano impostati per evitare questi potenziali problemi.
spazio
- spazio-- Questo è un tipo di dataset molto insolito. Dal momento che i tipi di query che possono essere fatti a (gestito da) unEDDGridset di dati (correlato ai range e ai passiaxisVariable#) sono molto diversi dai tipi di query che possono essere fatte a (gestito da) un set di dati EDDTable (solo correlato ai range di alcune variabili) , l'esecuzione delEDDGridDaEDDTable datasets varia notevolmente a seconda della richiesta esatta che viene fatta e la velocità del dataset EDDTable sottostante. Per richieste che hanno un valore di sforzo > 1,EDDGridFromEDDTable può chiedere il sottostante EDDTable per un pezzo relativamente grande di dati (come se stridesse=1) e poi passare attraverso i risultati, mantenendo i dati da alcune righe e gettando via i dati da altri. Se deve passare attraverso un sacco di dati per ottenere i dati di cui ha bisogno, la richiesta richiederà più tempo per riempire.
SeEDDGridFromEDDTable può dire che ci saranno grandi lacune (con righe di dati indesiderati) tra le righe con i dati desiderati,EDDGridFromEDDTable può scegliere di fare diverse sottorequisizioni al sottostante EDDTable invece di una grande richiesta, saltando così le righe indesiderate di dati nelle grandi lacune. La sensibilità per questa decisione è controllata dal gapValore di soglia come specificato nella<gapThreshold> tag (default=1000 righe di dati sorgente) . Impostare il gapTreshold a un numero più piccolo porterà al dataset facendo (in generale) più subrequisiti. Impostare il gapTreshold a un numero più grande porterà al processo di elaborazione dei dati (in generale) meno subrequisiti.
Se il gapThreshold è impostato troppo piccolo,EDDGridFromEDDTable opererà più lentamente perché il overhead di più richieste sarà maggiore del tempo salvato ottenendo alcuni dati in eccesso. Se gapThreshold è impostato troppo grande,EDDGridFromEDDTable opererà più lentamente perché così tanti dati in eccesso saranno recuperati dalla EDDTable, solo per essere scartati. (Come Goldilocks ha scoperto, il mezzo è "solo giusto".) L'overhead per diversi tipi di dataset EDDTable varia notevolmente, quindi l'unico modo per conoscere l'impostazione migliore effettiva per il tuo dataset è attraverso la sperimentazione. Ma non andrai troppo male ad attaccare al default.
Un semplice esempio è: Immagina unEDDGridFromTable con uno soloaxisVariable (tempo, con una dimensione di 100000) UnodataVariable (temperatura) , e il gap predefinitoTreshold di 1000.
- Se un utente richiede temperatura\[0💯5000\], il passo è 100 quindi la dimensione del gap è 99, che è inferiore al gapThreshold. Quindi...EDDGridFromTable farà una sola richiesta a EDDTable per tutti i dati necessari per la richiesta (equivalente a temperatura\[0:5000\]) e buttare via tutte le righe di dati che non ha bisogno.
- Se un utente richiede temperatura\[0:2500:5000\], quel passo è 2500 quindi la dimensione del gap è 2499, che è maggiore del gapThreshold. Quindi...EDDGridFromTable farà richieste separate a EDDTable che sono equivalenti alla temperatura\[0\], temperatura\[2500\], temperatura\[5000\].
Il calcolo della dimensione del gap è più complicato quando ci sono più assi.
Per ogni richiesta dell'utente,EDDGridStampa FromEDDTable messaggi diagnostici relativi a questo nellog.txtfile.
- Se...<logLevel>] (#loglevel) indatasets.xmlè impostato su info, questo stampa un messaggio come Traduzione: Se nOuterAxes=0, gapThreshold non è stato superato e solo una richiesta sarà fatta a EDDTable. Se nOuterAxes>0, gapThreshold è stato superato e nOuterRequests sarà fatto a EDDTable, corrispondente ad ogni combinazione richiesta del nOuterAxes più sinistro. Ad esempio, se il dataset ha 4axisVariableedataVariablea est\[tempo\]\[latitudine\]\[longitudine\]\[profondità\]il più a sinistra (primo) la variabile dell'asse è il tempo.
- Se<logLevel! indatasets.xmlè impostato a tutti, ulteriori informazioni sono scritte al file log.txt.
EDDGridScheletro daEDDTable 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>
EDDERDDAP
EDDGridDa Erddap gestisce i dati grigliati da un telecomandoERDDAP™server. EDDTableFromErddap gestisce i dati tabulari da un telecomandoERDDAP™server.
- EDDGridFromErddap e EDDTableFromErddap si comportano in modo diverso da tutti gli altri tipi di set di dati inERDDAP.
- Come altri tipi di dataset, questi set di dati ottengono informazioni sul set di dati dalla sorgente e la tengono in memoria.
- Come altri tipi di dataset, quandoERDDAP™ricerche per set di dati, visualizza il modulo di accesso dati ( datasetID .html) , o visualizza il modulo Make A Graph ( datasetID .) ♪ERDDAP™utilizza le informazioni sul set di dati che è in memoria.
- EDDGridDa Erddap e EDDTable FromErddap sono la base perreti/clusters/federazionidiERDDAPs, che distribuisce in modo efficiente l'utilizzo della CPU (per lo più per fare mappe) , l'utilizzo della memoria, l'archiviazione dei dataset e l'utilizzo della larghezza di banda di un grande data center.
Redirect
- A differenza di altri tipi di dataset, quandoERDDAP™riceve una richiesta di dati o immagini da questi set di dati,ERDDAP reindirizzamentila richiesta al telecomandoERDDAP™server. Il risultato è:
- Questo è molto efficiente (CPU, memoria e larghezza di banda) , perché altrimenti
- Il compositoERDDAP™deve inviare la richiesta all'altroERDDAP™ (che richiede tempo) .
- L'altroERDDAP™deve ottenere i dati, riformattare e trasmettere i dati al compositoERDDAP.
- Il compositoERDDAP™deve ricevere i dati (usando larghezza di banda) # Riformalo # (utilizzando CPU e memoria) , e trasmettere i dati all'utente (usando larghezza di banda) . Reindirizzando la richiesta e permettendo l'altraERDDAP™inviare la risposta direttamente all'utente, il compositoERDDAP™non passa essenzialmente tempo di CPU, memoria, o larghezza di banda su richiesta.
- Il reindirizzamento è trasparente per l'utente indipendentemente dal software client (un browser o qualsiasi altro software o strumento di riga di comando) .
- Questo è molto efficiente (CPU, memoria e larghezza di banda) , perché altrimenti
- Si può direERDDAP™non reindirizzare le richieste dell'utente impostando<redirect>false</redirect>, ma questo nega la maggior parte dei vantaggi del... FromErddap dataset type (in particolare, disperdendo il carico sul fronteERDDAP™al telecomando/backendERDDAP) .
Abbonamenti
Normalmente, quando unEDDGridDa Erddap e EDDTable Da Erddap sono (re) caricato sul tuoERDDAP, cercano di aggiungere un abbonamento al set di dati remoto tramite il telecomandoERDDAP's sistema di abbonamento e-mail/URL. In questo modo, ogni volta che il set di dati remoto cambia, il telecomandoERDDAP™contattiSet di dati URL della bandierasul tuoERDDAP™in modo che il dataset locale venga ricaricato ASAP e che il dataset locale sia sempre perfettamente aggiornato e mimiti il dataset remoto. Quindi, la prima volta che questo accade, si dovrebbe ottenere una e-mail che richiede di convalidare l'abbonamento. Tuttavia, se il localeERDDAP™non può inviare un'e-mail o se il telecomandoERDDAP's email/URL sistema di abbonamento non è attivo, si dovrebbe e-mail il telecomandoERDDAP™amministratore e richiedere che s/he aggiunga manualmente [<) (# Il cambiamento #) ...</onChange> tags a tutti i relativi set di dati per chiamare il vostro set di datiSet di dati URLs della bandiera. Vedi il tuoERDDAP™report giornaliero per un elenco di setDataset URL della bandierina, ma basta inviare quelli perEDDGridFromErddap e EDDTableFromErddap datasets al telecomandoERDDAP™amministratore.
Non funziona? I tuoi dataset locali non sono sincronizzati con i dataset remoti? Molte cose devono funzionare correttamente per questo sistema in modo che i tuoi set di dati rimangano aggiornati. Controllare ciascuna di queste cose in ordine:
- Il tuoERDDAP™deve essere in grado di inviare e-mail. Vedi le impostazioni dell'email nel tuo setup.xml.
- In generale (ma non sempre) ♪ERDDAP'<baseUrl> e<baseHttpsUrl> non deve avere un numero di porta (ad es. : 8080, : 8443) . Se lo fanno, usa unproxypassper rimuovere il porto dall'url.
- Nel tuo setup.xml,<IscrivitiToRemoteErddapDataset> deve essere impostato a true.
- Quando il tuo EDD locale... FromErddap dataset viene ricaricato, dovrebbe inviare una richiesta al telecomandoERDDAP™abbonarsi al set di dati remoto. Guarda su log.txt per vedere se sta succedendo.
- Si dovrebbe ottenere una e-mail chiedendo di convalidare la richiesta di abbonamento.
- È necessario fare clic sul link in quella e-mail per convalidare la richiesta di abbonamento.
- Il telecomandoERDDAP™dovrebbe dire che la validazione ha avuto successo. In qualsiasi momento, è possibile richiedere un'e-mail dal telecomandoERDDAP™con un elenco degli abbonamenti in sospeso e validi. Vedere il modulo telecomandoErddapBase Ur /erddap/abbonamento/list.html .
- Quando il set di dati remoto cambia (ad esempio, ottiene dati aggiuntivi) , il telecomandoERDDAP™dovrebbe cercare di contattare il flagURL sul vostroERDDAP. Non puoi controllare, ma puoi chiedere all'amministratore del telecomandoERDDAP™per controllare.
- Il tuoERDDAP™dovrebbe ricevere una richiesta per impostare tale flagURL. Guarda nel tuo log.txt per "setDatasetFlag.txt?" richiesta (#) e vedere se c'è un messaggio di errore associato alle richieste.
- Il tuoERDDAP™dovrebbe quindi provare a ricaricare quel dataset (forse non subito, ma ASAP) .
Max aggiornato (tempo) ?
EDDGrid/TableFromErddap datasets modifica solo le informazioni memorizzate su ogni dataset sorgente quando il dataset sorgente è"ricarica"e qualche pezzo di cambiamenti di metadati (ad esempio, la variabile di tempoactual\_range) , generando così una notifica di abbonamento. Se il dataset sorgente ha dati che cambiano frequentemente (ad esempio, nuovi dati ogni secondo) e utilizza"aggiornamento"sistema per rilevare frequenti modifiche ai dati sottostanti,EDDGrid/TableFromErddap non sarà avvisato di questi frequenti cambiamenti fino al successivo set di dati "ricarica", così ilEDDGrid/TableFromErddap non sarà perfettamente aggiornato. È possibile ridurre al minimo questo problema modificando il dataset sorgente<reloadEveryNMinutes> a un valore più piccolo (60? 15?) in modo che ci sono più notifiche di abbonamento per raccontareEDDGrid/TableFromErddap per aggiornare le sue informazioni sul dataset sorgente.
Oppure, se il sistema di gestione dei dati sa quando il dataset sorgente ha nuovi dati (ad esempio, tramite uno script che copia un file di dati in atto) , e se non è super frequente (ad esempio, ogni 5 minuti, o meno frequenti) C'è una soluzione migliore:
- Non usare<updateEveryNMillis> per mantenere aggiornati i dati di origine.
- Impostare il dataset sorgente<reloadEveryNMinutes> a un numero maggiore (1440?) .
- Fai contattare lo script del dataset sorgenteURL della bandierasubito dopo che copia un nuovo file di dati in atto.
Ciò porterà al set di dati di origine essere perfettamente aggiornato e causare la creazione di una notifica di abbonamento, che verrà inviata alEDDGrid/TableFromErddap dataset. Questo porteràEDDGrid/TableFromErddap dataset per essere perfettamente aggiornato (bene, entro 5 secondi dall'aggiunta di nuovi dati) . E tutto ciò che sarà fatto in modo efficiente (senza inutili ricarica dataset) .
No.addAttributes♪axisVariableodataVariable
A differenza di altri tipi di dataset, EDDTableFromErddap eEDDGridI dataset di Erddap non permettono a livello globale<addAttributes>♪<axisVariable> o<dataVariable> sezioni nelledatasets.xmlper quel dataset. Il problema è che permettere a coloro che portano a incongruenze:
- Diciamo che è stato permesso e ha aggiunto un nuovo attributo globale.
- Quando un utente chiede il tuoERDDAP™per gli attributi globali, apparirà il nuovo attributo.
- Ma quando un utente ti chiedeERDDAP™per un file di dati, il tuoERDDAP™reindirizza la richiesta alla fonteERDDAP. Che cosa?ERDDAP™non è a conoscenza del nuovo attributo. Quindi, se crea un file di dati con metadati, ad esempio, un.ncfile, i metadati non avranno il nuovo attributo.
Ci sono due soluzioni:
- Convincere l'amministratore della fonteERDDAP™fare i cambiamenti che si desidera ai metadati.
- Invece di EDDTableFromErddap, usoEDDTableFromDapSequenza. O invece diEDDGridDaErddap, usoEDDGridDamasco. Questi tipi EDD consentono di connettersi in modo efficiente a un set di dati su un telecomandoERDDAP™ (ma senza reindirizzare le richieste di dati) e ti permettono di includere globale<addAttributes>♪<axisVariable> o<dataVariable> sezioni nelledatasets.xml. Un'altra differenza: è necessario iscriversi manualmente al set di dati remoto, in modo che il dataset sul tuoERDDAP™sarà notificato (via ilURL della bandiera) quando ci sono modifiche al set di dati remoto. Così, si sta creando un nuovo dataset, invece di collegare a un set di dati remoto.
Altre note
- Per motivi di sicurezza,EDDGridDa Erddap e EDDTable FromErddap non supporta il [<Per saperne di più (# Accessibleto #) tag e non può essere utilizzato con set di dati remoti che richiedono l'accesso (perché usano [<Per saperne di più (# Accessibleto #) ). VediERDDAP'sistema di sicurezzaper limitare l'accesso ad alcuni set di dati ad alcuni utenti.
- A partire daERDDAP™V2.10,EDDGridDa Erddap e EDDTableFromErddap sostengono il [<accessibileViaFiles>] (#accessibleviafiles) tag. A differenza di altri tipi di dataset, il default è vero, ma i file del dataset saranno accessibiliViaFiles solo se il dataset di origine ha anche<accessibileViaFiles> impostato a true.
- È possibile utilizzareGenerare i dati Programma Xmlper faredatasets.xmlchunk per questo tipo di dataset. Ma è possibile fare questi tipi di set di dati facilmente a mano.
EDDGridDello scheletro di Erddap XML
- EDDGridDello scheletro di Erddap XML dataset è molto semplice, perché l'intento è solo quello di imitare il set di dati remoto che è già adatto per l'uso inERDDAP:
<dataset type="EDDGridFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>...</accessibleViaFiles> <!-- 0 or 1, default=true. -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1
For EDDGridFromErddap, this gets the remote .dds and then gets
the new leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDTableFromErddap scheletro XML
- Lo scheletro XML per un dataset EDDTableFromErddap è molto semplice, perché l'intento è solo quello di imitare il dataset remoto, che è già adatto per l'uso inERDDAP:
<dataset type="EDDTableFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->