Arbejde med arbejdetdatasets.xmlFilen fil
\[Denne webside vil kun være af interesse forERDDAP™Administratorer.\]
Efter du har fulgt denERDDAP™ installationsvejledning, du skal redigeredatasets.xmlfil i Tomcat /content/erddap/ til at beskrive de datasæt, som dine dataERDDAP™installation vil tjene.
Du kan se et eksempeldatasets.xmlpå GitHub.
Introduktion
Nogle konting påkrævet
Opsætning af et datasæt iERDDAP™er ikke bare et spørgsmål om at pege på datasættets mappe eller URL. Du skal skrive en smule XML fordatasets.xmlsom beskriver datasættet.
- For gitterede datasæt, for at gøre datasættet i overensstemmelse medERDDAP's datastruktur for gitterded data, skal du identificere en del af datasættet's variabler, der deler de samme dimensioner. (Hvorfor? Hvordan?)
- Datasættets aktuelle metadata importeres automatisk. Men hvis du vil ændre disse metadata eller tilføje andre metadata, skal du angive det idatasets.xml. Og og ogERDDAP™behov for andre metadata, herunderglobale attributter (f.eks.infoUrl, institution,sourceUrl, oversigt og titel) og og ogvariable egenskaber (f.eks.long\_nameog enheder) . Ligesom de metadata, der er i øjeblikket i datasættet, tilføjer beskrivende oplysninger til datasættet, de metadata, der er anmodet om afERDDAP™tilføjer beskrivende oplysninger til datasættet. Yderligere metadata er en god tilføjelse til dit datasæt og hjælperERDDAP™Gør et bedre job for at præsentere dine data for brugere, der ikke er bekendt med det.
- ERDDAP™behov for at gøre særlige ting medlængde, bredde, højde (eller dybde) , og tidsvariabler.
Hvis du køber i disse idéer og fremskynder indsatsen for at oprette XML fordatasets.xml, du får alle fordelene vedERDDAP™, herunder:
- Fuld tekstsøgning for datasæt
- Søg efter datasæt efter kategori
- Data Access-formularer ( datasetID .html) så du kan anmode om en delsæt af data i mange forskellige filformater
- Forms til at anmode grafer og kort ( datasetID .ografi)
- Web Map Service (WMS) til gitterede datasæt
- RESTfuladgang til dine data
Gøre detdatasets.xmltager stor indsats for de første par datasæt, men det bliver nemmere . Efter de første datasæt, kan du ofte genbruge en masse af dit arbejde for det næste datasæt. Heldigvis,ERDDAP™leveres med toVærktøjsværktøjerfor at hjælpe dig med at oprette XML for hver datasæt idatasets.xml. Hvis du sidder fast, se voressektion om at få ekstra støtte.
Dataudbyder Form Form Form
Når en dataudbyder kommer til dig i håb om at tilføje nogle data til dine dataERDDAP, det kan være svært og tidskrævende at indsamle alle metadata (Oplysninger om datasættet) nødvendig for at tilføje datasættet tilERDDAP. Mange datakilder (for eksempel .csv-filer, Excel-filer, databaser) har ingen interne metadata, såERDDAP™har en Dataudbyder Form, der samler metadata fra dataudbyderen, og giver dataudbyderen en anden vejledning, herunder omfattende vejledning tilData i Databaser. De oplysninger, der indsendes, overføres tildatasets.xmlformat og derefter e-mailet til detERDDAP™Administrator (dig du) og skrevet (tilføjet) til at til bigParentDirectory /logs/dataProviderForm.log . Således danner formularen halvautomatiske processen med at få et datasæt iERDDAP, men denERDDAP™Administratoren skal stadig fuldføredatasets.xmlchunk and deal med at få datafilen (s s s) fra udbyderen eller forbindelsen til databasen.
Indsendelsen af faktiske datafiler fra eksterne kilder er en enorm sikkerhedsrisiko, såERDDAP™beskæftiger ikke med det. Du skal finde ud af en løsning, der fungerer for dig og dataudbyderen, f.eks. e-mail (til små filer) , træk fra skyen (f.eks. DropBox eller Google Drive) , en sftp site (med adgangskoder) , eller sneaker Net Net Net Net (en USB tommelfinger drev eller ekstern harddisk) . Du bør sandsynligvis kun acceptere filer fra folk, du kender. Du bliver nødt til at scanne filerne for virus og tage andre sikkerhedsforanstaltninger.
Der findes ikke et link iERDDAP™til Dataudbyderen Form (f.eks. på bagsidenERDDAP™Forsideside) . I stedet, når nogen fortæller dig, at de vil have deres data serveret af dine dataERDDAP, du kan sende dem en e-mail, der siger noget som: Ja, vi kan få dine data tilERDDAP. For at komme i gang skal du udfylde formularen på https://yourUrl/erddap/dataProviderForm.html (eller eller ellerhttp://hvishttps://er ikke aktiveret) . Når du er færdig, kontakter jeg dig for at arbejde ud af de sidste detaljer. Hvis du bare vil se på formularen (uden at fylde det ud) , du kan se formularen påERD'sERDDAP:Introduktion,Del 1,Del 2,Del 3, ogDel 4. Disse links påERD ERDDAP™sende oplysninger til mig, ikke dig, så send ikke oplysninger med dem, medmindre du rent faktisk ønsker at tilføje data til deERD ERDDAP.
Hvis du vil fjerne dataudbyderens formular fra din kontoERDDAP™, sætte
<dataProviderFormActive>false</dataProviderFormActive>
i din opsætning.xml-fil.
Udvikleren for dette varNOAA's 2014Offentlig adgang til forskningsresultater (PARR) Direktivdirektiv, som kræver, at altNOAAmiljødata, der er finansieret via skatteydere, stilles til rådighed via en datatjeneste (Ikke bare filer) inden for 12 måneder efter skabelse. Så der er øget interesse for brugERDDAP™for at gøre datasets tilgængelige via en service ASAP. Vi havde brug for en mere effektiv måde at håndtere et stort antal dataudbydere.
Feedback/forespørgsler? Denne formular er ny, så send en mailerd dot data at noaa dot govhvis du har feedback eller forslag til forbedring af dette.
Værktøjsværktøjer
ERDDAP™leveres med to kommandolinjeprogrammer, der er værktøjer til at hjælpe dig med at oprette XML for hver datasæt, som du ønsker, at dinERDDAP™at tjene. Når du har oprettetERDDAP™og køre det (mindst én gang) , du kan finde og bruge disse programmer i programmerne Tomcat /webapps/erddap/WEB-INF-mappen. Der er Linux/Unix shell scripts (med udvidelsen .sh) og Windows scripts (med udvidelsen .bat) for hvert program.\[På Linux kører disse værktøjer som den samme bruger (Tomcat?) det vil køre Tomcat.\]Når du kører hvert program, vil det spørge dig spørgsmål. Skriv et svar, og tryk derefter på Enter. Eller tryk på ^C for at afslutte et program til enhver tid.
Program kører ikke?
- Hvis du får et ukendt program (eller lignende) fejlmeddelelse, problemet er sandsynligvis, at operativsystemet ikke kunne findeJava. Du skal finde ud af, hvorJavaer på din computer, og redigere java-referencen i .bat eller .sh-filen, du forsøger at bruge.
- Hvis du får en jarfil ikke fundet eller klasse ikke fandt fejlmeddelelse, såJavakunne ikke finde en af de klasser, der er opført i .bat eller .sh-filen, du forsøger at bruge. Løsningen er at finde ud af, hvor den .jar fil er, og redigere java-referencen til det i .bat eller .sh-filen.
- Hvis du bruger en version afJavadet er for gammel for et program, programmet kører ikke, og du vil se en fejlmeddelelse som
Undtagelse i tråd "main" java.lang.UunderstøttetClassVersion Fejl:
nogle/klasse/navn : Ustøttet større.minor version nogle tal
Løsningen er at opdatere til den seneste version afJavaTjek den .sh eller .bat fil for programmet bruger den.
Værktøjerne udskriver forskellige diagnostiske meddelelser:
- Ordet "ERROR" bruges, når noget gik så galt, at proceduren mislykkedes at fuldføre. Selvom det er irriterende at få en fejl, de fejlkræfter, du kan håndtere problemet.
- Ordet "WARNING" bruges, når noget gik galt, men proceduren var i stand til at blive afsluttet. Disse er temmelig sjældne.
- Alt andet er bare en informativ besked. Du kan tilføje \-verbose til denGenererDatasetsXmleller eller ellerBilleder af DasDdskommandolinje for at få yderligere informative beskeder, som nogle gange hjælper med at løse problemer.
De to værktøjer er en stor hjælp, men du skal stadig læse alle disse instruktioner på denne side omhyggeligt og træffe vigtige beslutninger selv.
GenererDatasetsXml
- GenererDatasetsXml er et kommandolinjeprogram, der kan generere et groft udkast til datasæt XML for næsten enhver type datasæt.
Vi STRONGLY RECOMMEND, som du bruger GenererDatasets Xml i stedet for at skabe chunks afdatasets.xmlhånd, fordi:
- GenererDatasets Xml arbejder på få sekunder. At gøre dette ved hånden er mindst en times arbejde, selv når du ved, hvad du laver.
- GenererDatasets Xml gør et bedre job. At gøre dette ved hånden kræver omfattende viden om, hvordanERDDAP™værker. Det er usandsynligt, at du vil gøre et bedre job ved hånden. (Bob Simons bruger altid GenererDatasets Xml for første udkast, og han skrevERDDAP.)
- GenererDatasets Xml genererer altid en gyldig klump afdatasets.xml. Alle stykker afdatasets.xmlat du skriver vil sandsynligvis have mindst et par fejl, der forhindrerERDDAP™fra at indlæse datasættet. Det tager ofte mennesker timer at diagnosticere disse problemer. Spil ikke din tid. Lad Generer Datasæt Xml gør det hårde arbejde. Så kan du forfine .xml ved hånden, hvis du ønsker det.
Når du bruger GenererDatasets Xml program:
- På Windows, den første gang du kører GenererDatasetsetsXml, skal du redigere GenererDatasetsXml.bat-filen med en tekst editor til at ændre stien til java. exe fil, så Windows kan findeJava.
- GenererDatasets Xml beder dig først angive EDDType (Erd Dap Dataset Type Type Type Type) af datasættet. Se billederneListe over datasættyper (i dette dokument) at finde ud af, hvilken type der er egnet til den datasæt, du arbejder på. Ud over de almindelige EDDTypes er der også et parSpecial/Pseudo Dataset Typer (f.eks., som crawler et THREDDS-katalog for at generere en klump afdatasets.xmlfor hver af datasæt i kataloget) .
- GenererDatasets Xml beder dig derefter en række spørgsmål, der er specifikke for EDDType. Spørgsmålne indsamler de nødvendige oplysningerERDDAP™at få adgang til datasættets kilde. At forstå, hvadERDDAP™spørges om, se dokumentationen for den EDDType, du har angivet ved at klikke på den samme datasæt type i denListe over datasættyper.
Hvis du har brug for at indtaste en streng med specielle tegn (f.eks. hvide rumtegn i begyndelsen eller slutningen, ikke-ASCII tegn) Indtast enJSON-stilstreng (med særlige tegn flygtet med "tegn) . Hvis du f.eks. vil indtaste en fanefigur, skal du indtaste "" (med de omgivende dobbelte citater, som fortællerERDDAP™at dette er en JSON-stil streng.
- Ofte vil en af dine svar ikke være, hvad GenererDatasetsXml har brug for. Du kan derefter prøve igen med reviderede svar på spørgsmålene, indtil GenererDatasets Xml kan med succes finde og forstå kildedata.
- Hvis du besvarer spørgsmålene korrekt (eller tilstrækkeligt korrekt) , GenererDatasets Xml vil forbinde til datasættets kilde og indsamle grundlæggende oplysninger (f.eks. variable navne og metadata) . Til datasæt, der er fra lokaleNetCDF .ncog relaterede filer, GenererDatasets Xml vil ofte udskrive ncdump-lignende struktur af filen, efter at den først læser filen. Dette kan give dig oplysninger til at besvare spørgsmål bedre på en efterfølgende sløjfe gennem GenererDatasetsXml.
- GenererDatasets Xml vil derefter generere et groft udkast til dataset XML for den datasæt.
- Diagnostiske oplysninger og det grove udkast til datasættet XML vil blive skrevet til bigParentDirectory /logs/GenerateDatasetsXml.log .
- Det grove udkast til datasættet XML vil blive skrevet til bigParentDirectory /logs/GenerateDatasetsXml.out .
"0 filer" Fejlmeddelelse
Hvis du kører GenererDatasets Xml ellerBilleder af DasDds, eller hvis du forsøger at indlæse enEDDGridFra...Filer eller EDDTableFra... Filer datasæt iERDDAP™, og du får en "0 filer" fejlmeddelelse, der angiver, atERDDAP™fundet 0 matchende filer i mappen (når du tror, at der er matchende filer i denne mappe) :
-
Tjek, at du har angivet det fulde navn på mappen. Og hvis du angiver prøve filnavnet, skal du sørge for at angive filens fulde navn, herunder det fulde mappenavn.
-
Tjek, at filerne virkelig er i denne mappe.
-
Tjek stavemåden af mappenavnet.
-
Tjek filenNameRegex. Det er virkelig nemt at lave fejl med regexes. Prøv regex .\*, som skal matche alle filnavne. (Se detteIndeks dokumentationog og ogregex tutorial.)
-
Kontroller, at brugeren, der kører programmet (f.eks. bruger=tomcat (?) for Tomcat /ERDDAP) har 'læs' tilladelse til disse filer.
-
I nogle operativsystemer (for eksempel SELinux) Afhængigt af systemindstillinger skal brugeren, der løb programmet, have "læs" tilladelse til hele kæden af mapper, der fører til den mappe, der har filerne.
-
Hvis du har problemer, du ikke kan løse,Anmod om supportmed så mange oplysninger som muligt. På samme måde, hvis det synes som den passende EDDType til et givent datasæt ikke virker med den datasæt, eller hvis der ikke er passende EDDType, skal du indsende enemne på GitHubmed detaljerne (og en prøvefil, hvis relevant) .
Du skal redigere output fra GenererDatasets Xml for at gøre det bedre.
-
Ansættelse: Omfangetdatasets.xmlMADE BE GenererDatasets Xml ISN'T PERFECT. DU SKAL læse og EDIT te XML B, før det amerikanske IT i en PUBLICERDDAP. GenererDatasets Xml RELIES ON A LOT OF RULES-OF-THUMB WHICH AREN'T ALWAYS CORRECT. DIG er RESPONSIBLE FOR ENSURING CORRECTNESS af XML, at du kanERDDAP'S'datasets.xmlFILE.
(Fun Fact: Jeg råber ikke. Af historiske juridiske årsager skal ansvarsfraskrivelserne skrives i alle caps.)
Resultatet af GenererDatasetsXml er et groft udkast. Du bliver næsten altid nødt til at redigere det. Vi har lavet og fortsætter med at gøre en enorm indsats for at gøre output så klar til at gå så muligt, men der er grænser. Ofte er nødvendige oplysninger simpelthen ikke tilgængelige fra kilde metadata.
Et grundlæggende problem er, at vi spørger et computerprogram (GenererDatasetsXml) at gøre en opgave, hvor, hvis du gav den samme opgave til 100 personer, ville du få 100 forskellige resultater. Der er ingen enkelt "højre" svar. Naturligvis, programmet kommer tættest på at læse Bob's sind (ikke dine) , men selv så, er det ikke en all-understående AI-program, bare en masse hæuristiskes flettet sammen for at gøre en AI-lignende opgave. (Denne dag for et all-understående AI program kan komme, men det har endnu ikke. Hvis / når det gør, kan vi mennesker have større problemer. Vær forsigtig, hvad du ønsker.)
-
Til informationsmæssige formål viser outputtet den globale kildeAttributes og variable kildeAttributes som kommentarer.ERDDAP™kombinerer kildetildelinger ogaddAttributes (som har forrang) at gøre den kombinerede Attributter, der vises til brugeren. (Og andre attributter tilføjes automatisk til længde, breddegrad, højde, dybde og tidsvariabler, nårERDDAP™faktisk gør datasættet) .
-
Hvis du ikke kan lide en kildeAttribute, overskrive det ved at tilføje en addAttribute med det samme navn, men en anden værdi (eller ingen værdi, hvis du vil fjerne det) .
-
Alle afaddAttributeser computergenererede forslag. Rediger dem! Hvis du ikke kan lide en addAttribute, skal du ændre det.
-
Hvis du vil tilføje andreaddAttributesTilføj dem.
-
Hvis du vil ændre endestinationName, ændre det. Men ikke ændresourceNames.
-
Du kan ændre rækkefølgen af ordrendataVariables eller fjerne nogen af dem.
- Du kan derefter brugeBilleder af DasDds (se nedenfor) til gentagne gange teste XML for den datasæt for at sikre, at den resulterende datasæt vises, som du ønsker det iERDDAP.
- Du er velkommen til at foretage små ændringer idatasets.xmlchunk, der blev genereret, f.eks. give en bedreinfoUrl, oversigt eller titel.
Tilføj ikkeStandardnavne
Hvis du indeholder \-doNotAddStandardNames som en kommandolinjeparameter, når du kører Datasæt Xml, generere Datasæt Xml vil ikke tilføjestandard\_nameTil højreaddAttributesfor andre variabler end variabler ved navn breddegrad, længde, højde, dybde eller tid (som har indlysendestandard\_names s s) . Dette kan være nyttigt, hvis du bruger output fra generere Datasæt Xml direkte iERDDAP™uden at redigere output, fordi generere Datasæt Xml ofte gætterstandard\_names forkert. (Bemærk, at vi altid anbefaler, at du redigerer output, før du bruger det iERDDAP.) Brug af denne parameter vil have andre mindre relaterede effekter, fordi gættetstandard\_namebruges ofte til andre formål, f.eks. til at oprette en nylong\_name, og for at oprette farveBar indstillinger.
scripts
Som alternativ til at besvare spørgsmål interaktivt på tastaturet og looping for at generere yderligere datasæt, kan du give kommandolinje argumenter for at besvare alle spørgsmål for at generere et datasæt. GenererDatasets Xml vil behandle disse parametre, skrive output til outputfilen, og afslutte programmet.
Hvis du vil konfigurere dette, skal du først bruge programmet i interaktiv tilstand og skrive dine svar. Her er et delvis eksempel: Lad os sige, at du kører scriptet: ./GenerateDatasetsXml.sh Indtast derefter: EDDTableFraAsciiFiles Indtast derefter: /u00/data/ Indtast derefter: .\*".asc Indtast derefter: /u00/data/sampleFile.asc Indtast derefter: ISO-8859-1
Hvis du vil køre dette på en ikke-interaktiv måde, skal du bruge denne kommandolinje: ./GenerateDatasetsXml.sh EDDTableFraAsciiFiles /u00/data/.\*".asc /u00/data/sampleFile.asc ISO-8859-1 Så dybest set, du bare liste alle svarene på kommandolinjen. Dette bør være nyttigt for datasæt, der ændrer sig ofte på en måde, der necessitaterer re-running GenerDatasetsets Xml (mærkbartEDDGridFraThreddsCatalog) .
Detaljer:
- Hvis en parameter indeholder et rum eller nogle særlige tegn, skal du indtaste parameteren som enJSON-stilstrengf.eks. "my parameter med rum og to\nlinjer".
- Hvis du vil angive en tom streng som parameter, skal du bruge: intet
- Hvis du vil angive standardværdien af en parameter, skal du bruge: standard
- GenererDatasets Xml understøtter en -i Datasæt XmlName # # # # Mærkenavn kommandolinje parameter, der indsætter outputet i det angivnedatasets.xmlfilfil (Standarden er Tomcat /indhold / indhold /datasets.xml) . GenererDatasets Xml ser efter to linjer i datasæt XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
og og og
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
og erstatter alt i mellem disse linjer med det nye indhold, og ændrer det tidspunkt.
- -i-kontakten behandles kun (og ændringer idatasets.xmler kun lavet) hvis du kører GenererDatasets Xml med kommandolinje argumenter, der angiver alle svarene på alle spørgsmål for en loop af programmet. (Se 'Scripting' ovenfor.) (Tanken er: Denne parameter er til brug med scripts. Hvis du bruger programmet i interaktiv tilstand (Skriveinfo på tastaturet) , du er tilbøjelige til at generere nogle forkerte bundter af XML, før du genererer den, du ønsker.)
- Hvis start- og slutlinjerne ikke findes, indsættes disse linjer og det nye indhold lige før</erddapDatasets>.
- Der er også en -I (kapital i) skifte til testformål, der fungerer det samme som -i, men skaber en fil kaldetdatasets.xml Datotid og foretager ikke ændringerdatasets.xml.
- Kør ikke GenererDatasets Xml med -i i to processer på én gang. Der er en chance kun et sæt ændringer vil blive holdt. Der kan være alvorlige problemer (for eksempel beskadigede filer) .
Hvis du bruger "GenerateDatasetsXml -verbose", vil det udskrive flere diagnostiske meddelelser end normalt.
Special/Pseudo Dataset Typer
Generelt indstillingerne for EDDType i GenererDatasets Xml match af EDD-typer, der er beskrevet i dette dokument (Se det herListe over datasættyper) og generere endatasets.xmlGnid at oprette et datasæt fra en bestemt datakilde. Der er et par undtagelser og særlige tilfælde:
EDDGridFraErddap
Denne EDDType genererer alledatasets.xmlbidder, der er nødvendige for at gøreEDDGridFraErddapDatasets fra alleEDDGridDatasæt i en fjernERDDAP. Du vil have mulighed for at holde den oprindeligedatasetIDs s s (som kan duplikere nogledatasetIDs allerede i dinERDDAP) eller generere nye navne, der vil være unikke (men normalt ikke som menneskelæsbar) .
EDDTableFraErddap
Denne EDDType genererer alledatasets.xmlbidder, der er nødvendige for at gøreEDDTableFraErddapDatasæt fra alle EDDTable datasæt i en fjernbetjeningERDDAP. Du vil have mulighed for at holde den oprindeligedatasetIDs s s (som kan duplikere nogledatasetIDs allerede i dinERDDAP) eller generere nye navne, der vil være unikke (men normalt ikke som menneskelæsbar) .
EDDGridFraThreddsCatalog
Denne EDDType genererer alledatasets.xmlbidder, der er nødvendige for alleEDDGridFraDapDatasæt, at det kan finde ved at crawle reursivt gennem aEDDS (sub) katalog. Der er mange former for THREDDS katalog URLs. Denne mulighed REQUIRES a THREDDS .xml URL med /catalog/i det f.eks.
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml eller eller eller
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(en relateret .html katalog er på
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html , som ikke er acceptabel forEDDGridFraThreddsCatalog.
Hvis du har problemer medEDDGridFromThredds Katalog:
- Sørg for, at den webadresse, du bruger, er gyldig, omfatter /catalog/ og slutter med /catalog.xml .
- Hvis det er muligt, skal du bruge en offentlig IP-adresse (for eksempel, https://oceanwatch.pfeg.noaa.gov ) i webadressen, ikke en lokalnumerisk IP-adresse (for eksempel, https://12.34.56.78 ) . Hvis du kun er tilgængelig via den lokale numeriske IP-adresse, kan du bruge [<konvertereToPublicSourceUrl>] (#converttopublicsourceurl) så så sådanERDDAP™Brugere ser den offentlige adresse, selvomERDDAP™Få data fra den lokale numeriske adresse.
- Hvis du har problemer, du ikke kan løse,Tjek fejlfindingstips.
- Den lave niveaukode til dette bruger nuUnidataNetcdf-java katalog crawler kode (Tømmermænd. Katalog klasser) så det kan håndtere alle THREDDS kataloger (som kan være overraskende kompleks) Tak tilUnidatafor denne kode.
EDDGridLonPM180FraErddapCatalog
Denne EDDType generererdatasets.xmlat gøreEDDGridLonPM180Datasets fra alleEDDGridDatasæt i enERDDAPder har alle længdeværdier større end 180.
- Hvis det er muligt, skal du bruge en offentlig IP-adresse (for eksempel, https://oceanwatch.pfeg.noaa.gov ) i webadressen, ikke en lokalnumerisk IP-adresse (for eksempel, https://12.34.56.78 ) . Hvis det er tilfældetERDDAP™er kun tilgængelig via den lokale numeriske IP-adresse, du kan bruge [<konvertereToPublicSourceUrl>] (#converttopublicsourceurl) så så sådanERDDAP™Brugere ser den offentlige adresse, selvomERDDAP™Få data fra den lokale numeriske adresse.
EDDGridLon0360FraErddapCatalog
Denne EDDType generererdatasets.xmlat gøreEDDGridLon0360Datasets fra alleEDDGridDatasæt i enERDDAPder har alle længdeværdier mindre end 0.
- Hvis det er muligt, skal du bruge en offentlig IP-adresse (for eksempel, https://oceanwatch.pfeg.noaa.gov ) i webadressen, ikke en lokalnumerisk IP-adresse (for eksempel, https://12.34.56.78 ) . Hvis det er tilfældetERDDAP™er kun tilgængelig via den lokale numeriske IP-adresse, du kan bruge [<konvertereToPublicSourceUrl>] (#converttopublicsourceurl) så så sådanERDDAP™Brugere ser den offentlige adresse, selvomERDDAP™Få data fra den lokale numeriske adresse.
EDDsFraFiles
I betragtning af en startmappe, denne krydser mappen og alle undermapper og forsøger at oprette et datasæt for hver gruppe af datafiler, som den finder.
- Dette forudsætter, at når et datasæt findes, indeholder datasættet alle undermapper.
- Hvis et datasæt findes, vil lignende søskende mapper blive behandlet som separate datasæt (For eksempel vil mapper til 1990'erne generere separate datasæt) . De skal være nemme at kombinere med hånd - bare ændre de første datasæt's<FileDir> til forældremappen og slette alle de efterfølgende søskende datasæt.
- Dette vil kun forsøge at generere en bid afdatasets.xmlfor den mest almindelige type filudvidelse i en mappe (ikke tælle .md5, som ignoreres) . Så givet en mappe med 10.ncfiler og 5 .txt-filer, vil et datasæt blive genereret til datasættet.ncfiler kun.
- Dette forudsætter, at alle filer i en mappe med samme udvidelse tilhører i samme datasæt. Hvis en mappe har nogle.ncfiler med SST-data og nogle.ncfiler med chlorophyll data, bare en prøve.ncfil vil blive læst (SST? Hvad er klophyll?) og kun én datasæt vil blive skabt til den type fil. At datasæt sandsynligvis undlade at indlæse på grund af komplikationer fra at forsøge at indlæse to typer filer i samme datasæt.
- Hvis der er færre end 4 filer med den mest almindelige udvidelse i en mappe, antager dette, at de ikke er datafiler og bare springe over mappen.
- Hvis der er 4 eller flere filer i en mappe, men det kan ikke med succes generere en klump afdatasets.xmlfor filerne (for eksempel en ikke-understøttet filtype) , dette vil generere enEDDTableFraFileNamesDatasæt til filerne.
- I slutningen af diagnostics, at denne skriver til logfilen, lige før logfilendatasets.xmlDet vil udskrive en tabel med en oversigt over oplysninger indsamlet ved at trække alle undermapper. Tabellen vil liste alle undermapper og angive den mest almindelige type filudvidelse, det samlede antal filer, og hvilken type datasæt blev skabt til disse filer (hvis nogen) . Hvis du står over for en kompleks, dybt indlejret filstruktur, skal du overveje at køre GenererDatasetsets Xml med EDDType=EDDsFraFiles bare for at generere disse oplysninger,
- Denne mulighed kan ikke gøre et stort job med at gætte den bedste EDDType til en given gruppe af datafiler, men det er hurtigt, nemt og værd en prøve. Hvis kildefiler er egnede, fungerer det godt og er et godt første skridt i at generere detdatasets.xmlfor et filsystem med masser af undermapper, hver med datafiler fra forskellige datasæt.
EDDTableFraEML og EDDTableFraEMLBatch
Disse særlige EDDType genererer dendatasets.xmlat lave enEDDTableFraAsciiFilesdatasæt fra hver af de tabeller, der er beskrevet i enEcological Metadata SprogXML-fil. Den "Batch" variant arbejder på alle EML-filer i en lokal eller fjern mappe. Se venligst den separatedokumentation for EDDTableFraEML.
EDDTableFraInPort
Denne særlige EDDType genererer dendatasets.xmlat lave enEDDTableFraAsciiFilesDatasæt fra oplysningerne i etiport-xmlfil. Hvis du kan få adgang til kildedatafilen (inport-xml-filen skal have spor for, hvor man finder den) , du kan lave et arbejdsdatasæt iERDDAP.
Følgende trin beskriver, hvordan du bruger GenererDatasets Xml med en inport-xml-fil for at få et arbejdsdatasæt iERDDAP.
- Når du har adgang til inport-xml-filen (enten som URL eller en lokal fil) : run GenererDatasets Xml, angive EDDType=EDDTableFraInPort, angive inport-xml URL eller fuld filnavn, angive, hvilkeChild=0, og angive de andre ønskede oplysninger (hvis kendt) . (På dette tidspunkt behøver du ikke at have kildedatafilen eller angive dens navn.) Den somChild=0 indstilling fortæller GenererDatasets Xml til at skrive oplysninger om alle af<Virksomhedsoplysninger><enhed>'s i inport-xml-filen (hvis der er nogen) . Det udskriver også en baggrundsinformationsoversigt, herunder alle download-url's opført i inport-xml-filen.
- Kig gennem alle disse oplysninger (herunder baggrundsoplysninger, der GenererDatasets Xml print) og besøg download-url (s s s) for at forsøge at finde kildedatafilen (s s s) . Hvis du kan finde det (dem dem dem) Hent det (dem dem dem) i en mappe, der er tilgængeligERDDAP. (Hvis du ikke kan finde nogen kildedatafiler, er der ingen point i proces.)
- Løber Datasæt Xml igen. Hvis kildedatafilen svarer til en af inport-xml-filens<Virksomhedsoplysninger><enhed>'s, angive, hvilkeChild= Denne enheds taltal (f.eks. 1, 2, 3, ...) .ERDDAP™vil forsøge at matche kolonnenavnene i kildedatafilen til navne i enhedsoplysningerne og bede om at acceptere/reject/fix enhver discrepancies. Eller hvis inport-xml-filen ikke har nogen<Virksomhedsoplysninger><enhed>'s, angive, hvilkeChild=0.
- I bunden afdatasets.xmldet blev lavet af GenererDatasets Xml, revidere [global<addAttributes>] (#global-attributes) efter behov/desired.
- I bunden afdatasets.xmlder blev lavet af GenererDatasetsXml, tilføje / opsyn [<dataVariable>] (#datavariable) Oplysninger efter behov/desired til at beskrive hver af variablerne. Sørg for, at du korrekt identificerer hver variabels [ []<sourceName>] (#sourcenavn) (som det vises i kilden) , [ []<destinationName>] (# destinationnavn) (som har flere begrænsninger på tilladte tegn endsourceName) , [ []<enheder>] (#enheder) (især hvis det er entid eller timetamp variabelhvor enhederne skal angive formatet) , og [ []<missing\_value>] (#missing_værdi) ,
- Når du er tæt på at afslutte, bruger gentagne gange denBilleder af DasDdsværktøj til hurtigt at se, om beskrivelsen af datasæt er gyldig, og hvis datasættet vises iERDDAP™som du ønsker det.
Det ville være fantastisk, hvis grupper ved hjælp af InPort til at dokumentere deres datasæt ville også brugeERDDAP™at gøre de faktiske data tilgængelige:
- ERDDAP™er en løsning, der kan bruges lige nu, så du kan opfyldeNOAA'sOffentlig adgang til forskningsresultater (PARR) kravLige nu, ikke på en vis vryg tid i fremtiden.
- ERDDAP™gør de faktiske data tilgængelige for brugere, ikke blot metadata. (Hvad er metadata uden data?)
- ERDDAP™understøtter metadata (Især enheder af variabler) , i modsætning til nogle andre dataserver software betragtes. (Hvad er data uden metadata?) At bruge software, der ikke understøtter metadata, er at invitere dataene til at blive misforstået og misbrugt.
- ERDDAP™er gratis og open-source software i modsætning til nogle andre software betragtes. Udvikling af udvikling afERDDAP™er allerede betalt for. Support til supportERDDAP™Brugere er gratis.
- ERDDAP's udseende kan nemt tilpasses til at reflektere og fremhæve din gruppe (Ikke ikkeERDeller eller ellerERDDAP) .
- ERDDAP™Tilbyder en konsekvent måde at få adgang til alle datasæt.
- ERDDAP™kan læse data fra mange typer af datafiler og fra relationelle databaser.
- ERDDAP™kan håndtere store datasæt, herunder datasæt, hvor kildedataene er i mange datafiler.
- ERDDAP™kan skrive data til mange typer af datafiler, på brugerens anmodning, herunder videnskabelige data filtyper som netCDF, ESRI .csv, ogODV .txt.
- ERDDAP™kan foretage brugerdefinerede diagrammer og kort over undersæt af dataene, baseret på brugerens specifikationer.
- ERDDAP™kan håndtere ikke-data datasæt såsom samlinger af billede, video eller lydfiler.
- ERDDAP™er blevet installeret og brugt påmere end 60 institutioner over hele verden.
- ERDDAP™er angivet som en af de dataservere, der anbefales til brug inden forNOAAi områdetNOAADatatilpasset direktiv, i modsætning til nogle andre software betragtes som.
- ERDDAP™er et produkt afNMFS/ / / /NOAA, så brug det indenforNMFSog og ogNOAAbør være et punkt af stolthed forNMFSog og ogNOAA.
Angiv venligstERDDAP™et forsøg. Hvis du har brug for hjælp, skal du skrive en besked i meddelelsenERDDAP™Google-gruppe.
addFillValueAttributes
Denne særlige EDDType mulighed er ikke en datasæt type. Det er et værktøj, der kan tilføje \_FillValue attributter til nogle variabler i nogle datasæt. Se endnuaddFillValueAttributes.
FindDuplicate Tidstid
Denne særlige EDDType mulighed er ikke en datasæt type. I stedet fortæller det GenererDatasets Xml at søge gennem en samling af gitterded.nc (og relateret) filer til at finde og udskrive en liste over filer med duplikerede tidsværdier. Når det ser på tidsværdierne, omdanner den dem fra de oprindelige enheder til"seconds since 1970-01-01"I tilfælde af forskellige filer bruger forskellige enheder strenge. Du skal angive startmappen (med eller uden trailing slash) , filnavnet almindeligt udtryk (f.eks. .\*.nc ) , og navnet på den tidsvariable i filerne.
ncdump
Denne særlige EDDType mulighed er ikke en datasæt type. I stedet fortæller det GenererDatasets Xml til at udskrive enncdump\-lignende udskrifter af en.nc,.ncml eller.hdffil. Det bruger faktisk netcdf-java'sNCdump, som er et mere begrænset værktøj end C-versionen af NCdump. Hvis du bruger denne mulighed, vil GenererDatasetsXml bede dig om at bruge en af mulighederne: "-h" (Sidehoved) "-c" (koordinater) , "-vall" (standard) , "-v var1;var2", "-v var1 (0,0:10,0:20) ". Dette er nyttigt, fordi uden ncdump det er svært at vide, hvad der er i en.nc,.ncml eller.hdffil og dermed, hvilken EDDType du skal angive for GenererDatasets Xml. For et.ncml fil, vil dette udskrive ncdump output for resultatet af.ncml filændringer, der anvendes på underliggende.nceller eller eller.hdffil.
Billeder af DasDds
- Billeder af DasDds er et kommandolinjeprogram, som du kan bruge, når du har oprettet et første forsøg på XML for et nyt datasæt idatasets.xml. Med DasDds kan du gentagne gange teste og tilpasse XML. Når du bruger DasDds programmet:
- På Windows, første gang du kører DasDds, skal du redigere DasDds. bat fil med en tekst editor til at ændre stien til java. exe fil, så Windows kan findeJava.
- DasDds spørger dig omdatasetIDfor det datasæt, du arbejder på.
- DasDds forsøger at oprette datasættet med detdatasetID.
- DasDds udskriver altid masser af diagnostiske meddelelser. Hvis du bruger "DasDds -verbose", vil DasDds udskrive flere diagnostiske meddelelser end normalt.
- For sikkerhed sletter DasDds altid alle de cachelagrede datasæt oplysninger (filer filer filer) for datasættet, før du forsøger at oprette datasættet. Dette er den tilsvarende indstilling af enhård flagSå for aggregerede datasæt, vil du muligvis justere filenNameRegex midlertidigt for at begrænse antallet af filer databyggeren finder.
- Hvis datasættet ikke indlæses (uanset årsag) , DasDds vil stoppe og vise dig fejlmeddelelsen for den første fejl, det finder.
Forsøg ikke at gætte, hvad problemet kan være. Læs ERROR-meddelelsen omhyggeligt.
Hvis det er nødvendigt, skal du læse de tidligere diagnostiske meddelelser for at finde flere spor og oplysninger, også. - Foretag en ændring i datasættets XML for at forsøge at løse problemet
og lad DasDds forsøge at oprette datasættet igen. - Hvis du gentagne gange løser hvert problem, vil du i sidste ende løse alle problemerne
og datasættet vil indlæse.
- Alle DasDds output (Diagnostik og resultater) skrives til skærmen og til bigParentDirectory /logs/DasDds.log .
- Hvis DasDds kan oprette datasættet, vil DasDds derefter vise dig de.das (Datasæt Attribute Structure) ,.dds (Datasæt Descriptor Strukturstruktur) , og.timeGaps (Tidsforskelle) Oplysninger om datasættet på skærmen og skrive dem til bigParentDirectory /logs/DasDds.out.
- Ofte vil du gerne foretage nogle små ændringer til datasættets XML for at rense datasættets metadata og rerun DasDds.
Bonus Bonus Bonus Bonus Brugervejledning:ERDDAP-lint
ERDDAP-lint er et program fra Rob Fuller og Adam Leadbetter of te Irish Marine Institute, som du kan bruge til at forbedre metadata på dinERDDAP™Datasets.ERDDAP-lint "fordele regler og en simpel statisk web ansøgning for at køre nogle verifikationstest mod dinERDDAP™server. Alle testne kører i webbrowseren." LigesomUnix/Linux lint værktøj, kan du redigere de eksisterende regler eller tilføje nye regler. Se endnuERDDAP-lintfor mere information.
Dette værktøj er især nyttigt for datasæt, som du har oprettet for lidt tid siden, og nu ønsker at bringe op til dato med dine aktuelle metadata præferencer. For eksempel tidlige versioner af GenererDatasets Xml gjorde ikke nogen indsats for at skabe globalcreator\_name,creator\_email, skaber\_type ellercreator\_urlmetadata. Du kan brugeERDDAP-lint til at identificere de datasæt, der mangler disse metadata attributter.
Tak til Rob og Adam for at skabe dette værktøj og gøre det tilgængeligt for denERDDAP™fællesskab.
Den grundlæggende struktur afdatasets.xmlFilen fil
De krævede og valgfrie tags tilladt i etdatasets.xmlfilfil (og antallet af gange, de kan vises) vises nedenfor. I praksis, dindatasets.xmlvil have masser af<Dataset>s tags og kun bruge de andre tags inden for<erddapDatasets> efter behov.
<?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>
Det er muligt, at andre kodninger vil blive tilladt i fremtiden, men for nu anbefales kun ISO-8859-1.
XInclude
Ny i version 2.25 er understøttelse af XInclude. Dette kræver, at du bruger SAX-parser<BrugSaxParser>true</useSaxParser> i din opsætning.xml. Dette kan give dig mulighed for at skrive hver datasæt i sin egen fil, og derefter inkludere dem alle i den vigtigstedatasets.xml, genbrug dele af datasæt definitioner eller begge. Hvis du vil se et eksempel,EDDTestDataset.Opsæt XInclude for at genbruge variable definitioner.
Noter
Arbejde med arbejdetdatasets.xmlfil er et ikke-trivial projekt. Læs alle disse noter omhyggeligt. Når du har valgt enDatasæt type, læs venligst den detaljerede beskrivelse af det omhyggeligt.
Valg af datasæt Type
I de fleste tilfælde er der bare énERDDAP™datasæt type, der er egnet til en given datakilde. I et par tilfælde (fx,.ncfiler filer filer) , der er et par muligheder, men normalt en af dem er absolut bedste. Den første og største beslutning, du skal træffe, er det hensigtsmæssigt at behandle datasættet som en gruppe multidimensionelle arrays (hvis det er tilfældetEDDGridDatasæt typer) eller som en databaselignende tabel af data (hvis det er tilfældetEDDTable datasæt typer) .
Servicerer data som er
Normalt er der ingen grund til at ændre datakilden (f.eks. konvertere filer til en anden filtype) så detERDDAP™kan tjene det. En af antagelserne afERDDAP™er, at datakilden vil blive brugt som er. Normalt fungerer dette fint. Nogle undtagelser er:
- Relational Databaser og Cassandra --ERDDAP™kan tjene data direkte fra relationelle databaser og Cassandra. Men for sikkerhed, belastning balance og præstationsproblemer, kan du vælge at oprette en anden database med de samme data eller gemme dataene tilNetCDFv3.ncfiler og harERDDAP™tjene data fra den nye datakilde. Se endnuEDDTableFraDatabaseog og ogEDDTableFraCassandra.
- Understøttede datakilder --ERDDAP™kan støtte et stort antal datakilder, men verden er fyldt med 1000's (millioner?) af forskellige datakilder (navnlig datafilstrukturer) . HvisERDDAP™understøtter ikke din datakilde:
- Hvis datakilden erNetCDF .ncfiler, du kan brugeNcMLtil at ændre datafiler på farten, eller brugNCOtil permanent at ændre datafiler.
- Du kan skrive oplysningerne til en datakildestype, somERDDAP™understøtter.NetCDF-3.ncfiler er en god, generel anbefaling, fordi de er binære filer, derERDDAP™kan læse meget hurtigt. For tabulære data, overveje at gemme dataene i en samling af.ncfiler, der bruger deCF Diskret Sampling Geometries (DSG) Contiguous Ragged Array datastrukturer og så kan håndteres medERDDAP'sEDDTableFraNcCFFiles). Hvis de er logisk organiseret (hver med data til en smule plads og tid) ,ERDDAP™kan udtrække data fra dem meget hurtigt.
- Du kan anmode om, at support til denne datakilde føjes tilERDDAP™via e-mailing Chris. John på noaa.gov.
- Du kan tilføje support til den datakilde ved at skrive koden til at håndtere den selv. Se endnute te te teERDDAP™Programmeringsguide
- Hastighed --ERDDAP™kan læse data fra nogle datakilder meget hurtigere end andre. For eksempel læsningNetCDFv3.ncfiler er hurtigt og læsning ASCII filer er langsommere. Og hvis der er en stor (>1000) eller kæmpe (>0.000) antal kildedatafiler,ERDDAP™vil reagere på nogle data anmodninger langsomt. Normalt er forskellen ikke mærkbar på mennesker. Men hvis du trorERDDAP™Du kan vælge at løse problemet ved at skrive oplysningerne til en mere effektiv opsætning. (normalt: et par, velstruktureret,NetCDFv3.ncfiler filer filer) . For tabulære data, sedenne rådgivning.
Hint
Det er ofte nemmere at generere XML til et datasæt ved at lave en kopi af en arbejdsdatasæt beskrivelse i dataset.xml og derefter ændre den.
Særlige tegn
Sidendatasets.xmler en XML-fil, du SKAL være& kode"&", "<", og ↓" på ethvert indhold som "&", "<" og ">". Forkert:<titel> Tid og Tider</titel> Ret:<titel> Tid ogamp; Tider</titel>
XML tolererer ikke synsfejl
Når du redigerer dataset.xml-filen, er det en god ide at bekræfte, at resultatet erveldannet XMLved at indsætte XML-teksten i en XML-tjeker somxmlvalidation.
Fejlfinding af tips
- Andre måder at diagnosticere problemer med datasets
Ud over de to vigtigsteVærktøjsværktøjer, - log.txter en logfil med alleERDDAP's diagnostiske meddelelser.
- The The The The The The TheDaglig rapporthar mere information end statussiden, herunder en liste over datasæt, der ikke indlæses, og undtagelserne (fejl fejl fejl) de genererede.
- The The The The The The TheStatus sideer en hurtig måde at tjekkeERDDAP's status fra enhver webbrowser. Det omfatter en liste over datasæt, der ikke indlæsede (selvom ikke de relaterede undtagelser) og opgaveThread statistik (at vise fremskridtene forEDDGridKopiere Kopierog og ogEDDTableCopyDatasæt og alleEDDGridFraFileseller eller ellerEDDTableFraFilesDatasæt, der brugercacheFraUrl (men ikke cache Størrelse GB) ) .
- Hvis du sidder fast, se voressektion om at få ekstra støtte.
Særlige variabler
- Længden, breddegrad, højde (eller dybde) , og tid (LLAT) variabel variabel variabel variabel destinationNames er specielle.
- Generelt:
- LLAT variabler er kendt forERDDAP™hvis aksens variable (for for forEDDGridDatasæt) eller datavariables (for EDDTable datasæt) destinationNameer "langitude", "latitude", "altitude", "dybde", eller"time".
- Vi opfordrer dig til at bruge disse standardnavne til disse variabler, når det er muligt. Ingen af dem er p åkrævet. Hvis du ikke bruger disse særlige variable navne,ERDDAP™genkender ikke deres betydning. For eksempel behandles LLAT-variabler specielt ved Make A Graph ( datasetID .ografi) : hvis X Axis variablen er "langitude" og Y Axis variablen er "latitude", vil du få et kort (ved hjælp af en standard projektion og med en jordmaske, politiske grænser osv.) i stedet for en graf.
- ERDDAP™vil automatisk tilføje masser af metadata til LLAT variabler (for eksempel "ioos\_category", "enheder", og flere standarder-relaterede attributter som "\_CoordinateAxisType") .
- ERDDAP™vil automatisk tilføje masser af globale metadata i forbindelse med de valgte dataundersæt (for eksempel "geospatial\_lon\_min") .
- Klienter, der understøtter disse metadata standarder, vil kunne drage fordel af de tilføjede metadata for at positionere dataene i tid og rum.
- Klienter vil finde det nemmere at generere forespørgsler, der omfatter LLAT-variabler, fordi variablens navne er den samme i alle relevante datasæt.
- For "langitude" variabel og "latitude" variabel:
- Brug afdestinationNames "longitude" og "latitude" kun hvis denenhederer grader\_east og grader\_north, henholdsvis. Hvis dine data ikke passer til disse krav, skal du bruge forskellige variable navne (for eksempel x, y, lonRadians, latRadians) .
- Hvis du har længde- og breddegradsdata udtrykt i forskellige enheder og dermed med forskelligedestinationNames, for eksempel lonRadians og latRadians, Make A Graph ( datasetID .ografi) vil lave grafer (for eksempel time serier) i stedet for kort.
- For "altitude" variabel og "dybde" variabel:
- Brug afdestinationName"altitude" for at identificere data afstanden over havet niveau (positivt arbejde" værdier) . Valgfrit kan du bruge "altitude" til afstande under havet, hvis værdierne er negativ under havet (eller hvis du bruger, f.eks. [ []<Navnligscale\_factor"type: 1 1 1 1</att>] (#skala_faktor) til at konvertere dybdeværdier til højdeværdier.
- Brug afdestinationName"dybde" for at identificere data afstanden under havet niveau (positive værdier) .
- Et datasæt kan ikke have både "altitude" og "dybde" variabler.
- Til disse variable navne,enhederskal være "m", "meter", eller "metre". Hvis enhederne er forskellige (for eksempel fedthoms) , du kan bruge [ []<Navnligscale\_factor↓ nogle af nogle Værdiværdi </att>] (#skala_faktor) og [<ont navn</att>] (#enheder) at konvertere enheder til meter.
- Hvis dine data ikke passer til disse krav, skal du bruge en andendestinationName (for eksempel, overGround, afstand Tolvtom) .
- Hvis du kender de lodrette CRS, bedes du angive det i metadata, f.eks. "EPSG:5829" (øjeblikkelig højde over havets overflade) , "EPSG:5831" (øjeblikkelig dybde under havoverfladen) , eller "EPSG:5703" (NAVD88 højde) .
- For te"time"variabel:
- Brug afdestinationName "time"kun for variabler, der omfatter hele dato+tid (eller dato, hvis det er alt der er) . Hvis der f.eks. er separate kolonner til dato og tidspunktOfDay, ikke bruger det variable navn"time".
- Se endnuenhederfor flere oplysninger om attributten for tid og tidStamp variabler.
- Tidsvariable og relateredetidstid Frimærkevariablerer unikke i, at de altid konverterer dataværdier fra kildens tidsformat (uanset hvad det er) i en numeriske værdi (sekunder siden 1970-01T00:00:00Z) eller en streng værdi (ISO 8601:2004 (E) formatformat) , afhængigt af situationen.
- Når en bruger anmoder om tidsdata, kan de anmode den ved at angive tiden som en numeriske værdi (sekunder siden 1970-01T00:00:00Z) eller en streng værdi (ISO 8601:2004 (E) formatformat) .
- ERDDAP™har et værktøj tilKonverter en Numeric Tid til/fra en streng tid.
- Se endnuSådan kan duERDDAPTilbud med Time.
Hvorfor kun to grundlæggende datastrukturer?
- Da det er svært for menneskelige klienter og computer klienter at håndtere et komplekst sæt af mulige datasæt strukturer,ERDDAP™bruger kun to grundlæggende datastrukturer:
- a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a agitteret datastruktur (for eksempel for satellitdata og modeldata) og og og
- a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a aÆndret datastruktur (for eksempel til in-situ buoy, station og trajectory data) .
- Bestemt, ikke alle data kan udtrykkes i disse strukturer, men meget af det kan. Tabel, især, er meget fleksible datastrukturer (se på succesen af relationelle databaseprogrammer) .
- Dette gør dataforespørgsler lettere at konstruere.
- Dette gør datareaktioner en enkel struktur, hvilket gør det nemmere at betjene dataene i en bredere vifte af standard filtyper (som ofte bare understøtter enkle datastrukturer) . Dette er den vigtigste grund, at vi opsætterERDDAP™denne måde.
- Dette gør det meget nemt for os (eller nogen) at skrive klient software, der arbejder med alleERDDAP™Datasets.
- Det gør det nemmere at sammenligne data fra forskellige kilder.
- Vi er meget opmærksomme på, at hvis du bruges til at arbejde med data i andre datastrukturer, kan du i første omgang tro, at denne tilgang er forenklet eller utilstrækkelig. Men alle datastrukturer har tradeoffs. Ingen er perfekt. Selv de do-it-all strukturer har deres ulemper: arbejde med dem er komplekse, og filerne kan kun skrives eller læses med særlige softwarebiblioteker. Hvis du acceptererERDDAP's tilgang nok til at forsøge at arbejde med det, kan du finde, at det har sine fordele (Især støtte til flere filtyper, der kan holde dataenes svar) . The The The The The The TheERDDAP™lysbilledshow (særligtdatastrukturer glide) taler meget om disse problemer.
- Og selvom denne tilgang lyder mærkeligt for dig, mestERDDAP™Kunderne vil aldrig bemærke -- de vil blot se, at alle datasæt har en dejlig enkel struktur, og de vil være taknemmelige, at de kan få data fra en bred vifte af kilder returneret i en bred vifte af filformater.
Dimensioner Dimensioner Dimensioner
- Hvad hvis gittervariablerne i kildedatasættet DON'T deler de samme aksevariabler?
I nærheden af In In In In In In In In In In In In In InEDDGridDatasæt, alle datavariabler skal bruge (Del dele) alle aksevariabler. Så hvis en kildedatasæt har nogle variabler med et sæt dimensioner, og andre variabler med et andet sæt dimensioner, skal du lave to datasæt iERDDAP. For eksempel kan du lave enERDDAP™Datasæt med titlen "Noe Title (på overfladen) " at holde variabler, der bare bruger\[tidstid\]\[breddegrad\]\[Længde\]dimensioner og gøre en andenERDDAP™Datasæt med titlen "Noe Title (ved dybder) " for at holde de variable, der bruger\[tidstid\]\[højdehøjde\]\[breddegrad\]\[Længde\]. Eller måske kan du ændre datakilden til at tilføje en dimension med en enkelt værdi (for eksempel højde=0) at gøre variablerne konsekvent.
ERDDAP™håndterer ikke mere komplicerede datasæt (for eksempel modeller, der bruger et mesh af trekanter) godt. Du kan tjene disse datasæt iERDDAP™ved at oprette to eller flere datasæt iERDDAP™ (så alle datavariabler i hvert nyt datasæt deler det samme sæt af aksevariabler) , men det er ikke, hvad brugerne ønsker. For nogle datasæt, kan du overveje at gøre en almindelig gitteret version af datasættet og tilbyde den i tillæg til de oprindelige data. Nogle klient software kan kun håndtere et almindeligt gitter, så ved at gøre dette, du når flere klienter.
Projekterede Gridded Data
Nogle gitterdata har en kompleks struktur. For eksempel, satellit niveau 2 ("lang track") Data bruger ikke en simpel projektion. Modelers (og andre) arbejder ofte med gitterded data på forskellige ikke-cylindriske projektioner (for eksempel konisk, polar stereografik, tripolar) eller i ustrukturerede gitter (en mere kompleks datastruktur) . Nogle slutbrugere ønsker disse data som er, så der er ingen tab af oplysninger. Til disse klienter,ERDDAP™kan tjene dataene, som er, kun hvis dataeneERDDAP™Administrator bryder de originale datasæt i et par datasæt, med hver del herunder variabler, der deler de samme aksevariabler. Ja, det synes mærkeligt for folk involveret, og det er forskelligt fra de flesteOPeNDAPservere. Men men men men menERDDAP™understreger, at de data, der findes i mange formater. Det er muligt, fordiERDDAP™bruger/kræver en mere ensartet datastruktur. Selv om det er lidt akavet (dvs., anderledes end forventet) ,ERDDAP™kan distribuere projekterede data.
\[Ja,ERDDAP™kunne have løst krav til datastrukturen, men holde kravene til outputformaterne. Men det ville føre til forvirring blandt mange brugere, især nybegyndere, da mange tilsyneladende gyldige anmodninger om data med forskellige strukturer ville være ugyldige, fordi dataene ikke ville passe ind i filtypen. Vi vender tilbage til det nuværende systems design.\]
Nogle slutbrugere ønsker data i en lat lon cylindrisk projektion som Equirectangular / plade carrée eller Mercator) for nem brug i forskellige situationer. I disse situationer opfordrer vi os tilERDDAP™administrator til at bruge nogle andre software (NCO?Matlab? R?? IDV? ...???) til at omdøbe dataene på et geografisk område (Equirectangulær projektion / plade bilrée) eller anden cylindrisk projektion og tjene den form for data iERDDAP™som et andet datasæt. Dette svarer til, hvad folk gør, når de konverterer satellitniveau 2 data i niveau 3 data. Et sådant værktøj erNCOsom tilbyder udvidelsesmuligheder til regridding data.
GIS og Reprojektering Data
Da GIS-verdenen ofte er kortorienterede, tilbyder GIS-programmer som regel support til omprojektering af data, dvs. at plotte dataene på et kort med en anden projektion.
I øjeblikket,ERDDAP™behøver ikke værktøjer til at omdøbe data. I stedet anbefaler vi, at du bruger et eksternt værktøj til at lave en variant af datasættet, hvor data er blevet omarbejdet fra sin oprindelige form på en rektangulær (breddegrad længde) array, der passer tilERDDAP.
Efter vores mening, CF/DAPVerden er lidt anderledes end GIS-verdenen og arbejder på et lidt lavere niveau.ERDDAP™afspejler det. Generelt,ERDDAP™er designet til at arbejde primært med data (Ikke kort) og ønsker ikke at ændre (f.eks. omprojekter) disse data. For For For For ForERDDAP™, gitterded data er ofte / sædvanligvis / især forbundet med lat lon værdier og en cylindrisk projektion, og ikke nogle projektions x,y værdier. I alle tilfælde,ERDDAP™gør ikke noget med datas projektion; det passerer bare data gennem, som det er, med sin nuværende projektion, på den teori, at en omprojektering er en betydelig ændring af data ogERDDAP™ønsker ikke at være involveret i væsentlige ændringer. Derudover kan efterfølgende brugere naivt omarbejde dataene igen, som ikke ville være så godt som bare at gøre en omprojektering. (Så hvis det er tilfældetERDDAP™administrator ønsker at tilbyde data i en anden projektion, fint; bare omprojekt dataene offline og tilbyde, at som et andet datasæt iERDDAP. Masser af satellitbaserede datasæt tilbydes, da NASA kalder niveau 2 (Strækning) og som niveau 3 (Equirectangulær projektion) versioner.) Hvornår Hvornår skal man HvornårERDDAP™gør kort (direkte eller viaWMSeller KML) ,ERDDAP™i øjeblikket kun tilbyder at lave kort med Equirectangular / plade bilrée projektion, som er heldigvis accepteret af de fleste kortprogrammer.
Vi opfordrer os tilERDDAP™Administratorer til at bruge nogle andre software (NCO?Matlab? R?? IDV? ...???) til at omdøbe dataene på et geografisk område (Equirectangulær projektion / plade bilrée) eller anden cylindrisk projektion og tjene den form for data iERDDAP™som et andet datasæt. Dette svarer til, hvad folk gør, når de konverterer satellitniveau 2 data i niveau 3 data. Et sådant værktøj erNCOsom tilbyder udvidelsesmuligheder til regridding data.
Vi håber, atERDDAP™vil have indbyggede værktøjer til at tilbyde kort med andre projektioner i fremtiden. Vi håber også at have bedre forbindelser til GIS-verdenen i fremtiden (andre end den nuværendeWMSServiceservice) . Det er forfærdeligt, at i denne "moderne" verden, forbindelserne mellem CF /DAPVerden og GIS-verdenen er stadig så svag. Begge af disse ting er på listen To Do. (Hvis du ønsker at hjælpe, især med tilslutningERDDAP™Send en e-mail til MapServer. John på noaa.gov .)
Datatyper
ERDDAP™understøtter følgende datatyper (navnene er tilfælde følsomme;'u'præfiks står for "usigned"; antallet af navne i andre systemer er antallet af bits) :
byte
- byte har underskrevet talværdier med en række -128 til 127. I andre systemer kaldes dette undertiden int8. Dette kaldes "tinyint" af SQL og Cassandra. ERDDAP™Konverteringerbooleanfra nogle kilder (f.eks. SQL og Cassandra) ind i bytesERDDAP™med en værdi på 0=false, rå og 127=missing\_value.
ubyte
- ubyte har ikke-signede værdier med en række 0 til 255. I andre systemer kaldes dette undertiden uint8.
Kort kort kort kort
- Kort kort kort kort har underskrevet talværdier med en række -32768 til 32767. I andre systemer kaldes dette undertiden int16. Dette kaldes "lilleint" af SQL og Cassandra.
Ukort
- Ukort har ikke-signede værdier med en række 0 til 65535. I andre systemer kaldes dette undertiden uint16.
int
- int har underskrevet talværdier med en række -2147483648 til 2147483647. I andre systemer kaldes dette undertiden int32. Dette kaldes "integer|numerisk (?) " af SQL og "int" af Cassandra.
uint
- uint har ikke-signede værdier med en række 0 til 4294967295. I andre systemer kaldes dette nogle gange uint32.
længe
- længe har underskrevet mindsteværdier med en række -9223372036854775808 til 9223372036854775807. I andre systemer kaldes dette undertiden int64. Dette kaldes "bigint|numerisk (?) " af SQL og "bigint" af Cassandra. Fordi mange filtyper ikke understøtter lange data, er deres brug diskotek. Brug dobbelt i stedet (se nedenfor) .
Ulong
- Ulong har ikke-signede værdier med en række 0 til 18446744073709551615 I andre systemer kaldes dette undertiden uint64. Fordi mange filtyper ikke understøtter ulong data, deres brug er discouraged. Brug dobbelt i stedet (se nedenfor) .
flyder
- flyder er en IEEE 754 flyt med en række ca +/- 3.402823466e+38. I andre systemer kaldes dette undertiden fly32. Dette kaldes "realistisk|flyder (?) |decimal decimal decimal (?) |numerisk (?) " af SQL og "float" af Cassandra. Den særlige værdi NaN betyder ikke-a-tal. ERDDAP™Konverterer positive og negative uendelighedsværdier til NaN.
Dobbelt dobbelt
- Dobbelt dobbelt er en IEEE 754 dobbelt med en række ca. +/- 1.7931348623157E+308. I andre systemer kaldes dette undertiden fly64. Dette kaldes "dobbelt præcision|flyder (?) |decimal decimal decimal (?) |numerisk (?) " af SQL og "double" af Cassandra. Den særlige værdi NaN betyder ikke-a-tal. ERDDAP™Konverterer positive og negative uendelighedsværdier til NaN.
Billeder af char
- Billeder af char er en enkelt, 2-byte (16-bit) Unicode UCS-2 tegnspænder fra\u0000 (#0) gennem gennem gennem\uffff (#65535) . \uffff's definition er ikke-a-Character, analogt til en dobbelt værdi af NaN. Brugen af char er discouraged, fordi mange filtyper enten ikke understøtter chars eller kun støtte 1-byte chars (se nedenfor) . Overvej at bruge String i stedet. Brugere kan bruge char variabler til at lave grafer.ERDDAP™vil konvertere tegn til deres Unicode-kodepunktnummer, som kan bruges som numeriske data.
streng streng streng
- streng streng streng er en sekvens på 0 eller mere, 2-byte (16-bit) Unicode UCS-2 tegn. ERDDAP™Brug/fortolker en 0-længde streng som en manglende værdi.ERDDAP™understøtter ikke en ægte null streng. Den teoretiske maksimale streng længde er 2147483647 tegn, men der er sandsynligvis forskellige problemer på forskellige steder selv med lidt kortere strenge. BrugERDDAP's String for SQL's karakter, varchar, figur varierende, binær, var binær, interval, array, multiset, xml, og enhver anden database data type, der ikke passer rent med andre andreERDDAP™datatype. BrugERDDAP's String for Cassandra's "tekst" og enhver anden Cassandra data type, der ikke passer rent med nogen andenERDDAP™datatype.
Før før førERDDAP™v2.10,ERDDAP™støttede ikke usignede integer typer internt og tilbød begrænset støtte i sine datalæsere og forfattere.
Datatypebegrænsninger
Du kan tænke påERDDAP™som et system, der har virtuelle datasæt, og som arbejder ved at læse data fra en datasæts kilde til en intern datamodel og skrive data til forskellige tjenester (f.eks.(OPeN)DAP,WMS) og filtyper som svar på brugeranmodninger.
- Hver inputlæser understøtter et undersæt af de datatyper, somERDDAP™understøtter. Så læsning af data tilERDDAP's interne datastrukturer er ikke et problem.
- Hver output forfatter understøtter også et undersæt af datatyper. Det er et problem, fordiERDDAPskal f.eks. trykke lange data i filtyper, der ikke understøtter lange data.
Nedenfor er forklaringer på begrænsningerne (eller ingen) af forskellige output forfattere og hvordanERDDAP™beskæftiger sig med problemerne. Sådanne komplikationer er en del afERDDAP's mål at gøre deparate systemer interoperable.
ASCII
- ASCII (.csv,.tsv, osv.) tekstfiler -
-
Alle numeriske data er skrevet via sin strenge repræsentation (med manglende dataværdier som 0-længde strenge) .
-
Selv om selvomERDDAP™skriver lange og ulange værdier korrekt til ASCII tekstfiler, mange læsere (f.eks. regnearksprogrammer) kan ikke håndtere lange og ulange værdier og i stedet konvertere dem til dobbeltværdier (med tab af præcision i nogle tilfælde) .
-
Char- og strengdata er skrevet via JSON Strings, som håndterer alle Unicode-tegn (Især "uusuelle" tegn ud over ASCII #127, f.eks. Euro-karakteren vises som "u20ac") .
-
JSON
- JSON (.json,.jsonlCSV, osv.) tekstfiler -
- Alle numeriske data er skrevet via sin strenge repræsentation.
- Char- og strengdata er skrevet som JSON Strings, som håndterer alle Unicode tegn (Især "uusuelle" tegn ud over ASCII #127, f.eks. Euro-karakteren vises som "u20ac") .
- Manglende værdier for alle numeriske datatyper vises som null.
.nc3 filer
- .nc3 filer understøtter ikke nogen usignede iteger datatyper. Før CF v1.9 støttede CF ikke usignede iteger typer. At håndtere dette,ERDDAP™2.10+ følger NUG-standarden og tilføjer altid en "\_Unsigned" egenskab med en værdi af "true" eller "false" for at angive, om dataene er fra en usigned eller underskrevet variabel. Alle ital attributter er skrevet som signerede attributter (f.eks. byte) med underskrevet værdier (f.eks. en ubyteactual\_rangeattribut med værdier 0 til 255, vises som en afte attribut med værdier 0 til -1 (inderst af de tos komplementære værdi af den udestående værdi). Der er ingen nem måde at vide, hvilke (signed) integer attributter skal læses som usignede attributter.ERDDAP™understøtter attributten "\_Unsigned", når den læser.nc3 filer.
- .nc3 filer understøtter ikke de lange eller ulange datatyper.ERDDAP™tilbud med dette ved midlertidigt at konvertere dem til at være dobbelt variabler. Doubler kan nøjagtigt repræsentere alle værdier op til +/- 9.007,199,254,740,992 som er 2^53. Dette er en ufuldkommelig løsning.Unidatanægter at foretage en mindre opgradering til.nc3 for at håndtere dette og relaterede problemer, citere.nc4 4 (en større ændring) som løsningen.
- CF-specifikationerne (før v1.9) sagde det understøtter en char data type, men det er uklart, hvis char kun er beregnet som byggesten af char arrays, som er effektivt strenge. Spørgsmål til deres postliste gav kun forvirrende svar. På grund af disse komplikationer, er det bedst at undgå char variabler iERDDAP™og brug strenge variabler når det er muligt.
- Traditionelt,.nc3 filer kun understøttede strenge med ASCII-enkode (7-bit, #0 - 127) tegn. NUG (og og ogERDDAP) forlænge det (start ~2017) ved at inkludere attributten "\_Encoding" med en værdi af "ISO-8859-1" (en udvidelse af ASCII, som definerer alle 256 værdier af hver 8-bit tegn) eller "UTF-8" for at angive, hvordan strenge data er kodet. Andre kodninger kan være lovlige, men er diskotek.
.nc4 filer
- .nc4 filer understøtter alleERDDAP's datatyper.
NCCSV filer
NCCSV 1.0 filer understøtter ikke nogen usignede iteger data typer. NCCSV 1.1+ filerStøtte alle usignede datatyper.
DAP
- (OPeN)DAP (.das, .dds, .asc ASCII filer og .dods binære filer) - - - -
- (OPeN)DAPhåndterer kort, ukort, int, uint, flyde og dobbelt værdier korrekt.
- (OPeN)DAPhar en "byte" datatype, som den definerer som usigned, mens historisk set, THREDDS ogERDDAP™har behandlet "byte" som underskrevet i deres(OPeN)DAPtjenester. At håndtere dette bedre,ERDDAP™2.10+ følger NUG-standarden og tilføjer altid en "\_Unsigned" egenskab med en værdi af "true" eller "false" for at angive, om dataene er, hvad der erERDDAP™opkald af eller ubyte. Alle byte og ubyte attributter skrives som "byte" attributter med underskrevet værdier (f.eks. en ubyteactual\_rangeattribut med værdier 0 til 255, vises som en afte attribut med værdier 0 til -1 (inderst af de tos komplementære værdi af den udestående værdi). Der er ingen nem måde at vide, hvilke "byte" attributter skal læses som ubyte attributter.
- (OPeN)DAPunderstøtter ikke signerede eller usignede lange.ERDDAP™Tilbyder dette ved midlertidigt at konvertere dem til at være dobbelt variabler og attributter. Doubler kan nøjagtigt repræsentere alle værdier op til 9.007,199,254,740,992 som er 2^53. Dette er en ufuldkommelig løsning.OPeNDAP (organisationen) nægter at foretage en mindre opgradering tilDAP2.0 for at håndtere dette og relaterede problemer, citereDAP4 4 (en større ændring) som løsningen.
- Fordi fordi(OPeN)DAPhar ingen separat char data type og teknisk kun understøtter 1-byte ASCII tegn (#0 - 127) i Strings, char datavariabler vises som 1-karakterer lange strenge i(OPeN)DAP.das, .dds og .dods svar.
- Teknisk set,(OPeN)DAPspecifikation understøtter kun strenge med ASCII-enkodede tegn (#0 - 127) . NUG (og og ogERDDAP) forlænge det (start ~2017) ved at inkludere attributten "\_Encoding" med en værdi af "ISO-8859-1" (en udvidelse af ASCII, som definerer alle 256 værdier af hver 8-bit tegn) eller "UTF-8" for at angive, hvordan strenge data er kodet. Andre kodninger kan være lovlige, men er diskotek.
Data type Kommentarer
- På grund af den dårlige støtte i lang tid, ulong og char data i mange filtyper, vi diskourage brugen af disse data typer iERDDAP. Når det er muligt, skal du bruge dobbelt i stedet for lang og ulong og bruge String i stedet for char.
- Metadata - Fordi(OPeN)DAP's .das og .dds reaktioner understøtter ikke lange eller ulange attributter eller datatyper (og i stedet vise dem som fordobler) , du måske i stedet ønsker at brugeERDDAP's tabulær repræsentation af metadata som set i denhttp.../erddap/ info info / / / / datasetID .html side (for eksempel, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (som du også kan få i andre filtyper, f.eks. .csv,.htmlTable,.itx,.json,.jsonlCSV1,.jsonlCSV,.jsonlKVP,.mat,.nc,.nccsv,.tsv,.xhtml) eller.nccsvMetadata (for eksempel, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata selvom.nccsvMetadata er kun tilgængelig for tabulære datasæt) , begge af hvilke understøtter alle datatyper (Især lang, ulong og char) .
Mediefiler
Ikke alle data er arrays af tal eller tekst. Nogle datasæt består af eller omfatter mediefiler, såsom billede, lyd og videofiler.ERDDAP™har nogle særlige funktioner til at gøre det nemmere for brugerne at få adgang til mediefiler. Det er en to trin proces:
- Gør hver fil tilgængelig via sin egen URL, via et system, der understøtter byte område anmodninger. Den nemmeste måde at gøre dette er at sætte filerne i en mappe, derERDDAP™har adgang til. (Hvis de er i en beholder som en.zipfil, uzip dem, selvom du ønsker at tilbyde den.zipfil til brugere også.) Så skal du lave enEDDTableFraFileNamesDatasæt til at gøre disse filer tilgængelige viaERDDAP™, især viaERDDAP's"files"systemsystem.
Alle filer gjort tilgængelige via EDDTableFraFileNames ogERDDAP's"files"systemsupportanmodninger om rækkevidde. Normalt, når en klient (f.eks. en browser) gør en anmodning til en URL, det får hele filen som svar. Men med en anmodning om rækkevidde angiver anmodningen en række bytes fra filen, og serveren returnerer kun disse bytes. Dette er relevant her, fordi lyd- og videoafspillere i browsere kun fungerer, hvis filen kan tilgås via byte-forespørgsel.
Valgfrit: Hvis du har mere end én datasæt med tilknyttede mediefiler, kan du lave en EDDTableFraFileNames, der har en undermappe til hver gruppe filer. Fordelen er, at når du vil tilføje nye mediefiler til et nyt datasæt, alt hvad du skal gøre er at oprette en ny mappe og sætte filerne i mappen. mappen og filer vil automatisk blive tilføjet til EDDTableFraFileNames datasæt.
- Valgfrit: Hvis du har et datasæt, der indeholder henvisninger til mediefiler, skal du tilføje det tilERDDAP. Du kan f.eks. have en .csv-fil med en række for hver gang nogen så en hval og en kolonne, der indeholder navnet på en billedfil relateret til den syning. Hvis navnet på billedfilen er blot filnavnet, f.eks. Img20141024T192403Z, ikke en fuld URL, skal du tilføjeFileAccessBase Url og/eller filAccessSuffixattributter til metadata for detdataVariablesom angiver baseURL og suffik til disse filnavne. Hvis du har gjort filerne tilgængelige via EDDTableFraFileNames, vil URL'en være i form baseUrl /erddap / filer / datasetID / / / / For eksempel,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Hvis der er en.zipeller anden beholder fil med alle mediefiler relateret til en datavariabel, anbefaler vi, at du også gør den fil, der er tilgængelig for brugere (se trin 1 ovenfor) og derefter identificere det med enFileAccessArchive Urlattribut.
\[Begyndende iERDDAP™v1.82\]Hvis du gør det første trin ovenfor (eller begge trin) , så når en bruger ser udERDDAP™ "files"system til det datasæt (eller anmoder om at se en del af datasættet via en.htmlTableanmodning, hvis du gjorde det andet trin) ,ERDDAP™vil vise et '?' ikon til venstre for filnavnet. Hvis brugeren svæver over det ikon, vil de se en popup, der viser billedet, eller en lydafspiller eller en videoafspiller. Browserer understøtter kun et begrænset antal typer af
- billedbillede (normalt .gif, .jpg og .png) ,
- lydlyd (normalt .mp3, .ogg, og .wav) , og
- videofiler (normalt .mp4, .ogv, og . Webm) .
Support varierer med forskellige versioner af forskellige browsere på forskellige operativsystemer. Så hvis du har et valg af hvilken filtype at tilbyde, giver det mening at tilbyde disse typer.
Eller hvis en bruger klikker på filnavnet vist på enERDDAP™Websiden, deres browser vil vise billedet, lyd eller video fil som en separat webside. Dette er for det meste nyttigt at se et meget stort billede eller videoskala til fuld skærm, i stedet for i en popup.
AWS S3 filer
Amazon Web Service (AWS) er en sælger afcloud computingtjenester.S3er et objekt opbevaringssystem, der tilbydes af AWS. I stedet for det hierarkiske system af mapper og filer af et traditionelt filsystem (som en harddisk i din pc) , S3 tilbyder kun "buckets", som holder "objects" (Vi kalder dem"files") .
Til ASCII-filer (f.eks. .csv) ,ERDDAP™kan arbejde med filerne i skovlne direkte. Det eneste, du skal gøre, er at angive den<fileDir> til datasættet ved hjælp af et bestemt format til AWS-spanden, f.eks. https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . Du bør ikke bruge<cacheFraUrl> . Se nedenfor for detaljer.
Men for binære filer (fx,.nc, .grib, .bufr, og.hdffiler filer filer) , du behøver at bruge den<cacheFraUrl> system beskrevet nedenfor.ERDDAP, netcdf-java (somERDDAP™bruger til at læse data fra disse filer) , og andre videnskabelige data software er designet til at arbejde med filer i et traditionelt filsystem, der tilbyderblokniveauadgang til filer (som tillader læsning af bidder af en fil) , men S3 tilbyder kunfilniveau (objektobjekt) adgang til filer (som kun tillader at læse hele filen) . AWS tilbyder et alternativ til S3,Elastisk blok butik (EBS) ), der understøtter blokniveau adgang til filer, men det er dyrere end S3, så det sjældent bruges til bulk opbevaring af store mængder af datafiler. (Så når folk siger at lagre data i skyen (S3) er billig, det er normalt en æbler til orange sammenligning.)
S3 Skove
Indholdsfortegnelsen af en spand. Nøgler. Objekter. De limiters.
Teknisk set organiseres S3 skovle ikke i en hierarkisk filstruktur som et filsystem på en computer. I stedet indeholder skovle kun "objekter" (filer filer filer) , hver af dem har en "nøgle" (Et navn) . Et eksempel på en nøgle i den noaa-goes17 spand er
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
Den tilsvarende URl til dette objekt er
AWS understøtter en lille variation i, hvordan URL er konstrueret, menERDDAP™kræver dette specifikke format:
https://bucketName.s3.region.amazonaws.com/key
Det er fælles praksis, som med dette eksempel for at gøre nøglenavne ser ud som en hierarkisk sti plus et filnavn, men teknisk er de ikke. Da det er almindeligt og nyttigt,ERDDAP™Behandl nøgler med /'s som om de er en hierarkisk sti plus filnavn, og denne dokumentation vil henvise til dem som sådan. Hvis en spands nøgler ikke bruger /'s (f.eks. en nøgle som
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575), derefterERDDAP™vil bare behandle hele nøglen som et langt filnavn.
Privat vs Offentlige Skove -- Administratoren for S3 skovlen kan gøre skovlen og dens indhold offentligt eller privat. Hvis det offentlige, kan enhver fil i skovlen downloades af nogen ved hjælp af URL til filen. Amazon har enÅbne dataprogram, der er vært for offentlige datasets (herunder data fraNOAA, NASA og USGS) gratis og oplader ikke for nogen at downloade filerne fra disse skovle. Hvis en spand er privat, er filer i spanden kun tilgængelige for autoriserede brugere og AWS opkræver et gebyr (normalt betalt af spandens ejer) for at downloade filer til en ikke-AWS S3 computer.ERDDAP™kan arbejde med data i offentlige og private skovle.
AWS legitimationsoplysninger
At gøre det såERDDAP™kan læse indholdet af private skovle, du har brug for AWS legitimationsoplysninger, og du skal gemme en legitimationsfil på standardstedet, såERDDAP™kan finde oplysninger. Se AWS SDK forJava2.x dokumentation:Angiv standardoplysninger. (Mulighed for at gemme værdierne somJavakommandolinjeparametre i\[Tomcat\]/bin/setenv.sh kan være en god mulighed.)
AWS / filer /
- / filer / system -- The The The The The The TheERDDAP™ / filer / systemTillad brugere at downloade kildefiler til et datasæt. Vi anbefaler, at du tænder dette for alle datasæt med kildefiler, fordi mange brugere ønsker at downloade de oprindelige kildefiler.
- Hvis filerne er i en privat S3 spand, vil brugerens anmodning om at downloade en fil blive håndteret afERDDAP™, som vil læse dataene fra filen og derefter overføre dem til brugeren og dermed øge belastningen på dinERDDAP™, ved hjælp af indgående og udgående båndbredde og gør dig (te te te teERDDAP™Administrator) Betaling af data til AWS.
- Hvis filerne er i en offentlig S3 spand, vil brugerens anmodning om at downloade en fil blive omdirigeret til AWS S3 URL for den fil, så dataene ikke flyder gennemERDDAP™og dermed reducere belastningen påERDDAP. Og hvis filerne er i en Amazon Open Data (Gratis gratis) offentlig spand, så du (te te te teERDDAP™Administrator) Du behøver ikke at betale dataeksploser gebyr til AWS. Der er således en stor fordel, der betjener data fra offentligheden (ikke privat) S3 skovle og en enorm fordel til at betjene data fra Amazon Open Data (Gratis gratis) skovle.
ERDDAP™og AWS S3 Skove
ERDDAP™og AWS S3 Skove
Heldigvis, efter meget indsats,ERDDAP™har en række funktioner, der gør det muligt at håndtere de iboende problemer med at arbejde med S3's blokniveau adgang til filer på en rimelig effektiv måde:
- \[Ansvarsfraskrivelse: Arbejde med AWS S3 skovle er en masse ekstra arbejde. AWS er et stort økosystem af tjenester og funktioner. Der er meget at lære. Det tager tid og indsats, men det er muligt. Vær tålmodig og du får tingene til at arbejde. Kig/ask til hjælp
(()AWS dokumentation, hjemmesider somStack Overflow, og regelmæssig
ERDDAP™Hjælpemuligheder) hvis/ når du sidder fast.\]
- Det kan være svært at finde ud af mappestrukturen og filnavnene på filerne i en S3 spand.ERDDAP™har en løsning på dette problem: EDDTableFraFileNames har en speciel\\\* fraOnTheFlymulighed, som lader dig gøre en EDDTableFraFileNames datasæt, som giver brugerne mulighed for at gennemse indholdet af en S3 spand (og download filer) via datasættets"files"mulighed. Der er eneksempel på dette nedenfor.
- ERDDAP™kan læse data fraeksternt komprimerede datafiler, så det er fint, hvis filerne på S3 gemmes som.gz,.gzip,.bz2, .Z eller andre typer af eksterne komprimerede datafiler, som kan dramatisk (2 - 20X) Skær ned på fillagringsomkostninger. Der er ofte ingen tid straf for brug af eksterne komprimerede filer, da det tidspunkt, der er gemt ved at overføre en mindre fil fra S3 tilERDDAPMere om balancer den ekstra tid, der er nødvendig forERDDAP™at dekomprimere filen. Hvis du vil bruge denne funktion, skal du bare sørge for, at datasættets<FilenNameRegex> Giver mulighed for komprimeret filtype (f.eks. ved at tilføje (|.gz) til slutningen af regex) .
- For det mest almindelige tilfælde, hvor du har enERDDAP™installeret på din pc til test/udvikling, og hvor datasættet har binære datafiler, der er gemt som objekter i en S3 spand, en tilgang til at få datasættet iERDDAP™er:
-
Opret en mappe på din PC for at holde et par testdata filer.
-
Hent to datafiler fra kilden til den mappe, du lige har oprettet.
-
BrugGenererDatasetsXmlat generere klumpen afdatasets.xmlfor datasættet baseret på de to lokale datafiler.
-
Kontroller, at datasæt fungerer som ønsket medBilleder af DasDdsog/eller din lokaleERDDAP.
Følgende trin gør en kopi af disse datasæt (som vil få data fra S3 spand) på offentlige områderERDDAP.
-
Kopier klumpen afdatasets.xmlfor datasættet til datasættetdatasets.xmlfor offentlighedenERDDAP™det vil tjene dataene.
-
Opret en mappe på offentlighedenERDDAP's lokale harddisk til at holde en cache af midlertidige filer. mappen vil ikke bruge en masse diskplads (Se cachestørrelseGB nedenfor) .
-
Ændre værdien af datasættets<filDir> tag, så det peger på den mappe, du lige har oprettet (selvom mappen er tomt) .
-
Tilføj encacheFraUrltag, der angiver datasættets spandnavn og valgfri præfiks (i.e., mappe) i det specifikkeSådan vises S3 URL-formatetERDDAP™kræver behov.
-
Tilføj en [<cachestørrelseGB>] (#cachefraurl) tag til datasættets xml (f.eks. 10 er en god værdi for de fleste datasæt) at fortælleERDDAP™for at begrænse størrelsen af den lokale cache (f.eks., prøv ikke at cache alle fjernfiler) .
-
Se om det virker i offentlighedenERDDAP. Bemærk, at første gangERDDAP™indlæser datasættet, vil det tage lang tid at indlæse, fordiERDDAP™skal downloade og læse alle datafiler.
-
Hvis datasættet er en enorm samling af store gitterded datafiler, vil dette tage en meget lang tid og være upraktisk. I nogle tilfælde for gitterded datafiler,ERDDAP™kan udtrække de nødvendige oplysninger (f.eks. tidspunktet for dataene i en netded datafil) fra filnavnet og undgå dette problem. Se endnuAggregation via Filnavne.
- Valgfrit (men især for EDDTableFraFiles datasets) , du kan tilføje ennThreadstag til datasættet for at fortælleERDDAPat bruge mere end 1 tråd, når du reagerer på en brugers anmodning om data. Dette minimerer virkningerne af den forsinkelse, der opstår, nårERDDAP™Læser datafiler fra (fjernbetjening) AWS S3 skovle ind i den lokale cache og (måske måske måske måske) undertrykke dem.
AWS S3 Åbn data
Som en del afNOAA'sBig Data Program,NOAAhar partnerskaber med fem organisationer, herunder AWS, "at udforske de potentielle fordele ved at lagre kopier af vigtige observationer og modeludgange i skyen for at tillade computer direkte på dataene uden at kræve yderligere distribution". AWS indeholder de datasæt, den får fraNOAAsom en del af programmet til at tilbyde offentlig adgang til en stor samling afÅbne data på AWS S3fra enhver computer, uanset om det er en Amazon-regneinstans (en lejet computer) på AWS-netværket eller din egen pc på ethvert netværk. Eksempelet nedenfor antager, at du arbejder med et offentligt tilgængeligt datasæt.
Adgang af filer i en AWS S3 spand
Til en privat S3 data spand skal skovlens ejer give dig adgang til spanden. (Se AWS-dokumentationen.)
I alle tilfælde skal du bruge en AWS-konto, fordi AWS SDK forJava (somERDDAP™Brug til at hente oplysninger om indholdet af en spand) kræver AWS-konto legitimationsoplysninger. (mere på dette nedenfor)
ERDDAP™kan kun få adgang til AWS S3 skovle, hvis du angiver [<cacheFraUrl>] (#cachefraurl) (eller<i et bestemt format:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
hvor
- Skoven er den korte form for spandnavnet, f.eks. noaa-goes17 .
- Aws-region, f.eks. us-øst-1, er fra kolonnen "Region" i en af tabellerne iAWS Service Endpointshvor spanden rent faktisk er placeret.
- Præfikset er valgfri. Hvis det er til stede, skal det ende med'/'.
For eksempel, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Dette URL-format er en af AWS S3 anbefalinger: seAdgang til en spandog og ogdenne beskrivelse af præfikser.ERDDAP™kræver, at du kombinerer skovlens URL og den valgfrie præfiks i én webadresse for at angive<cacheFraUrl> (eller<fileDir>), hvor filerne er placeret.
Test Offentlige AWS S3 Skove
For offentlige skovle, kan du og skal teste skovlens URL i AWS S3-mappen i din browser, f.eks. https://noaa-goes17.s3.us-east-1.amazonaws.com Hvis skovlens URL er korrekt og egnet tilERDDAP, det vil returnere et XML-dokument, der har (delvis delvis delvis delvis) opslag af indholdet af denne spand. Desværre, den fulde URL (f.eks. spand URL plus præfiks) den, derERDDAP™ønsker for en given datasæt virker ikke i en browser. AWS tilbyder ikke et system til at gennemse hierarkiet af en spand nemt i din browser. (Hvis det er forkert, bedes du kontakte Chris. John på noaa.gov. Ellers, Amazon, skal du tilføje støtte til dette!)
Se Indholdsfortegnelsen af en spand
S3 skovle indeholder ofte et par kategorier af filer, i et par pseudo subdirectories, som kunne blive et par afERDDAP™Datasets. Sådan laver duERDDAP™Datasets, du skal vide startmappen for<cacheFraUrl> (eller<fileDir>) og formatet af de filnavne, der identificerer, at undersæt af filer. Hvis du forsøger at se hele indholdet af en spand i en browser, vil S3 kun vise dig de første 1000 filer, som er utilstrækkelig. I øjeblikket, den bedste måde for dig at se alt indholdet af en spand er at gøre enEDDTableFraFileNamesDatasæt (på din pc'sERDDAP™og/eller på din offentligeERDDAP) , som også giver dig en nem måde at gennemse mappestrukturen og downloade filer. The The The The The The The<fileDir> for det vil være den webadresse, du har foretaget ovenfor, f.eks. https://noaa-goes17.s3.us-east-1.amazonaws.com .\[Hvorfor tilbyder AWS S3 en hurtig og nem måde at gøre dette uden en AWS-konto?\]Bemærk, at når jeg gør dette på min pc på et ikke-Amazon-netværk, vises det, at Amazon bremser svaret på et trickle (omkring 100 (?) filer pr. chunk) efter de første par bidder (af 1000 af filer pr. klump) downloades. Da skovle kan have et stort antal filer (noaa-goes17 har 26 millioner) , at få alt indholdet af en spand kan tage EDDTableFraFileNames flere timer (f.eks. 12!) at afslutte.\[Amazon, er det rigtige?!\]
At gøre en EDDTabel FraFileNames Dataset med en AWS S3 spand
Hvis du har et spandnavn, men ikke allerede har en liste over filer i S3 spanden eller det præfiks, der identificerer placeringen af de relevante filer i spanden, skal du bruge instruktionerne herunder for at gøre en EDDTableFraFileNames dataset, så du kan gennemse katalog hierarkiet af S3 spand viaERDDAP's"files"system.
- Åbn en AWS-konto ERDDAP™Brug af cookiesAWS SDK forJavaat få spand information fra AWS, så du skal brugeOprette og aktivere en AWS-konto. Det er et ret stort job, med masser af ting at lære.
- Sæt dine AWS Credentials, hvorERDDAP™kan finde dem. Følg instruktionerne påOpsæt AWS Credentials og Region for Udviklingså så sådanERDDAP™ (specifikt, AWS SDK forJava) vil kunne finde og bruge dine AWS-oplysninger. HvisERDDAP™kan ikke finde legitimationsoplysningerne, vil du se en java.lang. IllegalArgumentException: profilfilen kan ikke vises fejl iERDDAP's log.txt-fil.
Hint for Linux og Mac OS: legitimationsfilen skal være i hjemmemappen af brugeren, der kører Tomcat (og og ogERDDAP) (for dette afsnit, vil vi antage bruger=tomcat) i en fil kaldet ~ /.save / credentials . Må ikke antage, at ~ er /home/tomcat -- faktisk bruger cd ~ at finde ud af, hvor operativsystemet mener ~ for bruger=tomcat er. Opret mappen, hvis den ikke findes. Når du har lagt legitimationsfilen på plads, skal du sørge for, at brugeren og gruppen til filen er tomcat og derefter bruge lmmod 400 legitimationsoplysninger til at sikre, at filen er read-only for bruger=tomcat.
- Opret skovl URL i skovlenformat, derERDDAP™kræver behovf.eks. https://noaa-goes17.s3.us-east-1.amazonaws.com , og (til offentlige skovle) Test det i en browser for at sikre, at det returnerer et XML-dokument, som har en delvis liste indholdet af denne spand.
- BrugGenererDatasetsXmlat oprette enEDDTableFraFileNamesDatasæt:
-
For startmappen skal du bruge denne syntaks: \\\ fraOnTheFly, Hoteller i nærheden af YourBucketUrl* for eksempel, \\\* fraOnTheFly, https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
filnavn regex? .\*
-
Reklamation? sande sande sande sande
-
reload Hvad er der? 10080
-
institution?NOAA
-
oversigt? Intet (ERDDAP™vil oprette en anstændig oversigt automatisk.)
-
titel? Intet (ERDDAP™vil oprette en anstændig titel automatisk.) Som sædvanlig bør du redigere den resulterende XML til at bekræfte korrekthed og foretage forbedringer, før mængden af datasæt bruger det idatasets.xml.
-
- Hvis du følger instruktionerne ovenfor og indlæse datasættet iERDDAP, du har oprettet en EDDTableFraFiles dataset. Som et eksempel, og for at gøre det nemmere for alle at gennemse og downloade filer fra AWS Open Data skovle, har vi skabt EDDTableFraFileNames datasets (se listen på listen på
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) for næsten alle afAWS S3 Åbne dataskovler.
\[De få skovle, som vi ikke indeholder, enten har et stort antal filer i rodmappen (mere end kan downloades i en rimelig mængde tid) eller ikke tillade offentlig adgang (er ikke de alle skulle være offentlige?) , eller er Anmodninger Pays skovle (f.eks. Sentinel) .\]
Hvis du klikker på"files"link til et af disse datasæt, kan du gennemse mappetræet og filer i denne S3 spand. På grund af vejen\\\*fraOnTheFly EDDTableFraFiles virker, disse mappelister er altid perfekt opdateret, fordiERDDAP™får dem på farten. Hvis du klikker ned på mappetræet til et egentligt filnavn og klikker på filnavnet,ERDDAP™vil omdirigere din anmodning til AWS S3, så du kan downloade filen direkte fra AWS. Du kan derefter inspicere den fil.
Har du lyst? Hvis dine EDDTableFraFiles ikke indlæses iERDDAP™ (eller DasDds) , se i log.txt-filen for en fejlmeddelelse. Hvis du ser en java.lang. IllegalArgumentException: profilfilen kan ikke være null fejl, problemet er, at AWS SDK forJava (brugt afERDDAP) Finder ikke legitimationsfilen. Se anvisningerne ovenfor.
Det er uheldigt, at AWS ikke blot tillader folk at bruge en browser til at se indholdet af en offentlig spand.
Så kan du laveERDDAP™Datasets, der giver brugerne adgang til dataene i filerne.
Se anvisningerne iERDDAP™og S3 Skove (ovenfor) .
Til prøven EDDTableFraFileNames datasæt, som du har lavet ovenfor, hvis du gør en lille pust rundt med mappen og filnavne i mappetræet, bliver det klart, at topniveaumappen navne (fx ABI-L1b-RadC) svarer til hvadERDDAP™ville kalde separate datasæt. Den spand, du arbejder med, kan være lignende. Du kan derefter forfølge at oprette separate datasæt iERDDAP™for hver af disse datasæt, ved hjælp af f.eks.
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
som det<cacheFraUrl>. Desværre synes datasætene i spanden alle at være niveau 1 eller niveau 2 datasæt, som alle synes at være niveau 1 eller niveau 2 datasæt.ERDDAP™ er ikke særlig god til, fordi datasættet er en mere kompliceret samling af variabler, der bruger forskellige dimensioner.
NcML filer
NcML-filer giver dig mulighed for at angive ændringer på en eller flere oprindelige kildeNetCDF (v3 eller v4) .nc, .grib, .bufr eller.hdf (v4 eller v5) filer, og derefter harERDDAP™Behandling af.ncml filer som kildefiler.ERDDAP™Datasets vil acceptere.ncml filer når.ncfiler forventes. NcML-filer SKAL have udvidelsen.ncml. Se billederneUnidataNcML dokumentation. NcML er nyttig, fordi du kan gøre nogle ting med det (for eksempel at foretage forskellige ændringer i forskellige filer i en samling, herunder tilføje en dimension med en bestemt værdi til en fil) , at du ikke kan gøre medERDDAP'sdatasets.xml.
- Ændringer til en.ncml fils sidsteModified tid vil forårsage, at filen skal indlæses, når datasættet er indlæst, men ændringer i den underliggende.ncDatafiler vil ikke være direkte bemærket.
- Hint: NcML er\*meget meget meget\*følsom over for ordren af nogle elementer i NcML-filen. Tænk på NcML som specificerer en række instruktioner i den angivne rækkefølge, med intentionen om at ændre kildefiler (staten på start/top af NcML-filen) i destinationsfiler (staten i slutningen/bottom of te NcML-filen) .
Et alternativ til NcML erNetCDFOperatører (NCO) . Den store forskel er, at NcML er et system til at foretage ændringer på farten (så kildefiler ikke ændres) , mensNCOkan bruges til at foretage ændringer (eller nye versioner af) filerne. BeggeNCOog NcML er meget, meget fleksibel og giver dig mulighed for at lave næsten enhver ændring, du kan tænke på filerne. For begge kan det være svært at finde ud af præcis, hvordan man gør det, du ønsker at gøre - kontrollere nettet for lignende eksempler. Begge er nyttige værktøjer til at forberede netCDF ogHDFfiler til brug medERDDAP, navnlig for at foretage ændringer ud over, hvadERDDAP's manipulation system kan gøre.
Eksempel #1: Tilføjelse af en Time Dimension med en enkelt værdi Her er en del.ncml fil, der skaber en ny ydre dimension (tid, med 1 værdi: 1041379200) og tilføjer denne dimension til billedvariablen i filen ved navn 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>
Eksempel #2: Ændring af en eksisterende tidsværdi Nogle gange kilden.ncfil har allerede en tidsdimension og tidsværdi, men værdien er forkert (til dine formål) . Dette.ncml fil siger: for datafilen ved navn ""19810825230030-NCEI...", for dimensionen variabel"time", sæt enheds attributten til at være "andre siden 1970-01T00:00:00Z" og sæt den tid værdi, der skal være 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>
NetCDFOperatører (NCO)
"The netCDF Operators (NCO) består af et dusin singler, kommandolinjeprogrammer, der tager netCDF\[v3 eller v4\],HDF \[v4 eller v5\],\[.grib,.bufr,\]og/ellerDAPfiler som input, og derefter betjene (f.eks. derivat nye data, beregningsstatistik, udskrivning, hyperslab, manipulere metadata) og output resultaterne til skærm eller filer i tekst, binære eller netCDF formater.NCOhjælpemidler til analyse af gitterded videnskabelige data. Den shell-command stil afNCOgør det muligt for brugerne at manipulere og analysere filer interaktivt, eller med udtryksfulde scripts, der undgår nogle kontraster på højere niveauer programmeringsmiljøer." (fra fraNCOhjemmeside hjemmeside hjemmeside) .
Et alternativ tilNCOer det erNcML. Den store forskel er, at NcML er et system til at foretage ændringer på farten (så kildefiler ikke ændres) , mensNCOkan bruges til at foretage ændringer (eller nye versioner af) filerne. BeggeNCOog NcML er meget, meget fleksibel og giver dig mulighed for at lave næsten enhver ændring, du kan tænke på filerne. For begge kan det være svært at finde ud af præcis, hvordan man gør det, du ønsker at gøre - kontrollere nettet for lignende eksempler. Begge er nyttige værktøjer til at forberede netCDF ogHDFfiler til brug medERDDAP, navnlig for at foretage ændringer ud over, hvadERDDAP's manipulation system kan gøre.
Du kan f.eks. brugeNCOfor at gøre enhederne i den tidsvariable konsistent i en gruppe filer, hvor de ikke var konsekvent oprindeligt. Eller du kan brugeNCOFor at ansøgescale\_factorog og ogadd\_offseti en gruppe filer, hvorscale\_factorog og ogadd\_offsethar forskellige værdier i forskellige kildefiler. (Eller kan du nu håndtere disse problemer iERDDAP™viaEDDGridFraNcFilesUnpakke, som er en variant afEDDGridFraNcFiles som pakker pakket data og standardiserer tidsværdier på et lavt niveau for at håndtere en samling filer, der har forskelligescale\_factors og sadd\_offset, eller forskellige tidsenheder.)
NCOer gratis og open source software, der bruger denGPL 3.0licens.
Eksempel #1: Gør enheder konsekvent
EDDGridFraFiles og EDDTable Fra filer insisterer på, at enhederne til en given variabel er identisk i alle filer. Hvis nogle af filerne er trivially (ikke funktionelt) forskellige fra andre (f.eks. tid enheder af
"sekikkere siden 1970-01-07-2017 UTC" versus
"seconds since 1970-01-01T00:00:00Z", du kunne brugeNCO'sncatted. for at ændre enhederne i alle de filer, der skal være identisk med
nco/ncatted -a enheder, tid,o,c,'s sekunder siden 1970-01T00:00:00Z.nc
\[For mange problemer som dette i EDDTableFra... Filer datasæt, du kan nu brugestandardiser Hvadat fortælleERDDAPat standardisere kildefiler, da de læses indERDDAP.\]
Begrænsninger til størrelsen af et datasæt
Du vil se mange referencer til "2 milliarder" nedenfor. Mere præcist, det er en reference til 2,147,483,647 (2. verdenskrig) , som er den maksimale værdi af en 32-bit underskrevet iteger. På nogle computersprog, f.eks.Java (somERDDAP™er skrevet i) , der er den største datatype, der kan bruges til mange datastrukturer (f.eks. størrelsen på en array) .
Til strenge værdier (for eksempel for variable navne, attributnavne, String attributværdier og String dataværdier) , det maksimale antal tegn pr streng iERDDAP™er ~2 milliarder. Men i næsten alle tilfælde vil der være små eller store problemer, hvis en streng overstiger en rimelig størrelse (f.eks. 80 tegn til variable navne og attributnavne, og 255 tegn for de fleste streng attributværdier og dataværdier) . F.eks. vil websider, der viser lange variable navne, være akavet bredt og lange variable navne, blive afkortet, hvis de overskrider grænsen for svarfilen type.
Til gitterede datasæt:
- Det maksimale antalaxisVariables er ~2 milliarder. Det maksimale antaldataVariables er ~2 milliarder. Men hvis et datasæt har >100 variabler, vil det være besværligt for brugerne at bruge. Og hvis et datasæt har >1 millioner variabler, vil din server bruge en masse fysisk hukommelse, og der vil være andre problemer.
- Den maksimale størrelse af hver dimension (axisVariable) er ~2 milliarder værdier.
- Jeg tror det maksimale samlede antal celler (Produktet af alle dimensionstørrelser) er ubegrænset, men det kan være ~9e18.
Til tabulære datasæt:
- Det maksimale antaldataVariables er ~2 milliarder. Men hvis et datasæt har >100 variabler, vil det være besværligt for brugerne at bruge. Og hvis et datasæt har >1 millioner variabler, vil din server bruge en masse fysisk hukommelse, og der vil være andre problemer.
- Det maksimale antal kilder (f.eks. filer) der kan aggregeres er ~2 milliarder.
- I nogle tilfælde, det maksimale antal rækker fra en individuel kilde (for eksempel en fil, men ikke en database) er ~2 milliarder rækker.
- Jeg tror ikke der er andre grænser.
For både gitterede og tabulære datasæt, er der nogle interne grænser på størrelsen af undersættet, der kan anmodes af en bruger i en enkelt anmodning (ofte relateret til >2 milliarder af noget eller ~9e18 af noget) , men det er langt mere sandsynligt, at en bruger vil ramme de filtypespecifikke begrænsninger.
- NetCDFversion 3.ncfiler er begrænset til 2 GB bytes. (Hvis dette er virkelig et problem for nogen, lad mig vide: Jeg kunne tilføje støtte til denNetCDFversion 3.nc64-bit udvidelse ellerNetCDFVersion 4, som ville øge grænsen betydeligt, men ikke uendelig.)
- Browserer nedbrud efter kun ~500 MB data, såERDDAP™begrænser reaktionen.htmlTableanmodninger om ~ 400 MB af data.
- Mange dataanalyseprogrammer har lignende grænser (For eksempel er den maksimale størrelse af en dimension ofte ~2 milliarder værdier) , så der er ingen grund til at arbejde hårdt for at komme rundt i de filtypespecifikke grænser.
- Filtypespecifikke grænser er nyttige i, at de forhindrer naive anmodninger om virkelig store mængder data (for eksempel "give mig alle disse datasæt", når datasættet har 20 TB data) , som ville tage uger eller måneder at downloade. Jo længere downloaden, desto mere sandsynligt vil det undlade en række grunde.
- De filtypespecifikke begrænsninger er nyttige i, at de tvinge brugeren til at beskæftige sig med rimelig størrelse subsets (f.eks. at håndtere et stort gitterded datasæt via filer med data fra én gang peger hver enkelt gang) .
Skift til ACDD-1.3
Vi vi vi vi (mærkbartGenererDatasetsXml) I øjeblikket anbefalerACDD version 1.3, som blev ratificeret i begyndelsen af 2015, og som henvises til som "ACDD-1.3" i den globale konventions attribut. Inden forERDDAP™version 1.62 (udgivet i juni 2015) ,ERDDAP™brugt/anbefalet den oprindelige version 1.0, af denNetCDFIntributekonventionen for Dataset Discoverysom blev omtalt som "UnidataDataset Discovery v1.0" i de globale konventioner ogMetadata\_Conventionsattributter.
Hvis dine datasæt bruger tidligere versioner af ACDD, anbefaler vi, at du skifter til ACDD-1.3. Det er ikke svært. ACDD-1.3 er meget bagud kompatibel med version 1.0. For at skifte, for alle datasæt (undtagenEDDGridFra Erddap og EDDTable FraErddap datasæt) :
- Fjern den nyopførte globaleMetadata\_Conventionsattribut ved at tilføje (eller ved at ændre de eksisterendeMetadata\_Conventionsattribut)
<att name="Metadata\\_Conventions">null</att>
til datasættets globale globale<addAttributes>. 2. Hvis datasættet har en konventions attribut i den globale<addAttributes>, ændre alle "UnidataDataset Discovery v1.0" referencer til "ACDD-1.3". Hvis datasættet ikke har en konventions attribut i den globale verden<addAttributes>, derefter tilføje en, der henviser til ACDD-1.3. For eksempel,
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Hvis datasættet har en globalstandard\_name\_vocabularyattribut, skal du ændre formatet af værdien for eksempel,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Hvis referencen er til en ældre version af referencenCF standard navnebord. Det er sandsynligvis en god ide at skifte til den aktuelle version (65, som vi skriver dette) , da nye standardnavne tilføjes til tabellen med efterfølgende versioner, men gamle standardnavne er sjældent afgrænset og aldrig fjernet. 4. Selvom ACDD-1.0 omfattede globale attributter forcreator\_name,creator\_email,creator\_url,GenererDatasetsXmlikke automatisk tilføje dem, indtil nogle gange omkringERDDAP™v1.50. Dette er vigtige oplysninger:
- creator\_namelader brugerne vide/cite skaberen af datasættet.
- creator\_emailfortæller brugerne den foretrukne e-mailadresse til at kontakte skaberen af datasættet, f.eks. hvis de har spørgsmål om datasættet.
- creator\_urlgiver brugerne en måde at finde ud af mere om skaberen.
- ERDDAP™Brug alle disse oplysninger, når du genererer FGDC og ISO 19115-2/19139 metadata dokumenter for hvert datasæt. Disse dokumenter bruges ofte af eksterne søgetjenester.
Tilføj disse attributter til datasættets globale 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>
Det er det. Jeg håber, at det ikke var for hårdt.
Zarrr
Som version 2.25ERDDAP™kan læse lokale Zarrr filer ved hjælp afEDDTableFraNcFilesog og ogEDDGridFraNcFiles.
(Af august 2019) Vi kunne nemt være forkert, men vi er endnu ikke overbevist om, atZarrr, eller lignende systemer, der bryder datafiler op i mindre stykker, er gode løsninger på problemet medERDDAP™læsning af data gemt i cloud-tjenester som Amazon AWS S3. Zarrr er en stor teknologi, der har vist sin nytte i en række situationer, vi er bare ikke sikre på, atERDDAP+S3 vil være en af disse situationer. Oftest siger vi: før vi skynder os at gøre indsatsen for at gemme alle vores data i Zarrr, lad os gøre nogle tests for at se, om det faktisk er en bedre løsning.
Problemer med at få adgang til data i skyen er laten (forsinkelsen til først at få data) og filniveau adgang (snarere end adgang til blokniveau) . Zarrr løser fil-niveau adgang problem, men gør intet ved latency. Sammenlignet med blot at downloade filen (så det kan læses som en lokal fil med blokereniveau adgang) , Zarrr kan endda forværre lat problemet, fordi med Zarrr, læsning af en fil nu involverer en række flere opkald til at læse forskellige dele af filen (hver med sin egen forsinkelse) . Fejlproblemet kan løses ved at parallelle anmodningerne, men det er en højere opløsning, ikke afhængig af Zarrr.
Og med Zarrr (som med relationsdatabaser) , vi mister bekvemmeligheden af at have en datafil er en simpel, enkelt fil, som du nemt kan bekræfte integriteten af eller downloade en kopi af.
ERDDAP™ (af v2) har et system til at opretholde en lokal cache af filer fra en URL-kilde (fx S3) (se []<cacheFraUrl> og<cacheMaxGB>] (#cachefraurl) ). Og den nye<nThreads>] (#læssere) bør minimere latency problem ved at parallelle datahentning på et højt niveau.<cacheFraUrl> synes at arbejde meget godt for mange scenarier. (Vi er ikke sikker på, hvor gavnligt<nThreads> er uden yderligere test.) Vi indrømmer, at vi ikke har gennemført timing tests på en AWS-instans med en god netværksforbindelse, men vi har med succes testet med forskellige eksterne URL-kilder af filer. Og og ogERDDAP's<cacheFraUrl> arbejder med enhver type datafil (fx,.nc,.hdf.csv,.jsonlCSV) , selvom ekstern komprimeret (fx,.gz) , uden ændringer i filerne (f.eks. omskrive dem som Zarrr samlinger) .
Det er sandsynligt, at forskellige scenarier vil gavne forskellige løsninger, f.eks. kun nødt til at læse en del af en fil én gang (Zarrr vil vinde) , vs. skal læse alle en fil én gang, vs. skal læse del eller alle en fil gentagne gange (<cacheFraUrl> vil vinde).
Oftest siger vi: før vi skynder os at gøre indsatsen for at gemme alle vores data i Zarrr, lad os gøre nogle tests for at se, om det faktisk er en bedre løsning.
Liste over typer datasæt
Hvis du har brug for hjælp til at vælge den rigtige datasæt type, seValg af datasæt Type.
Typerne af datasæt falder i to kategorier. (Hvorfor?)
EDDGrid
- EDDGrid Datasets håndterer gitterded data.
- I nærheden af In In In In In In In In In In In In In InEDDGridDatasæt, datavariabler er flerdimensionelle matrixer af data.
- Der skal være en akse variabel for hver dimension. Axis variabler skal specificeres i den rækkefølge, at datavariablerne bruger dem.
- I nærheden af In In In In In In In In In In In In In InEDDGridDatasæt, alle datavariabler skal bruge (Del dele) alle aksevariabler. (Hvorfor? Hvad hvis de ikke er?)
- Sorteret Dimension Værdier - I alleEDDGriddatasæt, hver dimension skal være i sorteret rækkefølge (stigende eller faldende) . Hver kan være uregelmæssigt rum. Der kan ikke være nogen bånd. Dette er et krav om kravetCF metadata standard. Hvis nogen dimensions værdier ikke er i sorteret rækkefølge, vil datasættet ikke blive indlæst ogERDDAP™vil identificere den første usorteret værdi i logfilen, bigParentDirectory /logs/log.txt .
Et par underklasser har yderligere restriktioner (især,EDDGridAggregateExistingDimension kræver, at den yderste (venstreste, første) dimension stiger.
Uspecificerede dimensionværdier angiver næsten altid et problem med kildedatasættet. Dette forekommer oftest, når en forkert eller upassende fil er inkluderet i aggregationen, som fører til en usorteret tidsdimension. Hvis du vil løse dette problem, skal du se fejlmeddelelsen i meddelelsenERDDAP™log.txt-filen for at finde den fornærmende tidsværdi. Så se i kildefiler for at finde den tilsvarende fil (eller en før eller en efter) det tilhører ikke i sammenlægningen.
- Se den mere fuldstændige beskrivelse afEDDGriddatamodel.
- The The The The The The TheEDDGridDatasættyper er:
- EDDGridFraAudioFilesaggregerer data fra en gruppe af lokale lydfiler.
- EDDGridFraDaphåndterer gitterdata fraDAPservere.
- EDDGridFraEDDTablelader dig konvertere en faneformet datasæt til et gitteret datasæt.
- EDDGridFraErddaphåndterer netded data fra en fjernERDDAP.
- EDDGridFraEtopoBare håndterer de indbyggede ETOPO topografidata.
- EDDGridFraFileser superklassen af alleEDDGridFra...Filer klasser.
- EDDGridFraMergeIRFilesaggregerer data fra en gruppe af lokale FleIR.gzfiler.
- EDDGridFraNcFilesaggregerer data fra en gruppe af lokaleNetCDF (v3 eller v4) .ncog relaterede filer.
- EDDGridFraNcFilesUnpakkeer en variant, hvisEDDGridFraNcFiles som også aggregerer data fra en gruppe lokaleNetCDF (v3 eller v4) .ncog relaterede filer, somERDDAP™Pakker på et lavt niveau.
- EDDGridLonPM180ændrer de længdeværdier af et barnEDDGridså de er i sortimentet -180 til 180.
- EDDGridLon0360ændrer de længdeværdier af et barnEDDGridså de er i området 0 til 360.
- EDDGridSideforsideSamler to eller flereEDDGridDatasets side af side.
- EDDGridAggregateExistingDimensionSamler to eller flereEDDGridDatasets, som hver især har en række værdier for den første dimension, men identiske værdier for de andre dimensioner.
- EDDGridKopiere Kopierkan lave en lokal kopi af en andenEDDGrid's data og tjener data fra den lokale kopi.
- AlleEDDGridDatasets understøtter en nThreads indstilling, som fortællerERDDAP™hvor mange tråde skal bruge, når de reagerer på en anmodning. Se billedernenThreadsdokumentation for detaljer.
EDDTabel
- EDDTabel Datasets håndterer tabulære data.
- Tabulære data kan repræsenteres som en databaselignende tabel med rækker og kolonner. Hver kolonne (en datavariabel) har et navn, et sæt attributter, og gemmer kun en type data. Hver række har en observation (eller gruppe af relaterede værdier) . Datakilden kan have data i en anden datastruktur, en mere kompliceret datastruktur og/eller flere datafiler, menERDDAP™skal kunne fladisere kildedataene i en databaselignende tabel for at præsentere dataene som et tabulært datasæt til brugerne afERDDAP.
- Se den mere fuldstændige beskrivelse afSikkerhedsdatamodel.
- De EDDTable datasæt typer er:
-
EDDTableFraAllDatasetser et datasæt, der har oplysninger om alle de andre datasæt i dine dataERDDAP.
-
EDDTableFraAsciiFilesaggregerer data fra komma-, fane-, semikolonin- eller rum-separatede tabulære ASCII-datafiler.
-
EDDTableFraAsciiServiceer den superklasse af alle EDDTableFraAsciiService... klasser.
-
EDDTableFraAsciiServiceNOShåndterer data fra nogle afNOAANOS webtjenester.
-
EDDTableFraAudioFilesaggregerer data fra en gruppe af lokale lydfiler.
-
EDDTableFra Billeder af AwsXmlFilesaggregerer data fra et sæt Automatisk Vejrstation (AWS) XML-filer.
-
EDDTableFraCassandrahåndterer tabulære data fra en Cassandra tabel.
-
EDDTableFra kolonnearAsciiFilesaggregerer data fra tabular ASCII datafiler med fast bredde data kolonner.
-
EDDTableFraDapSequencehåndterer tabulære data fraDAPsekvensservere.
-
EDDTableFraDatabasehåndterer tabulære data fra en databasetabel.
-
EDDTableFraEDDGridlader dig oprette en EDDTable datasæt fra enEDDGridDatasæt.
-
EDDTableFraErddaphåndterer tabulære data fra en fjernERDDAP.
-
EDDTableFraFileNamesoprette et datasæt fra oplysninger om en gruppe filer i serverens filsystem, men det tjener ikke data fra filerne.
-
EDDTableFraFileser den superklasse af alle EDDTableFra...Files klasser.
-
EDDTableFraHttpGeter det erERDDAP's eneste system til dataimport samt dataeksport.
-
EDDTableFraHyraxFiler (DEPRECATED) aggregerer data fra filer med flere variabler med delte dimensioner serveret af enHyrax OPeNDAPserver.
-
EDDTableFraInvalidCRAFilesaggregerede data fraNetCDF (v3 eller v4) .ncfiler, der bruger en bestemt, ugyldig variant af CF DSG Contiguous Ragged Array (CRA) filer. Selv om selvomERDDAP™understøtter denne filtype, er det en ugyldig filtype, der ingen skal begynde at bruge. Grupper, der bruger denne filtype, opfordres til at brugeERDDAP™at generere gyldige CF DSG CRA-filer og stoppe med at bruge disse filer.
-
EDDTableFraJsonlCSVFilesaggregerede data fraJSON Linje CSV-filer.
-
EDDTableFraMultidimNcFilesaggregerede data fraNetCDF (v3 eller v4) .ncfiler med flere variabler med delte dimensioner.
-
EDDTableFraNcFilesaggregerede data fraNetCDF (v3 eller v4) .ncfiler med flere variabler med delte dimensioner. Det er fint at fortsætte med at bruge denne datasæt type til eksisterende datasæt, men for nye data anbefaler vi at bruge EDDTableFraMultidimNcFiles i stedet.
-
EDDTableFraNcCFFilesaggregerede data fraNetCDF (v3 eller v4) .ncfiler, der bruger en af de filformater, der er angivet af deCF Diskret Sampling Geometries (DSG) konventioner. Men til filer ved hjælp af en af de multidimensionelle CFG-varianter, brugEDDTableFraMultidimNcFilesI stedet.
-
EDDTableFraNccsvFilesaggregerede data fraNCCSVASCII .csv filer.
-
EDDTableFraNOS (DEPRECATED) håndterer tabulære data fra NOS XML-servere.
-
EDDTableFraOBIShåndterer tabulære data fra OBIS servere.
-
EDDTableFra parkFileshåndterer data fraUdsigt fra værelset.
-
EDDTableFraSOShåndterer tabulære data fraSOSservere.
-
EDDTableFraThreddsFiles (DEPRECATED) aggregerer data fra filer med flere variabler med delte dimensioner serveret af enI nærheden afTHOPeNDAPserver.
-
EDDTableFraWFSFiler (DEPRECATED) gør en lokal kopi af alle data fra enArcGISMapServerWFSserver, så dataene kan igen betjenes hurtigt tilERDDAP™Brugere.
-
EDDTableAggregateRowskan gøre en EDDTable datasæt fra en gruppe EDDTable datasæt.
-
EDDTableCopykan foretage en lokal kopi af mange typer EDDTable datasæt og derefter genbevar dataene hurtigt fra den lokale kopi.
-
Detaljerede beskrivelse af Dataset Typer
EDDGridFraDap
EDDGridFraDap håndtag gittervariabler fraDAPservere.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan indsamle de oplysninger, du har brug for til at justere, eller oprette din egen XML til enEDDGridFraDap datasæt ved at se på kildedatasættets DDS og DAS-filer i din browser (ved at tilføje .das og .dds tilsourceUrlf.eks. https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridFraDap kan få data fra enhver flerdimensionel variabel fra enDAPdataserver. (Tidligere,EDDGridFraDap var begrænset til variabler udpeget som "grid"'s, men det er ikke længere et krav.)
- Sorteret Dimension Værdier - Værdierne for hver dimension skal være i sorteret rækkefølge (stigende eller faldende) . Værdierne kan være uregelmæssigt mellemrum. Der kan ikke være nogen bånd. Dette er et krav om kravetCF metadata standard. Hvis nogen dimensions værdier ikke er i sorteret rækkefølge, vil datasættet ikke blive indlæst ogERDDAP™vil identificere den første usorteret værdi i logfilen, bigParentDirectory /logs/log.txt .
Uspecificerede dimensionværdier angiver næsten altid et problem med kildedatasættet. Dette forekommer oftest, når en forkert eller upassende fil er inkluderet i aggregationen, som fører til en usorteret tidsdimension. Hvis du vil løse dette problem, skal du se fejlmeddelelsen i meddelelsenERDDAP™log.txt-filen for at finde den fornærmende tidsværdi. Så se i kildefiler for at finde den tilsvarende fil (eller en før eller en efter) det tilhører ikke i sammenlægningen.
EDDGridFra Dap skelet XML 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>
EDDGridFraEDDTable
EDDGridFraEDDTable lader dig konvertere en EDDTable tabular datasæt til etEDDGridgitteret datasæt. Husk, atERDDAP™Behandle datasæt som entengitterede datasæt (subklasser afEDDGrid) eller tabulære datasæt (subclasses af EDDTable) .
- Normalt, hvis du har gitterded data, skal du bare oprette enEDDGridDatasæt direkte. Nogle gange er dette ikke muligt, f.eks. når du har de data, der er gemt i en relational database, der er gemtERDDAP™kan kun få adgang via EDDTableFraDatabase.EDDGridFraEDDTable klasse lader dig afhjælpe denne situation.
- Naturligvis skal data i det underliggende EDDTable datasæt være (dybest set) gitterede data, men i en faneformet form. For eksempel kan EDDTable datasæt have CTD-data: målinger af øst og nordvendt strøm, på flere dybder, på flere gange. Da dybderne er de samme på hvert tidspunkt,EDDGridFraEDDTable kan oprette et gitteret datasæt med en tid og en dybdedimension, der åbner dataene via det underliggende EDDTable datasæt.
- GenererDatasets Xml -- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan indsamle de oplysninger, du har brug for til at forbedre det grove udkast.
- Kilder -- Som med alle andre typer datasæt,EDDGridFraTable har ideen om, at der er global kildeAttributes ogglobalt globalt globalt globaltaddAttributes (angivet idatasets.xml) , som kombineres for at gøre den globale kombineret Attributter, som er, hvad brugerne ser. Til global kildeAttributes,EDDGridFraEDDTable bruger den globale kombination Intributter af den underliggende EDDTable datasæt. (Hvis du tænker på det i et minut, det giver mening.)
Ligeledes for hveraxisVariable's og'dataVariable'saddAttributes,EDDGridFraEDDTable bruger variablens kombinerede Bidrager fra den underliggende EDDTable datasæt som denEDDGridFraEDDTable variables kildeAttributes. (Hvis du tænker på det i et minut, det giver mening.)
Som konsekvens, hvis EDDTable har gode metadata, har EDDTablenEDDGridFraEDDTable ofte behøver meget lidtaddAttributesmetadata - bare et par tweaks her og der.
-
dataVariables versusaxisVariables -- Den underliggende EDDTable har kundataVariables. An An An An AnEDDGridFraEDDTable datasæt vil have nogleaxisVariables s s (skabt af nogle af EDDTabledataVariables s s) og nogledataVariables s s (skabt af den resterende EDDTabledataVariables s s) .GenererDatasetsXmlvil gøre et gæt, som EDDTabledataVariables skal bliveEDDGridFraEDDTableaxisVariables, men det er bare et gætte. Du skal ændre output af GenererDatasetsXml for at angive, hvilkedataVariables vil bliveaxisVariables, og i hvilken rækkefølge.
-
-- Der er intet om den underliggende EDDTable at fortælleEDDGridFraEDDTable de mulige værdier afaxisVariables i den gitterede version af datasættet, så du SKAL give disse oplysninger for hveraxisVariablevia en af disse attributter:
- axisValues -- lader dig angive en liste over værdier. For eksempel, <ont navneneSkrivning af dobbeltList"3, 3.5, 4</att> Bemærk brug af enDatatypeplus ordlisten. Også, typen af liste (f.eks. dobbelt) , SKAL matche dataene Type af variablen i EDDTable ogEDDGridFraEDDTable datasæt.
- axisValuesStartStrideStop -- lader dig angive en sekvens af regelmæssigt mellemrumsværdier ved at angive start, skridt og stoppe værdier. Her er et eksempel, der svarer til aksenValues eksempel ovenfor: <ont navn SergeyValuesStartStrideStop"Skrivning af dobbeltList"\NDER, 0,5, 4</att> Bemærk venligst brug af en listedatatype. Også, typen af liste (f.eks. dobbelt) , SKAL matche dataene Type af variablen i EDDTable ogEDDGridFraEDDTable datasæt.
Opdateringer -- Lige som der er ingen måde forEDDGridFraEDDTable til at bestemme akser fra EDDTable oprindeligt, er der også ingen pålidelig måde forEDDGridFraEDDTable til at afgøre fra EDDTable, når akserne har ændret sig (Især når der er nye værdier for tidsvariablen) . I øjeblikket, den eneste løsning er at ændre aksenValues attribut idatasets.xmlog opload datasættet. Du kan f.eks. skrive et script til
- Søg Søg Søgdatasets.xmlfor for for datasetIDSupplerende oplysninger om DatasetID " " " " så du arbejder med det korrekte datasæt.
- Søg Søg Søgdatasets.xmlfor den næste forekomst af
Hoteller i nærheden af teVariablesSourceName
så du arbejder med den korrekte variabel. - Søg Søg Søgdatasets.xmlfor den næste forekomst af
<att name="axisValuesStartStrideStop" type="doubleList">
så du kender startpositionen af mærket. 4. Søg Søg Søgdatasets.xmlfor den næste forekomst af
</att>
Så du kender slutpositionen af akseværdierne. 5. Udskift den gamle start, skridte, stop værdier med de nye værdier. 6. Kontakt osflag URLfor datasættet til at fortælleERDDAP™at indlæse datasættet.
Dette er ikke ideelt, men det virker.
- præcision -- Hvornår Hvornår skal man HvornårEDDGridFraEDDTable reagerer på en brugers anmodning om data, det flytter en række data fra EDDTable svartabellen tilEDDGridrespons gitter. For at gøre dette, skal det finde ud af, om "akse" værdier på en given række i tabellen matcher nogle kombination af akseværdier i gitteret. For ikkeals datatyper er det nemt at afgøre, om to værdier er lig. Men for fly og fordobler, dette bringer det forfærdelige problem med flydende punktnumreikke matchende nøjagtigt. (for eksempel 0,2 versus 0,199999999996) . Sådan skal du til (Prøv at forsøge at) deal med dette,EDDGridFraTable lader dig angive en præcisionsattribut til nogen af deaxisVariables, som angiver det samlede antal decimalcifre, der skal være identisk.
- For eksempel,<ont navnene</att>
- For forskellige typer af datavariabler, er der forskellige standard præcisionsværdier. Standarderne er normalt passende. Hvis de ikke er, skal du angive forskellige værdier.
- For For For For ForaxisVariables, der ertid eller tid Frimærkevariabler, standarden er fuld præcision (en præcis match) .
- For For For For ForaxisVariables, der flyder, standardpræcisionen er 5.
- For For For For ForaxisVariables, der er dobbelt, standardpræcisionen er 9.
- For For For For ForaxisVariables, der har uærlige datatyper,EDDGridFraEDDTable ignorerer præcisions attributten og bruger altid fuld præcision (en præcis match) .
- ADVARSEL! Når du foretager konvertering af en del af tabulerede data i en flok gitterded data, hvisEDDGridFraEDDTable kan ikke matche en EDDTable "akse" værdi til en af de forventedeEDDGridFraEDDTable akseværdier,EDDGridFraEDDTabel tavs (Ingen fejl) smider data fra den række af tabellen. For eksempel kan der være andre data (ikke på nettet) i EDDTable datasæt. (Og hvis du bevæger dig > 1, det er ikke indlysende forEDDGridFraTable, hvilke akseværdier der er ønskede værdier, og hvilke dem er den, der skal springes over på grund af skridtet.) Så hvis præcisionsværdierne er for høje, vil brugeren se manglende værdier i dataresponsen, når gyldige dataværdier rent faktisk eksisterer.
Omvendt, hvis præcisionsværdierne er sat for lave, EDDTable "akse" værdier, der ikke bør matcheEDDGridFraEDDTable akseværdier vil (fejlagtigt) match.
Disse potentielle problemer er forfærdelige, fordi brugeren får de forkerte data (eller manglende værdier) når de skal få de rigtige data (eller mindst en fejlmeddelelse) . Dette er ikke en fejl iEDDGridFra Table.EDDGridFraTable kan ikke løse dette problem. Problemet er i forbindelse med konvertering af tabulære data i gitterded-data (med mindre andre antagelser kan gøres, men de kan ikke gøres her) . Det er op til dig, denERDDAP™administrator, til Test din testEDDGridFraEDDTable grundigt for at sikre, at præcisionsværdierne er indstillet for at undgå disse potentielle problemer.
Forhold
- Forhold-- Dette er en meget usædvanlig type datasæt. Da de typer forespørgsler, der kan gøres til (håndteret af) En antydningEDDGridDatasæt (relateret til sortimenterne og skridtene iaxisVariables s s) er meget forskellige fra de typer forespørgsler, der kan gøres til (håndteret af) Et EDDTable datasæt (lige relateret til intervaller af nogle variabler) , præstationen afEDDGridFraEDDTable datasæt varierer meget afhængigt af den nøjagtige anmodning, der er lavet og hastigheden af det underliggende EDDTable datasæt. For anmodninger, der har en trinvis værdi > 1,EDDGridFraEDDTable kan spørge den underliggende EDDTable for en relativt stor mængde data (som om skridt =) og derefter sigte gennem resultaterne, holde dataene fra nogle rækker og smide dataene fra andre. Hvis det skal undersøges gennem en masse data for at få de data, den har brug for, vil anmodningen tage længere tid til at udfylde.
HvisEDDGridFraEDDTable kan fortælle, at der vil være store huller (med rækker af uønskede data) mellem rækker med ønskede data,EDDGridFraEDDTable kan vælge at foretage flere underrequests til den underliggende EDDTable i stedet for en stor anmodning, og dermed springe de uønskede rækker af data i de store huller. følsomheden for denne beslutning styres af mellemrumsværdien som angivet i<hulThreshold> tag (standard=1000 rækker af kildedata) . Indstilling af mellemrum til et mindre nummer vil føre til datasættet, der gør (generelt generelt generelt) mere subrequest. Indstilling af mellemrum til et større tal vil føre til datasættet, der gør (generelt generelt generelt) færre underspørgsmål.
Hvis mellemrum er indstillet for lille,EDDGridFraEDDTable vil fungere mere langsomt, fordi overtagelsen af flere anmodninger vil være større end den tid, der er gemt ved at få nogle overskydende data. Hvis mellemrum er indstillet for stort,EDDGridFraEDDTable vil fungere mere langsomt, fordi så meget overskydende data bliver hentet fra EDDTable, kun at blive kasseret. (Da Goldilocks opdagede, er midten "kun højre".) Hovedet for forskellige typer af EDDTable datasetser varierer meget, så den eneste måde at vide den faktiske bedste indstilling for dit datasæt er via eksperimentering. Men du vil ikke gå for langt forkert sticking til standarden.
Et simpelt eksempel er: Forestil dig etEDDGridFraTabel med bare énaxisVariable (tid, med en størrelse på 100000) , endataVariable (temperaturtemperatur) , og standardgabet af 1000.
- Hvis en bruger ønsker temperatur\[0💯5000\], skridtet er 100, så hulstørrelsen er 99, som er mindre end kløften. SåEDDGridFraTable vil gøre blot én anmodning til EDDTable for alle de nødvendige data til anmodning (svarende til temperatur\[0:5000\]) og smide alle de rækker af data, det ikke behøver.
- Hvis en bruger ønsker temperatur\[0:2500:5000\], at skridtet er 2500, så hulstørrelsen er 2499, som er større end kløften. SåEDDGridFraTable vil foretage separate anmodninger til EDDTable, som svarer til temperatur\[0\], temperatur\[2500 EUR\], temperatur\[5000 5000\].
Beregning af hulstørrelsen er mere kompliceret, når der er flere akser.
For hver brugerforespørgsel,EDDGridFraEDDTable print diagnostiske meddelelser relateret til dette ilog.txtfil.
- Hvis [<LogLevel>] (#logniveau) i in in in indatasets.xmler indstillet til info, dette udskriver en meddelelse som \* nOuterAxes = af 4 nOuterRequests=22 Hvis nOuterAxes=0, blev hulThreshold ikke overskredet, og kun én anmodning vil blive lavet til EDDTable. Hvis nOuterAxes>0, bliver hulThreshold overskredet, og nOuterRequests vil blive lavet til EDDTable, svarende til hver ønsket kombination af de venstreste nOuterAxes. Hvis datasættet f.eks. har 4axisVariables og sdataVariables ligesom østward\[tidstid\]\[breddegrad\]\[Længde\]\[dybdedybde\], den yderste (først først) akse variabel er tid.
- Hvis<LogLevel> i in in in indatasets.xmler indstillet til alle, yderligere oplysninger er skrevet til log.txt-filen.
EDDGridFraEDDTable skelet XML XML
<dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromEDDTable, this only works if the underlying EDDTable
supports updateEveryNMillis. -->
<gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
</dataset>
EDD*ERDDAP
EDDGridFraErddap håndterer netded data fra en fjernERDDAP™server. EDDTableFraErddap håndterer tabulære data fra en fjernERDDAP™server.
- EDDGridFraErddap og EDDTableFraErddap opfører sig forskelligt fra alle andre typer datasæt iERDDAP.
- Ligesom andre typer datasæt får disse datasæt oplysninger om datasættet fra kilden og holder den i hukommelsen.
- Ligesom andre typer af datasæt, nårERDDAP™søgninger efter datasæt, viser Data Access Form ( datasetID .html) , eller viser Make A Graph form ( datasetID .ografi) ,ERDDAP™Brug oplysningerne om det datasæt, der er i hukommelsen.
- EDDGridFra Erddap og EDDTable FraErddap er grundlaget forGitter/polster/trapperafERDDAPs, som effektivt distribuere CPU-forbruget (Oftest til at lave kort) , hukommelsesforbrug, datasæt opbevaring og båndbredde brug af et stort datacenter.
Ombytning
- I modsætning til andre typer datasæt, nårERDDAP™modtager en anmodning om data eller billeder fra disse datasæt,ERDDAP omdirigeringeranmodningen til fjernbetjeningenERDDAP™server. Resultatet er:
- Dette er meget effektivt (CPU, hukommelse og båndbredde) , fordi ellers
- SammensætningenERDDAP™skal sende anmodningen til den andenERDDAP™ (som tager tid) .
- Den andenERDDAP™skal få dataene, omformatere dem og overføre dataene til komposittenERDDAP.
- SammensætningenERDDAP™skal modtage oplysningerne (ved hjælp af båndbredde) , omformatere det (Brug af CPU og hukommelse) , og transmittere data til brugeren (ved hjælp af båndbredde) . Ved at omdirigere anmodningen og tillade den andenERDDAP™at sende svaret direkte til brugeren, komposittenERDDAP™Bruger stort set ingen CPU tid, hukommelse eller båndbredde på anmodning.
- omdirigeringen er gennemsigtig til brugeren uanset klientsoftwaren (en browser eller enhver anden software eller kommandolinjeværktøj) .
- Dette er meget effektivt (CPU, hukommelse og båndbredde) , fordi ellers
- Du kan fortælleERDDAP™ikke at omdirigere brugeranmodninger ved at indstille<omdirigering>false</redirect>, men denne negates mest af fordelene ved...FraErddap datasæt type (Betydeligt, dispersere belastningen på frontenERDDAP™til fjernbetjeningen/backendERDDAP) .
Abonnementer
Normalt, når enEDDGridFra Erddap og EDDTable FraErddap er (gen igen) indlæst på dinERDDAP, de forsøger at tilføje et abonnement til fjerndatasættet via fjernbetjeningenERDDAP's e-mail/URL abonnement system. På den måde, når fjerndatasættet ændres,ERDDAP™Kontakt kontakternesætDataset Flag URLpå din sideERDDAP™så det lokale datasæt er genindlæst ASAP, og så at det lokale datasæt altid er perfekt up-to-date og efterligner fjerndatasættet. Så den første gang dette sker, bør du få en e-mail, der anmoder om, at du validerer abonnementet. Men hvis den lokaleERDDAP™kan ikke sende en e-mail eller hvis fjernbetjeningenERDDAP's e-mail/URL abonnement system er ikke aktivt, skal du sende fjernbetjeningenERDDAP™Administrator og anmode om, at s/he manuelt tilføje [<påChange>] (#onchange) ......</onChange> tags til alle de relevante datasæt for at kalde dine datasæt'ssætDataset Markér webadresser. Se dine billederERDDAP™daglig rapport for en liste over sætDataset Markér webadresser, men bare sende dem tilEDDGridFraErddap og EDDTableFraErddap datasæt til fjernbetjeningenERDDAP™administrator.
Arbejder dette ikke? Er dine lokale datasæt ikke i synkronisering med fjerndatasæt? Flere ting skal alle arbejde korrekt for dette system til at arbejde, så dine datasæt forbliver up-to-date. Tjek hver af disse ting for at:
- Din Dine DineERDDAP™skal kunne sende e-mails ud. Se e-mailindstillingerne i din opsætning.xml.
- Generelt (men ikke altid) , dinERDDAP's<baseUrl> og<baseHttpsUrl>must har ikke et portnummer (f.eks. :8080, :8443) . Hvis de gør, skal du bruge enproxypassat fjerne havnen fra Url.
- I din opsætning.xml,<AbonnentToRemoteErddapDataset> skal være indstillet til at tro.
- Når din lokale EDD... FraErddap datasæt er genindlæst, det skal sende en anmodning til fjernbetjeningenERDDAP™at abonnere på fjerndatasættet. Kig i log.txt for at se, om det sker.
- Du skal få en e-mail, der beder dig om at bekræfte abonnementsanmodningen.
- Du skal klikke på linket i den e-mail for at bekræfte abonnementsanmodningen.
- FjernbetjeningERDDAP™bør sige, at valideringen var vellykket. Du kan til enhver tid anmode om en e-mail fra fjernbetjeningenERDDAP™med en liste over dine afhængige og gyldige abonnementer. Se formularen på I nærheden af fjernErddapBase Url /erddap/subscriptions/list.html .
- Når fjerndatasættet ændres (f.eks. får yderligere data) , fjernbetjeningenERDDAP™bør forsøge at kontakte flagURL på dinERDDAP. Du kan ikke kontrollere dette, men du kan spørge administratoren af fjernbetjeningenERDDAP™at tjekke dette.
- Din Dine DineERDDAP™bør modtage en anmodning om at indstille den flagURL. Kig i din log.txt for "setDatasetFlag.txt?" anmodning (s s s) og se, om der er en fejlmeddelelse forbundet med anmodninger.
- Din Dine DineERDDAP™Prøv derefter at indlæse datasættet (måske ikke umiddelbart, men ASAP) .
Maksimum max (tidstid) ?
EDDGrid/TableFraErddap-datasæt ændrer kun deres lagrede oplysninger om hver kildedatasæt, når kildedatasættet er"reload"edog et stykke metadata ændringer (f.eks. tidsvariablens tidactual\_range) , og dermed generere en abonnementsmeddelelse. Hvis kildedatasættet har data, der ofte ændres (for eksempel nye data hvert sekund) og brug af"update"system til at bemærke hyppige ændringer i de underliggende data,EDDGrid/TableFraErddap vil ikke blive underrettet om disse hyppige ændringer, indtil næste datasæt "reload", så denEDDGrid/TableFraErddap vil ikke være perfekt opdateret. Du kan minimere dette problem ved at ændre kildedataset's<reloadEveryNMinutes> til en mindre værdi (60? 15?) så der er flere abonnementsmeddelelser for at fortælle deEDDGrid/TableFraErddap for at opdatere sine oplysninger om kildedatasættet.
Eller hvis dit datastyringssystem kender, når kildedatasættet har nye data (f.eks. via et script, der kopierer en datafil på plads) , og hvis det ikke er super hyppig (f.eks. hver 5 minutter eller mindre hyppig) , der er en bedre løsning:
- Brug ikke<OpdaterEveryNMillis> for at holde kildedatasættet opdateret.
- Angiv kildedatasæt's<reloadEveryNMinutes> til et større antal (1440?) .
- Har scriptet kontakt kildedataset'sflag URLhøjre efter det kopierer en ny datafil på plads.
Det vil føre til, at kildedatasættet er helt up-to-date og forårsage, at den genererer en abonnementsmeddelelse, der sendes til kilden.EDDGrid/TableFraErddap datasæt. Det vil føreEDDGrid/TableFraErddap datasæt til at være perfekt opdateret (Inden for 5 sekunder tilføjes nye data) . Og alt, hvad der sker effektivt (uden unødvendige datasæt reloads) .
Ingen IngenaddAttributes,axisVariableellerdataVariable
I modsætning til andre typer af datasæt, EDDTableFraErddap ogEDDGridFraErddap datasets tillader ikke globale<addAttributes>,<axisVariableeller<dataVariable> sektioner idatasets.xmlfor denne datasæt. Problemet er, at de ville føre til uoverensstemmelser:
- Lad os sige, at det var tilladt, og du tilføjede en ny global egenskab.
- Når en bruger spørger dinERDDAP™for de globale attributter, vil den nye egenskab vises.
- Men når en bruger spørger dinERDDAP™for en datafil, dinERDDAP™omdirigerer anmodning til kildenERDDAP. Det, atERDDAP™er uvidende om den nye egenskab. Så hvis den opretter en datafil med metadata, f.eks. en.ncfil, metadata har ikke den nye egenskab.
Der er to arbejdsgange:
- Konvince administratoren af kildenERDDAP™for at foretage de ændringer, du ønsker til metadata.
- I stedet for EDDTableFraErddap, brugEDDTableFraDapSequence. Eller i stedet forEDDGridFraErddap, brugEDDGridFraDap. Disse EDD-typer giver dig mulighed for at forbinde effektivt til et datasæt på en fjernERDDAP™ (men uden at omdirigere dataanmodninger) og de giver dig mulighed for at inkludere global<addAttributes>,<axisVariableeller<dataVariable> sektioner idatasets.xml. En anden forskel: Du skal manuelt abonnere på fjerndatasættet, så datasættet på din enhedERDDAP™vil blive underrettet (via viaflag URL) når der er ændringer i fjerndatasættet. Således opretter du et nyt datasæt, i stedet for at forbinde til et fjerndatasæt.
Andre noter
- Af sikkerhedsmæssige årsager,EDDGridFra Erddap og EDDTable FraErddap understøtter ikke [<tilgængeligtil>] (#accessibleto) tag og kan ikke bruges med fjerndatasæt, der kræver logning i (fordi de bruger [<tilgængeligtil>] (#accessibleto) )... Se endnuERDDAP'ssikkerhedssystemfor at begrænse adgang til nogle datasæt til nogle brugere.
- Begyndende medERDDAP™v2.10,EDDGridFraErddap og EDDTableFraErddap understøtter [<tilgængeligViaFiles>] (#tilbehør) tag. I modsætning til andre typer af datasæt, standarden er sandt, men datasættets filer vil være tilgængeligeViaFiles kun, hvis kildedatasættet også har<tilgængeligViaFiles> sæt til sand.
- Du kan brugeGenererDatasets Xml programat gøre detdatasets.xmlBeskåret for denne type datasæt. Men du kan gøre disse typer af datasæt nemt ved hånden.
EDDGridFraErddap skelet XML XML
- EDDGridFraErddap skelet XML datasæt er meget enkel, fordi hensigten er bare at efterligne den eksterne datasæt, som allerede er egnet til brug iERDDAP:
<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>
EDDTableFraErddap skelet XML XML
- skeletet XML for en EDDTableFraErddap dataset er meget enkel, fordi hensigten er kun at efterligne fjerndatasættet, som allerede er egnet til brug iERDDAP:
<dataset type="EDDTableFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDGridFraEtopo
EDDGridFraEtopo bare tjener denETOPO1 Global 1-Minute Gridded Elevation Data Set (Overflade, gitter registreret, binær, 2byte int: etopo1\_ice\_g\_i2.zip) som distribueres medERDDAP.
- Kun todatasetIDs støttes tilEDDGridFraEtopo, så du kan få adgang til data med længdeværdier -180 til 180 eller længdeværdier 0 til 360.
- Der er aldrig nogen under tags, da dataene allerede er beskrevet inden forERDDAP.
- Så de to muligheder forEDDGridFraEtopo datasæt er (bogstaveligt talt bogstaveligt talt) :
<!-- etopo180 serves the data from longitude -180 to 180 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo180" />
<!-- etopo360 serves the data from longitude 0 to 360 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo360" />
EDDGridFraFiles
EDDGridFraFiles er superklassen af alleEDDGridFra...Filer klasser. Du kan ikke brugeEDDGridFraFiles direkte. Brug i stedet en underklasse afEDDGridFraFiles til at håndtere den specifikke filtype:
- EDDGridFraMergeIRFileshåndterer data fra gitterdedSammenfletning.gzfiler.
- EDDGridFraAudioFilesaggregerer data fra en gruppe af lokale lydfiler.
- EDDGridFraNcFileshåndterer data fra gitterdedGRIB .grbfiler,HDF (v4 eller v5) .hdffiler,.ncmlfiler, ogNetCDF (v3 eller v4) .ncfiler. Dette kan arbejde med andre filtyper (for eksempel BUFR) , vi har ikke testet det -- send os nogle prøvefiler, hvis du er interesseret.
- EDDGridFraNcFilesUnpakkeer en variant afEDDGridFraNcFiles, der håndterer data fra gitterdedNetCDF (v3 eller v4) .ncog relaterede filer, somERDDAP™Pakker på et lavt niveau.
I øjeblikket understøttes der ingen andre filtyper. Men det er normalt relativt nemt at tilføje støtte til andre filtyper. Kontakt os, hvis du har en anmodning. Eller hvis dine data er i et gammelt filformat, som du gerne vil flytte væk fra, anbefaler vi at konvertere filerne til at væreNetCDFv3.ncfiler.NetCDFer et bredt understøttet, binært format, giver hurtig tilfældig adgang til dataene, og er allerede understøttet afERDDAP.
Fra filer Detaljer
Følgende oplysninger gælder for alle underklasserneEDDGridFraFiles.
Aggregation af en eksisterende Dimension
Alle variationer afEDDGridFraFiles kan aggregere data fra lokale filer, hvor hver fil har 1 (eller mere) forskellige værdier for den yderste (først først) dimension, normalt\[tidstid\], som vil blive aggregeret. For eksempel kan dimensionerne være\[tidstid\]\[højdehøjde\]\[breddegrad\]\[Længde\], og filerne kan have dataene til én (eller et par) tidsværdi (s s s) pr. fil. Det resulterende datasæt vises som om alle filers data var kombineret. De store fordele ved aggregation er:
- Størrelsen af de aggregerede datasæt kan være meget større end en enkelt fil kan være bekvemt (~2 GB) .
- Det er nemt at tilføje en ny fil med den nyeste mængde data. Du behøver ikke at skrive hele datasættet.
Kravene til sammenlægning er:
- De lokale filer har ikke den sammedataVariables s s (som defineret i datasættetsdatasets.xml) . Datasættet vil have datasættetdataVariables defineret idatasets.xml. Hvis en given fil ikke har en givendataVariable,ERDDAP™vil tilføje manglende værdier efter behov.
- Alle afdataVariables SKAL bruge den sammeaxisVariables/dimensioner (som defineret i datasættetsdatasets.xml) . Filerne vil blive aggregeret baseret på den første (venstre-næsten) dimension, sorteret i stigende rækkefølge.
- Hver fil kan have data til en eller flere værdier af den første dimension, men der kan ikke være overlap mellem filer. Hvis en fil har mere end én værdi for den første dimension, skal værdierne sorteres i stigende rækkefølge, uden nogen bånd.
- Alle filer skal have præcis de samme værdier for alle de andre dimensioner. Nøjagtigheden af testen bestemmes afMatchAxisNDigits.
- Alle filer skal have præcis det sammeenhedermetadata for alleaxisVariables og sdataVariables. Hvis dette er et problem, kan du muligvis brugeNcMLeller eller ellerNCOat løse problemet.
Aggregation via filnavne eller Global Metadata
Alle variationer afEDDGridFraFiles kan også aggregere en gruppe filer ved at tilføje en ny venstrest (først først) dimension, normalt tid, baseret på en værdi afledt fra hvert filnavn eller fra værdien af en global egenskab, der er i hver fil. For eksempel kan filnavnet indeholde tidsværdien for dataene i filen.ERDDAP™ville derefter oprette en ny tidsdimension.
I modsætning til den lignende funktion i THREDDS,ERDDAP™altid skaber enaxisVariablemed numeriske værdier (som påkrævet af CF) , aldrig strenge værdier (som ikke er tilladt af CF) . Også,ERDDAP™vil sortere filerne i aggregation baseret på de numeriske numeriskeaxisVariableværdi, der tildeles hver fil, så aksens variable altid har sorteret værdier efter behov. TheEDDS tilgang til at gøre en lexicografisk sortering baseret på filnavnene fører til aggregationer, hvor akseværdierne ikke sorteres (som ikke er tilladt af CF) når filnavnene sorteres forskelligt end det afledteaxisVariableværdier.
At opsætte en af disse aggregationer iERDDAP™, vil du definere en ny venstreest (først først) axisVariablemed en speciel, pseudo<sourceName>, som fortællerERDDAP™hvor og hvordan man finder værdien for den nye dimension fra hver fil.
- pseudosourceNamesom får værdien fra et filnavn (bare filnavn.ext) er det er \\\ filnavn, Datadata Type Type Type Type , ekstraktRegex , Anmeldelser af captureGroup
- pseudosourceNamesom får værdien fra en fils absolutte vejnavn er \\\ Vejnavn, Datadata Type Type Type Type , ekstraktRegex , Anmeldelser af captureGroup \[For dette bruger stinavnet altid'/'som den mappe separator figur, aldrig "".\]
- pseudosourceNamesom får værdien fra en global egenskab er \\\ global: attribut Navn , Datadata Type Type Type Type , ekstraktRegex , Anmeldelser af captureGroup
- pseudosourceNamemulighed virker forskelligt fra de andre: i stedet for at skabe en ny venstreest (først først) axisVariable, dette erstatter værdien af den nuværendeaxisVariablemed en værdi udvundet fra filnavnet (bare filnavn.ext) . Formatet er \\\ erstatter erstatning FraFileName, Datadata Type Type Type Type , ekstraktRegex , Anmeldelser af captureGroup
De beskrivelser af de dele, du har brug for, er:
- attribut Navn - navnet på den globale egenskab, der er i hver fil, og som indeholder dimensionværdien.
- Datadata Type Type Type Type -- Dette angiver den datatype, der vil blive brugt til at gemme værdierne. Se standardlisten påDatadata Typerden, derERDDAP™understøtter, medmindre String ikke er tilladt her siden aksevariabler iERDDAP™kan ikke være strenge variabler.
Der er en ekstra pseudo dataType, tidFormat= streng streng TimeFormat , som fortællerERDDAP™at værdien er en streng tidStampenheder, der er egnet til strenge tider. I de fleste tilfælde vil strengTimeFormat du skal være en variation af en af disse formater:
- yyyy-MM-dd'T'HH:mm:ss.SSSZ -- som ISO 8601:2004 (E) dato tidsformat. Du kan bruge en afkortet version af dette, f.eks.yyyy-MM-dd'T'HH:mm:s elleryyyy-MM-dd.
- yyyMMddHHmmss.SSS - som er den kompakte version af ISO 8601 dato format. Du kan bruge en afkortet version af dette, f.eks. yyyMMddHHmms eller yyyyyMMdd.
- M/d/yyyyyy H:mm:ss.SSS -- som er U.S. slash dato format. Du kan bruge en afkortet version af dette, f.eks. M/d/yyyyyyyyyyy.
- yyyyyDDDHHmmsSSS -- som er året plus nul-padded dag i året (f.eks. 001 = Jan 1, 365 = Dec 31 i et ikke-leapår; dette kaldes undertiden Julian dato) . Du kan bruge en afkortet version af dette, f.eks. yyyyyDDD .
Hvis du bruger denne pseudodataType, skal du tilføje dette til den nye variables<addAttributes>:
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Hvis du vil flytte alle tidsværdierne, skal du skifte tidsværdien i enheder, f.eks. 1970-01T12:00:00Z.
- ekstraktRegex -- Dette er detalmindeligt udtryk (tutorial) som indeholder en capture gruppe (i parentes) som beskriver, hvordan man udvinde værdien fra filnavnet eller global attributværdi. For eksempel, givet et filnavn som S19980011998031.L3b\_MO\_CHL.nc, fange gruppe #1, "\dtutorial", i det regulære udtryk S (\dtutorial) \dtutorial«.L3b.\* vil fange de første 7 cifre efter 'S': 1998001.
- captureGroup nu -- Dette er antallet af optagelsesgruppen (inden for et par forældreheses) i det regulære udtryk, der indeholder information om interesse. Det er normalt 1, den første capture gruppe. Nogle gange skal du bruge capture grupper til andre formål i regex, så det vigtige capture gruppenummer vil være 2 (den anden optagelse gruppe) eller 3 (den tredje) , osv.
Et komplet eksempel på etaxisVariablesom gør et samlet datasæt med en ny tidsakse, der får tidens værdier fra filnavnet på hver fil, er
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
</axisVariable>
Når du bruger "timeFormatONIC pseudodata Type,ERDDAP™vil tilføje 2 attributter til deaxisVariableså de kommer fra kilden:
<att name="standard\\_name">time</att>
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Så i dette tilfælde,ERDDAP™vil skabe en ny akse ved navn"time"med dobbeltværdier (sekunder siden 1970-01T00:00:00Z) ved at udtrække de 7 cifre efter 'S' og før ".L3m" i filnavnet og fortolke dem som tidsværdier formateret som yyyyyyyyDDD.
Du kan tilsidesætte standardbasistiden (1970-01T00:00:00Z) ved at tilføje enaddAttributesom angiver en anden enhed egenskab med en anden basetid. En fælles situation er: der er grupper af datafiler, hver med en 1 dag sammensat af et satellitdatasæt, hvor du ønsker, at tidsværdien skal være middag af den dag, der er nævnt i filnavnet (den centrerede tid på hver dag) og ønsker variablenslong\_nameat være "Centered Time". Et eksempel, som gør det:
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
<addAttributes>
<att name="long\\_name">Centered Time</att>
<att name="units">seconds since 1970-01-01T12:00:00Z</att>
</addAttributes>
</axisVariable>
Bemærk timer=12 i basistiden, som tilføjer 12 timer i forhold til den oprindelige basetid på 1970-01T00:00:00Z.
Et komplet eksempel på etaxisVariablesom gør et samlet datasæt med en ny "run" akse (med inte værdier) som får runværdierne fra "runID" global attribut i hver fil (med værdier som "r17\_global", hvor 17 er løbenummeret) er det er
<axisVariable>
<sourceName>\\*\\*\\*global:runID,int,(r|s)(\\d+)\\_global,2</sourceName>
<destinationName>run</destinationName>
<addAttributes>
<att name="ioos\\_category">Other</att>
<att name="units">count</att>
</addAttributes>
</axisVariable>
Bemærk brug af optagelsesgruppens nummer 2 til at indfange de cifre, der opstår efter 'r' eller 's', og før "\_global". Dette eksempel viser også, hvordan du tilføjer yderligere attributter (fx,ioos\_categoryog enheder) til akse variabel.
Eksternt komprimerede filer
-
Datasets, der er subsets afEDDGridFraFiles og EDDTable FraFiles kan tjene data direkte fra eksterne komprimerede datafiler, herunder.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2, og .Z filer.
-
Dette virker overraskende godt!
I de fleste tilfælde er den nedsænkning relateret til at dekomprimere små og mellemstore datafiler mindre. Hvis du har brug for at spare diskplads, anbefaler vi stærkt at bruge denne funktion, især for ældre filer, der sjældent er tilgængelige. -
Gem penge!
Dette er et af de få funktioner iERDDAP™der tilbyder dig en chance for at spare en masse penge (Selv om omkostningerne ved lidt nedsat ydelse) . Hvis kompressionsforholdet f.eks., 6:1 (nogle gange vil det være meget højere) , så dataenes datafiler kun skal bruge 1/6 diskplads. Så måske kan du få med 1 RAID (af en given størrelse) i stedet for 6 RAIDS (af samme størrelse) . Det er en enorm omkostningsbesparelse. Forhåbentlig evnen til at komprimere nogle filer i en samling (de ældre?) og ikke komprimere andre (de nyere?) , og for at ændre det til enhver tid, lad dig minimere ulempen for at komprimere nogle af filer (langsommere adgang) . Og hvis valget er mellem at gemme filerne på tape (og kun tilgængelig efter anmodning efter forsinkelse) vs opbevaring af dem komprimeret på en RAID (og tilgængelig viaERDDAP) , så er der en enorm fordel at bruge kompression, så brugerne får interaktive og (relativt relativt) hurtig adgang til dataene. Og hvis dette kan spare dig fra at købe en ekstra RAID, kan denne funktion spare dig omkring $30.000. -
Til alleEDDGridFraFiles subclasses, hvis datafiler har en udvidelse, der angiver, at de er eksternt komprimerede filer (i øjeblikket:.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2 eller .Z) ,ERDDAP™vil dekomprimere filerne til datasættets cachemappe, når den læser dem (hvis de ikke allerede er i cachen) . Det samme er sandt for binære filer (fx,.nc) subclasses af EDDTableFraFiles.
-
Til EDDTableFraFiles subclasses for ikke- binære filer (f.eks. .csv) , datafiler med en udvidelse, der angiver, at de er eksterne komprimerede filer vil blive dekomprimeret på-fly, da filen læses.
-
REQUIREMENT: Hvis typen af ekstern komprimeret fil anvendes (fx,.tgzeller eller eller.zip) understøtter mere end 1 fil i komprimeret fil, komprimeret fil skal indeholde kun 1 fil.
-
REQUIREMENT: Denne funktion antager, at indholdet af de eksterne komprimerede filer ikke ændres, så en cached decompresset fil kan genbruges. Hvis nogle eller alle datasæts datafiler undertiden ændres, skal du ikke komprimere disse filer. Dette er i overensstemmelse med almindelig brug, da folk ikke normalt komprimerer filer, som de nogle gange har brug for at ændre.
-
<FilenNameRegex> For at gøre dette arbejde, datasættets<fileNameRegex> skal matche de komprimerede filers navne. Selvfølgelig, regexes ligesom .\vil matche alle filnavne. Hvis du angiver en bestemt filtype, f.eks. .\“”.nc, så skal du ændre regex for at inkludere kompressionsudvidelsen også, f.eks. .\ “”.nc“”.gz(hvis alle filer vil være noget*.nc.gzfiler) .
-
Det er fint, hvis dit datasæt indeholder en blanding af komprimerede og ikke komprimerede filer. Dette kan være nyttigt, hvis du mener, at nogle filer (f.eks. ældre filer) vil blive brugt mindre ofte, og derfor ville det være nyttigt at spare diskplads ved at komprimere dem. At gøre dette arbejde,<fileNameRegex> skal matche komprimeret og ikke komprimerede filers navne, f.eks.\eller .\“”.nc (|“”.gz) (hvor fangstgruppen i slutningen af det angiver, at.gzer valgfri.
-
Det er fint, hvis du komprimerer eller undertrykker specifikke filer i samlingen til enhver tid. Hvis datasættet ikke bruger [<OpdaterEveryNMillis>] (#updateeverynmillis) , sæt datasættetsflag flag flag flagat fortælleERDDAP™at indlæse datasættet og dermed bemærke ændringerne. Interessant, kan du bruge forskellige komprimeringsalgoritmer og indstillinger for forskellige filer i samme datasæt (fx,.bz2for sjældent brugte filer,.gzfor ikke ofte anvendte filer, og ingen kompression til ofte anvendte filer) , bare være sikker på, at regex understøtter alle de filtyper, der er i brug, f.eks..nc (|“”.gz|“”.bz2) .
-
Selvfølgelig, kompressionsforhold og hastigheder for de forskellige kompressionsalgoritmer varierer med kildefilen og indstillingerne (f.eks. kompressionsniveau) . Hvis du vil optimere dette system til dine filer, skal du prøve de forskellige kompressionsmetoder med dine filer og med en række kompressionsindstillinger. Hvis du ønsker en pålidelig god (ikke nødvendigvis den bedste) opsætning, vi vil lidt anbefalegzip (.gz) .gzipgør ikke den mindste komprimeret fil (det er rimeligt tæt) , men det komprimerer filen meget hurtigt og (vigtigere forERDDAP™brugere) undertrykker filen meget hurtigt. Plus,gzipsoftware kommer standard med hver Linux og Mac OS installation og er let tilgængelig for Windows via gratis værktøjer som 7Zip og Linux add-ons som Git Bash. For eksempel til at komprimere en kildefil ind i.gzversion af filen (samme filnavn, men med.gztilføjet) , brug (i Linux, Mac OS og Git Bash)
gzip sourceName
At decompresse en.gzfil tilbage til den oprindelige, brug pistol sourceName.gz
Hvis du vil komprimere hver af kildefilerne i mappe og dens undermapper, skal du bruge gzip-r instruktørnavn
At dekomprimere hver af de.gzfiler i mappe og dens undermapper , reursivt, brug Værktøjspakke -r instruktørnavn
-
ADVARSEL: Ikke eksternt komprimeret (gzip) filer, der allerede er internt komprimeret! Mange filer har allerede komprimeret data internt. Hvis dugzipdisse filer, de resulterende filer vil ikke være meget mindre (<5%) ogERDDAP™vil spilde tid undertrykke dem, når det skal læse dem. For eksempel:
-
Datafiler: f.eks..nc4, og.hdf5 filer: Nogle filer bruger intern kompression; nogle bruger ikke. Hvordan man fortæller: komprimerede variabler har "\_ChunkSize" attributter. Også, hvis en gruppe af gitterded.nceller eller eller.hdffiler er alle forskellige størrelser, de er sandsynligvis internt komprimeret. Hvis de er alle samme størrelse, er de ikke internt komprimeret.
-
billedfiler: f.eks. .gif, .jpg og .png
-
lydfiler: f.eks., .mp3 og .ogg.
-
videofiler: f.eks. .mp4, .ogv og .webm.
-
Et uheldigt tilfælde: .wav lydfiler er store og ikke internt komprimeret. Det ville være rart at komprimere (gzip) dem, men generelt bør du ikke, fordi hvis du gør, kan brugerne ikke afspille de komprimerede filer i deres browser.
-
Test Case: komprimering (med medgzip) et datasæt med 1523 gitterded.ncfiler.
- Dataene i kildefiler var sparse (masser af manglende værdier) .
- Total diskplads gik fra 57 GB før kompression til 7 GB efter.
- En anmodning om masser af data fra 1 gang punkt er<1 s før og efter kompression.
- En anmodning om 1 datapoint til 365-tidpoint (den værste situation) gik fra 4 s til 71 s.
Til mig, der er en rimelig handelsoff for enhver datasæt, og helt sikkert for datasæt, der er ubestridt brugt.
-
Indvendigt mod ekstern kompression -- Sammenlignet med den interne filkomprimering, der tilbydes af.nc4 og 4.hdf5 filer,ERDDAP's tilgang til eksternt komprimeret binære filer har fordele og ulemper. ulempen er: for en gang læse af en lille del af en fil, intern kompression er bedre, fordiEDDGridFraFiles behøver kun at dekomprimere et par chunk (s s s) af filen, ikke hele filen. Men men men men menERDDAP's tilgang har nogle fordele:
- ERDDAP™understøtter kompression af alle typer datafiler (binær og ikke-aktiv, f.eks..nc3 og .csv) Ikke bare.nc4 og 4.hdf4.
- Hvis mængden af en fil skal læses mere end én gang i en kort periode, sparer det tid til at undertrykke filen én gang og læse den mange gange. Dette sker iERDDAP™Når en bruger bruger Make-A-Graph til datasættet og gør en række små ændringer i grafen.
- Evnen til at have komprimerede filer og ikke komprimerede filer i samme samling, giver dig mere kontrol over, hvilke filer der er komprimeret, og som ikke er. Og denne ekstra kontrol kommer uden virkelig at ændre kildefilen (siden du kan komprimere en fil med f.eks..gzog derefter undertrykke det for at få den oprindelige fil) .
- Evnen til at ændre på ethvert tidspunkt, om en given fil er komprimeret, og hvordan den komprimeres (forskellige algoritmer og indstillinger) giver dig mere kontrol over systemets ydeevne. Og du kan nemt gendanne den oprindelige ukomprimeret fil til enhver tid.
Selvom hverken tilgang er en vinder i alle situationer, er det klart, atERDDAP's evne til at tjene data fra eksterne komprimerede filer gør ekstern kompression et rimeligt alternativ til den interne kompression, der tilbydes af.nc4 og 4.hdf5. Det er vigtigt, at intern kompression er en af de vigtigste grunde, folk vælger at bruge.nc4 og 4.hdf5.
Dekomprimeret cache
ERDDAP™gør en dekomprimeret version af enhver komprimeret binær (fx,.nc) datafil, når det skal læse filen. Dekomprimerede filer gemmes i datasættets mappe inden bigParentDirectory /trykt / . Dekomprimerede filer, der ikke er blevet brugt for nylig, vil blive slettet for at frigøre plads, når den kumulative filstørrelse er >10GB. Du kan ændre det ved at indstille<DekomprimeretCacheMaxGB> (Standard=10) i datasæt Xml.xml, f.eks.,
<decompressedCacheMaxGB>40</decompressedCacheMaxGB>
Også dekomprimerede filer, der ikke er blevet brugt i de sidste 15 minutter, vil blive slettet i starten af hver større datasæt reload. Du kan ændre det ved at indstille<Hoteller i nærheden af dekompressedCacheMaxMinutesOld> (Standard=15) i datasæt Xml.xml, f.eks.,
<decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>
Større tal er rart, men den kumulative størrelse af dekomprimerede filer kan forårsage bigParentDirectory at køre ud af diskplads, som forårsager alvorlige problemer.
- Fordi dekomprimering af en fil kan tage en betydelig mængde tid (0,1 til 10 sekunder) , datasæt med komprimerede filer kan drage fordel af at indstille datasættets [<nThreads>] (#læssere) indstilling til et højere antal (2? 3? 4??) . Ulempen til endnu højere tal (f.eks. 5? 6? 7?) nedsætter afkast, og at en brugers anmodning kan derefter bruge en høj procentdel af systemets ressourcer, og dermed mindske behandlingen af andre brugers anmodninger. Der er således ingen ideelle nThreads indstilling, bare forskellige konsekvenser i forskellige situationer med forskellige indstillinger.
Sorteret Dimension Værdier
Værdierne for hver dimension skal være i sorteret rækkefølge (stigende eller faldende, bortset fra den første (venstre-næsten) dimension, der skal opstiges) . Værdierne kan være uregelmæssigt mellemrum. Der kan ikke være nogen bånd. Dette er et krav om kravetCF metadata standard. Hvis nogen dimensions værdier ikke er i sorteret rækkefølge, vil datasættet ikke blive indlæst ogERDDAP™vil identificere den første usorteret værdi i logfilen, bigParentDirectory /logs/log.txt .
Uspecificerede dimensionværdier angiver næsten altid et problem med kildedatasættet. Dette forekommer oftest, når en forkert eller upassende fil er inkluderet i aggregationen, som fører til en usorteret tidsdimension. Hvis du vil løse dette problem, skal du se fejlmeddelelsen i meddelelsenERDDAP™log.txt-filen for at finde den fornærmende tidsværdi. Så se i kildefiler for at finde den tilsvarende fil (eller en før eller en efter) det tilhører ikke i sammenlægningen.
Direktører
Filerne kan være i én mappe eller i en mappe og dens undermapper (Reklamation) . Hvis der er et stort antal filer (for eksempel >1.000) , operativsystemet (og dermedEDDGridFraFiles) vil fungere meget mere effektivt, hvis du gemmer filerne i en række undermapper (om året, eller en måned for datasæt med meget hyppige filer) , så der aldrig er et stort antal filer i en given mappe.
<cacheFraUrl>
AlleEDDGridFraFiles og alle EDDTableFraFiles datasets understøtter et sæt tags, der fortællerERDDAP™at downloade og vedligeholde en kopi af alle en fjerndatasæts filer eller en cache af et par filer (Hentet efter behov) . Dette kan være utrolig nyttigt. Se billedernecache cache cache cache FraUrl dokumentation.
Fjernbetjente og HTTP Range anmodninger
(AKA Byte Servicerer, Byte Range anmodninger, Accepter-RangeshttpSidehoved)
EDDGridFraNcFiles, EDDTableFraMultidimNcFiles, EDDTableFraNcFiles og EDDTableFraNcCFFiles, kan nogle gange nogle gange tjene data fra.ncfiler på fjernservere og tilgås via HTTP, hvis serveren understøtterByte Servicevia HTTP-område anmodninger (HTTP-mekanismen til at betjene) . Dette er muligt, fordi netcdf-java (somERDDAP™Brug til at læse.ncfiler filer filer) Understøtter læsning af data fra fjern.ncfiler via HTTP-område anmodninger.
Gør ikke dette! Det er horribly ineffektiv og langsom. Brug i stedet [<cacheFraUrl> system] (#cachefraurl) .
Adgang til adgangERDDAP™Datasæt som filer via byte range anmodninger -- Vend dette rundt, givet at du kan (i teori) Tænk på et datasæt iERDDAP™som en kæmpe.ncfil ved at ignorere ".nc" til basen OPenDAPURL for en given datasæt (fx, https://myserver.org/erddap/griddap/datasetID.nc og også ved at tilføje en ?query efter at angive et subset) , det er måske rimeligt at spørge om du kan bruge netcdf-java,Ferreteller nogle andreNetCDFklientsoftware til at læse data via HTTP Range anmodninger fraERDDAP. Svaret er nej, fordi der ikke er virkelig en enorm ".nc" fil. Hvis du vil gøre dette, i stedet gøre en af disse muligheder:
- Brug(OPeN)DAPklient software til at oprette forbindelse til de gitterbaserede tjenester, der tilbydes afERDDAP. Det er hvad der erDAP (og dermedERDDAP) Designet til. Det er meget effektivt.
- Eller download kildefilen (s s s) fra fra"files"systemsystem (eller en subset fil via en.nc? forespørgsel) til din computer og brug netcdf-java,Ferreteller nogle andreNetCDFklientsoftware til at læse (nu nu nu) lokal fil (s s s) .
Oplysninger om cachen
Hvornår et tidspunktEDDGridFraFiles datasæt er først indlæst,EDDGridFraFiles læser oplysninger fra alle de relevante filer og skaber tabeller (en række for hver fil) med oplysninger om hver gyldig fil og hver "bad" (forskellige eller ugyldige) fil.
- Tabellerne gemmes også på disken, somNetCDFv3.ncfiler i filer i bigParentDirectory / Datasæt / I nærheden af Last2CharsOfDatasetID / / / / datasetID / i filer navngivet: dirTable.nc (som indeholder en liste over unikke mappenavne) , filfil Tabelbord.nc (som holder bordet med hver gyldig fils oplysninger) , dårlige filer.nc (som holder bordet med hver dårlig fils oplysninger) .
- For at fremskynde adgangen til enEDDGridFraFiles datasæt (men på bekostning af at bruge mere hukommelse) , du kan bruge
true
at fortælleERDDAP™for at gemme en kopi af fil information tabeller i hukommelsen.
- Kopier af filoplysningerne på disken er også nyttig, nårERDDAP™lukkes og genstartes: det sparerEDDGridFraFiles fra at skulle genlæse alle datafiler.
- Når et datasæt er indlæst,ERDDAP™behøver kun at læse data i nye filer og filer, der har ændret sig.
- Hvis en fil har en anden struktur fra de andre filer (f.eks. en anden datatype for en af variablerne eller en anden værdi for "enheder" attribut) ,ERDDAPtilføjer filen til listen over "bad" filer. Oplysninger om problemet med filen vil blive skrevet til den bigParentDirectory /logs/log.txt-fil.
- Du bør ikke nogensinde nødt til at slette eller arbejde med disse filer. En undtagelse er: Hvis du stadig foretager ændringer i et datasætsdatasets.xmlopsætning, kan du slette disse filer for at tvingeERDDAP™at læse alle filerne, da filerne vil blive læst/fortolket anderledes. Hvis du nogensinde behøver at slette disse filer, kan du gøre det, nårERDDAP™kører. (Så sæt et sætflag flag flag flagat indlæse datasættet ASAP.) Men, men,ERDDAP™normalt bemærker, at dedatasets.xmloplysninger matcher ikke filen Tabeloplysninger og sletter filbordene automatisk.
- Hvis du ønsker at opfordreERDDAP™for at opdatere de lagrede datasæt-oplysninger (Hvis du f.eks. har tilføjet, fjernet eller ændret nogle filer til datasættets datakatalog) , brug afflagsystemat tvingeERDDAP™for at opdatere cached-filoplysninger.
Håndtering af anmodninger
Når en klients anmodning om data behandles,EDDGridFraFiles kan hurtigt se i tabellen med de gyldige filoplysninger for at se, hvilke filer der har de ønskede data.
Opdatering af cachen filoplysninger
Når datasættet er indlæst, opdateres cachen filoplysninger.
- Datasættet genindlæses periodisk som fastlagt af datasættet<reloadEveryNMinutes> i datasættets oplysninger idatasets.xml.
- Datasættet er genindlæst så hurtigt som muligt, nårERDDAP™registrerer, at du har tilføjet, fjernet,touch'd (at ændre filens sidste Modificeret tid) , eller ændret en datafil.
- Datasættet er genindlæst så hurtigt som muligt, hvis du bruger datasættetflagsystem.
Når datasættet er indlæst,ERDDAP™sammenligner de i øjeblikket tilgængelige filer til de cachelagrede filoplysninger tabeller. Nye filer læses og føjes til den gyldige filtabel. Filer, der ikke længere eksisterer, er faldet fra den gyldige filtabel. Filer, hvor filtampen har ændret sig, og deres oplysninger opdateres. De nye tabeller erstatter de gamle tabeller i hukommelsen og på disk.
Dårlige filer
Tabellen af dårlige filer og årsagerne til, at filerne blev erklæret dårlige (ødelagt fil, manglende variabler osv.) e-mailes til e-mail Alt alt Til e-mailadresse (sandsynligvis du) Hver gang datasættet er genindlæst. Du bør udskifte eller reparere disse filer så hurtigt som muligt.
Manglende variabler
Hvis nogle af filerne ikke har nogle af filernedataVariables defineret i datasættetsdatasets.xmlDet er okay. Hvornår Hvornår skal man HvornårEDDGridFraFiles læser en af disse filer, vil det fungere som om filen havde variablen, men med alle manglende værdier.
FTP Trouble / rådgivning
Hvis du FTP nye datafiler til filerneERDDAP™server mensERDDAP™kører, der er chancen for, atERDDAP™vil indlæse datasættet under FTP-processen. Det sker oftere end du måske tror! Hvis det sker, vises filen for at være gyldig (det har et gyldigt navn) , men filen er ikke endnu gyldig. HvisERDDAP™forsøger at læse data fra den ugyldige fil, vil den resulterende fejl forårsage, at filen skal føjes til tabellen af ugyldige filer. Dette er ikke godt. For at undgå dette problem skal du bruge et midlertidigt filnavn, når FTP'ing af filen f.eks. ABC2005.nc\_TEMP . Så, filenNameRegex test (se nedenfor) vil angive, at dette ikke er en relevant fil. Når FTP-processen er færdig, skal du omdøbe filen til det korrekte navn. Afrenningsprocessen vil medføre, at filen bliver relevant i et øjeblik.
"0 filer" Fejlmeddelelse
Hvis du kørerGenererDatasetsXmleller eller ellerBilleder af DasDds, eller hvis du forsøger at indlæse enEDDGridFra...Filer datasæt iERDDAP™, og du får en "0 filer" fejlmeddelelse, der angiver, atERDDAP™fundet 0 matchende filer i mappen (når du tror, at der er matchende filer i denne mappe) :
- Tjek, at filerne virkelig er i denne mappe.
- Tjek stavemåden af mappenavnet.
- Tjek filenNameRegex. Det er virkelig nemt at lave fejl med regexes. Prøv regex .\*, som skal matche alle filnavne. (Se detteIndeks dokumentationog og ogregex tutorial.)
- Kontroller, at brugeren, der kører programmet (f.eks. bruger=tomcat (?) for Tomcat /ERDDAP) har 'læs' tilladelse til disse filer.
- I nogle operativsystemer (for eksempel SELinux) Afhængigt af systemindstillinger skal brugeren, der løb programmet, have "læs" tilladelse til hele kæden af mapper, der fører til den mappe, der har filerne.
EDDGridFraFiles skelet XML XML
- The skelet XML for alleEDDGridFraFiles subclasses er:
<dataset type="EDDGridFrom...Files" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromFiles subclasses, this uses Java's WatchDirectory system
to notice new/deleted/changed files quickly and efficiently. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<fileDir>...</fileDir> <-- The directory (absolute) with the
data files. -->
<recursive>true|false</recursive> <!-- 0 or 1. Indicates if
subdirectories of fileDir have data files, too. -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\") will be accepted. -->
<fileNameRegex>...</fileNameRegex> <-- 0 or 1. A
regular expression (tutorial) describing valid data
file names, for example, ".\\.nc" for all .nc files. -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<metadataFrom>...</metadataFrom> <-- The file to get
metadata from ("first" or "last" (the default) based on file's
lastModifiedTime). -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
false (the default)) -->
<cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
<cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDD*FraAudioFiles
EDDGridFraAudioFiles og og og EDDTableFraAudioFiles aggregerede data fra en samling af lokale lydfiler. (Disse første optrådte iERDDAP™v1.82.) Forskellen er, atEDDGridFraAudioFiles behandler data som et flerdimensionelt datasæt (normalt med 2 dimensioner:\[fil starter Tidstid\]og og og\[udløb Tid inden for en fil\]) , der henviser til, at EDDTableFraAudioFiles behandler dataene som tabulære data (Normalt med kolonner til filstartTime, elapsedTime med filen, og dataene fra lydkanalerne) .EDDGridFraAudioFiles kræver, at alle filer har samme antal prøver, så hvis det ikke er sandt, skal du bruge EDDTableFraAudioFiles. Ellers valget af hvilken EDD type at bruge er helt dit valg. En fordel ved EDDTableFraAudioFiles: du kan tilføje andre variabler med andre oplysninger, f.eks.stationID, stationType. I begge tilfælde gør manglen på en samlet tidsvariabel det vanskeligere at arbejde med dataene fra disse EDD-typer, men der var ingen god måde at opsætte en samlet tidsvariabel.
Se disse klasses superklasser,EDDGridFraFilesog og ogEDDTableFraFiles, for generelle oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Da lydfiler ikke har metadata andre end oplysninger relateret til kodning af lyddata, skal du redigere output fraDatasetsetsets Xml for at give væsentlige oplysninger (f.eks. titel, oversigt,creator\_name, institution, historie) .
Detaljer:
- Der er et stort antal lydfilformater. I øjeblikket,ERDDAP™kan læse data fra de fleste .wav og .au-filer. Det kan i øjeblikket ikke læse andre typer af lydfiler, f.eks. .aiff eller .mp3. Hvis du har brug for support til andre lydformater eller andre varianter af .wav og .au, bedes du sende din anmodning til Chris. John på noaa.gov . Eller, som om du kan bruge lige nu, kan du konvertere dine lydfiler til PCM\_ Log ind (for indgående data) eller PCM\_FLOAT (til flydende punktdata) .wav filer, såERDDAP™kan arbejde med dem.
- I øjeblikket,ERDDAP™kan læse lydfiler med hvadJava's AudioFormat klasse kalder PCM\_FLOAT, PCM\_SIGNED, PCM\_UNSIGNED, ALAW og ULAW kodninger.ERDDAP™Konverterer PCM\_UNSIGNED værdier (f.eks. 0 til 255) undertegnede værdier (f.eks. -128 til 128) på bagsiden af bits i dataværdierne.ERDDAP™Konverterer ALAW og ULAW kodet fra deres oprindelige kodet byte format til kort (int16) værdier. SidenJavaønsker bigEndian=true data,ERDDAP™Omsætninger af data gemt med bigEndian=false (lille enik) for at læse værdierne korrekt. Til alle andre kodninger (PCM) ,ERDDAP™Læser dataene som er.
- Hvornår Hvornår skal man HvornårERDDAP™Læser data fra lydfiler, det konverterer filens tilgængelige lyd metadata til globale attributter. Dette vil altid inkludere (med prøveværdier vist)
Streng lydBigEndian "false"; //true eller falsk int lyd 1; Streng lydkodning "PCM\_SIGNED"; flyder audioFrameRate 96000.0; //per andet int audioFrameSize 2; //# af data per ramme flyder lydSampleRate 96000.0; //per andet int audioSampleSizeInBits 16; //# af bits per kanal per prøve
For For For For ForERDDAP's formål er en ramme synonymt med en prøve, som er dataene til et tidspunkt. De attributter iERDDAP™vil have de oplysninger, der beskriver dataene, da det var i kildefiler.ERDDAP™vil ofte have ændret dette, mens du læser dataene, f.eks. PCM\_UNSIGNED, ALAW, og ULAW kodede data konverteres til PCM\_SIGNED, og bigEndian=false data er konverteret til bigEndian=true data (hvad er, hvordanJavaønsker at læse det) . I sidste ende, dataværdier iERDDAP™vil altid være denPCM-enkodedataværdier (dvs. enkle digitaliserede prøver af lydbølgen) .
- Hvornår Hvornår skal man HvornårERDDAP™Læser data fra lydfiler, det læser hele filen.ERDDAP™kan læse så mange som omkring 2 milliarder prøver pr. kanal. Hvis prøveraten er 44,100 prøver pr. sekund, oversættes 2 milliarder prøver til ca. 756 minutter af lyddata pr. fil. Hvis du har lydfiler med mere end denne mængde data, skal du bryde filerne op i mindre stykker, så atERDDAP™kan læse dem.
- Fordi fordiERDDAP™læser hele lydfiler,ERDDAP™skal have adgang til en stor mængde hukommelse til at arbejde med store lydfiler. Se endnuERDDAP's hukommelse indstillinger. Igen, hvis dette er et problem, en workaround, at du kan bruge lige nu er at bryde filerne i mindre stykker, så atERDDAP™kan læse dem med mindre hukommelse.
- Nogle lydfiler blev skrevet forkert.ERDDAP™gør en lille indsats for at håndtere sådanne tilfælde. Men generelt, når der er en fejl,ERDDAP™vil smide en Undtagelse (og afvise den fil) eller eller eller (hvis fejlen er ubestridelig) Læs oplysningerne (men dataene vil være ukorrekte) .
- ERDDAP™Kontrollér ikke lydens volumen. Ideelt set er indgående lyddata beregnet til at bruge hele spektret af datatypen.
- Lydfiler og lydafspillere har ingen system til manglende værdier (fx -999 eller Float.NaN) . Så lyddata bør ikke have nogen manglende værdier. Hvis der mangler værdier (f.eks. hvis du har brug for at forlænge en lydfil) , brug en serie af 0'er, som vil blive fortolket som perfekt tavshed.
- Hvornår Hvornår skal man HvornårERDDAP™Læser data fra lydfiler, det skaber altid en kolonne kaldet elapsed Tid med tiden for hver prøve, på få sekunder (gemt som dobbelt) , i forhold til den første prøve (som er tildelt elapsed Time=0.0 s) . MedEDDGridFraAudioFiles bliver dette den elapsedTime akse variabel.
- EDDGridFraAudioFiles kræver, at alle filer har samme antal prøver. Så hvis det ikke er sandt, skal du bruge EDDTableFraAudioFiles.
- For For For For ForEDDGridFraAudioFiles, anbefaler vi, at du indstiller [<dimensionValuesInMemory>] (#dimensionel værdisinmemory) til falsk (som anbefales af GenererDatasets Xml) , fordi tidsdimensionen ofte har et stort antal værdier.
- For For For For ForEDDGridFraAudioFiles, bør du næsten altid bruge denEDDGridFraFiles system tilAggregation via Filnavne, næsten altid ved at udtrække optagelsens startdato Tid fra filnavnene. For eksempel,
<sourceName>\\*\\*\\*fileName,"timeFormat=yyyyMMdd'\\_'HHmmss",aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
GenererDatasets Xml vil opfordre dette og hjælpe dig med dette.
- For EDDTableFraAudioFiles, bør du næsten altid bruge EDDTableFraFiles-systemet til\\\*FilName pseudosourceNames s stil at udtrække oplysninger fra filens navn (næsten altid startdatoen Tid til optagelse) og fremme det til at være en kolonne af data. For eksempel,
<sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
Tidsformatet skal derefter angives som attributten enheder:<ont navn</att>
EDDGridFraMergeIRFiles
EDDGridFraMergeIRFiles aggregerer data fra lokal,Sammenfletningfiler, som er fra deHoteller i nærheden af Tropical Rainfall (TRMM) , som er en fælles mission mellem NASA og Japan Aerospace Exploration Agency (Billeder af JAXA) . Sammenfletning IR-filer kan downloades fraNASA NASA NASA.
EDDGridFraMergeIRFiles.java blev skrevet og bidraget til teERDDAP™projekt af Jonathan Lafite og Philippe Makowski af R.Tech Engineering (licens: ophavsretlig open source) .
EDDGridFraMergeIRFiles er lidt usædvanligt:
- EDDGridFraMergeIRFiles understøtter komprimeret eller ukomprimeret kildedatafiler, i enhver kombination, i samme datasæt. Dette giver dig f.eks. mulighed for at komprimere ældre filer, der sjældent er tilgængelige, men undertrykke nye filer, der ofte er tilgængelige. Eller kan du ændre typen af kompression fra originalen. Z til for eksempel.gz.
- Hvis du har komprimeret og ukomprimeret versioner af de samme datafiler i samme mappe, skal du sørge for, at<FileNameRegex> for dine datasæt matcher de filnavne, du ønsker det til at matche, og ikke svarer til de filnavne, du ikke ønsker det til at matche.
- Ukomprimerede kildedatafiler skal have ingen filudvidelse (dvs., nej "." i filnavnet) .
- Komprimerede kildedatafiler skal have en filudvidelse, menERDDAP™bestemmer typen af kompression ved at undersøge indholdet af filen, ikke ved at se på filens filudvidelse (for eksempel ".Z") . De understøttede kompressionstyper omfatter "gz", "bzip2", "xz", "lzma", "snappy-raw", "snappy-framed", "pack200", og "z". Hvornår Hvornår skal man HvornårERDDAP™Læser komprimerede filer, det undertrykker på-the-fly, uden at skrive til en midlertidig fil.
- Alle kildedatafiler skal bruge det oprindelige filsystem: dvs. Supplerende oplysninger om YYYYMMDDHH \_4km-pixel (hvor Supplerende oplysninger om YYYYMMDDHH angiver det tidspunkt, der er forbundet med dataene i filen) , plus en filudvidelse, hvis filen er komprimeret.
Se denne klasses superklasse,EDDGridFraFiles, for generelle oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
EDDGridFraNcFiles
EDDGridFraNcFiles aggregerer data fra lokal, gitteret,GRIB .grb og .grb2filer,HDF (v4 eller v5) .hdffiler,.ncmlfiler,NetCDF (v3 eller v4) .ncfiler, ogZarrrfiler filer filer (som version 2.25) . Zarrr filer har lidt forskellige adfærd og kræver enten fileNameRegex eller stiRegex at inkludere "zarr".
Dette kan arbejde med andre filtyper (for eksempel BUFR) , vi har ikke testet det -- send os nogle prøvefiler.
- Til GRIB-filer,ERDDAP™vil foretage en .gbx indeks fil første gang den læser hver GRIB-fil. Så GRIB-filer skal være i en mappe, hvor "bruger", som løb Tomcat har læst +skrive tilladelse.
- Se denne klasses superklasse,EDDGridFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Begyndende medERDDAP™v2.12,EDDGridFraNcFiles ogEDDGridFraNcFiles Upakket kan læse data fra "strukturer" i.nc4 og 4.hdf4 filer. At identificere en variabel, der er fra en struktur, den<sourceName> > > > skal bruge formatet: FuldStructureName | Medlemsnavn , for eksempel gruppe1/myStruct|Mit medlem.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Grupper i Gridded Nc filer
Netcdf4 filer kan indeholde grupper. ERDDAP™Bare gør et datasæt fra variablerne i en gruppe og alle dens forældregrupper. Du kan angive et bestemt gruppenavn i GenererDatasets Xml (Billeder af omit te trailing) , eller brug "" til at have GenererDatasets Xml søger alle grupper for de variable, der bruger de mest dimensioner, eller brug "\[rodrod\]" at have GenererDatasets bare kigge efter variabler i rodgruppen.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
EDDGridFraNcFilesUnpakke
EDDGridFraNcFilesUnpakke er en variant afEDDGridFraNcFilessom aggregerer data fra lokal, gitterdedNetCDF (v3 eller v4) .ncog relaterede filer. Forskellen er, at denne klasse pakker hver datafil førEDDGridFraFiles ser på filerne:
- Det pakker variabler, der er pakket medscale\_factorog/elleradd\_offset.
- Det konverterer \_FillValue ogmissing\_valueværdier for at være NaN's (eller MAX\_VALUE for integer data typer) .
- Det konverterer tid og tidsstempel værdier til"seconds since 1970-01-01T00:00:00Z".
Den store fordel ved denne klasse er, at det giver en måde at håndtere forskellige værdier afscale\_factor,add\_offset, \_FillValue,missing\_value, eller tidsenheder i forskellige kildefiler i en samling. Ellers ville du nødt til at bruge et værktøj somNcMLeller eller ellerNCOfor at ændre hver fil for at fjerne forskellene, så filerne kunne håndteres afEDDGridFraNcFiles. For denne klasse at arbejde ordentligt, skal filerne følge CF standarder for de relaterede attributter.
- Hvis du forsøger at lave enEDDGridFraNcFiles Upakket fra en gruppe filer, hvor du tidligere forsøgte og mislykkedes at brugeEDDGridFraNcFiles, cd til bigParentDirectory / Datasæt / Seneste2Letters / / / / datasetID / / / / hvor Seneste2Letters er de sidste 2 bogstaver afdatasetID, og slet alle filer i mappen.
- Begyndende medERDDAP™v2.12,EDDGridFraNcFiles ogEDDGridFraNcFiles Upakket kan læse data fra "strukturer" i.nc4 og 4.hdf4 filer. At identificere en variabel, der er fra en struktur, den<sourceName> > > > skal bruge formatet: FuldStructureName | Medlemsnavn , for eksempel gruppe1/myStruct|Mit medlem.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Netcdf4 filer kan indeholde grupper. Se endnudenne dokumentation.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen før før Det er ubepakket. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
EDDGridLonPM180
EDDGridLonPM180 ændrer de længdeværdier af et barn (lukket) EDDGriddatasæt, der har nogle længdeværdier større end 180 (f.eks. 0 til 360) så de er i serien -180 til 180 (Langitude Plus eller Minus 180, dermed navnet) .
- Dette giver en måde at gøre datasæt, der har længdeværdier større end 180 i/medOGCtjenester (for eksempelWMSserver i serverERDDAP) , siden altOGCtjenester kræver længdeværdier inden for -180 til 180.
- At arbejde nær en diskntinuitet forårsager problemer, uanset om diskentinuiteten er i længde 0 eller i længde 180. Denne datasæt type lader dig undgå disse problemer for alle, ved at tilbyde to versioner af samme datasæt: en med længdeværdier i interval 0 til 360 ("Pacificent"?) , en med længdeværdier i serien -180 til 180 ("Atlanticent"?) .
- For børnedatasæt med alle længdeværdier større end 180, er alle de nye længdeværdier simpelthen 360 grader lavere. For eksempel vil et datasæt med længdeværdier på 180 til 240 blive et datasæt med længdeværdier -180 til -120.
- Til børnedatasæt, der har længdeværdier for hele kloden (ca. 0 til 360) , den nye længdeværdi vil blive bagudrettede for at være (groft) -180 til 180: De oprindelige 0 til næsten 180 værdier er uændret. De oprindelige 180 til 360 værdier omdannes til -180 til 0 og skiftede til begyndelsen af længde arrayet.
- Til børnedatasæt, der spænder 180, men ikke dækker verden,ERDDAP™indsætter manglende værdier efter behov for at foretage et datasæt, der dækker verden. For eksempel ville et barns datasæt med længdeværdier på 140 til 200 blive et datasæt med længdeværdier -180 til 180. Barnets værdier på 180 til 200 ville blive -180 til -160. Nye længdeværdier vil blive indsat fra -160 til 140. De tilsvarende dataværdier vil være \_FillValues. Barnets værdier på 140 til næsten 180 ville være uændret. Indsætning af manglende værdier kan synes mærkeligt, men det undgår flere problemer, der skyldes at have længdeværdier, der springer pludselig (f.eks. fra -160 til 140) .
- I nærheden af In In In In In In In In In In In In In InGenererDatasetsXml, der er en speciel "dataset type",EDDGridLonPM180FraErddapCatalog, der lader dig generere dendatasets.xmlfor for forEDDGridLonPM180 datasæt fra hver af deEDDGridDatasæt i enERDDAPder har alle længdeværdier større end 180. Dette letter at tilbyde to versioner af disse datasæt: de oprindelige, med længdeværdier i rækkevidde 0 til 360, og de nye datasæt, med længdeværdier i serien -180 til 180.
Barnets datasæt inden for hverEDDGridLonPM180 datasæt vil være enEDDGridFraErddap datasæt, som peger på det oprindelige datasæt. Det nye datasætdatasetIDvil være navnet på den oprindelige datasæt plus "\_LonPM180". For eksempel,
<dataset type="EDDGridLonPM180" datasetID="erdMBsstdmday\\_LonPM180" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_LonPM180Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=120.0 maxLon=320.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Sæt formenEDDGridLonPM180 datasæt nedenfor den oprindelige datasæt idatasets.xml. Det undgår nogle mulige problemer.
Alternativt kan du udskifteEDDGridFraErddap børnedatasæt med det oprindelige datasætdatasets.xml. Så vil der kun være en version af datasættet: den ene med længdeværdier inden -180 til 180. Vi afviser dette, fordi der er tider, når hver version af datasættet er mere praktisk.
- Hvis du tilbyder to versioner af et datasæt, f.eks. en med længde 0 til 360 og en med længdegrad -180 til 180:
- Du kan bruge den valgfrie [<tilgængelig Via Via Via ViaWMS>false</ utilgængelig Via Via Via ViaWMS>] (#accessibleviawms) med 0-360-datasættet til at deaktivere denWMSService til denne datasæt. Så vil kun LonPM180-versionen af datasættet være tilgængelig viaWMS.
- Der er et par måder at holde LonPM180 datasættet opdateret med ændringer i det underliggende datasæt:
- Hvis barnets datasæt er etEDDGridFraErddap datasæt, der referencerer et datasæt i det sammeERDDAP™, LonPM180 datasættet vil forsøge at direkte abonnere på det underliggende datasæt, så det altid er opdateret. Direkte abonnementer genererer ikke e-mails, der beder dig om at validere abonnementet - validering skal udføres automatisk.
- Hvis barnets datasæt ikke er etEDDGridFraErddap datasæt, der er på samme mådeERDDAP™, LonPM180 datasættet vil forsøge at bruge det regulære abonnementssystem til at abonnere på det underliggende datasæt. Hvis du har abonnementssystemet i dit abonnementERDDAP™tændt, skal du få e-mails, der beder dig om at bekræfte abonnementet. Venligst gør det.
- Hvis du har abonnementssystemet i dit abonnementERDDAP™LonPM180-datasættet kan undertiden have forældede metadata, indtil LonPM180-datasættet er genindlæst. Så hvis abonnementssystemet er slukket, skal du indstille [<reload Alle rettigheder>] (#loadeveryn minutter) Indstilling af LonPM180 datasæt til et mindre nummer, så det er mere sandsynligt at fange ændringer i barnets datasæt hurtigere.
EDDGridLonPM180 skelet XML XML
<dataset type="EDDGridLonPM180" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGridLon0360
EDDGridLon0360 ændrer de længdeværdier af et barn (lukket) EDDGriddatasæt, der har nogle længdeværdier mindre end 0 (for eksempel -180 til 180) så de er i området 0 til 360 (Derfor navnet) .
- At arbejde nær en diskntinuitet forårsager problemer, uanset om diskentinuiteten er i længde 0 eller i længde 180. Denne datasæt type lader dig undgå disse problemer for alle, ved at tilbyde to versioner af samme datasæt: en med længdeværdier i serien -180 til 180 ("Atlanticent"?) . en med længdeværdier i interval 0 til 360 ("Pacificent"?) ,
- For børnedatasæt med alle længdeværdier mindre end 0, er alle de nye længdeværdier simpelthen 360 grader højere. For eksempel ville et datasæt med længdeværdier af -180 til -120 blive et datasæt med længdeværdier på 180 til 240.
- Til børnedatasæt, der har længdeværdier for hele kloden (groft -180 til 180) , den nye længdeværdi vil blive bagudrettede for at være (groft) 0 til 360: Den oprindelige -180 til 0 værdier omdannes til 180 til 360 og skiftede til slutningen af længde arrayet. De oprindelige 0 til næsten 180 værdier er uændret.
- Til børnedatasæt, der spænder over lon=0, men ikke dækker verden,ERDDAP™indsætter manglende værdier efter behov for at foretage et datasæt, der dækker verden. For eksempel vil et barns datasæt med længdeværdier på -40 til 20 blive et datasæt med længdeværdier på 0 til 360. Barnets værdier på 0 til 20 ville være uændret. Nye længdeværdier vil blive indsat fra 20 til 320. De tilsvarende dataværdier vil være \_FillValues. Barnets værdier af -40 til 0 ville blive 320 til 360. Indsætning af manglende værdier kan synes mærkeligt, men det undgår flere problemer, der skyldes at have længdeværdier, der springer pludselig (fx fra 20 til 320) .
- I nærheden af In In In In In In In In In In In In In InGenererDatasetsXml, der er en speciel "dataset type",EDDGridLon0360Fra ErddapCatalog, der lader dig generere dendatasets.xmlfor for forEDDGridLon0360 datasæt fra hver af deEDDGridDatasæt i enERDDAPder har alle længdeværdier større end 180. Dette letter at tilbyde to versioner af disse datasæt: de oprindelige, med længdeværdier i rækkevidde 0 til 360, og de nye datasæt, med længdeværdier i serien -180 til 180.
Barnets datasæt inden for hverEDDGridLon0360 datasæt vil være enEDDGridFraErddap datasæt, som peger på det oprindelige datasæt. Det nye datasætdatasetIDvil være navnet på den oprindelige datasæt plus "\_Lon0360". For eksempel,
<dataset type="EDDGridLon0360" datasetID="erdMBsstdmday\\_Lon0360" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_Lon0360Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=-40.0 maxLon=20.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Sæt formenEDDGridLon0360 datasæt nedenfor den oprindelige datasæt idatasets.xml. Det undgår nogle mulige problemer.
Alternativt kan du udskifteEDDGridFraErddap børnedatasæt med det oprindelige datasætdatasets.xml. Så vil der kun være en version af datasættet: den ene med længdeværdier inden for 0 til 360. Vi afviser dette, fordi der er tider, når hver version af datasættet er mere praktisk.
- Hvis du tilbyder to versioner af et datasæt, f.eks. en med længde 0 til 360 og en med længdegrad -180 til 180:
- Du kan bruge den valgfrie [<tilgængelig Via Via Via ViaWMS>false</ utilgængelig Via Via Via ViaWMS>] (#accessibleviawms) med 0 til 360 datasæt til at deaktivere denWMSService til denne datasæt. Så vil kun -180 til 180 version af datasættet være tilgængelig viaWMS.
- Der er et par måder at holde Lon0360 datasættet opdateret med ændringer i det underliggende datasæt:
- Hvis barnets datasæt er etEDDGridFraErddap datasæt, der referencerer et datasæt i det sammeERDDAP™, Lon0360 datasættet vil forsøge at direkte abonnere på det underliggende datasæt, så det altid er opdateret. Direkte abonnementer genererer ikke e-mails, der beder dig om at validere abonnementet - validering skal udføres automatisk.
- Hvis barnets datasæt ikke er etEDDGridFraErddap datasæt, der er på samme mådeERDDAP™, Lon0360 datasættet vil forsøge at bruge det regulære abonnementssystem til at abonnere på det underliggende datasæt. Hvis du har abonnementssystemet i dit abonnementERDDAP™tændt, skal du få e-mails, der beder dig om at bekræfte abonnementet. Venligst gør det.
- Hvis du har abonnementssystemet i dit abonnementERDDAP™Lon0360-datasættet kan undertiden have forældede metadata, indtil Lon0360-datasættet er genindlæst. Så hvis abonnementssystemet er slukket, skal du indstille [<reload Alle rettigheder>] (#loadeveryn minutter) Indstilling af Lon0360 datasæt til et mindre nummer, så det er mere sandsynligt at fange ændringer i barnets datasæt hurtigere.
EDDGridLon0360 skelet XML XML
<dataset type="EDDGridLon0360" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGridSideforside
EDDGridSideforside Samler to eller flereEDDGridDatasæt (børn) side om side.
- Det resulterende datasæt har alle variabler fra alle barnets datasæt.
- Forældredatasættet og alle barnets datasæt skal have forskelligedatasetIDs. Hvis nogen navne i en familie er præcis det samme, vil datasættet undlade at indlæse (med fejlmeddelelsen, at værdierne af den samlede akse ikke er i sorteret rækkefølge) .
- Alle børn skal have de samme kildeværdier foraxisVariables s s\[1+\] (for eksempel breddegrad, længdegrad) . Nøjagtigheden af testen bestemmes afMatchAxisNDigits.
- Børnene kan have forskellige kildeværdier foraxisVariables s s\[0\] (for eksempel tid) , men de er normalt det samme.
- Forældredatasættet vil blive vist for at have alle afaxisVariables s s\[0\]kildeværdier fra alle børn.
- For eksempel kan du kombinere et kildedatasæt med en vektors u-komponent og en anden kildedatasæt med en vektors v-komponent, så de kombinerede data kan betjenes.
- Børn skabt af denne metode holdes privat. De er ikke separat tilgængelige datasæt (f.eks. af klientdata anmodninger eller afflagfiler) .
- De globale metadata og indstillinger for forælderen kommer fra de globale metadata og indstillinger for det første barn.
- Hvis der er en undtagelse, mens du opretter det første barn, oprettes forælderen ikke.
- Hvis der er en undtagelse, mens du opretter andre børn, sender dette en e-mail til e-mailEverythingTo (som angivet iopsætning.xml) og fortsætter med de andre børn.
EDDGridSideBySide skelet XML XML
<dataset type="EDDGridSideBySide" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- 2 or more -->
</dataset>
EDDGridAggregateExistingDimension
EDDGridAggregateExistingDimension Samler to eller flereEDDGridDatasets, som hver især har forskellige værdier for den første dimension, men identiske værdier for de andre dimensioner.
- For eksempel kan et barns datasæt have 366 værdier (for 2004) for tidens dimension og et andet barn kan have 365 værdier (for 2005) for tidens dimension.
- Alle værdier for alle de andre dimensioner (for eksempel breddegrad, længdegrad) SKAL være identisk for alle børn. Nøjagtigheden af testen bestemmes afMatchAxisNDigits.
- Sorteret Dimension Værdier - Værdierne for hver dimension skal være i sorteret rækkefølge (stigende eller faldende) . Værdierne kan være uregelmæssigt mellemrum. Der kan ikke være nogen bånd. Dette er et krav om kravetCF metadata standard. Hvis nogen dimensions værdier ikke er i sorteret rækkefølge, vil datasættet ikke blive indl æst ogERDDAP™vil identificere den første usorteret værdi i logfilen, bigParentDirectory /logs/log.txt .
Uspecificerede dimensionværdier angiver næsten altid et problem med kildedatasættet. Dette forekommer oftest, når en forkert eller upassende fil er inkluderet i aggregationen, som fører til en usorteret tidsdimension. Hvis du vil løse dette problem, skal du se fejlmeddelelsen i meddelelsenERDDAP™log.txt-filen for at finde den fornærmende tidsværdi. Så se i kildefiler for at finde den tilsvarende fil (eller en før eller en efter) det tilhører ikke i sammenlægningen.
- Forældredatasættet og barnet datasættet skal have forskelligedatasetIDs. Hvis nogen navne i en familie er præcis det samme, vil datasættet undlade at indlæse (med fejlmeddelelsen, at værdierne af den samlede akse ikke er i sorteret rækkefølge) .
- I øjeblikket, barnet datasæt skal være enEDDGridFraDap datasæt og SKAL have de laveste værdier af den aggregerede dimension (Normalt de ældste tidsværdier) . Alle de andre børn skal være næsten identiske datasæt (adskiller sig kun i værdierne for den første dimension) og er angivet af blot deressourceUrl.
- Det samlede datasæt får sine metadata fra det første barn.
- The The The The The The TheGenererDatasets Xml programkan lave et groft udkast tildatasets.xmlfor enEDDGridAggregateExistingDimension baseret på et sæt af filer tjent af enHyraxeller EDDS server. Brug f.eks. denne indgang til programmet ("/1988" i URL'en gør, at eksemplet kører hurtigere) :
EDDType? EDDGridAggregateExistingDimension
Server type (hyrax, thredds, or dodsindex)? hyrax
Parent URL (for example, for hyrax, ending in "contents.html";
for thredds, ending in "catalog.xml")
? https://opendap.jpl.nasa.gov/opendap/ocean\\_wind/ccmp/L3.5a/data/
flk/1988/contents.html
File name regex (for example, ".\\*\\.nc")? month.\\*flk\\.nc\\.gz
ReloadEveryNMinutes (for example, 10080)? 10080
Du kan bruge resultatet<sourceUrl> tags eller slette dem og undladelse af<sourceUrl> tag (så nye filer er bemærket hver gang datasættet er genindlæst.
EDDGridAggregateExistingDimension skelet XML XML
<dataset type="EDDGridAggregateExistingDimension" datasetID\="..."
active\="..." >
<dataset>...</dataset> <!-- This is a regular EDDGridFromDap dataset
description child with the lowest values for the aggregated
dimensions. -->
<sourceUrl>...</sourceUrl> <!-- 0 or many; the sourceUrls for
other children. These children must be listed in order of
ascending values for the aggregated dimension. -->
<sourceUrls serverType="..." regex="..." recursive="true"
pathRegex\=".\"
>https://someServer/someDirectory/someSubdirectory/catalog.xml</sourceUrls>
<!-- 0 or 1. This specifies how to find the other children,
instead of using separate sourceUrl tags for each child. The
advantage of this is: new children will be detected each time
the dataset is reloaded. The serverType must be "thredds",
"hyrax", or "dodsindex". An example of a regular expression (regex) (tutorial) is .\\.nc
recursive can be "true" or "false".
Only directory names which match the
<pathRegex>
(default=".\*") will be accepted.
A thredds catalogUrl MUST include "/thredds/catalog/".
An example of a thredds catalogUrl is
https://thredds1.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/
chla/catalog.xml
An example of a hyrax catalogUrl is
https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/
flk/1988/contents.html
An example of a dodsindex URL is
https://opendap.jpl.nasa.gov/opendap/GeodeticsGravity/tellus/L3/mascon/RL06/JPL/v02/CRI/netcdf/contents.html
(Note the "OPeNDAP logo at the top of the page.)
When these children are sorted by filename, they must be in
order of ascending values for the aggregated dimension. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
</dataset>
EDDGridKopiere Kopier
EDDGridKopiere Kopier gør og vedligeholder en lokal kopi af en andenEDDGrid's data og tjener data fra den lokale kopi.
- EDDGridKopiere Kopier (og til tabulære data,EDDTableCopy) er en meget let at bruge og en meget effektiv
løsning til nogle af de største problemer med at betjene data fra en fjern datakilde:
- Adgang af data fra en fjern datakilde kan være langsom.
- Det kan være langsom, fordi det er iboende langsom (f.eks. en ineffektiv type server) ,
- fordi det er overvældet af for mange anmodninger,
- eller fordi din server eller fjernserveren er båndbredde begrænset.
- Fjerndatasættet er undertiden utilgængelig (igen, af en række grunde) .
- Omliggende på én kilde til dataene ikke skaleres godt (for eksempel, når mange brugere og mangeERDDAPs udnytte det) .
- Adgang af data fra en fjern datakilde kan være langsom.
- Hvordan det virker --EDDGridKopier løser disse problemer ved automatisk at foretage og vedligeholde en lokal kopi af data og servere data fra den lokale kopi.ERDDAP™kan tjene data fra den lokale kopi meget, meget hurtigt. Og at lave en lokal kopi lindrer byrden på fjernserveren. Og den lokale kopi er en sikkerhedskopi af den oprindelige, som er nyttig i tilfælde af noget sker til originalen.
Der er ikke noget nyt om at lave en lokal kopi af et datasæt. Hvad er nyt her er, at denne klasse gør det\*nemt og nemt\*at oprette og oprette\*opretholde vedligehold\*en lokal kopi af data fra en\*sort\*af typer fjerndatakilder og\*Tilføje metadata\*mens du kopierer dataene.
- Indsamling af data --EDDGridKopier gør den lokale kopi af dataene ved at anmode om bundter af data fra fjernbetjeningen<Datasæt> . Der vil være en smule for hver værdi af den venstre største (først først) akse variabel.EDDGridKopier afhænger ikke af fjerndatasættets indeksnumre for aksen - de kan ændre.
ADVARSEL: Hvis størrelsen af en mængde data er så stor (> > > > 2 GB) at det forårsager problemer,EDDGridKopier kan ikke bruges. (Desværre håber vi at have en løsning til dette problem i fremtiden.)
- \[Et alternativ tilEDDGridKopier - Hvis fjerndata er tilgængelige via downloadbare filer, ikke en webtjeneste, brugcache cache cache cache FraUrl mulighed forEDDGridFraFiles, som gør en lokal kopi af fjernfiler og tjener data fra de lokale filer.\]
- Lokale filer -- Hver mængde data gemmes i en separatNetCDFfil i en undermappe af bigParentDirectory /copy / datasetID / / / / (som angivet iopsætning.xml) . filnavne, der er oprettet fra akseværdier, ændres for at gøre dem fil-name-safe (For eksempel erstattes bindestreger af "x2D") - Dette påvirker ikke de faktiske data.
- Nye data -- Hver gangEDDGridKopier er genindlæst, det kontrollerer fjernbetjeningen<Dataset> for at se, hvilke bidder der er tilgængelige. Hvis filen for en flok data ikke allerede findes, tilføjes en anmodning om at få klumpen til en kø.ERDDAP's opgaveThread processer alle de køerede anmodninger om bidder af data, en-by-one. Du kan se statistik for opgavenThreads aktivitet på opgavenStatus sideog i områdetDaglig rapport. (Ja,ERDDAP™kunne tildele flere opgaver til denne proces, men det ville bruge masser af fjerndatakildens båndbredde, hukommelse og CPU tid, og masser af den lokaleERDDAP's båndbredde, hukommelse og CPU tid, heller ikke af hvilket er en god ide.)
BEMÆRK: Den første gang enEDDGridKopier er indlæst, (hvis alt går godt) masser af anmodninger om bundter af data vil blive tilføjet til opgaveThread's kø, men ingen lokale datafiler bliver oprettet. Så udvikleren vil mislykkes, men opgaveThread vil fortsætte med at arbejde og oprette lokale filer. Hvis alt går godt, vil opgaveThread gøre nogle lokale datafiler og det næste forsøg at indlæse datasættet (i ~15 minutter) vil lykkes, men i første omgang med en meget begrænset mængde data.
BEMÆRK: Når det lokale datasæt har nogle data og vises i dine dataERDDAP, hvis fjerndatasættet er midlertidigt eller permanent ikke tilgængelig, vil det lokale datasæt stadig arbejde.
ADVARSEL: Hvis fjerndatasættet er stor og/eller fjernserveren er langsom (det er problemet, er det ikke?!) , vil det tage lang tid at lave en komplet lokal kopi. I nogle tilfælde vil den nødvendige tid være uacceptabel. For eksempel, overføre 1 TB data over en T1-linje (0.15 GB/s) tager mindst 60 dage under optimale betingelser. Desuden bruger den masser af båndbredde, hukommelse og CPU tid på fjern og lokale computere. Løsningen er at sende en harddisk til administratoren af fjerndatasættet, så s/he kan lave en kopi af datasættet og sende harddisken tilbage til dig. Brug disse data som udgangspunkt ogEDDGridKopier vil tilføje data til det. (Det er en måde, atAmazon's EC2 Cloud Servicehåndterer problemet, selvom deres system har masser af båndbredde.)
ADVARSEL: Hvis en given værdi til venstre (først først) akse variabel forsvinder fra fjerndatasættet,EDDGridKopier sletter IKKE den lokale kopierede fil. Hvis du vil, kan du slette det selv.
Grid Copy checkSource Datadata
The The The The The The Thedatasets.xmlfor denne datasæt kan have et valgfrit tag
<checkSourceData>true</checkSourceData>
Standardværdien er sandt. Hvis / når du angiver det til falsk, vil datasættet ikke nogensinde kontrollere kildedatasættet for at se, om der er yderligere data tilgængelige.
KunSince
Du kan fortælleEDDGridKopier for at lave en kopi af et undersæt af kildedatasættet, i stedet for hele kildedatasættet, ved at tilføje et tag i formularen<KunSince> nogle af nogle Værdiværdi </kunSince> til datasættetsdatasets.xmlLidt.EDDGridKopier vil kun downloade dataværdier relateret til værdierne i den første dimension (normalt tidsdimensionen) som er større end nogle af nogle Værdiværdi . nogle af nogle Værdiværdi Kan være:
-
En relativ tid angivet vianow- nUnits . For eksempel,<KunSince>now-2 år</kunSince> fortæller datasættet til kun at foretage lokale kopier af dataene til data, hvor den ydre dimensions værdier (Normalt tidsværdier) er inden for de sidste 2 år (som genfordampes hver gang datasættet er genindlæst, hvilket er, når det ser efter nye data til at kopiere) . Se billedernenow- nUnits Syntaksens beskrivelse. Dette er nyttigt, hvis den første dimension har tidsdata, som det normalt gør.
EDDGridCopy sletter ikke lokale datafiler, der har data, der over tid bliver ældre endnow- nUnits . Du kan slette disse filer enhver tid, hvis du vælger at. Hvis du gør, anbefaler vi stærkt, at du indstiller enflag flag flag flagefter du sletter filerne for at fortælleEDDGridKopiér til at opdatere listen over cachelagrede filer.
-
Et fast punkt i tid angivet som en ISO 8601 strengyyyy-MM-ddTHH:mm:ssZ. For eksempel,<kunSince>2000-01T00:00:00Z</kunSince> fortæller datasættet kun til at lave lokale kopier af data, hvor den første dimensions værdi er \>=2000-01T00:00:00Z . Dette er nyttigt, hvis den første dimension har tidsdata, som det normalt gør.
-
Et flydende punktnummer. For eksempel,<kunSince>946684800.0</kunSince> . Enhederne vil være destinationsenhederne i den første dimension. For eksempel til tidsdimensioner, enhederne iERDDAP™er altid"seconds since 1970-01-01T00:00:00Z". Så 946684800.0"seconds since 1970-01-01T00:00:00Z"Det svarer til 2000-01T00:00:00Z. Dette er altid en nyttig mulighed, men er især nyttig, når den første dimension ikke har tidsdata.
EDDGridKopier Recomended brug
- Opret forbindelse<Datasæt> indgang (den oprindelige type, ikkeEDDGridKopiere Kopier) til fjerndatakilden. Få det til at arbejde korrekt, herunder alle de ønskede metadata.
- Hvis det er for langsom, skal du tilføje XML-kode til at pakke den i enEDDGridKopier datasæt.
- Brug en andendatasetID (måske ved at ændre dendatasetIDaf den gamledatasetIDlidt lidt lidt lidt) .
- Kopiere den<tilgængelig Til>,<reloadEveryNMinutes> og<påChange> fra fjernbetjeningenEDDGrid's XML til teEDDGridCopy's XML. (Deres værdier forEDDGridKopier materie; deres værdier for det indre datasæt bliver irrelevant.)
- ERDDAP™vil foretage og vedligeholde en lokal kopi af dataene.
- ADVARSEL:EDDGridKopier antager, at dataværdierne for hver klump ikke nogensinde ændrer sig. Hvis / når de gør, skal du manuelt slette de chunk-filer i bigParentDirectory /copy / datasetID / som ændrede ogflag flag flag flagde datasæt, der skal indlæses, så de slettede bidder vil blive erstattet. Hvis du har et e-mail-abonnement til datasættet, får du to e-mails: en når datasættet først genindlæsser og begynder at kopiere dataene, og en anden, når datasættet indlæses igen (automatisk automatisk automatisk) og registrerer de nye lokale datafiler.
- Alle akseværdier skal være lige. Til hver af akserne bortset fra venstre yderste (først først) , alle værdier skal være lig for alle børn. Nøjagtigheden af testen bestemmes afMatchAxisNDigits.
- Indstillinger, Metadata, Varer --EDDGridKopier bruger indstillinger, metadata og variabler fra den medfølgende kildedatasæt.
- Metadata -- Hvis du har brug for at ændre nogetaddAttributeseller ændre rækkefølgen af de variabler, der er forbundet med kildedatasættet:
- Ændre ændringenaddAttributesfor kildedatasættet idatasets.xml, efter behov.
- Slette en af de kopierede filer.
- Indstil et sætflag flag flag flagat indlæse datasættet umiddelbart. Hvis du bruger et flag, og du har et e-mail-abonnement på datasættet, får du to e-mails: en når datasættet først genindlæsser og begynder at kopiere dataene, og en anden, når datasættet indlæses igen (automatisk automatisk automatisk) og registrerer de nye lokale datafiler.
- Den slettede fil vil blive genskabt med de nye metadata. Hvis kildedatasættet ikke er tilgængeligt, kan kildedatasættetEDDGridKopier datasæt vil få metadata fra den regenererede fil, da det er den yngste fil.
EDDGridKopier skelet XML XML
<dataset type="EDDGridCopy" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or false
(the default)) -->
<checkSourceData>...</checkSourceData> <!-- 0 or 1 -->
<onlySince>...</onlySince> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1 -->
</dataset>
EDDTableFraCassandra
EDDTableFraCassandra håndterer data fra énCassandraTabel. Cassandra er en NoSQL database.
- ERDDAP™kan arbejde med Cassandra v2 og v3 uden ændringer eller forskelle i opsætning. Vi har testet medCassandra v2 og v3 fra Apache Apache. Det er sandsynligt, atERDDAP™kan også arbejde med Cassandra downloadet fra DataStax.
- For Aug 2019 - maj 2021 havde vi problemer med at få Cassandra til at arbejde med AdoptOpenJdkJavav8. Det kastede en EXCEPTION\_ACCESS\_VIOLATION). Men nu (maj 2021) , det problem er gået: vi kan med succes bruge Cassandra v2.1.22 og AdoptOpenJdk jdk8u292-b10.
En tabel
Cassandra understøtter ikke "forbindelser" på den måde, som relationsdatabaser gør. EnERDDAP™EDDTableFraCassandra datasæt kort til en (måske et undersæt af en) Cassandra bord.
Cassandradatasets.xml
- ERDDAP™Leveres med CassandraJavadriver, så du ikke behøver at installere den separat.
- Læs omhyggeligt alle disse dokumenters oplysninger om EDDTableFraCassandra. Nogle af detaljerne er meget vigtige.
- The CassandraJavadriver er beregnet til at arbejde med Apache Cassandra (1.2+) og DataStax Enterprise (3.1+) . Hvis du bruger Apache Cassandra 1.2.x, skal du redigere cassandra.yaml-filen for hver node for at indstille start\_native\_transport: sand, derefter genstarte hver node.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere, at for at finjustere den (især [<partition partition Klik her for at fjerne KeySourceNames>] (#keypartitionnames) ). Du kan indsamle de oplysninger, du har brug for til at oprette XML til en EDDTableFraCassandra datasæt ved at kontakte Cassandra og ved at søge på internettet.
GenererDatasets Xml har to særlige muligheder for EDDTableFraCassandra:
- Hvis du indtaster "!!!LIST!!!" (uden tilbud) for keyspace, programmet vil vise en liste over nøglerum
- Hvis du indtaster et bestemt nøglerum, og indtast derefter "!!!LIST!!!" (uden tilbud) for tabelnavnet viser programmet en liste over tabeller i det centrale rum og deres kolonner.
Case følsomhed
- Case-infølsomme nøglerum og tabelnavne - Cassandra behandler nøglerum og tabelnavne i enui-infølsom måde. På grund af dette, du SKAL NEVER bruge et reserveret ord (men med en anden sag) som Cassandra nøglerum eller tabelnavn.
- Case-infølsomme kolonnenavne -- Som standard behandler Cassandra kolonnenavne i en tilfælde-infølsom måde. Hvis du bruger en af Cassandras reserverede ord som et kolonnenavn (Hej!) , du SKAL bruge
<columnNameQuotes>"<columnNameQuotes>
i in in in indatasets.xmlfor denne datasæt, så Cassandra ogERDDAP™vil behandle kolonnenavnene i en tilfælde-følsom måde. Dette vil sandsynligvis være en massiv hovedpine for dig, fordi det er svært at bestemme de tilfældefølsomme versioner af kolonnenavne -- Cassandra viser næsten altid kolonnenavne som alle lavere-case, uanset det sande tilfælde.
- Arbejd tæt sammen med Cassandra-administratoren, der kan have relevant erfaring. Hvis datasættet ikke indlæses, skal du læse datasættetfejlmeddelelsenøje for at finde ud af hvorfor.
Cassandra<Tilslutningstilslutning Ejendom>
Cassandra har forbindelsesegenskaber, som kan specificeres idatasets.xml. Mange af disse vil påvirke ydeevnen af Cassandra-ERDDAP™tilslutning. Desværre, Cassandra egenskaber skal indstilles programmatisk iJava, såERDDAP™skal have kode for hver ejendomERDDAP™understøtter. I øjeblikket,ERDDAP™understøtter disse egenskaber: (De viste standarder er, hvad vi ser. Dit systems standarder kan være anderledes.)
- Generelle indstillinger
<Tilslutningstilslutning Ejendomsnavn kompressionskomprimering ↓ Ingen ingen ingen|LZ4|snappy </ tilslutning Ejendom> (Tilfældefølsomme, standard=none)
(Generel kompressionsrådgivning: Brug 'none', hvis forbindelsen mellem Cassandra ogERDDAP™er lokal/hurtig og brug 'LZ4', hvis forbindelsen er fjern/slow.)
<Tilslutningstilslutning Ejendomsnavn legitimationsoplysninger ↓ brugernavn/password </ tilslutning Ejendom> (Det er en bogstavelig'/')
<Tilslutningstilslutning Ejendomsnavn metrics ↓ sande sande sande sande|falsk </ tilslutning Ejendom> (2021-01-25 var standard=true, nu ignoreret og altid falsk)
<Tilslutningstilslutning Ejendomsnavn portport ↓ aInteger </ tilslutning Ejendom> (standard for indfødt binær protokol=9042)
<Tilslutningstilslutning Ejendomsnavn ssl ↓ sande sande sande sande|falsk </ tilslutning Ejendom> (Standard=false)
(Mit hurtige forsøg på at bruge ssl mislykkedes. Hvis du lykkes, så fortæl mig, hvordan du gjorde det.) - Forespørgselsindstillinger
<Tilslutningstilslutning Ejendomsnavn konsistens Niveauniveau ↓ alle|nogen som helst|hver \_quorum|lokal \_one|Lokal \_quorum|Lokal \_serial|én|quorum|seriel serie|tre|to to to to </ tilslutning Ejendom> (Tilfældefølsomme, standard=ONE)
<Tilslutningstilslutning Ejendomsnavn HentSize ↓ aInteger </ tilslutning Ejendom> (Standard=5000)
(Du må ikke vælge HentSize til en mindre værdi.)
<Tilslutningstilslutning Ejendomsnavn seriekonsistencyLevel ↓ alle|nogen som helst|hver \_quorum|lokal \_one|Lokal \_quorum|Lokal \_serial|én|quorum|seriel serie|tre|to to to to </ tilslutning Ejendom> (Tilfældefølsomme, standard=SERIAL) - Stikkontakt muligheder
<Tilslutningstilslutning Ejendomsnavn TilslutningstidoutMillis ↓ aInteger </ tilslutning Ejendom> (Standard=5000)
(Tilslut ikke TimeoutMillis til en mindre værdi.)
<Tilslutningstilslutning Ejendomsnavn HoldAlive ↓ sande sande sande sande|falsk </ tilslutning Ejendom> <Tilslutningstilslutning Ejendomsnavn læst afTimeoutMillis ↓ aInteger </ tilslutning Ejendom> (Cassandras standard readTimeoutMillis er 12000, menERDDAP™ændrer standarden til 120000. Hvis Cassandra smider læsetidouts, kan det ikke hjælpe, fordi Cassandra nogle gange smider dem før denne tid. Problemet er mere sandsynligt, at du gemmer for meget data per partition Nøglekombination.)
<Tilslutningstilslutning Ejendomsnavn modtageBufferSize ↓ aInteger </ tilslutning Ejendom> (Det er uklart, hvad standard modtageBufferSize er. Sæt ikke dette til en lille værdi.)
<Tilslutningstilslutning Ejendomsnavn soLinger ↓ aInteger </ tilslutning Ejendom> <Tilslutningstilslutning Ejendomsnavn TcpNoDelay ↓ sande sande sande sande|falsk </ tilslutning Ejendom> (Standard=null)
Hvis du har brug for at kunne indstille andre forbindelsesegenskaber, se voressektion om at få ekstra støtte.
For en given opstart af Tomcat anvendes forbindelsesproperties kun første gang et datasæt oprettes til en given Cassandra URL. Alle genindlæsninger af disse datasæt og alle efterfølgende datasæt, der deler den samme URL, vil bruge disse originale forbindelsespunkter.
CQL
Hoteller i nærheden af The Cassandra Language (CQL) er overfladisk ligesom SQL, det forespørgselssprog, der bruges af traditionelle databaser. Fordi fordiOPeNDAP's tabulære data anmodninger blev designet til at efterligne SQL-tabular-data anmodninger, det er muligt forERDDAP™til at konvertere tabulære data anmodninger til CQL Bound/PreparedStatements.ERDDAP™Skriver erklæringen ilog.txtsom
erklæring som tekst: I nærheden af teStatementAsText
Versionen af den erklæring, du ser, vil være en tekst repræsentation af erklæringen, og vil kun have "?" hvor begrænsninger værdier vil blive placeret.
Ikke så simpelt -- Desværre har CQL mange restriktioner på, hvilke kolonner kan queriedes med hvilke typer begrænsninger, f.eks. partitionskolonner kan optages med = og IN, såERDDAP™sender nogle begrænsninger til Cassandra og gælder alle begrænsninger efter data modtages fra Cassandra. For at hjælpeERDDAP™deal effektivt med Cassandra, skal du angive [<partition partition Klik her for at fjerne KeySourceNames>] (#keypartitionnames) [<Kolonprinsessenavne>] (#clustercolumnsourcenavne) og [<Indeksekontekster>] (#indexcolumnsourcenavne) i in in in indatasets.xmlfor denne datasæt. Disse er de vigtigste måder at hjælpeERDDAP™arbejde effektivt med Cassandra. Hvis du ikke fortællerERDDAP™disse oplysninger, datasættet vil være smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
<partition partition Hovedhjørnenavne>
Fordi partitionsnøgler spiller en central rolle i Cassandra tabeller,ERDDAP™behov for at vide deressourceNames og, hvis relevant, andre oplysninger om, hvordan man arbejder med dem.
- Du skal angive en koma-separeret liste over partitionstastiske kildekolonnenavne idatasets.xmlvia<partition partition KeySourceNames>. Enkel eksempel,
<partitionKeySourceNames>station, deviceid<partitionKeySourceNames>
Mere komplekst eksempel,
<partitionKeySourceNames>deviceid=1007, date/sampletime/1970-01-01<partitionKeySourceNames>
- TimeStamp Partition Keys -- Hvis en af partitionstasten kolonner er en tidsstempel kolonne, der har en grovere version af en anden gangetamp kolonne, skal du angive dette via
partitionKeySourcName / anden kolonneKærksomhed /time\_precision
hvortime\_precisioner en aftime\_precisionstrenge brugt andre steder iERDDAP. Ruten Z i sporettime\_precisionstreng er standarden, så det ikke betyder noget, hvistime\_precisionstreng ender i Z eller ej. For eksempel,ERDDAP™tolkningsdato/samltid/1970-01 som "Constraints for dato kan konstrueres fra begrænsninger på prøvetid ved hjælp af dettetime\_precision." Den faktiske konvertering af begrænsninger er mere kompleks, men det er oversigten. Brug dette, når det er relevant. Det muliggørERDDAP™at arbejde effektivt med Cassandra. Hvis dette forhold mellem kolonner findes i et Cassandra-bord, og du ikke fortællerERDDAP™, datasættet vil være smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer. - Enkelt Value Partition Keys -- Hvis du ønsker enERDDAP™datasæt til at arbejde med kun én værdi af en partitionsnøgle, angive PartitionKeySourceName=værdi . Brug ikke citater til en numeriske kolonne, f.eks. enhedid =007 Brug citater til en streng kolonne, for eksempel, stationid TwitchPoint Pinos"
- Datasæt Standard Sortering -- rækkefølgen af partitionstasten<dataVariable>'er idatasets.xmlbestemmer standardtypen af resultaterne fra Cassandra. Selvfølgelig kan brugerne anmode en anden sorteringsordre for et givet sæt af resultater ved at afvente ogorderBy (" " " " kommanderet liste over variable " " " ") til slutningen af deres forespørgsel.
- Som standard, Cassandra ogERDDAP™behandle kolonnenavne i en tilfælde-infølsom måde. Men hvis du indstillerkolonnenavnQuotestil ",ERDDAP™vil behandle Cassandra kolonnenavne en i tilfælde-følsom måde.
<partition partition KeyCSV>
Hvis dette er angivet,ERDDAP™vil bruge det i stedet for at spørge Cassandra til partitionen Nøgleinformation hver gang datasættet er genindlæst. Dette giver listen over forskellige partitionsnøgleværdier, for at de vil blive brugt. Tiden skal være angivet som sekunder siden 1970-01T00:00:00Z. Men der er også to særlige alternative måder at angive gange (hver kodet som en streng) :
- tid (ENISO8601 Tidstid) (Kan kodes som en streng)
- "tiderne (aISO8601StartTime, stepeSeconds, stopTime) " " " " (SKAL være kodet som en streng)
stop Tid kan være en ISO8601 Tid eller en "now-nUnits" tid (f.eks. "now-3 minutter") . stop Tiden behøver ikke at være en præcis match af start Tid + x stepeSeconds. En række med en tid () værdi bliver udvidet i flere rækker før hver forespørgsel, så listen over partition Nøgler kan altid være helt opdateret. For eksempel,
<partitionKeyCSV>
deviceid,date
1001,"times(2014-11-01T00:00:00Z, 86400, 2014-11-02T00:00:00Z)"
1007,"time(2014-11-07T00:00:00Z)"
1008,time(2014-11-08T00:00:00Z)
1009,1.4154912E9
</partitionKeyCSV>
udvider sig i denne tabel af partitionsnøglekombinationer:
deviceid,date
1001,1.4148E9
1001,1.4148864E9
1007,1.4153184E9
1008,1.4154048E9
1009,1.4154912E9
<klyngelinjeKærenavn:
Cassandra accepterer SQL-lignende begrænsninger på klyngekolonner, som er de kolonner, der udgør den anden del af den primære nøgle (efter partitionstasten (s s s) ) . Så er det vigtigt, at du identificerer disse kolonner via<Klyngeformet navne>. Dette gør det muligtERDDAP™at arbejde effektivt med Cassandra. Hvis der er klyngekolonner, og du ikke fortællerERDDAP, datasættet vil være smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
- For eksempel,<Klyngeformet navne> I nærheden af myCluster Cruise1, myCluster <Klik her for at få flere oplysninger.
- Hvis et Cassandra-bord ikke har klyngekolonner, skal du enten ikke angive<klyngelinjeKildenavne>, eller angive den uden værdi.
- Som standard, Cassandra ogERDDAP™behandle kolonnenavne i en tilfælde-infølsom måde. Men hvis du indstillerkolonnenavnQuotestil ",ERDDAP™vil behandle Cassandra kolonnenavne i en tilfælde-følsom måde.
<indekseringsnavn:
Cassandra accepterer'='begrænsninger på sekundære indekskolonner, som er de kolonner, du har eksplicit oprettet indekser til via
CREATE INDEX *indexName* ON *keyspace.tableName* (*columnName*);
(Ja, forældrene er nødvendige.)
Så er det meget nyttigt, hvis du identificerer disse kolonner via<Klik her for at se vores liste. Dette gør det muligtERDDAP™at arbejde effektivt med Cassandra. Hvis der er indekskolonner, og du ikke fortællerERDDAP, nogle forespørgsler vil være nålesly, smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
- For eksempel,<Indholdsfortegnelse myIndex kolonne1, myIndex </index kolonneKærenavn>
- Hvis et Cassandra-bord ikke har indekskolonner, skal du enten ikke angive<indekseringsnavn>, eller angive den uden værdi.
- ADVARSEL: Cassandra indekser er ikke ligesom database indekser. Cassandra indekser hjælper kun med'='begrænsninger. Og de er kunanbefalet anbefaletfor kolonner, der har langt færre forskellige værdier end samlede værdier.
- Som standard, Cassandra ogERDDAP™behandle kolonnenavne i en tilfælde-infølsom måde. Men hvis du indstillerkolonnenavnQuotestil ",ERDDAP™vil behandle Cassandra kolonnenavne i en tilfælde-følsom måde.
<maxRequestFraction>
Hvornår Hvornår skal man HvornårERDDAP™ (gen igen) indlæser et datasæt,ERDDAP™Få fra Cassandra listen over forskellige kombinationer af partitionsnøgler. For et stort datasæt, vil antallet af kombinationer være enorm. Hvis du ønsker at forhindre brugernes anmodninger fra at anmode om de fleste eller alle datasættet (eller endda en anmodning, der spørgerERDDAP™at downloade de fleste eller alle data for at filtrere dem) , du kan fortælleERDDAP™kun for at tillade anmodninger, der reducerer antallet af kombinationer ved nogle beløb via<maxRequestFraction>, som er et flydende punktnummer mellem 1e-10 (hvilket betyder, at anmodningen ikke behøver mere end 1 kombination i en milliard) og 1 (standarden, hvilket betyder, at anmodningen kan være for hele datasættet) . Hvis et datasæt f.eks. har 10000 forskellige kombinationer af partitionsnøgler og maxRequestFraction er indstillet til 0,1, derefter anmodninger, der har brug for data fra 1001 eller flere kombinationer vil generere en fejlmeddelelse, men anmodninger, der har brug for data fra 1000 eller færre kombinationer, vil blive tilladt.
Generelt, jo større datasættet, den lavere bør du indstille<maxRequestFraction>. Så du kan indstille det til 1 for et lille datasæt, 0,1 for et mellemstort datasæt, 0,01 for et stort datasæt, og 0.0001 for et stort datasæt.
Denne tilgang er langt fra perfekt. Det vil føre til nogle rimelige anmodninger bliver afvist, og nogle for-store anmodninger bliver tilladt. Men det er et vanskeligt problem, og denne løsning er meget bedre end ingenting.
CassandrasubsetVariables
Som med andre EDDTable datasæt, kan du angive en komma-separat liste over<dataVariable> > > >destinationNames i en global egenskab kaldet "subsetVariables" for at identificere variabler, der har et begrænset antal værdier. Dataset vil derefter have en .subset webside og vise lister over forskellige værdier for disse variabler i rullelister på mange websider.
Inklusive blot partitionsnøgler og statiske kolonner på listen er STRONGLY ENCOUUDED. Cassandra vil være i stand til at generere listen over forskellige kombinationer meget hurtigt og nemt hver gang datasættet er reloaded. En undtagelse er gangetamp partition nøgler, der er grove versioner af nogle andre gangetamp kolonne - det er sandsynligvis bedst at forlade disse ud af listen oversubsetVariablesDa der er et stort antal værdier, og de er ikke meget nyttige for brugere.
Hvis du inkluderer ikke-partition nøgle, ikke-statiske variabler på listen, vil det sandsynligvis være meget meget meget Betydeligt dyrt for Cassandra hver gang datasættet er genindlæst, fordiERDDAP™skal se gennem hver række af datasættet for at generere oplysningerne. Faktisk er forespørgslen sandsynligvis ikke. Så bortset fra meget små datasæt, dette er STRONGLY DISCOURAGED.
Cassandra DataTypes
Fordi der er nogle ambiguity om, somCassandra datatyperkort til hvilketERDDAP™datatyper, skal du angive en [<DataType>] (#datatype) tag for hver [<dataVariable>] (#datavariable) at fortælleERDDAP™som datatype til brug. StandardERDDAP™Datadata Typer (og de mest almindelige tilsvarende Cassandra datatyper) er:
- boolean (boolean) , somERDDAP™Så gemmer sig som bytes
- byte (int, hvis serien er -128 til 127)
- Kort kort kort kort (int, hvis rækkevidden er -32768 til 32767)
- int (int, tæller?, varint?, hvis rækkevidden er -2147483648 til 2147483647)
- længe (bigint, tæller?, varint?, hvis rækkevidden er -9223372036854775808 til 9223372036854775)
- flyder (flyder)
- Dobbelt dobbelt (Dobbelt, decimal (med mulig tab af præcision) , timetamp)
- Billeder af char (ascii eller tekst, hvis de aldrig har mere end 1 tegn)
- streng streng streng (ascii, tekst, varchar, inet, uuid, timeuuid, blob, kort, sæt, liste?)
Cassandra'sgangetamper en særlig sag: brugERDDAP's dobbelte data Type.
Hvis du angiver en streng dataType iERDDAP™for et Cassandra kort, sæt eller liste, kortet, sæt eller liste på hver Cassandra række vil blive konverteret til en enkelt streng på en enkelt række i rækkenERDDAP™Tabel.ERDDAP™har et alternativt system til lister; se nedenfor.
type type type Lister --ERDDAP[]<DataType>] (#datatype) tag til CassandradataVariables kan inkludere den almindeligeERDDAP™Datadata Typer (Se ovenstående) plus flere særlige datatyper, der kan bruges til Cassandra liste kolonner: booleanList, byteList, ubyte,List, ukortList, intList, uintList, longList, ulongList, flyList, dobbeltList, charList, StringList. Når en af disse listekolonner er i resultaterne bestået tilERDDAP™, hver række kildedata vil blive udvidet til liste. størrelse størrelse størrelse størrelse størrelse størrelse () rækker af data iERDDAP; enkle data Typer (f.eks. int) i denne kildedatarække vil blive duplikeret liste. størrelse størrelse størrelse størrelse størrelse størrelse () tider. Hvis resultaterne indeholder mere end én liste variabel, alle lister på en given række data skal have samme størrelse og SKAL være "parallel" lister, ellerERDDAP™vil generere en fejlmeddelelse. For eksempel til aktuelle målinger fra en ADCP, dybdedybde\[0\], uCurrent\[0\], vCurrent\[0\], og zCurrent\[0\]er alle relateret, og dybdedybde\[1 1 1 1\], uCurrent\[1 1 1 1\], vCurrent\[1 1 1 1\], og zCurrent\[1 1 1 1\]er alle relaterede,... Alternativt, hvis du ikke ønskerERDDAP™for at udvide en liste til flere rækker i rækkenERDDAP™tabel, angive String som tabellendataVariable's data Type så hele listen repræsenteres som en streng på en række iERDDAP.
Oplysninger om Cassandra TimeStamp
Cassandras tidsstempeldata er altid klar over tidszoner. Hvis du indtaster timetamp data uden at angive en tidszone, antager Cassandra timettamp den lokale tidszone.
ERDDAP™understøtter tidsstempeldata og præsenterer altid dataene i dataeneZulu/GMT tidszone. Så hvis du indtaster timetamp data i Cassandra ved hjælp af en tidszone andet endZulu/GMT, huske, at du har brug for at gøre alle forespørgsler til tidsstempel data iERDDAP™ved hjælp afZulu/GMT tidszone. Så ikke blive overrasket, når de gangetamp værdier, der kommer ud afERDDAPskiftes af flere timer på grund af tidszonekontakten fra lokal tilZulu/GMT tid.
- I nærheden af In In In In In In In In In In In In In InERDDAP'sdatasets.xml, i den<dataVariable> tag til en timetamp variabel, sæt
<dataType>double</dataType>
og i<addAttributes> sæt
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
- Forslag til: Hvis dataene er et tidsinterval, er det nyttigt at have tidsstempelværdierne henviser til centrum af det underforståede tidsinterval (for eksempel, middag) . Hvis en bruger f.eks. har data til 2010-03-26T1Z fra et andet datasæt, og de ønsker de nærmeste data fra dette Cassandra-datasæt, der har data for hver dag, så dataene for 2010-03-26T12:00Z (repræsenterer Cassandra data for denne dato) er naturligvis det bedste (i modsætning til midnat før eller efter, hvor det er mindre indlysende, som er bedst) .
- ERDDAP™har et værktøj tilKonverter en Numeric Tid til/fra en streng tid.
- Se endnuSådan kan duERDDAP™Tilbud med Time.
Integer nuancer
Cassandra understøtter nulls i Cassandra int (ERDDAP™int) og storint (ERDDAP™længe) kolonner, menERDDAP™Støtter ikke sande tal til nogen form for tekst. Som standard vil Cassandra iteger nulls blive konverteret iERDDAP™Flyrejser til 2147483647 for int kolonner eller 9223372036854775 for lange kolonner. Disse vises som "NaN" i nogle typer tekst output filer (for eksempel .csv) , "" i andre typer af tekst output filer (for eksempel,.htmlTable) , og det specifikke nummer (2147483647 for manglende værdier) i andre typer af filer (for eksempel, binære filer som.ncog måtte) . En bruger kan søge efter rækker af data med denne type manglende værdi ved at henvise til "NaN", f.eks. "&windSpeed=NaN".
Hvis du bruger en anden heltalsværdi til at angive manglende værdier i din Cassandra tabel, skal du identificere den værdi idatasets.xml:
<att name="missing\_value" type="int"\>-999</att>
Til Cass flydendeandra punkt kolonner, vil nulls blive konverteret til NaNs iERDDAP. Til Cassandra datatyper, der er konverteret til strenge iERDDAP™, nulls bliver konverteret til tomme strenge. Det bør ikke være et problem.
"WARNING: Re-preparing allerede forberedt forespørgsel"
- "WARNING: Re-preparing allerede forberedt forespørgsel" i Tomcat /logs/catalina.out (eller andre Tomcat logfil)
Cassandra-dokumentationen siger, at der er problemer, hvis den samme forespørgsel er lavet i en forberedetStatement to gange (eller mere) . (Se dettefejlrapport.) For at undgå at gøre Cassandra gal,ERDDAP™cacher alle forberedede stater, så det kan genbruge dem. Denne cache går tabt, hvis / når Tomcat/ERDDAP™genstartes, men jeg tror, at det er okay, fordi de forberedede stater er forbundet med en given session (mellem mellem mellem mellemJavaog Cassandra) , som også er tabt. Så kan du se disse meddelelser. Jeg kender ingen anden løsning. Heldigvis er det en advarsel, ikke en fejl (selvom Cassandra truer, at det kan føre til præstationsproblemer) .
Cassandra hævder, at forberedende stater er gode for evigt, såERDDAP's cached ForbereddStatements bør aldrig blive forældet/ugyldige. Hvis det ikke er sandt, og du får fejl om visse forberededeStatements er forældede/ugyldige, så skal du genstarteERDDAP™at ryddeERDDAP's cache af ForbereddStatements.
Cassandra Security
Se endnuSecuring Cassandra
Når du arbejder med Cassandra, skal du gøre tingene så sikkert og sikkert som muligt for at undgå at tillade en skadelig bruger at skade din Cassandra eller få adgang til data, de ikke bør have adgang til.ERDDAP™forsøger at gøre tingene på en sikker måde, også.
- Vi opfordrer dig til at opsætteERDDAP™at oprette forbindelse til Cassandra som en Cassandra-bruger, der kun har adgang til den relevant bordbord (s s s) og har kun READ privilegier.
- Vi opfordrer dig til at oprette forbindelse fraERDDAP™til Cassandra så det
- Brug altid SSL,
- Tillad kun forbindelser fra én IP-adresse (eller en blok af adresser) og fra den eneERDDAP™bruger og bruger
- Overfør kun adgangskoder i deres MD5 harhed form.
- \[I nærheden af KNOWN PROBLEM\]Forbindelsesproperties (herunder adgangskode!) gemmes som almindelig tekst idatasets.xml. Vi har ikke fundet en måde at tillade administratoren at indtaste Cassandra-adgangskoden underERDDAP's opstart i Tomcat (som opstår uden brugerindgang) , så adgangskoden skal være tilgængelig i en fil. For at gøre dette mere sikkert:
- Dig (te te te teERDDAP™Administrator) bør være ejeren afdatasets.xmlog har READ og WRITE adgang.
- Lav en gruppe, der kun indeholder bruger=tomcat. Brug chgrp til at gøre den gruppe tildatasets.xml, med bare READ privilegier.
- Brug chmod til at tildele o-rwx-rettigheder (Læs eller WRITE adgang til "andre" brugere) for for fordatasets.xml.
- Hvornår i øjeblikketERDDAP™, adgangskode og andre forbindelsesegenskaber gemmes i "private"Javavariabler.
- Anmodninger fra klienter er parsed og kontrolleret for gyldighed, før de genererer CQL anmodninger om Cassandra.
- Anmodninger til Cassandra er lavet med CQL Bound/PreparedStatements, for at forhindre CQL injektion. I alle tilfælde, Cassandra er iboende mindre modtagelige for CQL injektion end traditionelle databaser er atSQL-indsprøjtning.
Cassandra Speedandra
Cassandra kan være hurtig eller langsom. Der er nogle ting du kan gøre for at gøre det hurtigt:
- Generelt - CQLs natur er, at forespørgsler erdeklarativ. De angiver præcis, hvad brugeren ønsker. De omfatter ikke en specifikation eller hints til, hvordan forespørgslen skal håndteres eller optimeres. Så der er ingen vej tilERDDAP™at generere forespørgslen på en sådan måde, at det hjælper Cassandra med at optimere forespørgslen (eller på nogen måde angive, hvordan forespørgslen skal håndteres) . Generelt er det op til Cassandra-administratoren at sætte tingene op (f.eks. indekser) for at optimere for visse typer forespørgsler.
- Angiv de tidsstempel kolonner, der er relateret til grover-præcision timetamp partition nøgler via [<partition partition Klik her for at fjerne KeySourceNames>] (#keypartitionnames) er den vigtigste måde at hjælpeERDDAP™arbejde effektivt med Cassandra. Hvis dette forhold findes i et Cassandra-bord, og du ikke fortællerERDDAP™, datasættet vil være smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
- Angive klyngekolonnerne via [<Kolonprinsessenavne>] (#clustercolumnsourcenavne) er den anden vigtigste måde at hjælpeERDDAP™arbejde effektivt med Cassandra. Hvis der er klyngekolonner, og du ikke fortællerERDDAP, en stor del af de mulige forespørgsler til data vil være nålesly, smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
- Lav makeupIndexerfor fælles forbrugsstoffer -- Du kan fremskynde et par forespørgsler ved at oprette indekser til Cassandra kolonner, der ofte er omfattet af "reserve begrænsninger.
Cassandra kan ikke lave indekser til liste, sæt eller kort kolonner.
- Angiv indekskolonnerne via [<Indeksekontekster>] (#indexcolumnsourcenavne) er en vigtig måde at hjælpeERDDAP™arbejde effektivt med Cassandra. Hvis der er indekskolonner, og du ikke fortællerERDDAP, nogle forespørgsler til data vil være nålesly, smertefuldt langsom iERDDAP™Brug tonsvis af Cassandra ressourcer.
Cassandra statistik
- "Cassandra statistik" Diagnosmeddelelser-- Til alleERDDAP™Brugerforespørgsel til et Cassandra-datasæt,ERDDAP™udskriver en linje i logfilen, bigParentDirectory /logs/log.txt, med nogle statistikker relateret til forespørgslen, for eksempel
\\* Cassandra stats: partitionKeyTable: 2/10000=2e-4 < 0.1 nCassRows=1200 nErddapRows=12000 nRowsToUser=7405
Ved hjælp af tallene i eksemplet ovenfor betyder det:
- Hvornår Hvornår skal man HvornårERDDAP™sidst (gen igen) indlæst denne datasæt, Cassandra fortalteERDDAP™at der var 10000 forskellige kombinationer af partitionsnøgler.ERDDAP™cached alle de forskellige kombinationer i en fil.
- Grundet brugerens begrænsninger,ERDDAP™identificerede 2 kombinationer ud af 10000, der kunne have de ønskede data. Så,ERDDAP™vil foretage 2 opkald til Cassandra, en for hver kombination af partitionsnøgler. (Det er hvad Cassandra kræver.) Det er klart besværlig, hvis et stort datasæt har et stort antal kombinationer af partitionsnøgler og en given anmodning ikke drastisk reducerer det. Du kan kræve, at hver anmodning reducerer nøglerummet ved at indstille [<maxRequestFraction>] (#maks.) . Her, 2/10000=2e-4, som er mindre end maxRequestFraktion (0,1 0,1) , så anmodningen blev tilladt.
- Efter at have anvendt begrænsningerne på partitionsnøglerne,klynge kolonner, ogIndeks kolonnersom blev sendt afERDDAP™, Cassandra returnerede 1200 rækker data tilERDDAP™i resultatSet.
- Resultatet Sæt skal have haftDatadata Type= nogle typer Listekolonner kolonner (med et gennemsnit på 10 varer pr. liste) , fordiERDDAP™udvidet de 1200 rækker fra Cassandra til 12000 rækker iERDDAP.
- ERDDAP™gælder altid alle brugerens begrænsninger for dataene fra Cassandra. I dette tilfælde, begrænsninger, som Cassandra ikke havde håndteret reduceret antallet af rækker til 7405. Det er antallet af rækker sendt til brugeren.
Den vigtigste brug af disse diagnostiske meddelelser er at sikre, atERDDAP™gør, hvad du tror, det gør. Hvis det ikke er (For eksempel er det ikke at reducere antallet af forskellige kombinationer som forventet?) , så kan du bruge oplysningerne til at prøve at finde ud af, hvad der foregår forkert.
- Forskning og eksperiment for at finde og sætte bedre [<LinkProperty>] (#cassandra-connectionproperty) 's.
- Kontroller hastigheden af netværksforbindelsen mellem Cassandra ogERDDAP. Hvis forbindelsen er langsom, kan du se, om du kan forbedre den. Den bedste situation er, nårERDDAP™kører på en server tilknyttet samme (hurtigt) skifte som serveren, der kører Cassandra node, som du forbinder.
- Vær venligst tålmodig. Læs oplysningerne her og i Cassandra-dokumentationen omhyggeligt. Eksperiment. Tjek dit arbejde. Hvis Cassandra-ERDDAP™forbindelsen er stadig langsommere, end du forventer, skal du inkludere din Cassandra bords schema og dinERDDAP™klump afdatasets.xmlog se voressektion om at få ekstra støtte.
- Hvis alt andet fejler, Overvej at gemme dataene i en samling afNetCDFv3.ncfiler filer filer (specielt specielt.ncfiler, der bruger deCF Diskret Sampling Geometries (DSG) Contiguous Ragged Array datastrukturer og så kan håndteres medERDDAP'sEDDTableFraNcCFFiles) . Hvis de er logisk organiseret (hver med data til en smule plads og tid) ,ERDDAP™kan udtrække data fra dem meget hurtigt.
EDDTableFraCassandra skelet XML
<dataset type="EDDTableFromCassandra" datasetID\="..." active\="..." >
<ipAddress>...</ipAddress>
<!-- The Cassandra URL without the port number, for example,
127.0.0.1 REQUIRED. -->
<connectionProperty name="name">value</connectionProperty>
<!-- The names (for example, "readTimeoutMillis") and values
of the Cassandra properties that ERDDAP™ needs to change.
0 or more. -->
<keyspace>...</keyspace> <!-- The name of the keyspace that has
the table. REQUIRED. -->
<tableName>...</tableName> <!-- The name of the table, default = "".
REQUIRED. -->
<partitionKeySourceNames>...<partitionKeySourceNames>
<!-- REQUIRED. -->
<clusterColumnSourceNames>...<clusterColumnSourceNames>
<!-- OPTIONAL. -->
<indexColumnSourceNames>...<indexColumnSourceNames> <!-- OPTIONAL. -->
<maxRequestFraction>...<maxRequestFraction>
<!-- OPTIONAL double between 1e-10 and 1 (the default). -->
<columnNameQuotes>...<columnNameQuotes> <!-- OPTIONAL.
Options: \[nothing\] (the default) or ". -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include a <dataType> tag. See
Cassandra DataTypes.
For Cassandra timestamp columns, set dataType=double and
units=seconds since 1970-01-01T00:00:00Z -->
</dataset>
EDDTableFraDapSequence
EDDTableFraDapSequence håndterer variabler inden for 1- og 2-niveausekvenser fraDAPservere såsomDAPPER (var på https://www.pmel.noaa.gov/epic/software/dapper/ , nu ophørt) .
-
Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det. Du kan indsamle de oplysninger, du har brug for ved at se på kildedatasættets DDS- og DAS-filer i din browser (ved at tilføje .das og .dds til kildedatasættets DDS- og DAS-filer i din browser (ved at tilføje .das og .dds til kildedatasættets DDS- og DAS-filer i din browser)sourceUrl(en eksempel var på https://dapper.pmel.noaa.gov/dapper/epic/tao\\_time\\_series.cdp.dds ).
-
En variabel er i enDAPsekvensen, hvis .dds svar indikerer, at datastrukturen holder variablen er en "sequence" (Tilfælde i følsom) .
-
I nogle tilfælde vil du se en sekvens inden for en sekvens, en 2-niveau sekvens -- EDDTableFraDapSequence håndterer også disse.
EDDTableFraDapSequence skelet XML XML
<dataset type="EDDTableFromDapSequence" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<outerSequenceName>...</outerSequenceName>
<!-- The name of the outer sequence for DAP sequence data.
This tag is REQUIRED. -->
<innerSequenceName>...</innerSequenceName>
<!-- The name of the inner sequence for DAP sequence data.
This tag is OPTIONAL; use it if the DAP data is a two level
sequence. -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<sourceCanConstrainStringEQNE>true|false</sourceCanConstrainStringEQNE>
<sourceCanConstrainStringGTLT>true|false</sourceCanConstrainStringGTLT>
<sourceCanConstrainStringRegex>...</sourceCanConstrainStringRegex>
<skipDapperSpacerRows>...</skipDapperSpacerRows>
<!-- skipDapperSpacerRows specifies whether the dataset
will skip the last row of each innerSequence other than the
last innerSequence (because Dapper servers put NaNs in the
row to act as a spacer). This tag is OPTIONAL. The default
is false. It is recommended that you set this to true for
all Dapper sources and false for all other data sources. -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDTableFraDatabase
EDDTableFraDatabase håndterer data fra en relationel databasetabel ellerUdsigt til udsigt.
En tabel eller visning
Hvis de data, du ønsker at tjene, er i to eller flere tabeller (og dermed har brug for en JOIN til at udtrække data fra begge tabeller på én gang) , du skal gøre endenormaliseret (I forvejen) bord eller bordUdsigt til udsigt med alle de data, du ønsker at gøre tilgængelige som et datasæt iERDDAP.
For store, komplekse databaser, kan det give mening at adskille flere chunks som denormaliserede tabeller, hver med en anden type data, som vil blive separate datasæt iERDDAP.
Gør et denormaliseret bord til brug iERDDAP™kan lyde som en vanvittig idé til dig. Vær venlig at stole på os. Der er flere grunde til hvorforERDDAP™arbejder med denormaliserede tabeller:
- Det er meget nemmere for brugerne. Hvornår Hvornår skal man HvornårERDDAP™præsenterer datasættet som en, enkel, denormaliseret, enkelt tabel, er det meget nemt for alle at forstå dataene. De fleste brugere har aldrig hørt om normaliserede tabeller, og meget få forstår nøgler, udenlandske nøgler eller tabel joinforbindelser, og de ved næsten bestemt ikke detaljerne i de forskellige typer af joinforbindelser, eller hvordan man specificerer SQL for at gøre en joinforbindelse (eller flere joinforbindelser) korrekt. Ved hjælp af en denormaliseret tabel undgår alle disse problemer. Denne grund berettiger alene brugen af et denormaliseret enkeltbord til præsentationen af et datasæt tilERDDAP™Brugere.
- Normaliserede tabeller (flere tabeller relateret af nøglekolonner) er fantastisk til opbevaring af data i en database. Men selv i SQL, det resultat, der returneres til brugeren, er en denormaliseret (blev medlem) Enkeltbord. Så det synes rimeligt at præsentere datasættet for brugere som en enorm, denormaliseret, enkelt tabel, hvorfra de derefter kan anmode subsets (f.eks. viser mig rækker af bordet, hvor temperaturen> 30) .
- Du kan foretage ændringerERDDAP™uden at ændre dine tabeller. ERDDAP™har et par krav, der kan være forskellige fra, hvordan du har konfigureret din database. For eksempel,ERDDAP™kræver, at tidsstempeldata gemmes i 'timestamp med tidszone' felter. Ved at lave et separat bord/view forERDDAP™, du kan foretage disse ændringer, når du foretager den denormaliserede tabel forERDDAP. Således behøver du ikke foretage ændringer i dine tabeller.
- ERDDAP™vil genskabe nogle af strukturen af de normaliserede tabeller. Du kan angive, hvilke kolonner af data kommer fra tabellerne "outer" og derfor har et begrænset antal forskellige værdier.ERDDAP™vil indsamle alle de forskellige kombinationer af værdier i disse kolonner og præsentere dem for brugere på en speciel . subset webside, der hjælper brugerne hurtigt med at vælge undersæt af datasættet. De forskellige værdier for hver kolonne vises også i rullelisten på datasættets andre websider.
- En denormaliseret tabel gør dataene fra dig til denERDDAPadministrator nemt. Du er eksperten for denne datasæt, så det giver mening, at du træffer beslutninger om, hvilke tabeller og hvilke kolonner der skal deltage, og hvordan du tilmelder dem. Så du behøver ikke at aflevere os (eller værre, slutbrugerne) flere tabeller og detaljerede instruktioner til, hvordan du deltager dem, skal du bare give os adgang til det denormaliserede bord.
- En denormaliseret tabel giver mulighed for effektiv adgang til dataene. Den denormaliserede form er normalt hurtigere at få adgang til end den normaliserede form. Deltager kan være langsom. Flere joinforbindelser kan være meget langsom.
For at få dataene fra to eller flere tabeller i databasen tilERDDAP™, der er tre muligheder:
- Anbefalet mulighed: Du kan oprette en komma- eller tab-spareret-værdifil med data fra den denormaliserede tabel. Hvis datasættet er enorm, så giver det mening at skabe flere filer, hver med en sammenhængende delsæt af den denormaliserede tabel (f.eks. data fra et mindre tidsinterval) .
Den store fordel her er, atERDDAP™vil kunne håndtere brugeranmodninger for data uden yderligere indsats fra din database. SåERDDAP™vil ikke være en byrde på din database eller en sikkerhedsrisiko. Dette er den bedste mulighed under næsten alle omstændigheder, fordiERDDAP™kan normalt få data fra filer hurtigere end fra en database (hvis vi konverterer .csv-filer til.ncCF-filer) . (En del af grunden er, atERDDAP+files er et read-only system og behøver ikke at beskæftige sig med at foretage ændringer, mens du giverACID (Atomitet, Bevidsthed, Isolation, Durability) .) Desuden behøver du sandsynligvis ikke en separat server, da vi kan gemme dataene på en af vores RAID'er og få adgang til dem med en eksisterende eksisterende serverERDDAP™på en eksisterende server.
- Okay Option: Du opsætter en ny database på en anden computer med blot den denormaliserede tabel. Da databasen kan være en gratis og open source database som MariaDB, MySQL og PostgreSQL, koster denne mulighed ikke meget.
Den store fordel her er, atERDDAP™vil kunne håndtere brugeranmodninger for data uden yderligere indsats fra din nuværende database. SåERDDAP™Må ikke være en byrde på din nuværende database. Dette eliminerer også en masse sikkerhedsmæssige bekymringer sidenERDDAP™Har ikke adgang til din nuværende database.
-
Nedsat Option: Vi kan oprette forbindelseERDDAP™til din nuværende database. For at gøre dette, skal du:
- Opret en separat tabel eller se med den denormaliserede tabel af data.
- Opret en "erddap" bruger, der har read-only adgang til kun den denormaliserede tabel (s s s) .
Dette er en mulighed, hvis dataene ændrer meget ofte, og du ønsker at giveERDDAP™Brugere øjeblikkelig adgang til disse ændringer; men selv så kan det give mening at bruge filindstillingen ovenfor og periodisk (hver 30 minutter?) erstatte den fil, der har dagens data. De store ulemper ved denne tilgang er, atERDDAP™brugeranmodninger vil sandsynligvis placere en uudholdelig stor byrde på din database, og atERDDAP™forbindelse er en sikkerhedsrisiko (selvom vi kan minimere risikoen) .
Gør den denormaliserede tabel eller visning forERDDAP™er en god mulighed for at foretage et par ændringer, derERDDAP™behov, på en måde, der ikke påvirker dine originale tabeller:
- Ændre dato og tidsstempelfelter/kolonner for at bruge datatypen, som Postgres kaldertimetamp med tidszone (eller tilsvarende i databasen) . Timetamps uden tidszone information virker ikke korrekt iERDDAP.
- Gør indekser til de kolonner, som brugerne ofte søger.
- Vær meget opmærksom påtilfælde af felt/kolonnenavne (Brug f.eks. alle undermapper) når du skriver dem.
- Brug ikke reserverede ord til tabellen og for felt/kolonnenavne.
Hvis du har brug for hjælp til at lave den denormaliserede tabel eller se, bedes du kontakte din databaseadministrator. Hvis du ønsker at tale om denne helt tilgang eller stratze, hvordan du bedst kan gøre det, bedes du kontakte Chris. John på noaa.gov .
database i databasedatasets.xml
Det er svært at skabe den korrektedatasets.xmlOplysninger, der er nødvendige forERDDAP™at oprette en forbindelse til databasen. Vær tålmodig. Vær metodologi.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
GenererDatasets Xml har tre særlige muligheder for EDDTableFraDatabase:
- Hvis du indtaster "!!!LIST!!!" (uden tilbud) for katalognavnet, programmet vil vise en liste over katalognavne.
- Hvis du indtaster "!!!LIST!!!" (uden tilbud) for schema navnet, programmet vil vise en liste over schema navne.
- Hvis du indtaster "!!!LIST!!!" (uden tilbud) for tabelnavnet, programmet vil vise en liste over tabeller og deres kolonner. Den første "!!!LIST!!!" post, som du laver er den, der vil blive brugt.
- Læs omhyggeligt alle disse dokumenters oplysninger om EDDTableFraDatabase.
- Du kan indsamle de oplysninger, du har brug for til at oprette XML til en EDDTableFraDatabase datasæt ved at kontakte databaseadministratoren og ved at søge på internettet.
- Selvom databaser ofte behandler kolonnenavne og tabelnavne i en tilfælde-tilfølsom måde, er de tilfældefølsomme iERDDAP. Så hvis en fejlmeddelelse fra databasen siger, at et kolonnenavn er ukendt (for eksempel "Ukendt identifikator= '' kolonne\_name "") selvom du kender det eksisterer, prøv at bruge alle hovedstæder, for eksempel, I nærheden af COLUMN\_NAME , som ofte er den sande, tilfældefølsomme version af kolonnenavnet.
- Arbejd tæt sammen med databaseadministratoren, der kan have relevant erfaring. Hvis datasættet ikke indlæses, skal du læse datasættetfejlmeddelelsenøje for at finde ud af hvorfor.
JDBC driver
-
[JDBC driver og<Køretøj>] (#jdbc-driver) -- Du skal få den relevante JDBC 3 eller JDBC 4 driver .jar fil for din database og Sæt det i Tomcat /webapps/erddap/WEB-INF/lib efter installationERDDAP. Så i din kropdatasets.xmlfor denne datasæt, skal du angive den<Drivernavn> for denne driver, som er (desværre desværre) forskellige fra filnavnet. Søg på internettet for JDBC driver til din database og den drivernavn, derJavaskal bruge det.
- For MariaDB, prøv https://mariadb.com/kb/en/about-the-mariadb-java-client/
The The The The The The The<Drivernavn> at bruge idatasets.xml (se nedenfor) er sandsynligvis org.mariadb.jdbc. Driver . - For MySQL og Amazon RDS, prøv https://dev.mysql.com/downloads/connector/j/
The The The The The The The<Drivernavn> at bruge idatasets.xml (se nedenfor) er sandsynligvis com.mysql.jdbc. Driver . - For For For For ForOracle, prøv https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html . The The The The The The The<Drivernavn> at bruge idatasets.xml (se nedenfor) er sandsynligvis oracle.jdbc.driver.OracleDriver .
- For Postgresql, vi fik JDBC 4 driver fra https://mvnrepository.com/artifact/org.postgresql/postgresql
The The The The The The The<Drivernavn> at bruge idatasets.xml (se nedenfor) er sandsynligvis org.postgresql. Driver . - Til SQL Server, kan du få JTDS JDBC driver fra https://jtds.sourceforge.net . The The The The The The The<Drivernavn> at bruge idatasets.xml (se nedenfor) er sandsynligvis net.sourceforge.jtds.jdbc. Driver .
- For MariaDB, prøv https://mariadb.com/kb/en/about-the-mariadb-java-client/
Efter du har lagt JDBC driver .jar iERDDAP™lib-mappen, skal du tilføje en henvisning til den .jar fil i .bat og / eller .sh script filer til GenererDatasets Xml, DasDds og ArchiveADataset, som er i den Tomcat /webapps/erddap/WEB-INF / mappe; ellers får du en ClassNotFoundException, når du kører disse scripts.
Desværre er JDBC undertiden kilden til problemer. I sin rolle som mellemmand mellemERDDAP™og databasen gør det nogle gange subtile ændringer i standard/generisk database SQL-forespørgsel, atERDDAP™skabe og dermed forårsage problemer (f.eks. relateret tilOver-/sænke identifikatorerog relateret tildato / tidszoner) . Vær tålmodig, læs oplysningerne her omhyggeligt, tjek dit arbejde, og se voressektion om at få ekstra støtte.
Databasedatabase<Tilslutningstilslutning Ejendom>
- [ []<LinkProperty>] (#database-connectionproperty) -- In te In te In te In tedatasets.xmlfor dit datasæt, skal du definere flere forbindelse Ejendomstags til at fortælleERDDAP™Sådan opretter du forbindelse til din database (for eksempel at angive brugernavn, adgangskode, ssl forbindelse ogHent størrelse) . Disse er forskellige for enhver situation og er lidt svært at finde ud af. Søg på internettet for eksempler på at bruge en JDBC driver til at oprette forbindelse til din database. The The The The The The The<TilslutningProperty> navne (for eksempel "bruger", "password", og "ssl") , og nogle af forbindelsenProperty værdier kan findes ved at søge på nettet for "JDBC forbindelsesegenskaber databasedatabase Type Type Type Type " " " " (for eksempel,Oracle, MySQL, Amazon RDS, MariaDB, PostgreSQL) .
Citater til navne og sag Sensitivitet
- Citater til Field/Kolonnenavne; Case Sensitivitet- Som standard sætter EDDTableFraDatabase ANSI-SQL-standard double citerer omkring felt/kolonnenavne i SELECT- udsagn, hvis du har brugt et reserveret ord som et felt/kolonnenavn, eller en særlig figur i et felt/columnnavn. De dobbelte citater thwart visse typer af SQL injektion angreb. Du kan fortælleERDDAP™at bruge "," eller ingen tilbud via<kolonnenavnQuotes> i in in in indatasets.xmlfor denne datasæt.
For mange databaser, ved hjælp af enhver form for citater forårsager databasen til at arbejde med felt/kolonnenavne i en tilfælde følsom måde (i stedet for standard database tilfælde på følsomme måde) . Databaser viser ofte fil/kolonnenavne som alle over-case, når i virkeligheden er den følsomme form anderledes. I nærheden af In In In In In In In In In In In In In InERDDAP™, venligst altid behandle database kolonnenavne som tilfælde følsomme.
-
For Maria DB, skal du køre databasen med\-sql-mode=ANSI\_QUOTES.
-
For MySQL og Amazon RDS, skal du køre databasen med\-sql-mode=ANSI\_QUOTES.
-
Oracleunderstøtter ANSI-SQL-standard dobbelt tilbudsom standard.
-
PostgreSQL understøtter ANSI-SQL-standard dobbelt tilbud som standard.
Brug ikke et reserveret ord til en database, katalog, schema eller tabels navn.ERDDAP™Angiv ikke citater omkring dem.
Hvis det er muligt, skal du bruge alle undermapper til database, katalog, skema, tabelnavne og feltnavne, når du opretter databasetabellen (eller visning) og når de henviser til felt/kolonnenavnene idatasets.xmli in in in inERDDAP. Ellers kan du få en fejlmeddelelse, der siger databasen, kataloget, schema, tabel og/eller felt, ikke fundet. Hvis du får denne fejlmeddelelse, skal du prøve at bruge den sagfølsomme version, den all-case version og den alle lavere version af navnet iERDDAP. En af dem kan arbejde. Hvis ikke, skal du ændre navnet på database, katalog, skema og/eller tabel til alle undermapper.
Databasedatabase<Datadata Type>
- Databasedatabase[ []<DataType>] (#datatype) Tags -- Fordi der er nogle ambiguity om, somdatabasedatatyperkort til hvilketERDDAP™datatyper, skal du angive en [<DataType>] (#datatype) tag for hver [<dataVariable>] (#datavariable) at fortælleERDDAP™som datatype til brug. En del af problemet er, at forskellige datasæt bruger forskellige vilkår for de forskellige datatyper - så altid forsøger at matche definitionerne, ikke bare navnene. Se beskrivelsen af beskrivelsen af beskrivelsenstandard standard standardERDDAP™Datadata Typer, som indeholder henvisninger til de tilsvarende SQL-datatyper.Dato og tidsstempeler særlige tilfælde: brugERDDAP's dobbelte data Type.
Database Dato for data
Nogle databasedatoskolonner har ingen eksplicit tidszone. Sådanne kolonner er problemer forERDDAP. Databaser understøtter konceptet med en dato (med eller uden en tid) uden en tidszone, som en omtrentlige vifte af tid. Men men men men menJava (og dermedERDDAP) kun handler med øjeblikkelige dato+tid med en tidszone. Så du kan vide, at de datotidsdata er baseret på en lokal tidszone (med eller uden dagslysbesparelsestid) eller GMT/Zulutidszone, menJava (og og ogERDDAP) Ikke. Vi troede oprindeligt, vi kunne arbejde omkring dette problem (f.eks. ved at angive en tidszone for kolonnen) , men databasen+JDBC+Javainteraktioner gjorde dette til en upålidelig løsning.
- Så,ERDDAP™kræver, at du gemmer alle dato- og datodata i databasetabellen med en databasedatatype, der svarer til JDBC-typen "timestamp med tidszone" (ideelt, der bruger GMT/Zulutidszone) .
- I nærheden af In In In In In In In In In In In In In InERDDAP'sdatasets.xml, i den<dataVariable> tag til en timetamp variabel, sæt
og i<addAttributes> sæt
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
- Forslag til: Hvis dataene er et tidsinterval, er det nyttigt at have tidsstempelværdierne henviser til centrum af det underforståede tidsinterval (for eksempel, middag) . Hvis en bruger f.eks. har data til 2010-03-26T1Z fra et andet datasæt, og de ønsker de nærmeste data fra et databasedatasæt, der har data for hver dag, så databasedataene for 2010-03-26T11:00Z (repræsenterer data for denne dato) er naturligvis det bedste (i modsætning til midnat før eller efter, hvor det er mindre indlysende, som er bedst) .
- ERDDAP™har et værktøj tilKonverter en Numeric Tid til/fra en streng tid.
- Se endnuSådan kan duERDDAPTilbud med Time.
Integer nuancer
Databaser understøtter tal (int, lilleint, lilleint) kolonner, menERDDAP™understøtter ikke ægte nulls. Databasemøtrikker vil blive konverteret iERDDAP™127 for byte kolonner, 255 for ubyte kolonner, 32767 for korte kolonner, 65535 for ukortede kolonner, 2147483647 for int kolonner, 4294967295 for uint kolonner, 9,223,372,036,854,775,807 for lange kolonner eller 18446744073709551 for ulong kolonner. Hvis du bruger disse standarder, skal du identificere demmissing\_values til datasættets brugere iERDDAP™med med
<att name="\_FillValue" type="int"\>2147483647</att>
eller eller eller
<att name="\_FillValue" type="short"\>32767</att>
Alternativt kan du bruge "missing\_value" attribut i stedet for "\_FillValue". GenererDatasets Xml tilføjer automatisk disse \_FillValue attributter, når det genererer den foreslåededatasets.xmlfor databasedatasæt.
Til database flydende punktkolonner bliver muslinger konverteret til NaNs iERDDAP. Til databasedatatyper, der er konverteret til strenge iERDDAP™, nulls bliver konverteret til tomme strenge.
Databasesikkerhed
- Når du arbejder med databaser, skal du gøre tingene så sikkert og sikkert som muligt for at undgå at tillade en skadelig bruger at skade din database eller få adgang til data, de ikke bør have adgang til.ERDDAP™forsøger at gøre tingene på en sikker måde, også.
- Overvej at kopiere, på en anden computer, database og database tabeller med de data, du ønskerERDDAP™at tjene. (Ja, til kommercielle databaser somOracle, dette indebærer yderligere licensgebyrer. Men for open source databaser, som PostgreSQL, MySQL, Amazon RDS og MariaDB, koster dette intet.) Dette giver dig et højt sikkerhedsniveau og forhindrer ogsåERDDAP™anmodninger fra at sænke den oprindelige database.
- Vi opfordrer dig til at opsætteERDDAP™at oprette forbindelse til databasen som en databasebruger, der kun har adgang til databasen relevant databasedatabase (s s s) og har kun READ privilegier.
- Vi opfordrer dig til at oprette forbindelse fraERDDAP™til databasen, så det
- Brug altid SSL,
- Tillad kun forbindelser fra én IP-adresse (eller en blok af adresser) og fra den eneERDDAP™bruger og bruger
- Overfør kun adgangskoder i deres MD5 harhed form.
- \[I nærheden af KNOWN PROBLEM\]Forbindelsesproperties (herunder adgangskode!) gemmes som almindelig tekst idatasets.xml. Vi har ikke fundet en måde at tillade administratoren at indtaste databaseadgangskoden underERDDAP's opstart i Tomcat (som opstår uden brugerindgang) , så adgangskoden skal være tilgængelig i en fil. For at gøre dette mere sikkert:
- Dig (te te te teERDDAP™Administrator) bør være ejeren afdatasets.xmlog har READ og WRITE adgang.
- Lav en gruppe, der kun indeholder bruger=tomcat. Brug chgrp til at gøre den gruppe tildatasets.xml, med bare READ privilegier.
- Brug chmod til at tildele o-rwx-rettigheder (Læs eller WRITE adgang til "andre" brugere) for for fordatasets.xml.
- Hvornår i øjeblikketERDDAP™, adgangskode og andre forbindelsesegenskaber gemmes i "private"Javavariabler.
- Anmodninger fra klienter er parsed og kontrolleret for gyldighed, før de genererer SQL-anmodninger til databasen.
- Anmodninger til databasen er lavet med SQL ForbereddStatements, for at forhindreSQL-indsprøjtning.
- Anmodninger til databasen indsendes med udførelse Forespørgsel (ikke at udføreStatement) for at begrænse anmodninger til at læse kun (så forsøgt SQL-indsprøjtning til at ændre databasen vil undlade af denne grund, også) .
SQL SQL SQL
- Fordi fordiOPeNDAP's tabulære data anmodninger blev designet til at efterligne SQL-tabular data anmodninger, det er nemt atERDDAP™til at konvertere tabulære data anmodninger til enkle SQL ForbereddStatements. For eksempel,ERDDAP™anmodning
time,temperature&time>=2008-01-01T00:00:00Z&time<=2008-02-01T00:00:00Z
vil blive konverteret til SQL ForbereddStatementment
SELECT "time", "temperature" FROM *tableName*
WHERE "time" >= 2008-01-01T00:00:00Z AND "time" <= 2008-02-01T00:00:00Z
ERDDAP™anmodninger med &distinct () og/ellerorderBy ( variabler ) vil tilføje DISTINCT og/eller ORDER BY variabler til SQL udarbejdet erklæring. Generelt vil dette i høj grad bremse reaktionen fra databasen. ERDDAP™log ind på den forberededeStatement ilog.txtsom
statement=*thePreparedStatement*
Dette vil være en tekst repræsentation af ForbereddStatement, som kan være lidt anderledes end den egentlige forberededeStatement. For eksempel er tiden kodet på en særlig måde. Men i tekst repræsentationen vises de som ISO 8601 dato tider.
Databasehastighed
- Databaser kan være langsom. Der er nogle ting du kan gøre:
- Generelt - Den karakter af SQL er, at forespørgsler erdeklarativ. De angiver præcis, hvad brugeren ønsker. De omfatter ikke en specifikation eller hints til, hvordan forespørgslen skal håndteres eller optimeres. Så der er ingen vej tilERDDAP™at generere forespørgslen på en sådan måde, at den hjælper databasen med at optimere forespørgslen (eller på nogen måde angive, hvordan forespørgslen skal håndteres) . Generelt er det op til databaseadministratoren at opsætte tingene (f.eks. indekser) for at optimere for visse typer forespørgsler.
Sæt Fetch Størrelse
Databaser returnerer dataene tilERDDAP™i bidder. Som standard returnerer forskellige databaser et andet antal rækker i bidderne. Ofte er dette nummer meget lille og så meget ineffektiv. For eksempel standarden forOracleer 10! Læs JDBC-dokumentationen for din databases JDBC-driver for at finde den forbindelsesejendom til at angive for at øge dette og tilføje dette til datasættets beskrivelse idatasets.xml. For eksempel, Til MySQL og Amazon RDS, brug
<connectionProperty name="defaultFetchSize">10000</connectionProperty>
For MariaDB, er der i øjeblikket ingen måde at ændre hente størrelse. Men det er en ønsket funktion, så søg på nettet for at se, om dette er blevet implementeret. For For For For ForOracle, brug
<connectionProperty name="defaultRowPrefetch">10000</connectionProperty>
Til PostgreSQL, brug
<connectionProperty name="defaultRowFetchSize">10000</connectionProperty>
men føler sig fri til at ændre nummeret. Indstilling af nummeret for stor vil forårsageERDDAP™at bruge masser af hukommelse og være mere sandsynligt at køre ud af hukommelse.
ConnectionProperties
Hver database har andre forbindelsesegenskaber, som kan specificeres idatasets.xml. Mange af disse vil påvirke effektiviteten af databasen tilERDDAP™tilslutning. Læs dokumentationen for din databases JDBC driver for at se mulighederne. Hvis du finder forbindelsesegenskaber, der er nyttige, bedes du sende en e-mail med detaljerne tilerd dot data at noaa dot gov.
- Lav en tabel -- Du vil sandsynligvis få hurtigere svar, hvis du periodisk (hverdag? når der er nye data?) generere en egentlig tabel (lignende til, hvordan du har genereret VIEW) og fortælERDDAP™at få data fra tabellen i stedet for VIEW. Da enhver anmodning til bordet kan opfyldes uden at hæve en anden tabel, vil svaret være meget hurtigere.
- Vakuum tabellen - MySQL og Amazon RDS vil reagere meget hurtigere, hvis du brugerOPTIMIZE TABLE. Maria Maria Maria DB vil reagere meget hurtigere, hvis du brugerOPTIMIZE TABLE. PostgreSQL vil reagere meget hurtigere, hvis duVACUUMtabellen. OracleHar ikke eller har brug for en analog kommando.
- Lav makeupIndexerfor fælles forbrugsstoffer -- Du kan fremskynde mange / største forespørgsler ved at oprette indekser i databasen for variablerne (hvilke databaser kalder "columns") det er ofte optaget i brugerens forespørgsel. Generelt er disse de samme variabler angivet af [<subsetVariables>] (#subsetvariables) og/eller breddegrad, længde og tidsvariabler.
Brug forbindelse Pooling
Normalt,ERDDAP™gør en separat forbindelse til databasen for hver anmodning. Dette er den mest pålidelige tilgang. Det hurtigere alternativ er at bruge en DataSource, der understøtter forbindelsespooling. Hvis du vil konfigurere den, skal du angive (for eksempel)
<dataSourceName>java:comp/env/jdbc/postgres/erddap</dataSourceName>
lige ved siden af<sourceUrl>,<Drivernavn>, og<Tilslutningstilslutning Ejendom>. Og i Tomcat /conf/context.xml, definere en ressource med de samme oplysninger, f.eks.
<Resource
name="jdbc/postgres/erddap" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="*jdbc:postgresql://somehost:5432/myDatabaseName*"
username="*myUsername*" password="*myPassword*"
initialSize="0" maxActive="8" minIdle="0" maxIdle="0" maxWait="-1"/>
Generelle oplysninger om brug af en DataSource er på https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html . Se endnuOplysninger om Tomcat DataSourceog og ogTomcat DataSource eksemplereller søg på nettet for eksempler på brug af DataSources med andre applikationsservere.
- Hvis alt andet fejler, Overvej at gemme dataene i en samling afNetCDFv3.ncfiler filer filer (specielt specielt.ncfiler, der bruger deCF Diskret Sampling Geometries (DSG) Contiguous Ragged Array datastrukturer og så kan håndteres medERDDAP'sEDDTableFraNcCFFiles) . Hvis de er logisk organiseret (hver med data til en smule plads og tid) ,ERDDAP™kan udtrække data fra dem meget hurtigt.
EDDTableFraDatabase skelet XML XML
<dataset type="EDDTableFromDatabase" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<!-- The format varies for each type of database, but will be
something like:
For MariaDB: jdbc:mariadb://xxx.xxx.xxx.xxx:3306/databaseName
For MySql jdbc:mysql://xxx.xxx.xxx.xxx:3306/databaseName
For Amazon RDS: jdbc:mysql://xxx.xxx.xxx.xxx:3306/databaseName
For Oracle: jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:databaseName
For Postgresql: jdbc:postgresql://xxx.xxx.xxx.xxx:5432/databaseName
where xxx.xxx.xxx.xxx is the host computer's numeric IP address
followed by :PortNumber (4 digits), which may be different for your
database. REQUIRED. -->
<driverName\>...</driverName>
<!-- The high-level name of the database driver, for example,
"org.postgresql.Driver". You need to put the actual database
driver .jar file (for example, postgresql.jdbc.jar) in
tomcat/webapps/erddap/WEB-INF/lib. REQUIRED. -->
<connectionProperty name="name">value</connectionProperty>
<!-- The names (for example, "user", "password", and "ssl")
and values of the properties needed for ERDDAP™ to establish
the connection to the database. 0 or more. -->
<dataSourceName>...</dataSourceName> <!-- 0 or 1 -->
<catalogName>...</catalogName>
<!-- The name of the catalog which has the schema which has the
table, default = "". OPTIONAL. Some databases don't use
this. -->
<schemaName>...</schemaName> <!-- The name of the
schema which has the table, default = "". OPTIONAL. -->
<tableName>...</tableName> <!-- The name of the
table, default = "". REQUIRED. -->
<columnNameQuotes><columnNameQuotes> <!-- OPTIONAL. Options:
" (the default), ', \[nothing\]. -->
<orderBy>...</orderBy> <!-- A comma-separated list of
sourceNames to be used in an ORDER BY clause at the end of the
every query sent to the database (unless the user's request
includes an &orderBy() filter, in which case the user's
orderBy is used). The order of the sourceNames is important.
The leftmost (first) sourceName is most important; subsequent
sourceNames are only used to break ties. Only relevant
sourceNames are included in the ORDER BY clause for a given user
request. If this is not specified, the order of the returned
values is not specified. Default = "". OPTIONAL. -->
<sourceCanOrderBy>no(default)|partial|yes</sourceCanOrderBy>
<!-- 0 or 1 -->
<sourceCanDoDistinct>no(default)|partial|yes</sourceCanDoDistinct>
<!-- 0 or 1 -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include a <dataType> tag.
See Database DataTypes.
For database date and timestamp columns, set dataType=double and
units=seconds since 1970-01-01T00:00:00Z -->
</dataset>
EDDTableFraEDDGrid
EDDTableFraEDDGrid lader dig oprette et EDDTable datasæt fra enhverEDDGridDatasæt.
- Nogle almindelige årsager til at gøre dette er:
- Dette gør det muligt for datasættet at blive queried medOPeNDAPudvælgelsesbegrænsninger, som er en type "query efter værdi" (som en bruger kan have anmodet) .
- Datasættet er iboende et tabulært datasæt.
- Værdien af den globale attribut "maxAxis0" (normalt af type voyeurint") , (Standarden er 10) vil blive brugt til at begrænse antallet af akse\[0\] (normalt"time"akse) Værdierne af de lukkedeEDDGriddatasæt, der kan tilgås pr. anmodning om data. Hvis du ikke ønsker, at der skal være nogen grænse, skal du angive en værdi på 0. Denne indstilling er vigtig, fordi det ellers ville være for nemt for en bruger at spørge EDDTableFraEDDGridat se gennem alle de gitterded datasæts data. Det ville tage lang tid og ville næsten helt sikkert undlade med en timeout fejl. Dette er den indstilling, der gør det sikker at have EDDTableFraEDDGridDatasæt i dine dataERDDAPuden frygt for, at de vil føre til en urimelig brug af computer ressourcer.
- Hvis den er lukketEDDGrider enEDDGridFraErddapogERDDAP™er det sammeERDDAP, så EDDTableFraEDDGridvil altid bruge den aktuelt tilgængelige version af den refererede datasæt direkte. Dette er en meget effektiv måde for EDDTableFraEDDGridfor at få adgang til de gitterede data.
- Denne klasses [<reload Alle rettigheder>] (#loadeveryn minutter) er hvad der tæller. Den lukkedeEDDGrid's<reloadEveryNMinutes> ignoreres.
- Hvis en værdi for [<OpdaterEveryNMillis>] (#updateeverynmillis) leveres til dette datasæt, det ignoreres. Den lukkedeEDDGrid's<opdateringEveryNMillis> er det, der betyder noget.
- GenererDatasetsXmlhar mulighed for datasæt type=EDDTableFraEDDGridsom anmoder om en URL-adresseERDDAP (normalt den sammeERDDAP) (Afslut i "/erddap/") og et almindeligt udtryk. GenererDatasets Xml vil derefter generere XML til en EDDTableFraEDDGriddatasæt for hvert gitterded datasæt iERDDAP™som har endatasetIDsom matcher det regulære udtryk (Brug .\* for at matche alledatasetIDs til gitterede datasæt) .
Den klump af XML, der genereres af GenererDatasetsXml for hver datasæt indeholder:
- A A A A A AdatasetIDsom er detEDDGrid'sdatasetIDplus "\_AsATable".
- En ny sammenfattende global egenskab, der er denEDDGrid's oversigt plus et nyt første afsnit, der beskriver, hvad dette datasæt er.
- En ny titel global attribut, som er denEDDGrid's titel plus ", (Som en tabel) ".
- En ny maxAxis0 global attribut med en værdi på 10.
EDDTableFraEDDGridskelet XML
<dataset type="EDDTableFromEDDGrid" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDTableFromEDDGrid, this calls lowUpdate() of the underlying
EDDGrid. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1
Any type of EDDGrid dataset. You can even use an
EDDGridFromERDDAP™ to access an independent EDDGrid dataset on
this server. -->
</dataset>
EDDTableFraFileNames
EDDTableFraFileNames oprette et datasæt fra oplysninger om en gruppe filer i serverens filsystem, herunder en URL for hver fil, så brugerne kan downloade filerne viaERDDAP's"files"systemsystem. I modsætning til alle deEDDTableFraFilesUnderklasser, denne datasæt type tjener ikke data fra filerne.
- EDDTableFraFileNames er nyttige, når:
- Du har en gruppe filer, du ønsker at distribuere som alle filer, fordi de ikke indeholder "data" på samme måde, som almindelige datafiler har data. For eksempel, billedfiler, videofiler, Word-dokumenter, Excel-regnefiler, PowerPoint-præsentation filer eller tekstfiler med ustruktureret tekst.
- Du har en gruppe filer, der har data i et format, derERDDAP™Kan ikke endnu læse. For eksempel et projektspecifikt, brugerdefineret, binært format.
Oplysninger om EDDTableFraFileNames
- Dataene i en EDDTableFraFileNames datasæter en tabel, derERDDAP™skaber on-the-fly med oplysninger om en gruppe af lokale filer. I tabellen er der en række for hver fil. Fire særlige attributter idatasets.xmlfor denne datasætafgøre, hvilke filer der indgår i dette datasæt:
filfil Dir
- <FileDir> -- Dette angiver kildemappen i serverens filsystem med filerne til dette datasæt. De filer, der rent faktisk er placeret i serverens filsystem i<FileDir> vises i kolonnen url i denne datasæt i en virtuel mappe med navnet https://serverUrl/erddap/files/datasetID/ . Hvis f.eks.datasetIDer jplMURSST, T, og<fileDir> er /home/data/mur/, og den mappe har en fil med navnet jplMURSST20150103000000.png, derefter den URL, der vil blive vist til brugere for den pågældende fil, https://serverUrl/erddap/jplMURSST/jplMURSST20150103000000.png .
Ud over at bruge en lokal mappe til den<fileDir>, kan du også angive URL'en for en fjern, mappelignende webside. Dette arbejder med:
- Ustrukturerede data i THREDDS, f.eks. https://data.nodc.noaa.gov/thredds/catalog/aquarius/nodc\\_binned\\_V3.0/monthly/ \[2020-10-21 Denne server er ikke længere pålidelig tilgængelig.\]
- Usamlete datasæt iHyraxf.eks. https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/
- De fleste Apache-lignende fortegnelser, f.eks., https://www1.ncdc.noaa.gov/pub/data/cmb/ersst/v5/netcdf/
fraOnTheFly
\\\* fraOnTheFly-- Til nogle store S3 skovle (som noaa-goes17, som har 26 millioner filer) , det kan tageERDDAP™op til 12 timer for at downloade alle oplysninger om skovlens indhold (og så er der andre problemer) . For at komme omkring dette, er der en særlig måde at bruge<fileDir> i EDDTableFraFileNames for at lave et datasæt med mappen og filnavne fra en AWS S3 spand. Dataset har ikke listen over alle S3 skovlens mapper og filnavne, som en bruger kan søge via anmodninger til datasættet. Men datasættet vil få navnene på mapper og filer på farten, hvis brugeren krydser mappehierarkiet med datasættets"files"mulighed. Dette gør det muligt for brugerne at gennemse S3 skovlens filhierarki og filer via datasættets"files"system. For at gøre dette, i stedet for at angive URL for S3 spanden som "Starting mappe" (I GenererDatasets Xml) eller eller eller<filDir> (i in in in indatasets.xml) Brug:
\\*\\*\\*fromOnTheFly,*theS3BucketUrl*
for eksempel:
\\*\\*\\*fromOnTheFly,https://noaa-goes17.s3.us-east-1.amazonaws.com/
Se dokumentationen forArbejde med S3 Skove iERDDAP™Især beskrivelsen af det specifikke format, der skal bruges til S3 spand URL. Og se disse detaljer og et eksempelaf brug af\\\* fraOnTheFly.
Reklamation
- <Reklamation> -- Filer i undermapper af<fileDir> med navne, der matcher<fileRegex> vil blive vist i de samme undermapper i de samme dele"files"URL, hvis<Rekursiv> er indstillet til sand. Standarden er falsk.
- [ []<stiRegex>] (#patregex) -- Hvis reursive=true, Kun mappenavne, der matcher stiRegex (\*") vil blive accepteret. Hvis reursive=false ignoreres dette. Dette bruges sjældent, men kan være meget nyttige i usædvanlige omstændigheder. (Se detteIndeks dokumentationog og ogregex tutorial.)
filRegex
- <FileRegex> -- Kun de filnavne, hvor hele filnavnet (ikke herunder mappenavnet) match kampen<fileRegex> vil blive inkluderet i denne datasæt. For eksempel jplMURSST.{14}\.png . (Se detteIndeks dokumentationog og ogregex tutorial.)
Fra Filnavne Datatabel Indholdsfortegnelse
I tabellen vil der være kolonner med:
-
url -- Den webadresse, som brugerne kan bruge til at downloade filen viaERDDAP's"files"systemsystem.
-
Navn -- Filens navn (uden et mappenavn) .
-
SidsteModificeret -- Den tid, filen blev senest ændret (gemt som dobbelt med"seconds since 1970-01-01T00:00:00Z") . Denne variabel er nyttig, fordi brugerne kan se, om / når indholdet af en given fil sidst ændret. Denne variabel er entidstid Frimærke variabel, så dataene kan vises som numeriske værdier (sekunder siden 1970-01T00:00:00Z) eller en streng værdi (ISO 8601:2004 (E) formatformat) , afhængigt af situationen.
-
størrelse -- Størrelsen af filen i bytes, gemt som fordobler. De gemmes som doubler, fordi nogle filer kan være større end ints tillader, og lange understøttes ikke i nogle svar filtyper. Doubler vil give den nøjagtige størrelse, selv for meget store filer.
-
Ud over kolonner defineret afERDDAP™Administrator med oplysninger udvundet fra filnavnet (for eksempel den tid, der er forbundet med dataene i filen) baseret på to attributter, du angiver i metadata for hver ekstra kolonne /dataVariable:
- ekstraktRegex -- Dette er enalmindeligt udtryk (tutorial) . Hele regex skal matche hele filnavnet (ikke herunder mappenavnet) . regex skal indeholde mindst én optagelse gruppe (en del af et almindeligt udtryk, der er lukket af forældreheses) somERDDAP™Brug til at afgøre, hvilken del af filnavnet til at udtrække til at blive data.
- ekstrakt Gruppe -- Dette er antallet af optagelsesgruppen (#1 er den første optagelse gruppe) i det regulære udtryk. Standarden er 1. En optagelsesgruppe er en del af et almindeligt udtryk, der er lukket af parentes.
Her er to eksempler:
<dataVariable>
<sourceName>time</sourceName>
<destinationName>time</destinationName>
<dataType>String</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST(.{14})\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="units">yyyyMMddHHmmss</att>
</addAttributes>
</dataVariable>
<dataVariable>
<sourceName>day</sourceName>
<destinationName>day</destinationName>
<dataType>int</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST.{6}(..).{6}\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="ioos\\_category">Time</att>
</addAttributes>
</dataVariable>
I tilfælde af tidsvariablen, hvis en fil har navnet jplMURSST20150103000000.png, ekstraktRegex vil matche filnavnet, udtrække de tegn, der matcher den første optagelse gruppe ("20150103000000") som dataType=String, og brug derefterenheder, der er egnet til strenge tiderfor at parse strengene i tidsdataværdier (2015-01-03T00:00:00Z) .
Hvis en fil har navnet jplMURSST20150103000000.png, ekstraktRegex vil matche filnavnet, udtrække de tegn, der matcher den første optagelse gruppe ("03") som [<DataType>] (#datatype) \=int giver en dataværdi på 3.
Andre oplysninger
- Ingen [ikke]<OpdaterEveryNMillis>] (#updateeverynmillis) -- Denne type datasæt behøver ikke og kan ikke bruge den<UpdateEveryNMillis> tag, fordi de oplysninger, der serveres af EDDTableFraFileNames, altid er helt opdateret, fordi de oplysninger, der serveres af EDDTableFraFileNames, altid er helt up-to-date fordiERDDAP™forespørgsler filsystemet for at svare på hver anmodning om data. Selv hvis der er et stort antal filer, bør denne tilgang arbejde med rimelighed godt. Et svar kan være langsom, hvis der er et stort antal filer, og datasættet ikke er blevet rodet i et stykke tid. Men i flere minutter efter, at operativsystemet holder oplysningerne i en cache, så reaktionerne skal være meget hurtige.
- Du kan brugeGenererDatasets Xml programat gøre detdatasets.xmlBeskåret for denne type datasæt. Du kan tilføje/define yderligere kolonner med oplysninger udvundet fra filnavnet, som vist ovenfor.
EDDTableFraFileNames skelet XML XML
<dataset type="EDDTableFromFileNames" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<fileDir>...</fileDir>
<recursive>...</recursive> <!-- true or false (the default) -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\*") will be accepted. -->
<fileNameRegex>...</fileNameRegex>
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
Each dataVariable MUST include <dataType> tag. -->
</dataset>
EDDTableFraFiles
EDDTableFraFiles er den superklasse af alle EDDTableFra...Files klasser. Du kan ikke bruge EDDTableFraFiles direkte. Brug i stedet en underklasse af EDDTableFraFiles til at håndtere den specifikke filtype:
- EDDTableFraAsciiFilesaggregerer data fra komma-, fane-, semikolonin- eller rum-separatede tabulære ASCII-datafiler.
- EDDTableFraAudioFilesaggregerer data fra en gruppe af lokale lydfiler.
- EDDTableFra Billeder af AwsXmlFilesaggregerer data fra et sæt Automatisk Vejrstation (AWS) XML-filer.
- EDDTableFra kolonnearAsciiFilesaggregerer data fra tabular ASCII datafiler med fast bredde data kolonner.
- EDDTableFraHyraxFiler (DEPRECATED) aggregerer data med flere variabler, hver med delte dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) , og serveret af enHyrax OPeNDAPserver.
- EDDTableFraInvalidCRAFilesaggregerede data fraNetCDF (v3 eller v4) .ncfiler, der bruger en bestemt, ugyldig variant af CF DSG Contiguous Ragged Array (CRA) filer. Selv om selvomERDDAP™understøtter denne filtype, er det en ugyldig filtype, der ingen skal begynde at bruge. Grupper, der bruger denne filtype, opfordres til at brugeERDDAP™at generere gyldige CF DSG CRA-filer og stoppe med at bruge disse filer.
- EDDTableFraJsonlCSVFilesaggregerede data fraJSON Linje CSV-filer.
- EDDTableFraMultidimNcFilesaggregerede data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer med flere variabler, hver med delte dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) .
- EDDTableFraNcFilesaggregerede data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer med flere variabler, hver med delte dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) . Det er fint at fortsætte med at bruge denne datasæt type til eksisterende datasæt, men for nye data anbefaler vi at bruge EDDTableFraMultidimNcFiles i stedet.
- EDDTableFraNcCFFilesaggregerede data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer, der bruger en af de filformater, der er angivet af deCF Diskret Sampling Geometries (DSG) konventioner. Men til filer ved hjælp af en af de multidimensionelle CFG-varianter, brugEDDTableFraMultidimNcFilesI stedet.
- EDDTableFraNccsvFilesaggregerede data fraNCCSVASCII .csv filer.
- EDDTableFra parkFileshåndterer data fraUdsigt fra værelset.
- EDDTableFraThreddsFiles (DEPRECATED) aggregerer data fra filer med flere variabler med delte dimensioner serveret af enI nærheden afTHOPeNDAPserver.
- EDDTableFraWFSFiler (DEPRECATED) gør en lokal kopi af alle data fra enArcGISMapServerWFSserver, så dataene kan igen betjenes hurtigt tilERDDAP™Brugere.
I øjeblikket understøttes der ingen andre filtyper. Men det er normalt relativt nemt at tilføje støtte til andre filtyper. Kontakt os, hvis du har en anmodning. Eller hvis dine data er i et gammelt filformat, som du gerne vil flytte væk fra, anbefaler vi at konvertere filerne til at væreNetCDFv3.ncfiler filer filer (og især.ncfiler med deCF Diskret Sampling Geometries (DSG) Konsekvens af Ragged Array datastruktur --ERDDAP™kan udtrække data fra dem meget hurtigt) .NetCDFer et bredt understøttet, binært format, giver hurtig tilfældig adgang til dataene, og er allerede understøttet afERDDAP.
FraFiles Detaljer
Følgende oplysninger gælder for alle de underklasser af EDDTableFraFiles.
Aggregation
Denne klasse aggregerer data fra lokale filer. Hver fil har en (relativt relativt) lille tabel af data.
- Det resulterende datasæt vises som om alle filers tabeller var kombineret (alle rækker af data fra fil #1, plus alle rækker fra fil #2,...) .
- Filerne behøver ikke alle at have alle de angivne variabler. Hvis en given fil ikke har en bestemt variabel,ERDDAP™vil tilføje manglende værdier efter behov.
- De variable i alle filer skal have de samme værdier for deadd\_offset,missing\_value,\_Fill Værdiværdi,scale\_factor, ogenhederattributter attributter attributter (hvis nogen) .ERDDAP™checks, men det er en ufuldkommelig test - hvis der er forskellige værdier,ERDDAPVed ikke, hvilket er korrekt, og derfor, hvilke filer er ugyldige. Hvis dette er et problem, kan du muligvis brugeNcMLeller eller ellerNCOat løse problemet.
Komprimerede filer
Kildedatafiler til alle EDDTableFraFiles subclasses kan være eksternt komprimeret (fx,.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2 eller .Z) . Se billederneEksternt komprimeret fildokumentation.
Oplysninger om cachen
- Når en EDDTableFraFiles datasæt er først indlæst, læser EDDTableFraFiles oplysninger fra alle de relevante filer og skaber tabeller (en række for hver fil) med oplysninger om hver gyldig fil og hver "bad" (forskellige eller ugyldige) fil.
- Tabellerne gemmes også på disken, somNetCDFv3.ncfiler i filer i bigParentDirectory / Datasæt / I nærheden af Last2CharsOfDatasetID / / / / datasetID / i filer navngivet: dirTable.nc (som indeholder en liste over unikke mappenavne) , filfil Tabelbord.nc (som holder bordet med hver gyldig fils oplysninger) , dårlige filer.nc (som holder bordet med hver dårlig fils oplysninger) .
- At fremskynde adgangen til en EDDTableFraFiles dataset (men på bekostning af at bruge mere hukommelse) , du kan bruge
[ []<fileTableInMemory>true</ filTableInMemory>] (#filetableinmemory)
at fortælleERDDAP™for at gemme en kopi af fil information tabeller i hukommelsen. - Kopier af filoplysningerne på disken er også nyttig, nårERDDAP™lukkes og genstartes: det sparer EDDTable FraFiles fra at skulle genlæse alle datafiler.
- Når et datasæt er indlæst,ERDDAP™behøver kun at læse data i nye filer og filer, der har ændret sig.
- Hvis en fil har en anden struktur fra de andre filer (f.eks. en anden datatype for en af variablerne eller en anden værdi for "enheder" attribut) ,ERDDAPtilføjer filen til listen over "bad" filer. Oplysninger om problemet med filen vil blive skrevet til den bigParentDirectory /logs/log.txt-fil.
- Du bør ikke nogensinde nødt til at slette eller arbejde med disse filer. En undtagelse er: Hvis du stadig foretager ændringer i et datasætsdatasets.xmlopsætning, kan du slette disse filer for at tvingeERDDAP™at læse alle filerne, da filerne vil blive læst/fortolket anderledes. Hvis du nogensinde behøver at slette disse filer, kan du gøre det, nårERDDAP™kører. (Så sæt et sætflag flag flag flagat indlæse datasættet ASAP.) Men, men,ERDDAP™normalt bemærker, at dedatasets.xmloplysninger matcher ikke filen Tabeloplysninger og sletter filbordene automatisk.
- Hvis du ønsker at opfordreERDDAP™for at opdatere de lagrede datasæt-oplysninger (Hvis du f.eks. har tilføjet, fjernet eller ændret nogle filer til datasættets datakatalog) , brug afflagsystemat tvingeERDDAP™for at opdatere cached-filoplysninger.
Håndtering af anmodninger
- ERDDAP™tabulerede dataanmodninger kan lægge begrænsninger på enhver variabel.
- Når en klients anmodning om data behandles, kan EDDTableFraFiles hurtigt se i tabellen med de gyldige filoplysninger for at se, hvilke filer der kan have relevante data. For eksempel, hvis hver kildefil har data til en fast placering buoy, kan EDDTableFraFiles meget effektivt afgøre, hvilke filer der kan have data inden for en given længde og breddegrad rækkevidde.
- Fordi det gyldige fil informationsbord indeholder den mindste og maksimale værdi af hver variabel for hver gyldig fil, kan EDDTableFraFiles ofte håndtere andre forespørgsler helt effektivt. For eksempel, hvis nogle af buoys ikke har en lufttryk sensor, og en klient anmoder om data til luftPressure!=NaN, EDDTableFraFiles kan effektivt afgøre, hvilke buoys har lufttryk data.
Opdatering af cachen filoplysninger
Når datasættet er indlæst, opdateres cachen filoplysninger.
- Datasættet genindlæses periodisk som fastlagt af datasættet<reloadEveryNMinutes> i datasættets oplysninger idatasets.xml.
- Datasættet er genindlæst så hurtigt som muligt, nårERDDAP™registrerer, at du har tilføjet, fjernet,touch'd (at ændre filens sidste Modificeret tid) , eller ændret en datafil.
- Datasættet er genindlæst så hurtigt som muligt, hvis du bruger datasættetflagsystem.
Når datasættet er indlæst,ERDDAP™Sammenligner de tilgængelige filer til cached-fil informationstabellen. Nye filer læses og føjes til den gyldige filtabel. Filer, der ikke længere eksisterer, er faldet fra den gyldige filtabel. Filer, hvor filtampen har ændret sig, og deres oplysninger opdateres. De nye tabeller erstatter de gamle tabeller i hukommelsen og på disk.
Dårlige filer
Tabellen af dårlige filer og årsagerne til, at filerne blev erklæret dårlige (ødelagt fil, manglende variabler, forkerte akseværdier osv.) e-mailes til e-mail Alt alt Til e-mailadresse (sandsynligvis du) Hver gang datasættet er genindlæst. Du bør udskifte eller reparere disse filer så hurtigt som muligt.
Manglende variabler
Hvis nogle af filerne ikke har nogle af filernedataVariables defineret i datasættetsdatasets.xmlDet er okay. Når EDDTableFraFiles læser en af disse filer, vil det fungere som om filen havde variablen, men med alle manglende værdier.
I nærheden af Real Time Data
- EDDTableFraFiles behandler anmodninger om meget nylige data som en særlig sag. Problemet: Hvis de filer, der udgør datasættet, opdateres ofte, er det sandsynligt, at datasættet ikke opdateres hver gang en fil ændres. Så EDDTableFraFiles vil ikke være opmærksom på de ændrede filer. (Du kan bruge denflagsystem, men det kan føre tilERDDAP™Genindlæs datasættet næsten konstant. Så i de fleste tilfælde anbefaler vi ikke det.) I stedet behandler EDDTableFraFiles med dette ved følgende system: Hvornår Hvornår skal man HvornårERDDAP™får en anmodning om data inden for de seneste 20 timer (for eksempel, 8 timer siden indtil nu) ,ERDDAP™vil søge alle filer, der har data i de sidste 20 timer. Således,ERDDAP™behøver ikke at have perfekt opdaterede data for alle filer for at finde de nyeste data. Du skal stadig angive [<reload Alle rettigheder>] (#loadeveryn minutter) til en rimelig lille værdi (for eksempel 60) , men det behøver ikke at være lille (for eksempel 3) .
-
Ikke anbefalet organisering af nærreal-time data i filerne: Hvis du f.eks. har et datasæt, der gemmer data for mange stationer (eller buoy, eller trajectory, ...) I mange år kan du arrangere filerne, så der f.eks. er en fil pr. station. Men så, hver gang nye data til en station ankommer, skal du læse en stor gammel fil og skrive en stor ny fil. Og hvornårERDDAP™Genindlæs datasættet, det bemærker, at nogle filer er blevet ændret, så det læser disse filer helt. Det er ineffektivt.
-
Anbefalet anbefalet organisering af nærreal-time data i filerne: Gem dataene i bidder, for eksempel alle data til en station/buoy/trajectory i et år (eller en måned) . Så når en ny datum ankommer, kun filen med dette års (eller måneds) Data påvirkes.
-
Bedste: BrugNetCDFv3.ncfiler med en ubegrænset dimension (tidstid) . Så for at tilføje nye data, kan du bare føje de nye data uden at skulle læse og skrive hele filen. Ændringerne er lavet meget effektivt og væsentligt atomisk, så filen ikke nogensinde er i en inkonsistent tilstand.
-
Ellers: Hvis du ikke/kan ikke bruge.ncfiler med en ubegrænset dimension (tidstid) , så, når du skal tilføje nye data, skal du læse og skrive hele den berørte fil (Forhåbentlig lille, fordi det bare har et års (eller måneds) Værdi for data) . Heldigvis, alle filer i tidligere år (eller måneder) for denne station forbliver uændret.
-
I begge tilfælde, nårERDDAP™Genindlæs datasættet, de fleste filer er uændret; kun et par, små filer har ændret og skal læses.
Direktører
Filerne kan være i én mappe eller i en mappe og dens undermapper (Reklamation) . Hvis der er et stort antal filer (for eksempel >1.000) , operativsystemet (og dermed EDDTableFraFiles) vil fungere meget mere effektivt, hvis du gemmer filerne i en række undermapper (om året, eller en måned for datasæt med meget hyppige filer) , så der aldrig er et stort antal filer i en given mappe.
Fjernbetjente og HTTP Range anmodninger
-
Fjernbetjente og HTTP Range anmodninger (AKA Byte Servicerer, Byte Range anmodninger) -- EDDGridFraNcFiles, EDDTableFraMultidimNcFiles, EDDTableFraNcFiles og EDDTableFraNcCFFiles, kan undertiden tjene data fra.ncfiler på fjernservere og tilgås via HTTP, hvis serveren understøtterByte Servicevia HTTP-område anmodninger (HTTP-mekanismen til at betjene) . Dette er muligt, fordi netcdf-java (somERDDAP™Brug til at læse.ncfiler filer filer) Understøtter læsning af data fra fjern.ncfiler via HTTP-område anmodninger.
Gør ikke dette!
Brug i stedet [<cacheFraUrl> system] (#cachefraurl) .
CacheFraUrl
- [ [] ** <cacheFraUrl> ** Særkegle (#cachefraurl) - - - -
AlleEDDGridFraFiles og alle EDDTableFraFiles datasets understøtter et sæt tags, der fortællerERDDAP™at downloade og vedligeholde en kopi af alle en fjerndatasæts filer eller en cache af et par filer (Hentet efter behov) . Dette er en utrolig nyttig funktion.
-
The The The The The The The<cacheFraUrl> tag lader dig angive en URL med en liste over en fjerndatasæts filer fra en fjern filliste.
- Ustrukturerede data i THREDDS, f.eks. https://data.nodc.noaa.gov/thredds/catalog/aquarius/nodc\\_binned\\_V3.0/monthly/ \[2020-10-21 Denne server er ikke længere pålidelig tilgængelig.\]
- Usamlete datasæt iHyraxf.eks. https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/
- De fleste Apache-lignende fortegnelser, f.eks., https://www.ncei.noaa.gov/data/global-precipitation-climatology-project-gpcp-daily/
- S3 skovle, f.eks.
https://noaa-goes17.s3.us-east-1.amazonaws.com/
Dette kan dog kræve en AWS-konto og mere opsætning. Se endnuArbejde med S3 Skove iERDDAP™. Desuden behøver du normalt ikke at bruge cache FraUrl med filer i S3 skovle, hvis filerne er ASCII-filer (f.eks. .csv) , fordiERDDAP™kan effektivt læse data fra skovlen direkte via en strøm.
ERDDAP™vil kopiere eller cache disse filer i dataset's<FilDir> mappe. Hvis du har brug for støtte til en anden type fjern filliste (f.eks. FTP) , bedes du sende din anmodning til Chris. John på noaa.gov .
- Standardværdien for standardværdien<cacheFraUrl> tag er null. Hvis du ikke angiver en værdi for pengene<cacheFraUrl> tag, kopiere / cache system vil ikke blive brugt til dette datasæt.
- Hvis datasættets<FileRegex> indstilling er noget andet end .\*,ERDDAP™vil kun downloade filer, der svarer til filenRegex.
- Hvis datasættets<reursiv> indstilling er sand, og fjernfiler er i undermapper,ERDDAP™vil se i fjerntliggende undermapper, der matcher datasættets [<stiRegex>] (#patregex) , oprette den samme mappestruktur lokalt og sætte de lokale filer i samme undermapper.
- I GenererDatasets Xml, hvis du angiver en<cacheFraUrl> værdi, Generer Datasæt Xml vil skabe den lokale<FilDir> mappe og kopiere 1 fjernfil ind i det. GenererDatasets Xml vil derefter genereredatasets.xmlchunk baseret på denne prøvefil (Angiv prøve Filen=nothing) .
- Hvis datakilden er en fjernERDDAP™, brugEDDGridFraErddapeller eller ellerEDDTableFraErddapi stedet for<cacheFraUrl>. På den måde, din lokaleERDDAP™vil blive vist for at have datasættet, men behøver ikke at gemme nogen af dataene lokalt. Den eneste grund til at bruge<cacheFraUrl> for at få data fra en fjernERDDAP™er, når du har en anden grund til, at du ønsker at have en lokal kopi af datafiler. I så fald:
- Dette datasæt vil forsøge at abonnere på datasættet på fjernbetjeningenERDDAPså ændringer i det datasæt vil kalde denne datasæts flag Url, der forårsager dette lokale datasæt til at indlæse og downloade de ændrede fjernfiler. Således vil det lokale datasæt være opdateret meget snart efter ændringer er foretaget til fjerndatasættet.
- Du skal sende administratoren af fjernbetjeningenERDDAP™at spørge efterdatasets.xmltil fjerndatasættet, så du kan gøre datasættet i din lokaleERDDAP™se ud som datasættet i fjernbetjeningenERDDAP.
- Hvis datakilden er en fjernERDDAP™, den lokale datasæt vil forsøge at abonnere på fjerndatasættet.
- Hvis abonnementet lykkes, når fjernbetjeningenERDDAPGenindlæsninger og har nye data, vil den kontakte flagURL for denne datasæt, hvilket gør det til at indlæse og downloade de nye og/eller ændrede datafiler.
- Hvis abonnementet mislykkes (uanset årsag) eller hvis du blot ønsker at sikre, at den lokale datasæt er opdateret, kan du indstille enflag flag flag flagfor det lokale datasæt, så det vil indlæse, så det vil tjekke om nye og/eller ændrede fjerndatafiler.
- Hvis datakilden ikke er en fjernbetjeningERDDAP: Datasættet vil kontrollere for nye og/eller ændrede fjernfiler, når det genindlæsser. Normalt styres dette af [<reload Alle rettigheder>] (#loadeveryn minutter) . Men hvis du ved, hvornår der er nye fjernfiler, kan du indstille enflag flag flag flagfor det lokale datasæt, så det vil indlæse og kontrollere for nye og/eller ændrede fjerndatafiler. Hvis dette sker rutinemæssigt på et bestemt tidspunkt af dagen (f.eks. ved 7am) , du kan gøre et cron job at brugecurlKontakt flaget Url til denne datasæt, så det vil indlæse og kontrollere for nye og/eller ændrede fjerndatafiler.
-
The The The The The The The<cacheSizeGB> tag angiver størrelsen på den lokale cache. Du skal sandsynligvis kun bruge dette, når du arbejder med cloud-lagringssystemer somAmazon S3som er et almindeligt anvendt opbevaringssystem, der er en del afAmazon Web Services (AWS) . Standarden er -1.
- Hvis værdien er<=0 (f.eks. standardværdien af -1) ,
ERDDAP™vil downloade og vedligeholde en Komplet kopi af alle fjerndatasættets filer i datasættets datasæt<FileDir>.
- Dette er den indstilling, der anbefales, når det er muligt.
- Hver gang datasættet er genindlæst, det sammenligner navne, størrelser og sidsteModificerede tider af fjernfiler og de lokale filer, og downloads alle fjernfiler, der er nye eller har ændret sig.
- Hvis en fil, der var på fjernserveren forsvinder,ERDDAP™sletter ikke den tilsvarende lokale fil (ellers, hvis noget var midlertidigt forkert med fjernserveren,ERDDAP™kan slette nogle eller alle de lokale filer!) .
- Med denne indstilling vil du normalt indstille<opdateringEveryNMillis> til -1, da datasættet er klar over, hvornår det har kopieret nye datafiler på plads.
- Hvis værdien er >0,
ERDDAP™vil downloade filer fra fjerndatasættet efter behov i en lokal cache cache cache cache (i datasættet's<filDir>) med en tærskelstørrelse på det angivne antal GB.
- cachen skal være stor nok til at holde mindst flere datafiler.
- Generelt vil den større cache, jo bedre, fordi den næste ønskede datafil vil være mere tilbøjelige til allerede at være i cachen.
- Caching bør kun anvendes, nårERDDAP™kører i en cloud computing server (f.eks. en AWS-beregningsinstans) og fjernfiler i et cloud-lagringssystem (f.eks. AWS S3) .
- Når det diskplads, der bruges af de lokale filer, overstiger cachen Størrelse GB,ERDDAP™snart (måske ikke umiddelbart) slette nogle af de cachelagrede filer (i øjeblikket, baseret på Least Senest Brugt (LRU) algoritme algoritme) indtil det diskplads, der bruges af de lokale filer, er<0.75 \*cacheSizeGB ("goal") . Ja, der er tilfælde, hvor LRU udfører meget dårligt -- der er ingen perfekt algoritme.
- ERDDAP™vil aldrig forsøge at slette en cached-fil, derERDDAP™Begynd at bruge i de seneste 10 sekunder. Dette er et ufuldkommeligt system til at håndtere cachesystemet og datafillæser systemet er kun løst integreret. På grund af denne regel,ERDDAP™muligvis ikke i stand til at slette nok filer til at nå sit mål, hvor det vil udskrive en ADVARSEL til log.txt-filen, og systemet vil spilde en masse tid på at gå i cachen, og det er muligt, at størrelsen af filerne i cachen kan meget overstige cachestørrelseGB. Hvis dette nogensinde opstår, skal du bruge en større cacheSizeGB indstilling for den datasæt.
- I øjeblikket,ERDDAP™kontrollerer aldrig, om fjernserveren har en nyere version af en fil, der er i den lokale cache. Hvis du har brug for denne funktion, bedes du kontakte Chris. John på noaa.gov .
- Selv om brugen af de samme mærkenavne kan betyde, at kopisystemet og cachesystemet bruger det samme underliggende system, der ikke er korrekt.
- Kopieringssystemet starter proaktivt opgaver for at downloade nye og ændrede filer, hver gang datasættet er indlæst. Kun filer, der rent faktisk er blevet kopieret til den lokale mappe, er tilgængelige viaERDDAP™Datasæt.
- cachesystemet får den eksterne filliste, hver gang datasættet er genindlæst og foregiver, at alle disse filer er tilgængelige via datasættetERDDAP™Datasæt. Interessant set, alle de fjerntliggende filer endda vises i datasættets /files / websider og er tilgængelige for download (Selvom det måske kun efter en forsinkelse, mens filen først downloades fra fjernserveren til den lokale cache.)
- Datasets, der bruger cacheSizeGB kan drage fordel af at bruge ennThreadsIndstilling af større end 1, fordi dette vil gøre det muligt for datasættet at downloade mere end 1 fjernfil på et tidspunkt.
- Hvis værdien er<=0 (f.eks. standardværdien af -1) ,
ERDDAP™vil downloade og vedligeholde en Komplet kopi af alle fjerndatasættets filer i datasættets datasæt<FileDir>.
-
The The The The The The The<cachePartialPathRegex> tag er et sjældent brugt tag, der kan angive et alternativ til datasættets [<stiRegex>] (#patregex) . Standarden er null.
- Brug kun dette, hvis du kopierer hele datasættet via standarden<cacheSizeGB> værdi af -1. Med<cacheSizeGB> værdier af >1, vil dette ignoreres, fordi det ikke ersensisk.
- Se [dokumentationen for<stiRegex>] (#patregex) for vejledning om, hvordan du opbygger regex.
- Hvis dette er angivet, vil den blive brugt hver gang datasættet er genindlæst, undtagen første gang et datasæt bliver indlæst i starten af en måned.
- Dette er nyttigt, når fjerndatasættet gemmes i en labyrint af undermapper, og når de fleste af disse filer sjældent, hvis nogensinde, ændres. (()<hoste> NASA NASA NASA<hoste>) Du kan f.eks. angive et<cachePartialPathRegex> som lige matcher det nuværende år eller den nuværende måned. Disse regexes er meget vanskelige at angive, fordi alle de partielle og fulde stinavne skal matche de<cachePartialPathRegex> og fordi cachen<cachePartialPathRegex> skal arbejde med de eksterne webadresser og de lokale mapper. Et rigtigt livseksempel er:
-
<cacheFromUrl>https://data.nodc.noaa.gov/ghrsst/GDS2/L4/GLOB/JPL/MUR/v4.1/</cacheFromUrl>
\\>!-- \\[2020-10-21 This server is no longer reliably available.\\] For most types of remote directories, omit the filename (e.g., contents.html for Hyrax). -->
<fileDir>/u00/satellite/MUR41/</fileDir>
<fileNameRegex>\\*\\.nc</fileNameRegex>
<recursive>true</recursive>
<pathRegex>.\\*</pathRegex>
<cachePartialPathRegex>.\\*/v4\\.1/(|2018/(|01./))</cachePartialPathRegex>
EksempelURL'en ovenfor har filer i undermapper baseret på år (f.eks. 2018) og dag af året (f.eks. 001, 002, ..., 365 eller 366) . Bemærk, at<cachePartialPathRegex> starter med .\*, Derefter har en bestemt undermappe, som er fælles for fjernwebadresserne og de lokale mapper, f.eks. /v4«. Så har en række indlejrede capture grupper, hvor den første mulighed ikke er noget og den anden mulighed er en specifik værdi.
eksemplet ovenfor vil kun matche mapper for de anden 10 dage af 2018, f.eks.
https://data.nodc.noaa.gov/ghrsst/GDS2/L4/GLOB/JPL/MUR/v4.1/2018/010/ \[2020-10-21 Denne server er ikke længere pålidelig tilgængelig.\]
og dag 011, 012, ..., 019.
(Se detteIndeks dokumentationog og ogregex tutorial.)
Hvis du har brug for hjælp til at oprette<cachePartialPathRegex>, skriv venligst e-mailen<cacheFraUrl> til Chris. John på noaa.gov .
- En fælles tilgang: Hvis du vil bruge<cachePartialPathRegex>, ikke bruge det i første omgang, fordi du ønskerERDDAP™at downloade alle filer oprindeligt. Efter efterERDDAP™har downloadet alle filer, tilføje det til datasættets chunk afdatasets.xml.
Masser af filer
Hvis dit datasæt har mange tusinde filer,ERDDAP™kan være langsom til at svare på anmodninger om data fra den pågældende datasæt. Der er to spørgsmål her:
- Antallet af filer pr. mappe. Indvendigt,ERDDAP™kører på samme hastighed uanset om n-filer er i en mappe eller spredt i flere mapper. Men der er et problem: Jo flere filer i en given mappe, langsommere operativsystemet er ved at returnere listen over filer i mappen (pr. fil) til at tilERDDAP. Svarstiden kan være O (n log n) . Det er svært at sige, hvor mange filer i én mappe er for mange, men 10.000 er sandsynligvis for mange. Så hvis din opsætning genererer masser af filer, kan en anbefaling her være: sætte filerne i logisk organiseret subdirectories (f.eks. station eller station/år) .
En anden grund til at bruge subdirectories: hvis en bruger ønsker at brugeERDDAP's"files"system til at finde navnet på den ældste fil til station X, er det hurtigere og mere effektivt, hvis filerne er i station/år subdirectories, fordi mange mindre oplysninger skal overføres.
- Det samlede antal filer.
Til tabulære datasæt,ERDDAP™Hold styr på antallet af værdier for hver variabel i hver fil. Når en bruger foretager en anmodning,ERDDAP™skal læse alle data fra alle de filer, der muligvis har data, der matcher brugerens anmodning. Hvis brugeren beder om data fra en begrænset periode (f.eks. en dag eller en måned) , såERDDAP™behøver ikke at åbne for mange filer i dit datasæt. Men der er ekstreme tilfælde, hvor næsten alle filer kan have matchende data (f.eks. når vandTemperature =3.2C) . Da det tagerERDDAP™lidt tid (dels søgetiden på harddisken, dels tid til at læse filens header) bare for at åbne en given fil (og mere, hvis der er masser af filer i mappen) , der er en betydelig frist, hvis det samlede antal filer, der erERDDAP™skal åbne er meget stor. Selv åbning 1000 filer tager betydelig tid. Så der er fordele for periodisk at konsolidere de daglige filer i større stykker (f.eks. 1 station for 1 år) . Jeg forstår, at du måske ikke ønsker at gøre dette af forskellige grunde, men det fører til meget hurtigere reaktioner. I ekstreme tilfælde (f.eks. beskæftiger jeg mig med en GTS-datasæt, der har ~35 millioner kildefiler) , der betjener data fra et stort antal kildefiler er upraktisk, fordiERDDAP's svar på enkle forespørgsler kan tage timer og bruge tonsvis af hukommelse. Ved at konsolidere kildefiler i et mindre nummer (for GTS, jeg har 720 nu, 2 om måneden) ,ERDDAP™kan reagere hurtigt. Se endnuMillioner af filer
N.B. Solid State Drives er fantastisk! Den hurtigeste, nemmeste, billigste måde at hjælpeERDDAP™deal med et stort antal (lille lille lille lille lille) filer er at bruge en solid state drev. Se endnuSolid State Drives er fantastisk!
Millioner af filer
-
Nogle datasæt har millioner af kildefiler.ERDDAP™kan håndtere dette, men med blandede resultater.
- For anmodninger, der kun involverer variabler opført i [<subsetVariables>] (#subsetvariables) ,ERDDAP™har alle de nødvendige oplysninger allerede udvundet fra datafilen og gemt i en fil, så det kan reagere meget hurtigt.
- For andre anmodninger,ERDDAP™kan scanne datasættetscached filoplysningerog finde ud af, at kun et par af filerne kan have data, som er relevante for anmodningen og dermed reagerer hurtigt.
- Men for andre anmodninger (for eksempel, vandTemperature=18 grad\_C) hvor enhver fil muligvis har relevante data,ERDDAP™skal åbne et stort antal filer for at se, om hver af filerne har nogen data, der er relevante for anmodningen. Filerne åbnes sequentielt. På ethvert operativsystem og ethvert filsystem (andre end solide statsdrev) , det tager lang tid (så så sådanERDDAP™reagerer langsomt) og virkelig binder filsystemet (så så sådanERDDAP™reagerer langsomt på andre anmodninger) .
Heldigvis er der en løsning.
- Opsæt datasættet på en ikke-offentligERDDAP™ (din personlige computer?) .
- Opret og kør et script, der anmoder om en serie af.ncCF-filer, hver med en stor del af datasættet, normalt en periode (for eksempel alle data for en given måned) . Vælg den periode, så alle de resulterende filer er mindre end 2 GB (men forhåbentlig større end 1 GB) . Hvis datasættet har nær-real-time data, skal du køre scriptet til at genskabe filen i den aktuelle periode (f.eks. denne måned) Ofte ofte ofte (hver 10 minutter? hver time?) . Anmodninger tilERDDAP™for for for.ncCF-filer skaber enNetCDFv3.ncfil, der bruger denCF Diskret Sampling Geometries (DSG) Konguous Ragged Array data strukturer.
- Opsæt enEDDTableFraNcCFFilesDatasæt på din offentligeERDDAP™som får data fra den.nc (CF) filer.ERDDAP™kan udtrække data fra disse filer meget hurtigt. Og da der nu er snesevis eller hundredvis (i stedet for millioner) af filer, selv hvisERDDAP™skal åbne alle filer, det kan gøre så hurtigt.
Ja, dette system tager noget tid og bestræbelser på at opsætte, men det virker meget, meget godt. De fleste dataanmodninger kan håndteres 100 gange hurtigere end før. \[Bob vidste det var en mulighed, men det var Kevin O'Brien, der først gjorde dette og viste, at det virker godt. Nu, nu, Bob bruger dette til GTS-datasættet, som har omkring 18 millioner kildefiler, og somERDDAP™nu tjener via ca. 500.nc (CF) filer.\]
N.B. Solid State Drives er fantastisk! Den hurtigeste, nemmeste, billigste måde at hjælpeERDDAP™deal med et stort antal (lille lille lille lille lille) filer er at bruge en solid state drev. Se endnuSolid State Drives er fantastisk!
Kæmpe filer
- En enkelt enorm datafil (Især store ASCII datafiler) kan forårsage en OutOfMemory fejl. Hvis dette er problemet, bør det være indlysende, fordiERDDAP™vil ikke indlæse datasættet. Løsningen, hvis det er muligt, er at opdele filen i flere filer. Ideelt, kan du opdele filen i logiske chunks. Hvis filen f.eks. har 20 måneders værdi af data, opdele den i 20 filer, hver med 1 måneds dataværdi. Men der er fordele, selvom hovedfilen opdeles tilfældigt. Denne tilgang har flere fordele: a) Dette vil reducere den hukommelse, der er nødvendig for at læse datafiler til 1/20th, fordi kun én fil læses på et tidspunkt. b) Ofte,ERDDAP™kan håndtere anmodninger meget hurtigere, fordi det kun skal se i et eller et par filer for at finde dataene til en given anmodning. c) Hvis dataindsamling løbende, kan de eksisterende 20 filer forblive uændret, og du behøver kun at ændre en, lille, ny fil for at tilføje den næste måneds dataværdi til datasættet.
FTP Trouble / rådgivning
- Hvis du FTP nye datafiler til filerneERDDAP™server mensERDDAP™kører, der er chancen for, atERDDAP™vil indlæse datasættet under FTP-processen. Det sker oftere end du måske tror! Hvis det sker, vises filen for at være gyldig (det har et gyldigt navn) , men filen er ikke gyldig. HvisERDDAP™forsøger at læse data fra den ugyldige fil, vil den resulterende fejl forårsage, at filen skal føjes til tabellen af ugyldige filer. Dette er ikke godt. For at undgå dette problem skal du bruge et midlertidigt filnavn, når FTP'ing af filen f.eks. ABC2005.nc\_TEMP . Så, filenNameRegex test (se nedenfor) vil angive, at dette ikke er en relevant fil. Når FTP-processen er færdig, skal du omdøbe filen til det korrekte navn. Afrenningsprocessen vil medføre, at filen bliver relevant i et øjeblik.
Fil navn uddrag
\[Denne funktion er DEPRECATED. Brug venligst venligst\\\*FilName pseudosourceNameI stedet.\]
EDDTableFraFiles har et system til at udtrække en streng fra hvert filnavn og bruge det til at gøre en pseudo data variabel. I øjeblikket er der ingen system til at fortolke disse strenge som datoer/times. Der er flere XML-tags til at oprette dette system. Hvis du ikke har brug for del eller alt dette system, skal du blot angive disse tags eller bruge "" værdier.
- preExtractRegex er enalmindeligt udtryk (tutorial) Bruges til at identificere tekst, der skal fjernes fra start af filnavnet. Fjernelsen sker kun, hvis regex er matchet. Dette begynder normalt med "^" for at matche starten af filnavnet.
- indlæg UddragRegex er et almindeligt udtryk, der bruges til at identificere tekst, der skal fjernes fra slutningen af filnavnet. Fjernelsen sker kun, hvis regex er matchet. Dette slutter normalt med "$" for at matche slutningen af filnavnet.
- ekstraktRegex Hvis dette almindelige udtryk anvendes efter preExtractRegex og postExtractRegex for at identificere en streng, der skal udvindes fra filnavnet (f.eks.stationID) . Hvis regex ikke matches, bruges hele filnavnet (minus forskud og indlæg Udtræk) . Brug ".\*" til at matche hele filnavnet, der er efterladt efter preExtractRegex og postExtractRegex.
- kolonne kolonne kolonne NavnForExtract er datakolonne kildenavnet for de ekstra strenge. A A A A A AdataVariablemed dettesourceNameskal være i detdataVariables liste (med enhver datatype, men normalt String) .
Hvis et datasæt f.eks. har filer med navne som XYZAble.nc, XYZBaker.nc, XYZCharlie.nc..., og du vil oprette en ny variabel (stationID) når hver fil læses, som vil have station ID-værdier (Hoteller i nærheden af Baker, Charlie, ......) udvundet af filnavne, kan du bruge disse tags:
- <Supplerende oplysninger om preExtractRegex</preExtractRegex> Den første ^ er et almindeligt udtrykskarakter, som styrkerERDDAP™at se efter XYZ i begyndelsen af filnavnet. Dette forårsager XYZ, hvis det findes i starten af filnavnet, at blive fjernet (for eksempel filnavnet XYZAble.ncbliver Able.nc) .
- <IndlægExtractRegex>".nc$ $ $ $ $</postExtractRegex> $ i sidste ende er en regelmæssig udtryks speciel karakter, som styrkerERDDAP™at kigge efter.nci slutningen af filnavnet. Siden . er et almindeligt udtrykskarakter (som matcher enhver figur) , det er kodet som ". her her (fordi 2E er hexadecimal karakter nummer i en periode) . Dette årsager.nc, hvis det findes i slutningen af filnavnet, skal fjernes (for eksempel den delvise filnavn Able.ncbliver Able) .
- <ekstraktRegex>.\</ekstruder> .\ regulære udtryk matcher alle resterende tegn (for eksempel den delvise filnavn Able bliver ekstrakt til den første fil) .
- <kolonnenavnForExtract>stationID</columnNameForExtract> Dette fortællerERDDAP™at oprette en ny kildekolonne kaldetstationIDnår du læser hver fil. Hver række data til en given fil vil have teksten udvundet fra dens filnavn (for eksempel, Able) som værdien i værdienstationIDkolonne.
I de fleste tilfælde er der mange værdier for disse ekstrakt tags, der vil give de samme resultater -- regulære udtryk er meget fleksible. Men i et par tilfælde, er der bare en måde at få de ønskede resultater.
PseudosourceNames s s
Hver variabel i alle datasæt iERDDAP™har en [<sourceName>] (#sourcenavn) som angiver kildens navn for variablen. EDDTableFraFiles understøtter et par pseudosourceNames som udtrække en værdi fra nogle andre sted (f.eks. filnavnet eller værdien af en global egenskab) og fremme den værdi, der skal være en kolonne af konstante værdier for den mængde data (f.eks. tabellen af denne fils data) . For disse variable skal du angive variablens datatype via [<DataType>] (#datatype) tag. Hvis de ekstra oplysninger er en datoTime streng, angiver du formatet af datoTime streng i formatetEnheder attribut. I nærheden af The pseudosourceNameValgmuligheder er:
global:sourceNames s s
En global metadata egenskab i hver kildedatafil kan fremmes for at være en kolonne af data. Hvis en variabel er<sourceName> har formatet
<sourceName>global:*attributeName*</sourceName>
derefter, nårERDDAP™læser dataene fra en fil,ERDDAP™vil se efter en global egenskab af dette navn (for eksempel PI) og oprette en kolonne fyldt med attributets værdi. Dette er nyttigt, når attributten har forskellige værdier i forskellige kildefiler, fordi ellers ville brugerne kun se en af disse værdier for hele datasættet. For eksempel,
<sourceName>global:PI</sourceName>
Når du promoverer en egenskab til at være data,ERDDAP™fjerner den tilsvarende egenskab. Dette er passende, fordi værdien sandsynligvis er forskellig i alle filer; der henviser til, at i det aggregerede datasæt iERDDAP™Det vil kun have en værdi. Hvis du vil, kan du tilføje en ny værdi til attributten for hele datasættet ved at tilføje<Navnlig attribut Navn ↓ nyt nyt nyt Værdiværdi </att> til datasættets globale [<addAttributes>] (#addattributes) . Til globale attributter, derERDDAP™kræver f.eks. institution, skal du tilføje en ny værdi for attributten.
variabel:sourceNames s s
En variabels metadata egenskab i hver fil kan fremmes for at være en kolonne af data. Hvis en variabel er<sourceName\> har formatet
<sourceName>variable:*variableName*:*attributeName*<sourceName>
derefter, nårERDDAP™læser dataene fra en fil,ERDDAP™vil se efter den angivne egenskab (f.eks. ID) af den angivne variabel (for eksempel instrument) og oprette en kolonne fyldt med attributets værdi. Den overordnede variabel (for eksempel instrument) behøver ikke være en afdataVariables inkluderet i datasættets definition iERDDAP. For eksempel,
<sourceName>variable:instrument:ID</sourceName>
Dette er nyttigt, når attributten har forskellige værdier i forskellige kildefiler, fordi ellers ville brugerne kun se en af disse værdier for hele datasættet.
Når du promoverer en egenskab til at være data,ERDDAP™fjerner den tilsvarende egenskab. Dette er passende, fordi værdien sandsynligvis er forskellig i alle filer; der henviser til, at i det aggregerede datasæt iERDDAP™Det vil kun have en værdi. Hvis du vil, kan du tilføje en ny værdi til attributten for hele datasættet ved at tilføje<Navnlig attribut Navn ↓ nyt nyt nyt Værdiværdi </att> til variablens [<addAttributes>] (#addattributes) . For attributter, derERDDAP™kræver for eksempelioos\_category (Afhængigt af din opsætning) , du SKAL tilføje en ny værdi for attributten.
filnavnsourceNames s s
Du kan udtrække en del af en fils filnavn og fremme, at være en kolonne af data. pseudo [<sourceName>] (#sourcenavn) er det er
<sourceName>\\*\\*\\*fileName,*regex*,*captureGroupNumber*</sourceName>
For eksempel,
<sourceName>\\*\\*\\*fileName,A(\\d{12})\\.slcpV1.nc,1</sourceName>
Når EDDTableFraFiles læser data fra en fil, vil det sikre, at filnavnet (for eksempel A201807041442.slcpV1.nc) matcher det angivne regulære udtryk ("regex") og udtrække det angivne (i dette tilfælde, den første) Fang gruppe (som er en del omgivet af forældreheses) , for eksempel "201807041442". (Se detteIndeks dokumentationog og ogregex tutorial.) regex kan angives som en streng med eller uden omgivende citater. Hvis regex er angivet som en streng med omgivende citater, skal strengen væreJSON-stilstreng (med særlige tegn flygtet med "tegn) . capture gruppenummeret er normalt 1 (den første optagelse gruppe) , men kan være nummer.
VejnavnsourceNames s s
Du kan udtrække en del af en fils fulde sti Navn (/directories/filName.ext) og fremme at være en kolonne af data. pseudo [<sourceName>] (#sourcenavn) er det er
<sourceName>\\*\\*\\*pathName,*regex*,*captureGroupNumber*<sourceName>
For eksempel,
<sourceName>\\*\\*\\*pathName,/data/myDatasetID/(\\[A-Z0-9\\]\\*)/B(\\d{12}).nc,1</sourceName>
Når EDDTableFraFiles læser data fra en fil, vil det sikre den fulde vejnavn (for eksempel / Data/myDatasetID/BAY17/B201807041442.nc. Til denne test, vil mappe separatorerne altid være'/', aldrig "" '') matcher det angivne regulære udtryk ("regex") og udtrække det angivne (i dette tilfælde, den første) Fang gruppe (som er en del omgivet af forældreheses) , for eksempel "BAY17". (Se detteIndeks dokumentationog og ogregex tutorial.) regex kan angives som en streng med eller uden omgivende citater. Hvis regex er angivet som en streng med omgivende citater, skal strengen være enJSON-stilstreng (med særlige tegn flygtet med "tegn) . capture gruppenummeret er normalt 1 (den første optagelse gruppe) , men kan være nummer.
"0 filer" Fejlmeddelelse
- Hvis du kørerGenererDatasetsXmleller eller ellerBilleder af DasDds, eller hvis du forsøger at indlæse en EDDTableFra... Filer datasæt iERDDAP™, og du får en "0 filer" fejlmeddelelse, der angiver, atERDDAP™fundet 0 matchende filer i mappen (når du tror, at der er matchende filer i denne mappe) :
- Tjek, at filerne virkelig er i denne mappe.
- Tjek stavemåden af mappenavnet.
- Tjek filenNameRegex. Det er virkelig nemt at lave fejl med regexes. Prøv regex .\*, som skal matche alle filnavne. (Se detteIndeks dokumentationog og ogregex tutorial.)
- Kontroller, at brugeren, der kører programmet (f.eks. bruger=tomcat (?) for Tomcat /ERDDAP) har 'læs' tilladelse til disse filer.
- I nogle operativsystemer (for eksempel SELinux) Afhængigt af systemindstillinger skal brugeren, der løb programmet, have "læs" tilladelse til hele kæden af mapper, der fører til den mappe, der har filerne.
standardiser Hvad
- Når en del af EDDTableFraFiles er at aggregere et sæt kildefiler, for en given variabel, alle kildefiler skal have identiske egenskabsværdier for flere attributter:scale\_factor,add\_offset, \_Unsigned,missing\_value, \_FillValue og enheder. Tænk på det: Hvis en fil har vindSpeed enheder=knots og en anden har vindSpeed enheder=m/s, skal dataværdierne fra de to filer ikke inkluderes i samme aggregerede datasæt. Så når EDDTableFraFiles først opretter datasættet, læser den egenskabsværdierne fra en fil, afviser derefter alle de filer, der har forskellige værdier for disse vigtige attributter. For de fleste samlinger af filer, er dette ikke et problem, fordi attributterne af alle variabler er konsekvent. Men for andre samlinger af filer, kan dette føre til 1%, 10%, 50%, 90% eller endda 99% af filerne afvises som "dårlig" filer. Det er besvær.
EDDTableFra filer har et system til at håndtere dette problem: standardiser Hvad. Standardiser Hvilken indstilling fortæller EDDTableFraFiles til at standardisere filerne så snart den læser dem, før EDDTableFraFiles ser på attributterne for at se, om de er konsekvent.
Klipsiden er: Hvis datasættet ikke har dette problem, skal du ikke bruge standardiser Hvad. standardiser Hvad har nogle potentielle risici (diskuteret nedenfor) og mangler. Så hvis du ikke rent faktisk har brug for funktionerne i standardiser Der er ingen grund til at dække de potentielle risici og mangler. Den største effektivitet er: Når forskellige standardiser Hvilke muligheder anvendes af et datasæt, betyder det, at kildefilerne gemmer data på signifikant forskellige måder (f.eks. med forskelligescale\_factorog og ogadd\_offset, eller med tidsstrenge ved hjælp af forskellige formater) . Således, for en given begrænsning i en brugerkonto, er der ingen måde for en given begrænsning påERDDAP™for at gøre en enkelt kilde-niveau begrænsninger, der kan anvendes til alle kildefiler. SåERDDAP™kan kun anvende de berørte begrænsninger på et højere niveau. SåERDDAP™skal læse data fra flere filer, før du anvender de højere, destinationsbegrænsninger. Så anmodninger om datasæt, der bruger standardiser Det tager længere tid at blive behandlet.
For at bruge dette system skal du angive
<standardizeWhat>*standardizeWhat*</standardizeWhat>
i områdetdatasets.xmlfor EDDTableFra... Filer datasæt(inden for te)<datasæt> tag).
The The The The The The The standardiser Hvad værdi angiver, hvilke ændringer EDDTableFraFiles skal forsøge at anvende. Ændringerne er summen af en kombination af:
- Pakke
Dette gør mange almindelige og sikre operationer til at standardisere numeriske kolonner i filerne:
- Hvisscale\_factorog/elleradd\_offsetattributter er til stede, fjerne dem og anvende dem til at pakke dataværdierne.
- Fjernpakkede attributter (f.eks. faktiske\_min, faktiske\_max,actual\_range,data\_min,data\_max, data\_range,valid\_min,valid\_max,valid\_range) , hvis nutid, hvis variablen var pakket, og hvis attributværdierne var pakket (Dette er vanskeligt, men med rimelighed pålidelig) .
- Hvis \_FillValue og/ellermissing\_valueer til stede, konvertere disse dataværdier tilERDDAP's "standard" manglende værdier: MAX\_VALUE for heltalstyper (f.eks. 127 for bytes, 32,767 for kort og 2,147,483,647 for ints, 9223372036854775807807 for lange) og NaN til dobbelt og fly.
- Fjern den gamle \_FillValue og/ellermissing\_valueattributter attributter attributter (hvis nogen) , og erstatte dem med bare \_FillValue=\[te te te teERDDAP™Standard mangler værdi\].
- Standardiser Numeric Times Hvis en numeriske kolonne har CF-style numeriske tidsenheder (" " " " tidenUnits siden siden siden baseTime ", f.eks. "dage siden 1900-01") , denne konverterer datoen Tidsværdier i"seconds since 1970-01-01T00:00:00Z"værdier og ændringer af attributten enheder for at angive det. Hvis dette er valgt, og der er en chance for, at denne variabel harscale\_factoreller eller elleradd\_offset, #1 skal vælges også.
- Påfør strengemissing\_value
Hvis en streng kolonne har \_FillValue og/ellermissing\_valueattributter, denne konverterer disse værdier til "" og fjerner attributter. - Find Numericmissing\_value
Hvis en numeriske kolonne ikke har \_FillValue ellermissing\_valueattributter, dette forsøger at identificere en ikke-definerede numeriskemissing\_value (fx -999, 9999, 1e37f) og konvertere forekomster af det til "standard" værdier (MAX\_VALUE for heltalstyper, og NAN for dobbelter og svæver) . Denne mulighed har en risiko: hvis den største eller mindste gyldige dataværdi ser ud som en manglende værdi (fx 999) , så vil disse gyldige dataværdier blive konverteret til manglende værdier (f.eks. NaN) . - Ændre strenge "N/A" til "" For hver streng kolonne, konvertere flere strenge almindeligt anvendt til at angive en manglende streng værdi til "". I øjeblikket ser dette ud til ".", "...", "-", "?", "??", "N/A", "NA", "none", "ikke relevant", "null", "ikke kendt", "uspecificeret". Strengsøgningen er case-infølsomme og anvendt efter strengene er trimmet. "nd" og "andet" er specielt ikke på listen. Denne mulighed har en risiko: Strenge, som du overvejer at være gyldige værdier kan konverteres til "".
- Standardiser til ISO 8601 DateTimes For hver streng kolonne, prøv at konvertere ikke-purely-numerisk streng datoTimes (f.eks. "Jan 2, 2018") til ISO 8601 streng datoTimes ("2018-01-02") . Bemærk! at alle dataværdier for kolonnen skal bruge samme format, ellers vil denne mulighed ikke foretage ændringer i en given kolonne. Denne mulighed har en risiko: Hvis der er en kolonne med strengværdier, der bare sker for at se ud som en fælles dato Tidsformat, vil de blive konverteret til ISO 8601 String datoTimes.
- Standardisere Compact DateTimes til ISO 8601 DateTimes For hver streng eller iteger-type kolonne, prøv at konvertere rent-numerisk streng datoTimes (f.eks. "20180102") til ISO 8601 streng datoTimes ("2018-01-02") . Bemærk! at alle dataværdier for kolonnen skal bruge samme format, ellers vil denne mulighed ikke foretage ændringer i en given kolonne. Denne mulighed har en risiko: Hvis der er en kolonne med værdier, der ikke er kompakt dato Tider, men se ud som kompakte datoTimes, vil de blive konverteret til ISO 8601 String datoTimes.
- Standardiser enheder Dette forsøger at standardisere enhedsstrengen for hver variabel. For eksempel "metre pr. sekund", "meter / sekunder","m.s^-1","m s-1", "m.s-1" vil alle blive konverteret til "m.s-1". Dette ændrer ikke dataværdierne. Dette fungerer godt for gyldigtUDUNITSenheder strenge, men kan have problemer med ugyldige eller komplekse strenge. Du kan håndtere problemer ved at angive specifikke fra-to par i<Standardiser Udenheder> i in in in inERDDAP's \[Tomcat\]/webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/messages.xml-fil. Send dine ændringer til Chris. John på noaa.gov, så de kan indarbejdes i standardmeddelelser.xml. Denne mulighed har en risiko: Dette kan påvirke nogle komplekse eller ugyldige enheder; dog kan du bruge det arbejde, der er beskrevet ovenfor til at omgå problemer, hvis de opstår.
Standardværdien Hvad er 0, som ikke gør noget.
Hvis / når du ændrer værdien af standardiser Hvad, næste gang datasættet er reloaded,ERDDAP™vil læse alle datafiler til datasættet for at genopbygge mini-databasen med oplysninger om hver fil. Hvis datasættet har masser af filer, vil dette tage lang tid.
Noter:
- En vanskelig ting er - Standardiser Hvilken indstilling bruges til alle kolonner i kildefilen. Så f.eks. ved hjælp af #2048 kan med succes konvertere en kolonne med kompakt streng datoTimes til ISO 8601 String datoTimes, men det kan også fejlagtigt konvertere en kolonne med strenge, der bare sker for at se ud som kompakte datoTimes.
- datasets.xmlog GenererDatasets X ml -
Det er især vanskeligt at få indstillingerne korrekt idatasets.xmlat gøre dine datasæt arbejde på den måde, du ønsker det til. Den bedste tilgang (som altid) er:
- BrugGenererDatasetsXmlog angive værdien af standardiser Hvad du gerne vil bruge.
- BrugBilleder af DasDdsfor at sikre, at datasættet indlæser korrekt og afspejler standardiseren Hvilken indstilling, du har angivet.
- Test datasættet ved hånden, når det er iERDDAP™for at sikre, at de berørte variable fungerer som forventet.
- Risikoer - Valgmuligheder #256 og derover er mere risikabelt, dvs. der er en større chance for, atERDDAP™vil foretage en ændring, der ikke skal gøres. For eksempel kan mulighed #2048 ved et uheld konvertere en variabel med station ID strenge, der alle bare sker for at se ISO 8601 "compact" datoer (fx 20180102) i ISO 8601"extended"datoer ("2018-01-02") .
- Langsom efter en ændring -- Da værdien af standardiser Hvad ændrer de dataværdier, som EDDTableFraFiles ser for hver datafil, hvis du ændrer standardiseren Hvilken indstilling vil EDDTableFraFiles smide alle de cachelagrede oplysninger om hver fil (som indeholder min og max for hver datavariabel i hver fil) og læs hver datafil igen. Hvis et datasæt har et stort antal filer, kan dette være meget tidskrævende, så det vil tage lang tid for datasættet at indlæse første gangERDDAP™Genindlæs det, når du foretager ændringen.
- Heuristiske - Valgmuligheder #256 og over brug heuristics til at foretage deres ændringer. Hvis du kommer over en situation, hvor heuristics træffer en dårlig beslutning, bedes du sende en beskrivelse af problemet til Chris. John på noaa. gov, så vi kan forbedre de heuristiske.
- Alternativer -- Hvis en af standardiser Hvilke muligheder ikke løser et problem for et givent datasæt, kan du muligvis løse problemet ved at gøre et problem.ncml filparallelt hver datafil og definere ændringer i ting i filerne, så filerne er konsekvent. Så fortæl EDDTableFra... Filer datasæt til at aggregere.ncml filer.
Eller brugNCOat foretage ændringer i filerne, så filerne er konsekvent.
Separat kolonner for år, måned, dato, time, minut, sekunder
Det er ret almindeligt for tabulære datafiler at have separate kolonner i år, måned, dato, time, minut, sekund. Før før førERDDAP™v2.10, den eneste løsning var at redigere datafilen for at kombinere disse kolonner i en samlet tidskolonne. MedERDDAP™2.10+, kan du bruge den [ []<sourceName>= udtryks udtryk <sourceName>] (#sourcenavn) at fortælleERDDAP™hvordan du kombinerer kildekolonnerne til at lave en samlet tidskolonne, så du ikke længere skal redigere kildefilen.
<Supplerende oplysninger om SkipHeaderToRegex>
- [ []<I nærheden af SkipHeaderToRegex>] (#skipheadertoregex) --
FORSIGTIG. (Til EDDTableFraAsciiFiles og EDDTableFra kolonnearAsciiFiles-datasæt.)
Når EDDTableFraAsciiFiles læser en datafil, vil det ignorere alle linjerne op til og herunder den linje, der matcher dette regulære udtryk. Standarden er "", som ikke bruger denne mulighed. Et eksempel er
<skipHeaderToRegex>\\\*\\\*\\\* END OF HEADER.\\*<skipHeaderToRegex>
som vil ignorere alle linjer op til og herunder en linje, der starter med "\\\* END OF HEADER".
Når du bruger dette tag,<kolonnenavneRow> og<førstDataRow> handling, som hvis header er blevet fjernet, før filen læses. Du vil f.eks. bruge kolonnenavneRow=0, hvis kolonnenavnene er på rækken lige efter sidehovedet.
Hvis du vil bruge generere Datasæt Xml med et datasæt, der har brug for dette tag:
- Lav en ny, midlertidig, prøvefil ved at kopiere en eksisterende fil og fjerne headeren.
- Løb generere Datasæt Xml og angive, at prøvefilen.
- Tilføj manuelt tilføjelsen<springHeaderToRegex> tag tildatasets.xmlLidt.
- Slette den midlertidige, prøvefil.
- Brug datasættet iERDDAP.
<KicklinesRegex>
FORSIGTIG. (Til EDDTableFraAsciiFiles og EDDTableFra kolonnearAsciiFiles-datasæt.)
Når EDDTableFraAsciiFiles læser en datafil, vil det ignorere alle linjer, der matcher dette regulære udtryk. Standarden er "", som ikke bruger denne mulighed. Et eksempel er
<skipLinesRegex>#.\\*<skipLinesRegex>
som vil ignorere alle linjer, der starter med "#".
Når du bruger dette tag,<kolonnenavneRow> og<førstDataRow> handle som om alle de matchende linjer blev fjernet, før filen læses. Du vil f.eks. bruge kolonnenavnsRow=0, selvom der er flere linjer, der starter med, f.eks. "#" i starten af filen.
EDDTableFraFiles skelet XML
<dataset type="EDDTableFrom...Files" datasetID\="..." active\="..." >
<nDimensions>...</nDimensions> <!-- This was used prior to ERDDAP™
version 1.30, but is now ignored. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDTableFromFiles subclasses, this uses Java's WatchDirectory system
to notice new/deleted/changed files quickly and efficiently. -->
<standardizeWhat>...</standardizeWhat> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<specialMode>mode</specialMode> <-- This rarely-used, OPTIONAL tag
can be used with EDDTableFromThreddsFiles to specify that special,
hard-coded rules should be used to determine which files should
be downloaded from the server. Currently, the only valid mode
is SAMOS which is used with datasets from
https://tds.coaps.fsu.edu/thredds/catalog/samos to download only the
files with the last version number. -->
<sourceUrl>...</sourceUrl> <-- For subclasses like
EDDTableFromHyraxFiles and EDDTableFromThreddsFiles, this is where
you specify the base URL for the files on the remote server.
For subclasses that get data from local files, ERDDAP™ doesn't use
this information to get the data, but does display the
information to users. So I usually use "(local files)". -->
<fileDir>...</fileDir> <-- The directory (absolute) with the data
files. -->
<recursive>true|false</recursive> <!-- 0 or 1. Indicates if
subdirectories of fileDir have data files, too. -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\") will be accepted. -->
<fileNameRegex>...</fileNameRegex> <-- 0 or 1. A regular expression
(tutorial) describing valid data file names, for example,
".\\.nc" for all .nc files. -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<metadataFrom>...</metadataFrom> <-- The file to get metadata
from ("first" or "last" (the default) based on file's
lastModifiedTime). -->
<charset>...</charset>
<!-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
only) This OPTIONAL tag specifies the character set (case
sensitive!) of the source files, for example, ISO-8859-1
(the default) and UTF-8. -->
<skipHeaderToRegex>...</skipHeaderToRegex>
<skipLinesRegex>...</skipLinesRegex>
<columnNamesRow>...</columnNamesRow> <-- (For EDDTableFromAsciiFiles
only) This specifies the number of the row with the column
names in the files. (The first row of the file is "1".
Default = 1.) If you specify 0, ERDDAP™ will not look for
column names and will assign names: Column#1, Column#2, ... -->
<firstDataRow>...</firstDataRow>
<-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
only) This specifies the number of the first row with data in the
files. (The first row of the file is "1". Default = 2.) -->
<dimensionsCSV>...</dimensionsCSV> <-- (For EDDTableFromNcFiles
and EDDTableFromMultidimNcFiles only) This is a comma-separated
list of dimension fullNames. If specified, ERDDAP™ will only read
variables in the source files which use some or all of these
dimensions, plus all of the scalar variables. If a dimension
is in a group, you must specify its fullName,
e.g., "groupName/dimensionName". -->
<-- The next four tags are DEPRECATED. For more information, see
File Name Extracts. -->
<preExtractRegex>...</preExtractRegex>
<postExtractRegex>...</postExtractRegex>
<extractRegex>...</extractRegex>
<columnNameForExtract>...</columnNameForExtract>
<sortedColumnSourceName>...</sortedColumnSourceName>
<-- The sourceName of the numeric column that the data files are
usually already sorted by within each file, for example, "time".
Don't specify this or use an empty string if no variable is
suitable. It is ok if not all files are sorted by this column.
If present, this can greatly speed up some data requests.
For EDDTableFromHyraxFiles, EDDTableFromNcFiles and
EDDTableFromThreddsFiles, this must be the leftmost (first) axis variable.
EDDTableFromMultidimNcFiles ignores this because it has a better
system. -->
<sortFilesBySourceNames>...</sortFilesBySourceNames>
<-- This is a space-separated list of sourceNames
which specifies how the internal list of files should be sorted
(in ascending order), for example "id time".
It is the minimum value of the specified columns in each file
that is used for sorting.
When a data request is filled, data is obtained from the files
in this order. Thus it determines the overall order of the data
in the response. If you specify more than one column name, the
second name is used if there is a tie for the first column; the
third is used if there is a tie for the first and second
columns; ... This is OPTIONAL (the default is
fileDir+fileName order). -->
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
false (the default)) -->
<cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
<cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<-- For EDDTableFromHyraxFiles, EDDTableFromMultidimNcFiles,
EDDTableFromNcFiles, EDDTableFromNccsvFiles, and
EDDTableFromThreddsFiles, the source's axis variables (for
example, time) needn't be first or in any specific order. -->
</dataset>
EDDTableFraAsciiService
EDDTableFraAsciiService er stort set en skærm scraper. Det er beregnet til at håndtere datakilder, der har en simpel webtjeneste til at anmode om data (Oftest en HTML-formular på en webside) og som kan returnere dataene i nogle struktureret ASCII format (f.eks. et koma-separeret værdi eller kolonnear ASCII tekstformat, ofte med andre oplysninger før og/eller efter data) .
EDDTableFraAsciiService er superklasse af alle EDDTableFraAsciiService... klasser. Du kan ikke bruge EDDTableFraAsciiService direkte. Brug i stedet en del af EDDTableFraAsciiService til at håndtere specifikke typer af tjenester:
- EDDTableFraAsciiServiceNOSFå data fraNOAANOS's ASCII tjenester.
I øjeblikket understøttes der ingen andre servicetyper. Men det er normalt relativt nemt at støtte andre tjenester, hvis de arbejder på en lignende måde. Kontakt os, hvis du har en anmodning.
Detaljer Detaljer
Følgende oplysninger gælder for alle underklasser af EDDTableFraAsciiService.
- Kontrast --ERDDAP™tabulerede dataanmodninger kan lægge begrænsninger på enhver variabel. Den underliggende tjeneste kan eller kan ikke tillade begrænsninger på alle variabler. For eksempel understøtter mange tjenester kun begrænsninger på stationnavne, breddegrad, længde og tid. Så når en underklasse af EDDTableFraAsciiService får en anmodning om en del af et datasæt, passerer den så mange begrænsninger som muligt for kildedatatjenesten og derefter anvende de resterende begrænsninger for de data, der returneres af tjenesten, før de overdrager dataene til brugeren.
- Gyldig rækkevidde -- I modsætning til mange andre datasættyper kender EDDTableFraAsciiService normalt ikke rækkevidden af data for hver variabel, så det ikke hurtigt kan afvise anmodninger om data uden for det gyldige område.
- Parsing af ASCII Text Response -- Når EDDTableFraAsciiService får et svar fra en ASCII Text Service, skal det bekræfte, at svaret har det forventede format og oplysninger, og derefter udtrække dataene. Du kan angive formatet ved at bruge forskellige særlige tags i klumpen af XML for denne datasæt:
- <førData1> gennem<førData10> tags --- Du kan angive en række stykker tekst (så mange som du ønsker, op til 10) at EDDTableFraAsciiService skal se efter i headeren af ASCII tekst returneret af tjenesten med<førData1> gennem<førData10>. Dette er f.eks. nyttigt for at bekræfte, at svaret indeholder de forventede variable ved hjælp af de forventede enheder. Det sidste førData-tag, som du angiver den tekst, der opstår lige før dataene starter.
- <efterData> -- Dette angiver den tekst, som EDDTableFraAsciiService vil se efter i ASCII-teksten returneret af den tjeneste, der betyder slutningen af dataene.
- <Ingen data> -- Hvis EDDTableFraAsciiService finder denne tekst i ASCII-teksten returneret af tjenesten, konkluderer det, at der ikke er data, der svarer til anmodning.
EDDTableFraAsciiService skelet XML
<dataset type="EDDTableFromAsciiService..." datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<sourceUrl>...</sourceUrl>
<beforeData1>...<beforeData1> <!-- 0 or 1 -->
...
<beforeData10>...<beforeData10> <!-- 0 or 1 -->
<afterData>...<afterData> <!-- 0 or 1 -->
<noData>...<noData> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDTableFraAsciiServiceNOS
EDDTableFraAsciiServiceNOS gør EDDTable datasæt fra ASCII tekstdatatjenester, der tilbydes afNOAA'sNational Ocean Service (NOS) . For information om, hvordan denne klasse fungerer og hvordan man bruger den, se denne klasses superklasseEDDTableFraAsciiService. Det er usandsynligt, at nogen andre end Bob Simons bliver nødt til at bruge denne subclass.
Da dataene i respons fra en NOS-tjeneste bruger en kolonnear ASCII tekstformat, skal datavariabler andre end breddegrad og længdegrad have en særlig egenskab, der angiver, hvilke tegn på hver datalinje indeholder de variable data, f.eks.
<att name="responseSubstring">17, 25</att>
EDDTableFraAllDatasets
EDDTableFraAllDatasets er et datasæt på højere niveau, som har oplysninger om alle de andre datas æt, der i øjeblikket er indlæst i dine dataERDDAP. I modsætning til andre typer af datasæt, er der ingen specifikation forallDatasetsDatasæt idatasets.xml.ERDDAP™Opret automatisk en EDDTableFraAllDatasets datasæt (med meddatasetID= = = = =allDatasets) . Således enallDatasetsDatasæt vil blive oprettet i hverERDDAP™installation og vil arbejde på samme måde på hverERDDAP™installation.
The The The The The The TheallDatasetsDatasæt er et tabulært datasæt. Det har en række oplysninger for hver datasæt. Det har kolonner med oplysninger om hvert datasæt, f.eks.datasetID, tilgængelig, institution, titel, minLongitude, maxLongitude, minLatitude, maxLatitude, minTime, maxTime osv. Fordi fordiallDatasetser et tabulært datasæt, kan du forespørge den samme måde, du kan forespørge andre tabulære datasæt iERDDAP™, og du kan angive filtypen for svaret. Dette lader brugerne søge efter interessedata på meget kraftige måder.
EDDTableFraAsciiFiles
EDDTableFraAsciiFiles aggregerer data fra komma-, fane-, semikolonin- eller rum-separatede tabulære ASCII-datafiler.
- Oftest vil filerne have kolonnenavne på den første række og data, der starter på den anden række. (Her hedder den første række af filen ro nummer 1.) Men du kan bruge<kolonnenavneRow> og<førsteDataRow> i dindatasets.xmlfil for at angive et andet rækkenummer.
- ERDDAP™Tillad rækker af data til at have forskellige dataværdier.ERDDAP™antager, at de manglende dataværdier er de endelige kolonner i rækken.ERDDAP™tildele standard manglende værdiværdier for de manglende dataværdier. (tilføjet v1.56)
- ASCII-filer er nemme at arbejde med, men de er ikke den mest effektive måde at lagre/retrieve-data. For større effektivitet, gemme filerne somNetCDFv3.ncfiler filer filer (med en dimension, "row", delt af alle variabler) I stedet. Du kanBrug af brugERDDAP™til at generere de nye filer.
- Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. På grund af den samlede mangel på metadata i ASCII-filer, skal du altid redigere resultaterne af GenererDatasetsXml.
- ADVARSEL: HvornårERDDAP™Læser ASCII datafiler, hvis det finder en fejl på en given linje (f.eks. forkert antal varer) , det logger en advarselsmeddelelse ("WARNING: Bad linje (s s s) af data" ... med en liste over de dårlige linjer på efterfølgende linjer) Til højrelog.txt-filog derefter fortsætter med at læse resten af datafilen. Det er derfor dit ansvar at se periodisk (eller skrive et script til at gøre det) for denne meddelelse i loget. txt, så du kan løse problemerne i datafiler.ERDDAP™opsættes på denne måde, så brugerne kan fortsætte med at læse alle de tilgængelige gyldige data, selvom nogle linjer af filen har fejl.
EDDTableFra Billeder af AwsXmlFiles
EDDTableFra Billeder af AwsXmlFiles aggregerer data fra et sæt Automatisk Vejrstation (AWS) XML-datafiler ved hjælp af WeatherBug Rest XML API (som ikke længere er aktiv) .
- Denne type fil er en enkel, men ineffektiv måde at gemme dataene, fordi hver fil normalt synes at indeholde observationen fra blot et tidspunkt. Så der kan være et stort antal filer. Hvis du vil forbedre ydeevnen, skal du overveje at konsolidere grupper af observationer (en uges værd?) i in in in inNetCDFv3.ncfiler filer filer (bedste:.ncfiler med deCF Diskret Sampling Geometries (DSG) Konguous Ragged Array format) og brug afEDDTableFraMultidimNcFiles (eller eller ellerEDDTableFraNcCFFiles) til at tjene dataene. Du kanBrug af brugERDDAP™til at generere de nye filer.
- Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
EDDTableFra kolonnearAsciiFiles
EDDTableFra kolonnearAsciiFiles aggregerer data fra tabular ASCII datafiler med faste bredde kolonner.
-
Oftest vil filerne have kolonnenavne på den første række og data, der starter på den anden række. Den første linje/række i filen kaldes række #1. Men du kan bruge<kolonnenavneRow> og<førsteDataRow> i dindatasets.xmlfil for at angive et andet rækkenummer.
-
The The The The The The The<addAttributes> for hver<dataVariable> for disse datasæt skal inkludere disse to særlige attributter:
- <ont navnene Helteger <påt> - Angiv tegnkolonnen i hver linje, der er starten på denne datavariable.
- <ont navn - Wikipedia Helteger <påt> - Angiv tegnkolonnen i hver linje, der er 1 efter afslutningen af denne data variabel.
Den første figurkolonne kaldes kolonne #0. For eksempel, for denne fil, der har tidsværdier, der viser temperaturværdier :
0 1 2 <-- character column number 10's digit
0123456789012345678901234567 <-- character column number 1's digit
time temp
2014-12-01T12:00:00Z12.3
2014-12-02T12:00:00Z13.6
2014-12-03T12:00:00Z11.0
tidens datavariable ville have
<att name="startColumn">0<att>
<att name="stopColumn">20<att>
og tidens datavariable ville have
<att name="startColumn">20<att>
<att name="stopColumn">24<att>
Disse attributter skal specificeres for alle variabler undtagenFast værdiog og ogfilnavnevariabler.
- ASCII-filer er nemme at arbejde med, men de er ikke en effektiv måde at gemme/retrieve-data. For større effektivitet, gemme filerne somNetCDFv3.ncfiler filer filer (med en dimension, "row", delt af alle variabler) I stedet. Du kanBrug af brugERDDAP™til at generere de nye filer.
- Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. På grund af vanskeligheden ved at bestemme start- og slutpositioner for hver datakolonne og den samlede mangel på metadata i ASCII-filer, skal du altid redigere resultaterne fra GenererDatasetsXml.
EDDTableFraHttpGet
EDDTabel FraHttpGet er forskellige fra alle andre typer datasæt iERDDAP™i det, det har et system, hvor specifikke "forfattere" kan tilføje data, revidere data eller slette data fra datasættet regelmæssigtHTTP GETeller eller ellerTilmeld diganmodninger fra et computerprogram, et script eller en browser. Datasættet er forespørges af brugere på samme måde, at alle andre EDDTable datasæt er forespørgelige iERDDAP. Se beskrivelsen af denne klasses superklasse,EDDTableFraFiles, at læse om de funktioner, der er arvet fra denne superklasse.
De unikke funktioner i EDDTableFraHtttpGet er beskrevet nedenfor. Du skal læse alt dette indledende afsnit og forstå det; ellers kan du have urealistiske forventninger eller få dig selv i problemer, der er svært at løse.
Præsenteret brug
Dette system er beregnet til:
- Tabular (i situ) data, ikke gitterede data.
- Realtime data - Målet er at tillade en forfatter (f.eks. sensoren, et automatiseret QC-script eller et bestemt menneske) for at foretage en ændring i datasættet (via en.insert eller .delete kommando) og gør denne ændring tilgængelig forERDDAP™brugere, alt i mindre end 1 sekund, og muligvis meget hurtigere. Det meste af det 1 sekund er netværkstid.ERDDAP™kan behandle anmodningen i ca. 1 ms og dataene er umiddelbart tilgængelige for brugerne. Dette er enhurtigt,robust robust robust robust, ogpålideligt system.
- Næsten enhver hyppighed af data - Dette system kan acceptere infrequent data (fx dagligt) gennem meget hyppig data (f.eks. 100 Hz data) . Hvis du optimerer systemet, kan det håndtere højere frekvensdata (måske 10 KHz data, hvis du går til ekstremer) .
- Data fra en sensor eller en samling af lignende sensorer.
- Versionering/ / / /Reproducible Science/ / / /DOIs -- Situationer, hvor du skal kunne foretage ændringer i dataene (f.eks. ændre et kvalitets kontrol flag) , ved hvilken forfatter lavede hver ændring, kender tidsstempel af, hvornår forfatteren gjorde ændringen, og (efter anmodning) kunne se de originale data fra før ændringen blev foretaget. Derfor er disse datasets berettiget til atDOIs s s. fordi de mødesDOIkrav om, at datasættet ikke ændrer sig, undtagen ved sammenlægning. Generelt, i nærheden af realtid datasæt er ikke berettiget til atDOIs fordi dataene ofte er retroaktivt ændret (f.eks. til QA/QC formål) .
Når data er i en EDDTableFraHtttpGet dataset, kan enhver bruger anmode om data på samme måde, at de anmoder om data fra andre EDDTable datasæt.
Eksperimentel: Vær forsigtig
Da dette system er nyt, og da tabte miljødata ikke kan påberåbes, bør du behandle EDDTableFraHtttpGet som eksperimentel. Hvis du går fra et andet system, skal du køre det gamle system og det nye system parallelt, indtil du er sikker på, at det nye system fungerer godt (uger eller måneder, ikke kun timer eller dage) . I alle tilfælde skal du sørge for, at dit system separat arkiverer .insert og . Slette webadresser, der sendes til EDDTableFraHttpGet dataset (selvom bare i Apache og/eller Tomcat logger) , mindst for et stykke tid. Og i alle tilfælde skal du sørge for, at de datafiler, der er oprettet af din EDDTableFraHttpGet dataset rutinemæssigt sikkerhedskopieres op til eksterne datalagringsenheder. (Bemærk, atrsync. kan sikkerhedskopiere de datafiler, der er oprettet af EDDTableFraHttpGet meget effektivt.)
.insert og .delete
For alle datasæt iERDDAP™, når du sender en anmodning tilERDDAP™for en del af dataene i et datasæt, angiver du den filtype, du ønsker for svaret, f.eks. .csv,.htmlTable,.nc,.json. EDDTableFraHttp Få dette system til at støtte to ekstra "filtyper", som kan indsætte (eller ændringer) eller slette data i datasættet:
- .insert
- Anmodningen er formateret som en standard HTML form svar, med nøgle=værdipar, adskilt af '&'. For eksempel,
https://some.erddap.url/erddap/tabledap/myDataset**.insert**?stationID=46088&time=2016-03-30T12:37:55Z&latitude=10.1&longitude=-150.1&airTemp=17.23&waterTemp=12.3&author=JohnSmith\_someKey1
fortæller omERDDAP™til at tilføje eller ændre dataene forstationID=46088 for det angivne tidspunkt. - Forfatteren af denne ændring er JohnSmith og nøglen er nogleKey1.
- URL'en skal indeholde gyldige værdier (manglende værdier) for allehttpGetRequiredVariables
- Hvis værdierne af værdiernehttpGetRequired Varer i anmodningen (fx,stationIDog tid) match værdierne på en række allerede i datasættet, de nye værdier effektivt overskrive de gamle værdier (Selvom de gamle værdier stadig er tilgængelige, hvis brugeren anmoder data fra en tidligereversion version versionaf datasættet) .
- .insert URL skal aldrig indeholde ×tamp= (ERDDAP™genererer den værdi) eller & kommand= (der er angivet af .insert (som er kommando=0) eller . Slette (som er kommando= 1 1 1 1) ) .
- Hvis URL'en .insert ikke angiver værdier for andre kolonner, der er i datasættet, antages de at være de oprindelige manglende værdier (MAX\_VALUE for integer data typer, NaN for fly og doubler, og "" for strenge) .
- . Slette
- Anmodningen er formateret som en standard HTML form svar, med nøgle=værdipar, adskilt af '&'. For eksempel,
https://some.erddap.url/erddap/tabledap/myDataset**.delete**?stationID=46088&time=2016-03-30T12:37:55Z&author=JohnSmith\_someKey1
fortæller omERDDAP™at slette dataene forstationID=46088 på det angivne tidspunkt. - Forfatteren af denne ændring er JohnSmith og nøglen er nogleKey1.
- URL'en skal angive URL'enhttpGetRequiredVariablespå anmodning (fx,stationIDog tid) . Hvis disse værdier matcher værdierne på en række allerede i datasættet (som de normalt vil) , de gamle værdier slettes effektivt (Selvom de gamle værdier stadig er tilgængelige, hvis en bruger anmoder om data fra en tidligereversion version versionaf datasættet) .
- Der er ingen grund til at angive værdier for ikke-HttpGetRequiredVariables, andre end forfatter, som er nødvendig for at godkende anmodningen.
- Anmodningen er formateret som en standard HTML form svar, med nøgle=værdipar, adskilt af '&'. For eksempel,
https://some.erddap.url/erddap/tabledap/myDataset**.delete**?stationID=46088&time=2016-03-30T12:37:55Z&author=JohnSmith\_someKey1
- Anmodningen er formateret som en standard HTML form svar, med nøgle=værdipar, adskilt af '&'. For eksempel,
https://some.erddap.url/erddap/tabledap/myDataset**.insert**?stationID=46088&time=2016-03-30T12:37:55Z&latitude=10.1&longitude=-150.1&airTemp=17.23&waterTemp=12.3&author=JohnSmith\_someKey1
Detaljer:
- .insert og .delete anmodninger er formateret som standard HTML form svar, med nøgle=værdipar, adskilt af '&'. Værdierne skal væreprocentkodet. Således skal du indtaste særlige tegn i form %HH, hvor HH er den 2 cifrede hexadecimal værdi af tegnet. Normalt skal du blot konvertere et par tegn på tegn: % i %25, og i %26, " i %22,<i %3C, = i %3D, > i %3E, + i %2B,|i %7C,\[i %5B,\]i %5D, plads til %20, og konvertere alle tegn over #127 i deres UTF-8 form og derefter encode hver af UTF-8-form ind i %HH-formatet (spørge en programmør til hjælp) .
- .insert og .delete anmodninger skal indeholdehttpGetRequiredVariablesf.eks.stationIDog tid. For .insert anmodninger, variabler, der ikke er angivet i anmodningen, antages at være manglende værdier (MAX\_VALUE for heltalsvariabler, NaN for flyt og dobbelt variabler, og en tom streng til strenge variabler) . Til . Slette anmodninger, værdier for ikke-HttpGetRequired Varer (andet end forfatter, som kræves) ignoreres.
- .insert og .delete anmodninger skal indeholde navnet på forfatteren og forfatterens nøgle via en parameter i formforfatteren= Forfatter\_key som den sidste parameter i anmodningen. At få denne til at være sidste sikrer, at hele anmodningen er modtaget afERDDAP. Kun forfatteren (Ikke nøglen) gemmes i datafilen. Du skal angive listen over tilladt Forfatter\_key 's via den globale egenskabhttpGetKeys
- .insert og .delete parametre kan være scalar (enkelt single) værdier eller matrixer af enhver længde i form\[værdi1, værdi2, værdi3,..., værdiN\]. For en given anmodning skal alle variabler med arrays have matrixer med samme antal værdier (ellers er det en fejl) . Hvis en anmodning har scalar- og matrixværdier, kopieres scalarværdierne for at blive arrays med samme længde som de angivne matrixer, f.eks.stationID=46088 kan blive behandlet som &stationID= = = = =\[46088,46088,46088\]. Arrays er nøglen tilhøj gennemløb. Uden arrays, vil det være svært at .insert eller . Slette mere end 8 rækker data per sekund fra en fjern forfatter (på grund af alle netledningens hoved) . Med arrays, vil det være nemt at .insert eller slette mere end 1000 rækker data per sekund fra en fjern sensor.
- .insert og .delete acceptere (uden en fejlmeddelelse) flydende punktnumre, når integers forventes. I disse tilfælde runder datasættet værdierne til integers.
- .insert og .delete acceptere (uden en fejlmeddelelse) tal, der er uden for rækkevidde af variablens datatype. I disse tilfælde gemmer datasættet værdierne somERDDAP's oprindelige manglende værdier for denne datatype (MAX\_VALUE for heltalstyper og NaN til fly og dobbelt) .
Svar
Hvis .insert eller .delete URL lykkes, vil HTTP-responskoden være 200 (OK OK) og svaret vil være tekst med en.jsonobjekt, f.eks.
{
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-11-05T22:12:19.517Z",
"numericTimestamp":1.541455939517+E9
}
Bemærk, at timetamps har millimeters præcision.
Hvis .insert eller .delete URL mislykkes, vil du få en HTTP-responskode andet end 200 (Okay Okay) , f.eks. Fejl 403 Forbudt, hvis du indsender en forkert forfatter\_key værdi.ERDDAP™sender HTTP-responskoden (ikke, f.eks..jsonformateret fejl) fordi det er, hvordan tingene sker på internettet, og fordi fejl kan forekomme overalt i systemet (f.eks. i netværket, som returnerer en HTTP-fejl) . Hvis fejlen er fraERDDAP™, svaret kan indeholde nogle tekst (Ikke ikke.json) med en mere detaljeret forklaring på, hvad der gik galt, men HTTP-responskoden (200=OK, noget andet er besvær) er den rigtige måde at kontrollere, om .insert eller .delete lykkedes. Hvis du tjekker HTTP-responskoden ikke er muligt eller er inkonvenient, skal du søge efter "status-succes" i svarteksten, som skal være en pålidelig indikation af succes.
Log filer
Når EDDTableFraHttpGet modtager .insert og .delete kommandoer, føjer den blot oplysningerne til den relevante fil i et sæt logfiler, som hver er en tabel gemt i en tabel, der er gemt i en tabel, der er gemt i enJSON Linje CSV-fil. Når en bruger foretager en anmodning om data,ERDDAP™Læs hurtigt de relevante logfiler, anvende ændringerne til datasættet i den rækkefølge, de blev foretaget, og derefter filtrerer anmodningen via brugerens begrænsninger som andre andre andreERDDAP™anmodning om data. Partitionering af dataene i forskellige logfiler, opbevaring af forskellige dele af information (f.eks. kommandoens tidsstempel, og om kommandoen var .insert eller .delete) , og forskellige aspekter af opsætningen af datasættet, alt gør det muligt forERDDAPtil at gemme data til og hente data fra denne datasæt meget hurtigt og meget effektivt.
Sikkerhed og forfatter
Hver .insert og .delete kommando skal indeholde & Author= Forfatter\_key som den sidste parameter, hvor forfatter\_key består af forfatterens identifikator (du valgte: navn, initialer, pseudonym, nummer) , en understregning og en hemmelig nøgle. The The The The The The TheERDDAP™Administrator vil arbejde med forfattere for at generere listen over gyldige forfatter\_key værdier, som kan ændres til enhver tid. Når EDDTableFraHttpGet modtager en .insert eller .delete kommando, sikrer det, at forfatterenID\_key er den sidste parameter og gyldig. Fordi det er den sidste parameter, indikerer det, at hele kommandolinjen nåedeERDDAP™og blev ikke afkortet. Den hemmelige nøgle sikrer, at kun specifikke forfattere kan indsætte eller slette data i datasættet.ERDDAP™Så udtrækker forfatterenID og gemmer, at i forfatteren variabel, så alle kan se, hvem der var ansvarlig for en given ændring af datasættet. .insert og .delete kommandoer kan kun gøres viahttps: (sikker sikkerhed) ERDDAP™URL'er. Dette sikrer, at oplysningerne overføres, holdes hemmelig under transit.
gangetamp
Som en del af logsystemet tilføjer EDDTableFraHttpGet et tidsstempel (den tid, detERDDAPmodtaget anmodningen) til hver kommando, at det gemmer i logfiler. Fordi fordiERDDAP™genererer tidsstempel, ikke forfatterne, det er ligegyldigt, om forskellige forfattere foretager ændringer fra computere med ure indstillet til lidt forskellige gange. Timetampen angiver det tidspunkt, hvor ændringen blev foretaget til datasættet.
HTTP POST
- "Hvad med HTTP POST?!"
HTTPTilmeld dig er det bedre alternativ (sammenlignet medHTTP GET) for at sende oplysninger fra en klient til en HTTP-server. Hvis du kan, eller hvis du virkelig ønsker at forbedre sikkerheden, skal du bruge POST i stedet for GET til at sende oplysningerne tilERDDAP. POST er mere sikker, fordi: med GET oghttps, URL'en overføres på en sikker måde, men hele URL'en (herunder parametre, herunder forfatteren\_key) vil blive skrevet til Apache, Tomcat ogERDDAP™log filer, hvor nogen kunne læse dem, hvis filerne ikke er korrekt sikret. Med POST overføres parametrene på en sikker måde og skrives ikke til logfilerne. POST er lidt sværere for klienter at arbejde med og understøttes ikke så bredt af klient software, men programmeringssprog understøtter det. Det indhold, du sender til datasættet via GET eller POST, vil være det samme, bare formateret på en anden måde.
httpGetRequired Varer Global Attribute
En væsentlig del af, hvad der gør dette hele systemarbejde er den krævede globale egenskabhttpGetRequired Varer, som er en kommunaliseret liste overdataVariablekildenavne, der entydigt identificerer en række data. Det skal være så minimalt som muligt, og vil næsten altid inkludere tidsvariablen. For eksempel, her er den anbefaledehttpGetRequired Varer til hver af deCF Diskret Sampling Geometries (DSG) (Selvfølgelig kan ID-navnene være forskellige i dit datasæt.) :
-
For TimeSeries:stationID, tid
-
Til Trajectory: trajectoryID, tid
-
Til Profil: tid (At antage tid er profilen\_id) , dybde
-
For TimeSeries Profil:stationID, tid (At antage tid er profilen\_id) , dybde
-
Til Trajectory Profil: trajectoryID, tid (At antage tid er profilen\_id) , dybde
Tager TimeSeries som et eksempel: I betragtning af en .insert kommando, der omfatterstationID=46088 og tid=2016-06-23T19:53:00Z (og andre værdier for andre variabler) :
- Hvis der ikke er nogen eksisterende data til den pågældende station, og den tid, vil effekten være at tilføje dataene til datasættet.
- Hvis der er eksisterende data til den pågældende station, og denne gang vil effekten erstatte den eksisterende række af data med disse nye data. (Selvfølgelig, sidenERDDAP™Hold log på enhver kommando, den modtager, de gamle data er stadig i log. Hvis en bruger anmoder om data fra en version af datasættet før denne ændring, vil de se de ældre data.)
httpHoteller i nærheden af GetDirectoryStructure
-
httpGetDirectory Struktur Global Attribute og data (Log ind) Filnavne
En del af, hvad der gør dette hele systemet effektivt er, atERDDAP™skaber et sæt data (log log ind) filer, hver med en anden del af datasættet. Hvis disse er indstillet godt,ERDDAP™vil kunne reagere hurtigt på de fleste anmodninger om data. Denne opsætning er angivet afhttpGetDirectoryStructure global attribut, som er en streng, der ligner et relativt filnavn, f.eks. "stationID/10 år", men er faktisk en specifikation for mappestrukturen. De dele, der angiver, hvordan mappe og filnavne til dataene (log log ind) filer vil blive konstrueret.- Hvis en del er et heltals (>= 1 1 1 1) plus en tidPeriod (millisekunder, andet, minut, time, dato, måned, år eller deres flertal) , f.eks. 10 år, så vil EDDTableFraHttpGet dataset tage tidsværdien for rækken af data (f.eks. 2016-06-23T19:53:00Z) , beregne den tid, der er afkortet til den præcision (f.eks. 2010) , og lav en mappe eller filnavn fra det.
Målet er at få en rimelig stor mængde data i hver fil, men langt mindre end 2 GB.
- Ellers skal den del af specifikationen være endataVariable'ssourceNamef.eks.stationID. I dette tilfælde vil EDDTableFraHtttpGet lave en mappe eller filnavn fra værdien af den variable for den nye række af data (f.eks. "46088") .
Fordi .insert og .delete kommandodata gemmes i specifikke data (log log ind) filer, EDDTableFraHttpGet normalt kun skal åbne en eller et par data (log log ind) filer til at finde dataene til en given brugerkonto. Og fordi hver data (log log ind) Filen har alle de relevante oplysninger til sin størrelse af datasættet, det er hurtigt og nemt for EDDTableFraHtttpGet at foretage en bestemt version (eller den aktuelle version) af datasættet til dataene i den pågældende fil (og ikke skal generere den ønskede version af hele datasættet) .
Generelle retningslinjer baseres på datamængden og hyppigheden. Hvis vi antager 100 aftes pr. række data, så...
| Frequency <br>of measurements | Recommended <br>httpGetDirectoryStructure |
| --- | --- |
| \\>=1 per second | *featureID*/1year/1day |
| \\>=1 per minute | *featureID*/2months |
| \\>=1 per hour | *featureID*/10years |
| \\>=1 per day | *featureID* |
Hvis mappestrukturen f.eks. erstationID/2 måneder og du indsætter data fra to stationer (46088 og 46155) med tidsværdier fra Dec 2015 gennem maj 2016 EDDTableFraHtp Få vil oprette mapper ved navn 46088 og 46155 og oprette filer i hver opkaldt 2015-11.jsonl, 2016-01.jsonl, 2016-03.jsonl, 2016-05.jsonl l l l (hver holder 2 måneders værdi for den relevante station) . Til enhver tid i fremtiden, hvis du bruger .insert eller .delete til at ændre eller slette dataene for f.eks. station 46088 på 2016-04T14:45:00Z, EDDTableFraHtp Få vil føje denne kommando til 46088/2016-03.jsonl, de relevante data (log log ind) fil. Og klart, det er fint at tilføje data til andre stationer på ethvert tidspunkt i fremtiden, da datasættet simpelthen vil oprette yderligere mapper efter behov for at holde dataene fra de nye stationer.
httpGetKeys
Alle EDDTable FraHttp Få datasæt skal have en global egenskabhttpGetKeys, der angiver listen over tilladte forfattere og deres hemmelige nøgler som en kommunal liste over Forfatter\_key f.eks. JohnSmith\_someKey1, HOBOLogger\_someKey2, QCScript59\_someKey3 .
- Forfatter\_key's er tilfældefølsomme og skal være helt ASCII tegn (#33 - #126, og uden nogen komma, " eller " tegn
- Nøgler er som adgangskoder, så de SKAL være >=8 tegn, svært at gætte, og uden interne ordbog ord. Du bør behandle dem, da du ville behandle adgangskoder - holde dem private.
- Den første "\" figur skiller forfatteren fra nøglen, så forfatternavnet ikke kan inkludere en "\" figur (men en nøgle kan) .
- Enhver givet forfatter kan have en eller flere forfatter\_key's, f.eks. JohnSmith\_some Hoteller i nærheden af JohnSmith\_some Nøgle7, osv.
- Du kan ændre værdien af denne attribut enhver tid. Ændringerne træder i kraft næste gang datasættet er indlæst.
- Disse oplysninger vil blive fjernet fra datasættets globaleAttributes, før den offentliggøres.
- Hver anmodning til datasættet til at indsætte eller slette data skal indeholde en &forfatter= Forfatter\_key parameter. Efter at have bekræftet nøglens gyldighedERDDAP™Gem kun forfatterdelen (Ikke nøglen) i datafilen.
Opsæt op
Her er de anbefalede trin til at oprette en EDDTableFraHttpGet dataset:
-
Gør hovedmappen til at holde disse datasæts data. Lad os f.eks. bruge/data/testGet/ . Brugeren, der kører GenererDatasetsXml, og brugeren kørerERDDAP™Skal begge have adgang til denne mappe.
-
Brug en teksteditor til at lave en prøve.jsonl CSV-fil med udvidelsen.jsonl i denne mappe. Navnet er ikke vigtigt. Du kan f.eks. kalde det prøve.jsonl l l l Lav en 2 linje.jsonl CSV-fil, med kolonnenavne på den første linje og dummy/typical værdier (af den korrekte datatype) på den anden linje. Her er en prøvefil, der er egnet til en samling affeatureType=Tidligere data, der målt luft og vandtemperatur. \[For For For For ForfeatureType=Trajectory, kan du ændrestationIDat være trajectoryID.\]
\[For For For For ForfeatureType=Profil, kan du ændrestationIDfor at være profilID og tilføje en dybde variabel.\]\[" " " "stationID",""time", "latitude", "langitude", "airTemp", "waterTemp", "timestamp", "forfatter", "command"\] \["myStation", "2018-06-25T17:00:00Z", 0.0, 0.0, 0.0, 0.0, 0.0, "NoeBody", 0\]
Bemærk:
- De faktiske dataværdier betyder ikke, fordi du i sidste ende vil slette denne fil, men de skal være af den korrekte datatype. Især bør tidsvariablen bruge det samme format, som de faktiske data fra kilden vil bruge.
- Til alle variable,sourceNamevil svare pådestinationName, så brug de korrekte / endelige variable navne nu, herunder tid, breddegrad, længde og undertiden dybde eller højde, hvis variabler med disse oplysninger vil blive inkluderet.
- Der vil næsten altid være en variabel opkaldt tid, som registrerer den tid, observationen blev foretaget. Det kan være dataType String medenheder, der er egnet til strenge tider (fx,yyyy-MM-dd'T'HH:mm:ss.SSSZ) eller data Type dobbelt medenheder, der er egnet til numeriske tider (g., sekunder siden 1970-01T00:00:00Z eller en anden base tid) .
- Tre af kolonnerne (Normalt de sidste tre) skal være tidsstempel, forfatter, kommando.
- Timetamp kolonnen vil blive brugt af EDDTableFraHttpGet til at tilføje et tidsstempel, der angiver, hvornår den tilføjede en given linje af data til datafilen. Det vil have dataType dobbelt og enheder sekunder siden 1970-01T00:00:00Z.
- Forfatterkolonnen med dataType String vil blive brugt til at registrere, hvilken autoriserede forfatter har givet denne linjes data. Forfattere er angivet af dehttpGetKeys global attribut. Selvom tasterne er angivet som Forfatter\_key og er i "request" URL i denne formular, kun forfatterdelen gemmes i datafilen.
- Kommandokolonnen med dataType byte vil angive, om dataene på denne linje er en indsættelse (0) eller sletning (1 1 1 1) .
-
Løb GenererDatasets Xml og fortælle det
- Dataset type er EDDTableFraHtttpGet
- Skabelonen er (for dette eksempel) / Data/test Få / få /
- Prøvefilen er (for dette eksempel) / Data/testGet/startup.jsonl l l l
- The The The The The The ThehttpGetRequired Varer er (for dette eksempel) stationID, tid Se beskrivelse afhttpGetRequiredVariablesnedenfor.
- Hvis data indsamles hvert femte minut, indsamles oplysningernehttpGetDirectoryStructure for dette eksempel erstationID/2 måneder . Se beskrivelse afhttpHoteller i nærheden af GetDirectoryStructurenedenfor.
- The The The The The The ThehttpGetKeys
Tilføj output (klumpen afdatasets.xmlfor datasættet) til at tildatasets.xml. 4. Redigere redigeringendatasets.xmlBeskåret for denne datasæt for at gøre det korrekt og komplet. Kan du ikke udskifte alle?? med korrekt indhold. 5. For te<fileTableInMemory> indstilling:
- Indstil dette til sand, hvis datasættet normalt bliver hyppig .insert og/eller .delete anmodninger (f.eks. oftere end én gang hver 10 sekunder) . Dette hjælper EDDTableFraHttpGet reagerer hurtigere på .insert og/eller .delete anmodninger. Hvis du indstiller dette til sand, EDDTableFraHttpGet vil stadig gemme filenTable og relaterede oplysninger til disk periodisk (efter behov, groft hver 5 sekunder) .
- Sæt dette til falsk (Standard) hvis datasættet normalt får infrequent .insert og/eller .delete anmodninger (f.eks. mindre end én gang hver 10 sekunder) .
- Bemærk: Det er muligt at bruge<cacheFraUrl> og relaterede indstillinger idatasets.xmlfor EDDTable FraHttp Få datasæt som en måde at lave og vedligeholde en lokal kopi af en ekstern EDDTableFraHttpGet dataset på en anden mådeERDDAP. Men i dette tilfælde vil denne lokale datasæt afvise enhver .insert og .delete anmodninger.
Brug af EDDTable FraHttpGet Datasets
- Forfattere kan gøre "requests", somIndsæt data til eller slette data fra datasættet.
- Efter rigtige data er blevet indsat i datasættet, kan du og skal slette den originale prøvedatafil.
- Brugere kan anmode om data fra datasættet, da de gør for andre EDDTable datasæt iERDDAP. Hvis anmodningen ikke indeholder en begrænsning på tidsstempelkolonnen, får anmodningen data fra den aktuelle version af datasættet (logfilen efter behandling af alle indsætnings- og sletningskommandoer og gensortering af logfilenhttpGetRequiredVariables) .
- Brugere kan også foretage anmodninger, der er specifikke for EDDTableFraHttpGet datasets:
- Hvis anmodningen indeholder en<eller eller eller<= begrænsning af tidsstempelkolonnen, derefterERDDAP™processer af logfilen op, indtil den angivne timetamp. I effekt sletter dette midlertidigt alle de ændringer, der er foretaget til datasættet, da tidsstempelværdien. For mere information, seVersionering.
- Hvis anmodningen indeholder en >, >= eller = begrænsning af tidsstempelkolonnen, f.eks. ×tamp<=0, derefterERDDAP™returnerer dataene fra datafiler som er, uden at behandle indsættelse og sletning kommandoer.
- I fremtiden forestiller vi, at værktøjer vil blive bygget (af os? af dig?) for at arbejde med disse datasæt. For eksempel kunne der være et script, der læser de rå log filer, anvende en anden kalibrering ligning og genererer / opdateres et andet datasæt med den afledt information. Bemærk, at scriptet kan få de oprindelige data via en anmodning tilERDDAP™ (som får dataene i filformatet, som er nemmeste for scriptet til at arbejde med) og generere/update de nye datasæt via .insert "requests" tilERDDAP. Scriptet behøver ikke direkte adgang til datafiler; det kan være på nogen autoriseret forfatters computer.
Detaljerede oplysninger om EDDTableFraHttpGet
Emnerne er:
- DON'T ændrer opsætningen!
- CRUD
- Ugyldige citater
- Hastighedshastighed
- Robust
- System Reliabilitet
- Versionering
- "Hvad med HTTP PUT og DELETE?!"
- Noter
- Takket være CHORDS for den grundlæggende idé.
Her er de detaljerede oplysninger:
DON'T ændrer opsætningen!
Når datasættet er oprettet, og du har tilføjet data til det:
- DON'T add eller fjerne enhverdataVariables.
- DON'T ændrer ændringensourceNameeller eller ellerdestinationNameafdataVariables.
- DON'T ændrer dataene Type af typen afdataVariables. Men du kan ændredataVariable's metadata.
- DON'T ændrer ændringenhttpGetRequired Varer global egenskab.
- DON'T ændrer ændringenhttpFåDirectoryStructure global attribut.
Hvis du har brug for at ændre nogle af disse ting, skal du gøre et nyt datasæt og overføre alle data til det nye datasæt.
CRUD
I computervidenskab er de fire grundlæggende kommandoer til at arbejde med et datasætLæs, UPDATE, DELETE (CRUD) . SQL, sproget for at arbejde med relationelle databaser, har tilsvarende i INSERT, SELECT, UPDATE og DELETE. I EDDTableFraHttpGet,
- .insert er en kombination af CREATE og UPDATE.
- . Slette er DELETE.
- Det almindelige system til at anmode om undersæt af data er READ.
Således understøtter EDDTableFraHttpGet alle de grundlæggende kommandoer til at arbejde med et datasæt.
- .insert eller . Slette anmodninger med ingen fejl vil returnere HTTP-statuskode=200 og et JSON-objekt, f.eks.
{
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-03-26T15:34:05.552Z",
"numericTimestamp":1.522078445552E9
}
De to tidsstempelværdier henviser til den samme millisekunder, som er den millisekunder, der vil blive gemt i timetamp variable for de rækker af data, der blev indsat eller slettet.ERDDAP™ændrer ikke navnet og formateringen af disse nøgleværdipar i fremtiden.ERDDAP™kan tilføje yderligere nøgleværdipar til JSON-objektet i fremtiden.
Ugyldige citater
Ugyldige .insert eller .delete anmodninger vil returnere en HTTP-fejlstatuskode andet end status=200 og ingen ændringer vil blive foretaget til datasættet. Dette omfatter anmodninger med forkerte forfatteroplysninger, forkerte variable navne, forskellige arraylængder for forskellige variabler, manglende krævede variabler, manglende variable værdier osv. Hvis anmodningen involverer mere end én datafil, er det muligt, at en del af anmodningen vil lykkes, og del vil mislykkes. Men det bør ikke være et problem, hvis sensoren sender anmodningen behandler fejl som en fuldstændig fejl. Hvis du f.eks. fortællerERDDAP™til at indsætte (eller sletning) de samme data to gange i træk, det værste tilfælde er, at oplysninger gemmes to gange, tæt sammen i logfilen. Det er svært at se, hvordan det kunne forårsage problemer.
HtpGet Speed
For .insert eller . Slette anmodninger (tælle ikkehttpOvertræk) , boldpark figurer hastigheden af .insert eller .delete er
1 m pr. .insert med 1 række data
2ms pr. .insert med 10 rækker data i arrays (\[\])
3ms pr. .insert med 100 rækker data i arrays (\[\])
13ms pr. .insert med 1000 rækker data i arrays (\[\])
Kendte matrixer er nøglen tilhøj gennemløb. Uden arrays, vil det være svært at .insert eller . Slette mere end 8 rækker data per sekund fra en fjern forfatter (på grund af alle netledningens hoved) . Med arrays, vil det være nemt at .insert eller slette mere end 1000 rækker data per sekund fra en fjern sensor.
Med meget store mængder data pr. anmodning, vil du ramme Tomcat's limit til den maksimale forespørgsel længde (Standard er 8KB?) , men det kan øges ved at redigere den maksimale størrelse indstilling i din størrelse Tomcat /conf/server.xml's HTTP/1.1 Tilslutningsindgang.
Hvornår Hvornår skal man HvornårERDDAP™Læser JSON Lines CSV-data (log log ind) filer, der er en lille periode straf sammenlignet med at læse binære data filer. Vi følte, at denne gang straf, når du læser var en rimelig pris for at betale for systemets hastighed og robusthed, når du skriver data (som er af primær betydning) .
SSD
For større hastighed,Brug en brugerSolid State Drive (SSD) at gemme dataene. De har en meget hurtigere filadgang tid (<0,1ms) end harddiske (3 - 12 ms) . De har også en hurtigere dataoverførselshastighed (200 - 2500 MB/s) end harddiske (~200 MB/s) . Deres omkostninger er steget betydeligt i de seneste år. Selvom tidlige SSD havde problemer efter et stort antal skriver til en given blok, er dette problem nu stærkt reduceret. Hvis du bare bruger SSD til at skrive dataene en gang så læse det mange gange, selv en forbruger-grade SSD (som er betydeligt billigere end en virksomhedsgrade SSD) bør vare lang tid.
Robust
Vi har forsøgt at gøre dette system så nemt at arbejde med og så robust som muligt.
- Systemet er designet til at have flere tråde (f.eks. sensoren, et automatiseret QC-script og et menneske) Samtidig arbejde på samme datasæt og endda den samme fil. Meget af dette sker ved hjælp af en logfil tilgang til opbevaring af data og ved hjælp af en meget enkel filtype,JSON Linje CSV-filer, for at gemme dataene.
- En anden stor fordel for JSON Lines CSV er, at hvis en fil nogensinde bliver ødelagt (f.eks. ugyldig på grund af en fejl på en linje) , det er nemt at åbne filen i en tekst editor og løse problemet.
- En anden fordel er, hvis der er en fejl på en linje i en fil, kan systemet stadig læse alle data på linjer før og efter fejllinjen. Og systemet kan stadig logge ekstra .insert og .delete information.
- En enorm fordel ved at bruge admin-accessible standardfiler (sammenlignet med en relationel database eller Cassandra eller anden software) : Der er ingen anden software, der skal vedligeholdes, og som skal køres for at gemme eller hente data. Og det er nemt at sikkerhedskopiere standardfiler til enhver tid og i en trinvis måde, fordi dataene er i bidder (efter et stykke tid vil kun den aktuelle fil for hver station ændre sig) . I modsætning hertil tager det betydelig indsats og systemet ned tid til at lave eksterne backup filer fra databaser og fra Cassandra.
System Reliabilitet
Det er rimeligt at forvente en server medERDDAP™at have 99,9% oppetid - det er omkring 9 timers nedetid om året (Selv om du kan bruge det op i en dårlig nat!) . Hvis du er flittig og heldig, kan du få 99.99% oppetid (53 minutters nedetid om året) , da blot et par genstart for opdateringer vil tage det meget tid. Du skal tage ekstreme foranstaltninger (en separat backup server, uinterruptible strømforsyning, backup air condition, 24x7x365 personale til at overvåge hjemmesiden, osv.) at have en slank chance på 99.999% oppetid (5.25 minutters nedetid om året) . Selv så er det meget usandsynligt, at du vil opnå 99.999% oppetid (eller endda 99.99%) fordi problemer ofte er uden for din kontrol. For eksempel tilbyder Amazon Web Service og Google forbløffende pålidelige webtjenester, men store sektioner af dem er nogle gange nede i timevis.
Ansigt det, alle ønskerERDDAP™at have 100 % oppetid, eller i det mindste "six nis" (99,9999% oppetid svarer 32 sekunders nedetid om året) , men der er ingen måde, du vil få det uanset hvor meget tid, indsats og penge du bruger.
Men men men men menERDDAP™oppetid er ikke det rigtige mål her. Målet er at opbygge en pålidelig systemsystem , en, der ikke mister nogen data. Dette er et sålvbart problem.
Løsningen er: opbygge fejl-tolerance i computerens software, der sender dataene tilERDDAP. Specielt, at software skal opretholde en kø af data, der venter på at gå tilERDDAP. Når data tilføjes til køen, skal softwaren kontrollere svaret fraERDDAP. Hvis svaret ikke indeholder data modtaget. Ingen fejl., så softwaren skal forlade dataene i køen. Når flere data genereres og føjes til køen, skal softwaren igen forsøge at .insert dataene i køen (måske med det\[\]systemsystem) . Det vil lykkes eller mislykkes. Hvis det mislykkes, vil det prøve igen senere. Hvis du skriver softwaren til at arbejde på denne måde, og hvis softwaren er klar til kø et par dages værd, har du faktisk en god chance for at uploade 100% af sensorens data tilERDDAP. Og du vil have gjort det uden at gå til stor indsats eller omkostninger.
\[Baggrund: Vi troede ikke dette op.Dette er, hvordan computernetværk opnår pålidelighed. Computernetværk er iboende upålidelige. Så når du overfører en fil fra en computer til en anden, så ved afsendelsessoftwaren at nogle pakker kan gå tabt. Hvis det ikke får en ordentlig anerkendelse for en given pakke fra modtageren, gensender den tabte pakke. Med denne tilgang kan relativt enkle afsender- og modtagersoftware opbygge et pålideligt filsystem på toppen af et upålideligt netværk.\]
Hvorfor JSON Lines CSV-filer?!
EDDTableFraHttpGet brugerJSON Linje CSV-filer. til opbevaring af data. Årsagerne er:
- Den vigtigste årsag er: enkelheden af JSON Lines CSV-filer tilbyder en hurtig, nem og pålidelig måde at tillade flere tråde at skrive til en given fil (f.eks. ved synkronisering på filnavnet) .
- Hvis en JSON Lines CSV-fil nogensinde blev ødelagt (f.eks. ugyldig på grund af en fejl på en linje) , EDDTableFraHttpGet kunne stadig læse alle data på alle linjer før og efter fejllinjen. Og .insert og .delete system kan fortsætte med at tilføje nye data til datafilen.
- Fordi JSON Lines CSV-filer er ASCII-filer, hvis en fil nogensinde blev ødelagt, ville det være nemt at fastsætte (i en teksteditor) .
- JSON Lines CSV understøtter Unicode strenge.
- JSON Lines CSV understøtter variable længdestrenge (ikke begrænset til nogle max længde) .
- JSON Lines CSV understøtter 64-bit integers (lange længder) .
- Den formelle natur og ekstra syntaks af JSON Lines CSV (vs gamle skole CSV) giver nogle ekstra sikkerhed, at en given linje ikke er blevet ødelagt.
Vi forsøgte oprindeligt at bruge.nc3 filer med en ubegrænset dimension. Men der var problemer:
- Det vigtigste problem var: Der er ingen pålidelig måde at tillade flere tråde at skrive til en.nc3 fil, selv hvis trådene samarbejder ved at gøre skriveren på en synkroniseret måde.
- Hvis en.nc3 fil bliver ødelagt, .insert og .delete system kan ikke fortsætte med at bruge filen.
- Fordi.nc3 filer er binære, hvis en fil bliver ødelagt (som de gør på grund af multi-threading problem) De er meget svære eller umulige at løse. Der er ingen værktøjer til at hjælpe med reparationen.
- CF har ingen måde at angive kodning af strenge, så der er ingen officiel måde at støtte Unicode, f.eks. UTF-8 kodning. Vi forsøgte at få CF til at støtte en \_Encoding attribut, men var ikke i stand til at foretage nogen fremgang. (Unidata, til deres kredit, understøtter \_Encoding attribut.)
- .nc3 filer understøtter kun faste længdestrenge. Igen forsøgte vi at få CF ogUnidataat støtte variable længdestrenge, men kunne ikke foretage fremskridt.
- .nc3 filer understøtter ikke en nem måde at skelne enkelt figurvariabler fra String variabler. Igen forsøgte vi at få CF ogUnidataat støtte et system til at skelne disse to datatyper, men var ikke i stand til at gøre fremskridt.
- .nc3 filer understøtter kun 8-bit tegn med en uspecificeret kodning. Igen forsøgte vi at få CF ogUnidataat støtte et system til at angive kodningen, men var ikke i stand til at foretage fremskridt.
- .nc3 filer understøtter ikke 64-bit integers (lange længder) . Igen forsøgte vi at få CF ogUnidataat støtte et system i længere tid, men kunne ikke foretage fremskridt.
Versionering
Fordi EDDTable FraHttp Få gemme en log på alle ændringerne til datasættet med tidsstempel og forfatter af hver ændring, det kan hurtigt genskabe den datasæt som ethvert tidspunkt. I en forstand er der en version til ethvert tidspunkt. Hvis en brugers anmodning om data indeholder en tidsstempel<= begrænsning, f.eks. ×tamp<=2016-06-23T16:32:22.128Z (eller ethvert tidspunkt punkt) , men ingen begrænsning af forfatter eller kommando,ERDDAP™vil svare på anmodning ved først at generere en version af datasættet som det tidspunkt i tide. Så, så,ERDDAP™gælder brugerens andre begrænsninger, som med andre anmodninger om data fraERDDAP. EDDTableFraHttpGet er sat op, så denne proces er meget hurtig og effektiv, selv for meget store datasæt.
På samme måde kan en bruger finde ud af, hvornår datasættet sidst blev opdateret ved at anmode...?timestamp×tamp=max (gangetamp) & detinkt ()
Og for enhver anmodning om data, for enhver version af datasættet, kan brugerne se, hvilken forfatter der foretages, og når de gjorde dem.
Dette versionssystem gør det muligtReproducible Sciencefordi nogen, på ethvert tidspunkt, kan anmode om data fra versionen af datasættet på ethvert tidspunkt. Denne fine version er ikke mulig med andre system, som vi kender. Den underliggende mekanisme er meget effektiv, i den ingen ekstra lagerplads er nødvendig, og behandlingens overhead er virkelig minimal.
Ikke alle har brug for denne type finkornet version, men det er meget nyttigt, måske nødvendigt, i forbindelse med en stor data management organisation (f.eks. OOI, Earth Cube, Data One ogNOAA's NCEI) hvor et datasæt kan have flere forfattere (f.eks. sensoren, et automatiseret QC-script og en menneskelige editor) .
\[Historie: Behovet for denne type versioning først kom op for mig (Billeder af Bob) når du læser om og diskuterer OOI i 2008. På det tidspunkt havde OOI et kubersome, langsom, ineffektivt system til version baseret på Git. Git er fantastisk til det, det er designet til, men ikke dette. I 2008 designede jeg en omfattende, effektiv alternativ-til-OOI-system til datastyring, herunder mange af de funktioner, jeg har føjet tilERDDAP™Siden da, og inklusiv dette versionssystem. På det tidspunkt og siden var OOI engageret i deres versionssystem og ikke interesseret i alternativer. I 2016 faldt andre aspekter af denne plan på plads, og jeg begyndte at implementere den. Fordi der var masser af afbrydelser til at arbejde på andre projekter, var jeg ikke færdig indtil 2018. Selv nu er jeg ikke klar over ethvert andet videnskabeligt datasystem, der tilbyder så hurtig og nem adgang til en version af dataene fra ethvert tidspunkt, for ofte at ændre datasæt. Simple filsystemer tilbyder ikke dette. Relational databaser ikke. Cassandra ikke.\]
HTTPS Put and Delete
- "Hvad med HTTPS PUT og DELETE?!"
Hypertekstoverførsel protokol (HTTP) er grundlaget for World Wide Web og grunden til, at websider begynder med " http://" eller " https://" . HTTPS er HTTP med et ekstra sikkerhedslag. Hver dag gør browsere, scripts og computerprogrammer milliarder af HTTP (S S S S) Nå anmodninger om at få oplysninger fra fjernkilder. HTTP (S S S S) inkluderer også andreverber, især PUT (til at skubbe data til serveren) og DELETE (til DELETE-data fra serveren) . Ja, PUT og DELETE er den rette måde at indsætte data i, og slette data fra, et datasæt via HTTP (S S S S) . GET understøttes af hvert stykke software, der kan arbejde med HTTP (S S S S) . GET er virkelig let at arbejde med. Alle ved allerede, hvordan man arbejder med GET og mange ved, hvordan man bruger POST (som kan bruges i stort set samme måde som GET) , så vi gjorde EDDTableFraHtttpGet arbejde med GET og POST. Meget få mennesker (endda få computer programmører) har nogensinde arbejdet med PUT og DELETE. PUT og DELETE understøttes generelt kun af computersprog, så brug dem kræver et dygtigt program. Så PUT og DELETE er normalt en meget mere besværlig tilgang givet den måde, værktøjerne har udviklet.
HttpGet Notes
- Noter
- Ingen IngendataVariablekan have dataType=char. Brug dataType=String i stedet. Hvis du virkelig har brug for dataType=char, e-mail Chris. John på noaa.gov .
Tak
- Takket være CHORDS for den grundlæggende idé.
Den grundlæggende idé for EDDTableFraHtttpGet (f.eks. ved hjælp af enHTTP GETanmode om at tilføje data til et datasæt) er fra UCAR's (NCAR's?) Cloud-Hosted Real-time Data Services (CHORDS) projekt. Formatet for parametrene i anmodningen (gentagen gentag Navn = værdi , adskilt af &'s) er det samme standardformat, der bruges af HTML-formularer på websider. Det er en enkel og strålende ide og endnu mere, fordi det mesher så perfekt medERDDAP's eksisterende system til håndtering af tabulære data. Idéen er indlysende i bagværk, men jeg (Billeder af Bob) troede ikke på det. EDDTableFraHttp Få brug af den grundlæggende idé, kombineret med vores idéer til, hvordan du implementerer det, for at gøre et system iERDDAP™til at uploade data. Bortset fra den grundlæggende idé om at bruge GET til at skubbe data ind i systemet, er EDDTableFraHttpGet implementering helt forskellige og helt uafhængige af CHORDS og har forskellige funktioner (f.eks. logfiler, klumpning af data, forskellige sikkerhedssystemer, CRUD-understøttelse, reproducerbare data) . Vores eksponering for CHORDS var bare et webinar. Vi kiggede ikke på deres kode eller læs om deres projekt, fordi vi straks vidste, at vi ville implementere systemet en anden måde. Men vi er taknemmelige for dem for den grundlæggende idé. Den fulde reference til CHORDS er Daniels, M. D., Kerkez, B., Chandrasekar, V., Graves, S., Frimærker, D. S., Martin, C., Dye, M., Gooch, R., Bartos, M., Jones, J., Keiser, K. (2014 2014) . Cloud-Hosted Real-time Data Services for Geosciences (CHORDS) software. UCAR/NCAR -- Earth Observing Laboratory. https://doi.org/10.5065/d6v1236q
EDDTableFraHyraxFiler
EDDTableFraHyraxFiler (deprecated) aggregerer datafiler med flere variabler, hver med en eller flere delte dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) , og serveret af enHyrax OPeNDAPserver.
- Denne datasæt type er DEPRECATED . Den nyere og mere generelle løsning er at bruge dencache cache cache cache FraUrl mulighed for EDDTable FraFiles (eller en variant) , som gør en lokal kopi af fjernfiler og tjener data fra de lokale filer. The The The The The The The<cacheFraUrl> mulighed kan bruges med enhver form for tabulær datafil. **
Hvis du ikke kan gøre dette arbejde af en eller anden grund, kan du e-maile Chris. John på noaa.gov . Hvis der ikke er klager før 2020, kan denne datasæt type fjernes. ** - Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
- I de fleste tilfælde har hver fil flere værdier for den venstre største (først først) dimension, for eksempel tid.
- Filerne ofte (men behøver ikke at være) har en enkelt værdi for de andre dimensioner (for eksempel højde (eller dybde) Højde, længdegrad) .
- Filerne kan have tegnvariabler med en ekstra dimension (for eksempel nCharacters) .
- Hyraxservere kan identificeres af "/dods-bin/nph-dods/" eller "/opendap/" i URL.
- Denne klasse skærm-skrabereHyraxwebsider med oversigter af filer i hver mappe. På grund af dette, er det meget specifikt til det nuværende format afHyraxwebsider. Vi vil forsøge at justereERDDAP™hurtigt, hvis / når fremtidige versioner afHyraxændre, hvordan filerne er angivet.
- The The The The The The The<filDir> indstilling ignoreres. Da denne klasse downloader og gør en lokal kopi af hver fjerndatafil,ERDDAP™styrker filen Dir at være bigParentDirectory /copy / datasetID /.
- For For For For For<sourceUrl> Brug URL-adressen på basismappen af datasættet i datasættetHyraxserver, f.eks. <sourceUrl> > > > http://edac-dap.northerngulfinstitute.org/dods-bin/nph-dods/WCOS/nmsp/wcos/ </ / / /sourceUrl> > > > (men sæt den på én linje) (beklager, at serveren ikke længere er tilgængelig) . The The The The The The ThesourceUrlwebside har normalt "OPeNDAPServerindeks af\[Katalognavn\]" øverst.
- Da denne klasse altid downloader og gør en lokal kopi af hver fjerndatafil, bør du aldrig pakke denne datasæt iEDDTableCopy.
- Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Se 1D, 2D, 3D og 4D eksempler forEDDTableFraNcFiles.
EDDTableFraInvalidCRAFiles
EDDTableFraInvalidCRAFiles aggregerede data fraNetCDF (v3 eller v4) .ncfiler, der bruger en bestemt, ugyldig variant af CF DSG Contiguous Ragged Array (CRA) filer. Selv om selvomERDDAP™understøtter denne filtype, er det en ugyldig filtype, der ingen skal begynde at bruge. Grupper, der bruger denne filtype, opfordres til at brugeERDDAP™at generere gyldige CF DSG CRA-filer og stoppe med at bruge disse filer.
Detaljer: Disse filer har flere række\_size variabler, hver med en prøve\_dimension egenskab. Filerne er ikke-CF-standard filer, fordi den flere prøve (obs) dimensioner skal være dekodet og relateret til hinanden med denne ekstra regel og løfte, der ikke er en del af CF DSG-specifikationerne: "du kan knytte en given f.eks. temperaturværdi (temp \_obs dimension) med en given dybdeværdi (z\_obs dimension, dimensionen med de mest værdier) , fordi: temperaturrække\_size (for en given cast) vil være enten 0 eller lig den tilsvarende dybderække\_size (for den støbte) (det er reglen) . Så hvis temperaturrækken \_size ikke er 0, så vedrører n-temperaturværdierne for, at kastet vedrører direkte til n dybdeværdierne for den, der caster (Det er løftet) ."
Et andet problem med disse filer: Principal\_Investigator rækken\_size variabel har ikke en prøve\ dimension attribut og følger ikke ovenstående regel.
Prøve filer til denne datasæt type kan findes på https://data.nodc.noaa.gov/thredds/catalog/ncei/wod/ \[2020-10-21 Denne server er ikke længere pålideligt tilgængelig\].
Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Den første ting GenererDatasets Xml gør for denne type datasæt, når du besvarer spørgsmålene udskrives ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
EDDTableFraJsonlCSVFiles
EDDTableFraJsonlCSVFiles aggregerede data fraJSON Linje CSV-filer. Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Som jsonlines.org siger, er dette format "Bedre end CSV" (og lovligt, som en føderal medarbejder, kan jeg ikke acceptere eller være uenig med dem - hvordan crazy er det?) . CSV har aldrig været formelt defineret og bliver hæmmet af den historiske bagage relateret til dens forbindelse til de oprindelige regnearksprogrammer. JSON Lines CSV, i sammenligning, er fuldt defineret og fordele fra sin forbindelse til den vidt anvendte JSON-standard, som igen får gavn af sin forbindelse tilJavascripts og scriptsJava. Især er der fuld støtte til lange integers og for Unicode tegn i strenge og en klar måde at inkludere andre specielle tegn (Betydelige faner og nye linjer) inden for strenge.
Dette format er særligt godt for datasæt, hvor du har brug for periodisk at tilføje yderligere rækker til slutningen af en given datafil. Af den grund og andre (Se ovenstående) ,EDDTableFraHttpGetBrug Json Lines CSV-filer til datalagring.
- De input filer antages at være UTF-8 kodet. Men givet «u dddd format til kodning særlige tegn (f.eks. "u20ac er kodning for Euro karakteren) , du har mulighed for at skrive filerne, så de kun indeholder 7bit ASCII tegn ved hjælp af "u dddd for at kode alle tegn over #127.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
- ADVARSEL: HvornårERDDAP™Læser JSON Linje CSV-datafiler, hvis det finder en fejl på en given linje (f.eks. forkert antal varer) , det logger en advarselsmeddelelse ("WARNING: Bad linje (s s s) af data" ... med en liste over de dårlige linjer på efterfølgende linjer) Til højrelog.txt-filog derefter fortsætter med at læse resten af datafilen. Det er derfor dit ansvar at se periodisk (eller skrive et script til at gøre det) for denne meddelelse i loget. txt, så du kan løse problemerne i datafiler.ERDDAP™opsættes på denne måde, så brugerne kan fortsætte med at læse alle de tilgængelige gyldige data, selvom nogle linjer af filen har fejl.
EDDTableFraMultidimNcFiles
EDDTableFraMultidimNcFiles aggregerede data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer med flere variabler, hver med en eller flere delte dimensioner. Filerne kan have tegnvariabler med eller uden yderligere dimension (for eksempel, STRING14) . Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Hvis filerne er flerdimensionel CF DSG-varianter, skal du bruge denne datasæt type i stedet forEDDTableFraNcCFFiles.
- Til nye tabulære datasæt fra.ncfiler, brug denne mulighed, før du forsøger ældreEDDTableFraNcFiles. Nogle fordele ved denne klasse er:
- Denne klasse kan læse flere variabler fra en bredere vifte af filstrukturer. Hvis du angiver DimensionerCSV (en kompareret liste over dimensionnavne) I GenererDatasets Xml (eller<dimensionerCSV> i størrelsendatasets.xmlinfo for en af disse datasæt), såERDDAP™vil kun læse variabler i kildefiler, der bruger nogle eller alle disse dimensioner, samt alle scalar variabler. Hvis en dimension er i en gruppe, skal du angive dens fulde navn, f.eks. " gruppenavn/dimensionnavn ".
- Denne klasse kan ofte afvise filer meget hurtigt, hvis de ikke matcher en anmodnings begrænsninger. Så læsning af data fra store samlinger vil ofte gå meget hurtigere.
- Denne klasse håndterer ægte char variabler (Ikke-strengende variabler) korrekt.
- Denne klasse kan trimme strenge variabler, når skaberen ikke brugte Netcdf-java's skriveStringe (som føjer char #0 til at markere afslutningen af strengen) .
- Denne klasse er bedre til at håndtere individuelle filer, der mangler visse variabler eller dimensioner.
- Denne klasse kan fjerne blokke af rækker med manglende værdier som angivet forCF Diskret Sampling Geometries (DSG) Ufuldstændig Multidimensional Array filer
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
Gruppe -- GenererDatasets Xml vil bede om en "Gruppe". Du kan indtaste "" for at få det til at søge / alle grupper, " nogle af nogle Gruppegruppe " eller " nogleGroup/someSubGroup " for at få det til at søge en bestemt gruppe eller "\[rodrod\]" for at få det til at søge bare rodgruppen. Den "Gruppe" streng bliver<gruppe> i gruppendatasets.xmlinfo for datasættet (selvom "\[rodrod\]" bliver "") .
DimensionerCSV - GenererDatasets Xml vil bede om en "DimensionsCSV" streng. Dette er en kommunalværdiliste af kildenavne af et sæt dimensioner. GenererDatasets Xml vil kun læse datavariabler i prøve.ncfiler, der bruger nogle eller alle disse dimensioner (og ingen andre dimensioner) , plus alle de scalar variabler i filen, og gøre datasættet fra disse datavariabler. Hvis en dimension er i en gruppe, skal du angive dens fulde navn, f.eks. " gruppenavn/dimensionnavn ". Hvis du angiver noget (en tom streng) , GenererDatasets Xml vil se efter variablerne med de mest dimensioner, på den teori, at de vil være den mest interessante, men der kan være tider, når du vil gøre et datasæt fra en anden gruppe af datavarier, der bruger en anden gruppe dimensioner. Hvis du blot angiver et dimensionnavn, der ikke findes (f.eks. NO\_MATCH) ,ERDDAP™vil bare finde alle de scalar variabler. "DimensionsCSV" streng bliver<dimensionerCSV> i størrelsendatasets.xmlOplysninger til datasættet.
behandleDimensionsAs
Der er en kategori af ugyldig.ncfiler filer filer (fordi de ikke følger CF-reglerne) der har flere dimensioner (f.eks. lat, lon, tid) når de skal have brugt en dimension (f.eks. tid) f.eks.:
dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
lat = 1437 ;
lon = 1437 ;
variables:
double time(time) ;
double lat(lat) ;
double lon(lon) ;
float temperature(time, depth) ;
EDDTableFraMultidimNcFiles har en særlig funktion til at håndtere disse filer: hvis du tilføjer den globale attribut "treatDimensionsAs" til datasets globaleaddAttributes, du kan fortælleERDDAP™at behandle visse dimensioner (f.eks. lat og lon) som om de var en anden dimension (f.eks. tid) . attributværdien skal være en koma adskilt liste, der angiver "fra" dimensioner og derefter "til" dimension, f.eks.
Så så og så derefterERDDAP™vil læse filen, som om det var:
dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
variables:
double time(time) ;
double lat(time) ;
double lon(time) ;
float temperature(time, depth) ;
Selvfølgelig, den nuværende størrelse af hver af dimensionerne på listen skal være den samme; ellers,ERDDAP™vil behandle filen som en "Bad fil".
Bemærk, at disse filer er ugyldige, fordi de ikke følger CF-regler. Så selvomERDDAP™kan læse dem, vi anbefaler stærkt, at du ikke opretter filer som dette, fordi andre CF-baserede softwareværktøjer ikke vil kunne læse dem korrekt. Hvis du allerede har sådanne filer, anbefaler vi stærkt at erstatte dem med gyldige filer så hurtigt som muligt.
EDDTableFraNcFiles
EDDTableFraNcFiles aggregerede data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer og filerZarrrfiler filer filer (som version 2.25) med flere variabler, hver med en delt dimension (for eksempel tid) eller mere end én delt dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) . Filerne skal have de samme dimensionnavne. En given fil kan have flere værdier for hver af dimensionerne, og værdierne kan være forskellige i forskellige kildefiler. Filerne kan have tegnvariabler med en ekstra dimension (for eksempel, STRING14) . Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
Zarrr filer har lidt forskellige adfærd og kræver enten fileNameRegex eller stiRegex at inkludere "zarr".
- Hvis det er tilfældet.ncfiler bruger en af deCF Diskret Sampling Geometries (DSG) filformater, prøv at brugeEDDTableFraNcCFFilesfør du prøver dette.
- Til nye tabulære datasæt fra.ncfiler, prøv de nyereEDDTableFraMultidimNcFilesførst.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
DimensionerCSV - GenererDatasets Xml vil bede om en "DimensionsCSV" streng. Dette er en kommunalværdiliste af kildenavne af et sæt dimensioner. GenererDatasets Xml vil finde datavariablerne i datavariablerne.ncfiler, der bruger nogle eller alle disse dimensioner, plus alle scalar variabler og gør datasættet fra disse datavariabler. Hvis du angiver noget (en tom streng) , GenererDatasets Xml vil se efter variablerne med de mest dimensioner, på den teori, at de vil være den mest interessante, men der kan være tider, når du vil gøre et datasæt fra en anden gruppe af datavarier, der bruger en anden gruppe dimensioner.
- 1D Eksempel: 1D-filer er noget anderledes fra 2D, 3D, 4D,... filer.
- Du kan have et sæt af.ncdatafiler, hvor hver fil har en måneds værdi af data fra en drivende buoy.
- Hver fil vil have 1 dimension, for eksempel tid (størrelse =\[mange mange mange\]) .
- Hver fil vil have en eller flere 1D variabler, der bruger denne dimension, f.eks. tid, længde, breddegrad, lufttemperatur, ....
- Hver fil kan have 2D-tegnvariabler, for eksempel med dimensioner (tiden,nCharacters) .
- 2D Eksempel:
- Du kan have et sæt af.ncdatafiler, hvor hver fil har en måneds værdi af data fra en drivende buoy.
- Hver fil vil have 2 dimensioner, for eksempel tid (størrelse =\[mange mange mange\]) og id (størrelse = 1) .
- Hver fil vil have 2 1D variabler med de samme navne som dimensionerne og ved hjælp af samme navn dimension, for eksempel tid (tidstid) , id (id) . Disse 1D-variabler skal inkluderes på listen<dataVariable> er i datasættets XML.
- Hver fil vil have en eller flere 2D variabler, for eksempel længde, bredde, lufttemperatur, vandtemperatur,...
- Hver fil kan have 3D-tegnvariabler, for eksempel med dimensioner (tid,id,nCharacters) .
- 3D Eksempel:
- Du kan have et sæt af.ncdatafiler, hvor hver fil har en måneds værdi af data fra en stationær bøjning.
- Hver fil vil have 3 dimensioner, for eksempel tid (størrelse =\[mange mange mange\]) , lat (størrelse = 1) , og lon (størrelse = 1) .
- Hver fil vil have 3 1D variabler med de samme navne som dimensionerne og ved hjælp af samme navn dimension, for eksempel tid (tidstid) , lat (lat) , lon (Billeder af lon) . Disse 1D-variabler skal inkluderes på listen<dataVariable> er i datasættets XML.
- Hver fil vil have en eller flere 3D variabler, for eksempel lufttemperatur, vandtemperatur,...
- Hver fil kan have 4D tegnvariabler, for eksempel med dimensioner (tid,lat,lon,nCharacters) .
- Navnet på filen kan have buoys navn i filnavnet.
- 4D Eksempel:
- Du kan have et sæt af.ncdatafiler, hvor hver fil har en måneds værdi af data fra en station. På hvert tidspunkt tager stationen læsning på en række dybder.
- Hver fil vil have 4 dimensioner, for eksempel tid (størrelse =\[mange mange mange\]) , dybde (størrelse =\[mange mange mange\]) , lat (størrelse = 1) , og lon (størrelse = 1) .
- Hver fil vil have 4 1D variabler med de samme navne som dimensionerne og ved hjælp af samme navn dimension, for eksempel tid (tidstid) , dybde (dybdedybde) , lat (lat) , lon (Billeder af lon) . Disse 1D-variabler skal inkluderes på listen<dataVariable> er i datasættets XML.
- Hver fil vil have en eller flere 4D variabler, for eksempel lufttemperatur, vandtemperatur,...
- Hver fil kan have 5D tegnvariabler, for eksempel med dimensioner (tid, dyb,lat,lon,nCharacters) .
- Navnet på filen kan have buoys navn i filnavnet.
EDDTableFraNcCFFiles
EDDTableFraNcCFFiles aggregerede data aggregerer data fraNetCDF (v3 eller v4) .nc (eller eller eller.ncml) filer, der bruger en af de filformater, der er angivet af deCF Diskret Sampling Geometries (DSG) konventioner. Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
Til filer ved hjælp af en af de multidimensionelle CF DSG-varianter, brugEDDTableFraMultidimNcFilesI stedet.
CF DSG konventionerne definerer snesevis af filformater og indeholder mange mindre variationer. Denne klasse tilbyder alle de variationer, vi er opmærksomme på, men vi kan have savnet en (eller mere) . Så hvis denne klasse ikke kan læse data fra dine CF DSG-filer, bedes dunå ud til ekstra støtte.
Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
EDDTableFraNccsvFiles
EDDTableFraNccsvFiles aggregerede data fraNCCSVASCII .csv filer. Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
Den første ting GenererDatasetsXml gør for denne type datasæt, når du besvarer spørgsmålene udskriver ncdump-lignende struktur af prøvefilen. Så hvis du indtaster et par goofy svar på den første sløjfe gennem GenererDatasets Xml, mindst du vil kunne se, hvisERDDAP™kan læse filen og se, hvilke dimensioner og variabler er i filen. Så kan du give bedre svar på den anden sløjfe gennem GenererDatasetsXml.
- ADVARSEL: HvornårERDDAP™læser NCCSV datafiler, hvis det finder en fejl på en given linje (f.eks. forkert antal varer) , det logger en advarselsmeddelelse ("WARNING: Bad linje (s s s) af data" ... med en liste over de dårlige linjer på efterfølgende linjer) Til højrelog.txt-filog derefter fortsætter med at læse resten af datafilen. Det er derfor dit ansvar at se periodisk (eller skrive et script til at gøre det) for denne meddelelse i loget. txt, så du kan løse problemerne i datafiler.ERDDAP™opsættes på denne måde, så brugerne kan fortsætte med at læse alle de tilgængelige gyldige data, selvom nogle linjer af filen har fejl.
EDDTableFraNOS
EDDTableFraNOS (DEPRECATED) håndterer data fra enNOAA NOSkilde, som brugerSOAP+XMLfor anmodninger og svar. Det er meget specifik forNOAANOS's XML. Se prøven EDDTableFraNOS datasæt i datasets2.xml.
EDDTableFraOBIS
EDDTableFraOBIS håndterer data fra et Ocean Biogeographic Information System (I nærheden af OBIS) server (Jeg var var http://www.iobis.org ) . Det er muligt, at der ikke er flere aktive servere, der bruger dette nu forældet type OBIS server system.
- OBIS-servere forventer en XML-forespørgsel og returnerer en XML-respons.
- Fordi alle OBIS servere de samme variabler samme måde (Jeg var var http://iobis.org/tech/provider/questions ) , du behøver ikke at angive meget for at oprette et OBIS-datasæt iERDDAP.
- Du skal inkludere en "creator\_email" attribut i den globaleaddAttributes, da disse oplysninger anvendes i licensen. En passende e-mailadresse kan findes ved at læse XML-responsen fra kildeURL.
- Du kan eller måske ikke kunne få den globale attribut [<subsetVariables>] (#subsetvariables) at arbejde med en given OBIS-server. Hvis du prøver, skal du blot prøve en variabel (f.eks. ScientificName eller Genus) .
EDDTableFraOBIS skelet XML
<dataset type="EDDTableFromOBIS" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<sourceCode>...</sourceCode>
<!-- If you read the XML response from the sourceUrl, the
source code (for example, GHMP) is the value from one of the
<resource><code> tags. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<-- All ...SourceMinimum and Maximum tags are OPTIONAL -->
<longitudeSourceMinimum>...</longitudeSourceMinimum>
<longitudeSourceMaximum>...</longitudeSourceMaximum>
<latitudeSourceMinimum>...</latitudeSourceMinimum>
<latitudeSourceMaximum>...</latitudeSourceMaximum>
<altitudeSourceMinimum>...</altitudeSourceMinimum>
<altitudeSourceMaximum>...</altitudeSourceMaximum>
<-- For timeSource... tags, use yyyy-MM-dd'T'HH:mm:ssZ format. -->
<timeSourceMinimum>...</timeSourceMinimum>
<timeSourceMaximum>...</timeSourceMaximum>
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1. This MUST include
"creator\_email" -->
</dataset>
EDDTableFra parkFiles
EDDTableFra parkFiles håndterer data fraUdsigt fra værelset. Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- parket er designet til at komprimere meget effektivt, så det kan give dig mindre filstørrelser end andre formater.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
- ADVARSEL: HvornårERDDAP™Læser park datafiler, hvis det finder en fejl på en given linje (f.eks. forkert antal varer) , det logger en advarselsmeddelelse ("WARNING: Bad linje (s s s) af data" ... med en liste over de dårlige linjer på efterfølgende linjer) Til højrelog.txt-filog derefter fortsætter med at læse resten af datafilen. Det er derfor dit ansvar at se periodisk (eller skrive et script til at gøre det) for denne meddelelse i loget. txt, så du kan løse problemerne i datafiler.ERDDAP™opsættes på denne måde, så brugerne kan fortsætte med at læse alle de tilgængelige gyldige data, selvom nogle linjer af filen har fejl.
EDDTableFraSOS
EDDTableFraSOS håndterer data fra en Sensor observationstjeneste (SærprisSOS) server.
- Denne datasæt type aggregerer data fra en gruppe stationer, som alle betjenes af énSOSserver.
- Stationerne tjener alle det samme sæt variabler (selvom kilden til hver station ikke behøver at tjene alle variabler) .
- SOSservere forventer en XML-forespørgsel og returnerer en XML-reaktion.
- Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det. Det er ikke nemt at generere datasættet XML forSOSDatasæt i hånden. For at finde de nødvendige oplysninger, skal du besøgesourceUrl+"? Service=SOSSøg efter:GetCapabilities" i en browser; se på XML; g øre en GetObservation anmodning ved hånden; og se på XML svar på anmodning.
- Med lejlighedsvis tilføjelse af nye typer afSOSservere og ændringer i de gamle servere, det bliver sværere forERDDAP™til automatisk at registrere servertypen fra serverens svar. Brug af<SåsServerType> (med en værdi af IOOS\_NDBC, IOOS\_NOS,OOSTethys eller WHOI) er nu STRONGLY RECOMMMENTD. Hvis du har problemer med nogen datasæt af denne type, skal du prøve re-running GenerDatasetsets Xml for teSOSserver. Generer Generer Datasæt Xml vil lade dig prøve de forskellige<såsServerType> muligheder, indtil du finder den rigtige til en given server.
- SOSoversigt:
-
Særpris (Sensor Web Aktivering) og og ogSOS (Sensorobservation Service) er de erOpenGIS® standarder. Denne hjemmeside har standarddokumenter.
-
The The The The The The TheOGCWeb Services Fælles specifikation ver 1.1.0 (OGC06-121r3) dækker konstruktion af GET og POST forespørgsler (Se afsnit 7.2.3 og afsnit 9) .
-
Hvis du sender en getCapabilities xml anmodning til enSOSserver (sourceUrl+ "?service=SOSSøg efter:GetCapabilities" " " ") , du får et xml-resultat med en liste over stationer og det observerede Egenskaber, som de har data til.
-
En observeretProperty er en formel URI reference til en ejendom. For eksempel urn:ogc:phenomenon:longitude:wgs84 eller https://mmisw.org/ont/cf/parameter/sea\\_water\\_temperature
-
En observeretProperty er ikke en variabel.
-
Mere end én variabel kan have samme observeret Ejendom (f.eks. indvendigTemp og udenfor Temp kan begge have observeret Ejendom https://mmisw.org/ont/cf/parameter/air\\_temperature ) .
-
Hvis du sender en modtager xml-anmodning til enSOSserver får du et xml-resultat med beskrivelser af feltnavne i respons, feltenheder og data. Feltnavnene vil omfatte længde, breddegrad, dybde (måske måske måske måske) , og tid.
-
Hver enkelt hverdataVariablefor en EDDTableFraSOSskal indeholde en "observeretProperty" egenskab, der identificerer den observeredeProperty, der skal anmodes fra serveren for at få den variable. Ofte, fleredataVariables vil liste den samme komposit observeredeProperty.
-
DataType for hverdataVariableKan ikke angives af serveren. Hvis det er tilfældet, skal du se på XML-datareaktionerne fra serveren og tildele passende [<DataType>s] (#datatype) i områdetERDDAP™DatasætdataVariabledefinitioner.
-
(På tidspunktet for at skrive dette) nogle af nogleSOSservere reagerer på at fåObservation anmodninger for mere end én observeret Ejendom ved blot at returnere resultater for den første af de observerede properties. (Ingen fejlmeddelelse!) Se den konstruerende parameter anmodning ObservedPropertiesSeparately.
-
- EDDTableFraSOStilføjer automatisk
station\_id, longitude, latitude
til datasættets globale attributter, når datasættet oprettes. - SOSservere normalt udtrykkeenhedermedUCUMsystem. De flesteERDDAP™servere udtrykke enheder medUDUNITSsystem. Hvis du har brug for at konvertere mellem de to systemer, kan du brugeERDDAP's webtjeneste til at konvertere UCUM enheder til / fraUDUNITS.
EDDTableFraSOSskelet XML
<dataset type="EDDTableFromSOS" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<sosServerType>...</sosServerType> <!-- 0 or 1, but STRONGLY
RECOMMENDED. This lets you specify the type of SOS server
(so ERDDAP™ doesn't have to figure it out).
Valid values are: IOOS\_NDBC, IOOS\_NOS, OOSTethys, and WHOI. -->
<responseFormat>...</responseFormat> <!-- 0 or 1. Use this only if
you need to override the default responseFormat for the
specified sosServerType. -->
<stationIdSourceName>...</stationIdSourceName> <!-- 0 or 1.
Default="station\_id". -->
<longitudeSourceName>...</longitudeSourceName>
<latitudeSourceName>...</latitudeSourceName>
<altitudeSourceName>...</altitudeSourceName>
<altitudeSourceMinimum>...</altitudeSourceMinimum> <!-- 0 or 1 -->
<altitudeSourceMaximum>...</altitudeSourceMaximum> <!-- 0 or 1 -->
<altitudeMetersPerSourceUnit>...</altitudeMetersPerSourceUnit>
<timeSourceName>...</timeSourceName>
<timeSourceFormat>...</timeSourceFormat>
<!-- timeSourceFormat MUST be either
\* For numeric data: a UDUnits\-compatible string (with the format
"units since baseTime") describing how to interpret
source time values (for example,
"seconds since 1970-01-01T00:00:00Z"), where the
base time is an ISO 8601:2004(E) formatted date time
string (yyyy-MM-dd'T'HH:mm:ssZ).
\* For String date time data: specify
units suitable for string times
describing how to interpret string times (for example, the
ISO8601TZ\_FORMAT "yyyy-MM-dd'T'HH:mm:ssZ"). -->
<observationOfferingIdRegex>...</observationOfferingIdRegex>
<!-- Only observationOfferings with IDs (usually the station names)
which match this regular expression (tutorial) will be included
in the dataset (".+" will catch all station names). -->
<requestObservedPropertiesSeparately>true|false(default)
</requestObservedPropertiesSeparately>
<sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<dataVariable>...</dataVariable> <!-- 1 or more.
\* Each dataVariable MUST include the dataType tag.
\* Each dataVariable MUST include the observedProperty attribute.
\* For IOOS SOS servers, \every\ variable returned in the text/csv
response MUST be included in this ERDDAP™ dataset definition. -->
</dataset>
EDDTableFraThreddsFiles
EDDTableFraThreddsFiles (deprecated) aggregerer datafiler med flere variabler, hver med en eller flere delte dimensioner (for eksempel tid, højde (eller dybde) Højde, længdegrad) , og serveret af enI nærheden afTHOPeNDAPserver.
- Denne datasæt type er DEPRECATED . Den nyere og mere generelle løsning er at bruge dencache cache cache cache FraUrl mulighed for EDDTable FraFiles (eller en variant) , som gør en lokal kopi af fjernfiler og tjener data fra de lokale filer. The The The The The The The<cacheFraUrl> mulighed kan bruges med enhver form for tabulær datafil fra enhver webbaseret kilde, der udgiver en mappelignende liste over filer. **
Hvis du ikke kan gøre dette arbejde af en eller anden grund, kan du e-maile Chris. John på noaa.gov . Hvis der ikke er klager før 2020, kan denne datasæt type fjernes. ** - Vi anbefaler stærkt at brugeGenererDatasets Xml programat lave et groft udkast tildatasets.xmlBeskåret for denne datasæt. Du kan derefter redigere det til at finjustere det.
- I de fleste tilfælde har hver fil flere værdier for den venstre største (først først) dimension, for eksempel tid.
- Filerne ofte (men behøver ikke at være) har en enkelt værdi for de andre dimensioner (for eksempel højde (eller dybde) Højde, længdegrad) .
- Filerne kan have tegnvariabler med en ekstra dimension (for eksempel nCharacters) .
- Disse servere kan identificeres af "/redds/" i webadresserne. For eksempel,
https://www.ncei.noaa.gov/thredds/catalog/uv/6h\\_strs\\_agg/catalog.html
- THREDDS servere har kataloger på forskellige steder. Denne klasse REQUIRES, at URL'en indeholder "/redds/catalog/". Du kan normalt finde denne variabel ved at starte i en browser i rodkataloget, og derefter klikke videre til den ønskede subcatalog.
- Denne klasse læser kataloget.xml-filer serveret af THREDDS med listerne af<KatalogRefs> (referencer til ekstra katalog.xml sub-files) og og og<Datasæt>s (Datafiler) .
- The The The The The The The<filDir> indstilling ignoreres. Da denne klasse downloader og gør en lokal kopi af hver fjerndatafil,ERDDAP™styrker filen Dir at være bigParentDirectory /copy / datasetID /.
- For For For For For<sourceUrl> Brug URL-adressen på kataloget.xml-filen til datasættet i THREDDS-serveren, for eksempel: for denne URL, som kan bruges i en webbrowser, https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.html \[2020-10-21 Denne server er ikke længere pålidelig tilgængelig.\], Brug af brug<sourceUrl> > > > https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.xml </ / / /sourceUrl> > > > (men sæt den på én linje) .
- Da denne klasse altid downloader og gør en lokal kopi af hver fjerndatafil, bør du aldrig pakke denne datasæt iEDDTableCopy.
- Denne datasæt type understøtter en OPTIONAL, sjældent brugt, speciel tag,<SpecialMode> tilstandstilstandstilstand </ SpecialMode>, som kan bruges til at angive, at særlige, kodede regler skal bruges til at afgøre, hvilke filer der skal downloades fra serveren. I øjeblikket, den eneste gyldige tilstandstilstandstilstand er SAMOS, som bruges med datasæt fra https://tds.coaps.fsu.edu/thredds/catalog/samos at downloade kun filerne med det sidste versionsnummer.
- Se denne klasses superklasse,EDDTableFraFiles, for oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
- Se 1D, 2D, 3D og 4D eksempler forEDDTableFraNcFiles.
EDDTableFraWFSFiler
EDDTableFraWFSFiler (DEPRECATED) gør en lokal kopi af alle data fra enArcGISMapServerWFSserver, så dataene kan igen betjenes hurtigt tilERDDAP™Brugere.
- Du skal angive en specielt formateretsourceUrlglobal egenskab at fortælleERDDAP™hvordan man anmoder om funktioner fra serveren. Brug dette eksempel som en skabelon:
<att name="sourceUrl">http://*someUrl/dir1/dir2*/MapServer/WFSServer?request=GetFeature&service=WFS&typename=aasg:BoreholeTemperature&format="text/xml;%20subType=gml/3.1.1/profiles/gmlsf/1.0.0/0"</att>
(men sæt det hele på én linje)
- Du skal tilføje en særlig global egenskab for at fortælleERDDAP™hvordan man identificerer navnene på de lagre af data, der skal downloades. Dette vil sandsynligvis arbejde for alle EDDTableFraWFSFiler datasæt:
<att name="rowElementXPath">/wfs:FeatureCollection/gml:featureMember</att>
- Da denne klasse altid downloader og gør en lokal kopi af hver fjerndatafil, bør du aldrig pakke denne datasæt iEDDTableCopy.
- Se denne klasses superklasse,EDDTableFraFiles, for yderligere oplysninger om, hvordan denne klasse fungerer og hvordan man bruger den.
EDDTableAggregateRows
EDDTableAggregateRows kan gøre en EDDTable datasæt fra en gruppe "barn" EDDTable datasæt.
- Her er nogle anvendelser for EDDTableAggregateRows:
- Du kan foretage en EDDTableAggregateRows datasæt fra to forskellige typer filer eller datakilder, f.eks. et datasæt med data op til slutningen af sidste måned gemt i.ncCF-filer og et datasæt med data for den nuværende måned gemt i en relationel database.
- Du kan gøre en EDDTableAggregateRows datasæt til at håndtere en ændring i kildefiler (for eksempel ændrede tidsformatet, eller et variabelt navn ændres, eller data Type/typescale\_factor/ / / /add\_offsetændret) . I dette tilfælde vil et barn få data fra filer foretaget før ændringen, og det andet barn ville få data fra filer foretaget efter ændringen. Denne brug af EDDTableAggregateRows er et alternativ til at brugeNcMLeller eller ellerNCO. Medmindre der er en skelnende funktion i filnavnene (så du kan bruge<fileNameRegex> for at afgøre, hvilken fil tilhører, hvilket barn datasæt), skal du sandsynligvis gemme filerne til de to barns datasæt i forskellige mapper.
- Du kan lave en EDDTableAggregateRows datasæt, der har et delt undersæt af variabler af en eller flere lignende, men forskellige datasæt, f.eks. et datasæt, der gør en profildatasæt fra kombinationen af et profildatasæt, et TimeSeriesProfil datasæt, og en TrajectoryProfil datasæt (som har nogle forskellige variabler og nogle variabler til fælles - i hvilket tilfælde du skal lave specielle varianter til børnedatasæt, med blot de in-common variabler) .
- Du kan have flere enkeltstående datasæt, hver med samme type data, men fra en anden station. Du kan efterlade disse data intakt, men også oprette en EDDTableAggregateRows datasæt, der har data fra alle stationer -- hver af barnets datasæt kan være en enkelEDDTableFraErddap, som peger på en af de eksisterende stationsdatasæt. Hvis du gør dette, skal du give hver af EDDTableFraErddap-datasæt en andendatasetIDend de originale enkeltstående datasæt, f.eks. ved at lade "Child" til den oprindeligedatasetID.
- Hver af barnet<Dataset>'s specificerede skal være et komplet datasæt, da hvis det var et stand-alone datasæt. Alle skal have det sammedataVariables s s, i samme rækkefølge, med sammedestinationNames s s,Datadata Typer,missing\_values s s,\_FillValues, ogenheder. metadata for hver variabel for EDDTableAggregateRows-datasættet kommer fra variabler i det første barns datasæt, men EDDTableAggregateRows vil opdatere datasættetactual\_rangemetadata til at være det egentlige sortiment for alle børn.
- Anbefaling: Få hver af barnets datasæt, der arbejder som stand-alone datasæt. Så prøv at gøre EDDTableAggregateRows datasæt ved at skære og indsætte dendatasets.xmlBeskåret for hver i den nye EDDTableAggregate Rækker datasæt.
- Datasæt Standard Sortering -- Ordren af barnets datasæt bestemmer den samlede standardordre af resultaterne. Selvfølgelig kan brugerne anmode en anden sorteringsordre for et givet sæt af resultater ved at afvente ogorderBy (" " " " kommanderet liste over variable " " " ") til slutningen af deres forespørgsel.
- Den "kilde"globalt globalt globalt globalt Attributterfor EDDTableAggregateRows er den kombinerede globaleAttributes fra det første barns datasæt. The EDDTableAggregate Rows kan have en global<addAttributes> for at give yderligere globale attributter eller tilsidesætte kilde globale attributter.
EDDTableAggregate Rækker skelet XML
<dataset type="EDDTableAggregateRows" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- 1 or more -->
</dataset>
EDDTableCopy
EDDTableCopy kan foretage en lokal kopi af mange typer EDDTable datasæt og derefter genbevar dataene hurtigt fra den lokale kopi.
- EDDTableCopy (og for gitterdata,EDDGridKopiere Kopier) er en meget let at bruge og en meget effektiv løsning til nogle af de største problemer med at betjene data fra fjerndatakilder:
- Adgang af data fra en fjern datakilde kan være langsom.
- De kan være langsomme, fordi de er iboende langsomme (f.eks. en ineffektiv type server) ,
- fordi de er overvældet af for mange anmodninger,
- eller fordi din server eller fjernserveren er båndbredde begrænset.
- Fjerndatasættet er undertiden utilgængelig (igen, af en række grunde) .
- Omliggende på én kilde til dataene ikke skaleres godt (for eksempel, når mange brugere og mangeERDDAPs udnytte det) .
- Adgang af data fra en fjern datakilde kan være langsom.
- Hvordan det virker -- EDDTableCopy løser disse problemer ved automatisk at foretage og vedligeholde en lokal kopi af data og betjener data fra den lokale kopi.ERDDAP™kan tjene data fra den lokale kopi meget, meget hurtigt. Og at lave og bruge en lokal kopi lindrer byrden på fjernserveren. Og den lokale kopi er en sikkerhedskopi af den oprindelige, som er nyttig i tilfælde af noget sker til originalen.
Der er ikke noget nyt om at lave en lokal kopi af et datasæt. Hvad er nyt her er, at denne klasse gør det\*nemt og nemt\*at oprette og oprette\*opretholde vedligehold\*en lokal kopi af data fra en\*sort\*af typer fjerndatakilder og\*Tilføje metadata\*mens du kopierer dataene.
EDDTableCopy vs<cacheFraUrl>
<cacheFraUrl> er et alternativ til EDDTableCopy. De arbejder anderledes.
- EDDTabel Kopier værker ved at anmode om bundter af data fra en fjerntjeneste og gemme disse bidder i lokale filer. Således er EDDTableCopy nyttige i nogle tilfælde, hvor dataene er tilgængelige via en fjerntjeneste.
- [ []<cacheFraUrl>] (#cachefraurl) Download de eksisterende filer på en fjern hjemmeside.<cacheFraUrl> er nemmere at bruge og mere pålidelig, da det nemt kan fortælle, hvornår der er en ny fjerndatafil, eller når en fjerndatafil har ændret sig og dermed skal downloades.
Hvis der er situationer, hvor EDDTableCopy eller<cacheFraUrl> kunne bruges, brug<cacheFraUrl>, fordi det er nemmere og mere pålidelig.
<Udsugning Navn og nød;
EDDTabel Kopier gør den lokale kopi af dataene ved at anmode om bundter af data fra fjerndatasættet. EDDTabel Kopier afgør, hvilke bidder der skal anmodes ved at anmode om () værdier for værdierne<Udsugningsnavne> (angivet i det angivnedatasets.xml, se nedenfor) , som er de pladsbebyggede destinationsnavne af variable i fjerndatasættet. For eksempel,
<extractDestinationNames>drifter profile</extractDestinationNames>
kan give forskellige værdier kombinationer af driveer=tig17, profile=1017, driveer=tig17, profile=1095,... driveer=une12, Profilee =223, driveer=une12, profile=1251,...
I situationer, hvor en kolonne (for eksempel profil) kan være alt, der kræves til entydigt at identificere en gruppe af rækker af data, hvis der er et meget stort antal, for eksempel profiler, kan det være nyttigt at også angive en ekstra ekstrakt Destination Navn (f.eks. generator) som tjener til at uddele profilerne. Det fører til færre datafiler i en given mappe, som kan føre til hurtigere adgang.
Lokale filer
Hver mængde data gemmes i en separatNetCDFfil i en undermappe af bigParentDirectory /copy / datasetID / / / / (som angivet iopsætning.xml) . Der er et subdirekte niveau for alle, men den sidste ekstraktDestinationName. For eksempel vil data for tig17+1017 blive gemt i bigParentDirectory /copy/sampleDataset/tig17/1017.nc. For eksempel vil data for ue12+1251, blive gemt i bigParentDirectory /copy/sampleDataset/une12/1251.nc. Directory og filnavne, der er oprettet fra dataværdier, ændres for at gøre dem fil-name-safe (For eksempel erstattes rum af "x20") - Dette påvirker ikke de faktiske data.
Nye data
Hver gang EDDTabel Kopier er genindlæst, det kontrollerer fjerndatasættet for at se, hvilke forskellige stykker er tilgængelige. Hvis filen for en flok data ikke allerede findes, tilføjes en anmodning om at få klumpen til en kø.ERDDAP's opgaveThread processer alle de køerede anmodninger om bidder af data, en-by-one. Du kan se statistik for opgavenThreads aktivitet på opgavenStatus sideog i områdetDaglig rapport. (Ja,ERDDAP™kunne tildele flere opgaver til denne proces, men det ville bruge masser af fjerndatakildens båndbredde, hukommelse og CPU tid, og masser af den lokaleERDDAP's båndbredde, hukommelse og CPU tid, heller ikke af hvilket er en god ide.)
BEMÆRK: Den første gang en EDDTableCopy er indlæst, (hvis alt går godt) masser af anmodninger om bundter af data vil blive tilføjet til opgaveThread's kø, men ingen lokale datafiler bliver oprettet. Så udvikleren vil mislykkes, men opgaveThread vil fortsætte med at arbejde og oprette lokale filer. Hvis alt går godt, vil opgaveThread gøre nogle lokale datafiler og det næste forsøg at indlæse datasættet (i ~15 minutter) vil lykkes, men i første omgang med en meget begrænset mængde data.
BEMÆRK: Når det lokale datasæt har nogle data og vises i dine dataERDDAP, hvis fjerndatasættet er midlertidigt eller permanent ikke tilgængelig, vil det lokale datasæt stadig arbejde.
ADVARSEL: Hvis fjerndatasættet er stor og/eller fjernserveren er langsom (det er problemet, er det ikke?!) , vil det tage lang tid at lave en komplet lokal kopi. I nogle tilfælde vil den nødvendige tid være uacceptabel. For eksempel, overføre 1 TB data over en T1-linje (0.15 GB/s) tager mindst 60 dage under optimale betingelser. Desuden bruger den masser af båndbredde, hukommelse og CPU tid på fjern og lokale computere. Løsningen er at sende en harddisk til administratoren af fjerndatasættet, så s/he kan lave en kopi af datasættet og sende harddisken tilbage til dig. Brug disse data som udgangspunkt og EDDTableCopy vil tilføje data til det. (Det er, hvordan Amazons EC2 Cloud Service brugte til at håndtere problemet, selvom deres system har masser af båndbredde.)
ADVARSEL: Hvis en given kombination af værdier forsvinder fra et fjerndatasæt, sletter EDDTableCopy IKKE den lokale kopierede fil. Hvis du vil, kan du slette det selv.
TabelCopy<CheckSourceData>
The The The The The The Thedatasets.xmlfor denne datasæt kan have et valgfrit tag
<checkSourceData>true</checkSourceData>
Standardværdien er sandt. Hvis / når du angiver det til falsk, vil datasættet ikke nogensinde kontrollere kildedatasættet for at se, om der er yderligere data tilgængelige.